mirror of https://gitee.com/openkylin/linux.git
Renesas ARM based SoC board updates for v3.14
* Global - Kconfig: Mention Renesas ARM SoCs instead of SH-Mobile * r7s72100 SoC (RZ/A1H) based Genmai Board - Add Multiplatform support - Add Reference DT * r8a7791 (R-Car M2) based Koelsch board - Add pinctrl_register_mappings() for Koelsch - Hook up SW30-SW36 on Koelsch - Mark GPIO keys as wake-up sources - Use ->init_late() - Add Multiplatform support - Set .debounce_interval for GPIO keys - Add SW2 to GPIO keys - Add Led 6, 7 and 8 support - Add reference DT - Enable PFC/GPIO * r8a7790 (R-Car H2) based Lager board - Add gpio/fixed regulator for SDHI - Add SPI FLASH support on QSPI - Mark GPIO keys as wake-up sources - Use ->init_late() - Set .debounce_interval for GPIO keys * r8a7778 (R-Car M1) based Bock-W board - bockw: remove unused RSND_SSI_CLK_FROM_ADG - Set .debounce_interval for GPIO keys - Correct FPGA ioremap area - Use regulator for MMCIF * r8a7740 (R-Mobile A1) based Armadillo board - Correct FSI address size * sh7374 (SH-Mobile AP4) based Mackerel board - Use pinconf API to configure pin pull-down - clk_round_rate() can return a zero to indicate an error -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.14 (GNU/Linux) iQIcBAABAgAGBQJSt5cHAAoJENfPZGlqN0++xIoP/jBunLyY+xAZ+06gukAdKEw4 hLoUH55GsvpaL5cuDT+LSXWafIol4A/wvME5sZJsKoCHRnDqQYKvyE7hDLIlvLRI KvcmFvdUcN6plbD/wz/SPzur/Lq3+DcX4ep8pmI7OUXupYWomibwylv/5UgY++PN Uymmre4CiHK7/wzWOyS79ujcGzdwk4o1ari5P2lC4fUlVM7jZ7DQswglo+jGxscw CXHtEfqto4NEh2+05sAGdmRHwb3xwOndPYwHaFWy+X6uce/BZXsgDipWihHI5ZKr FT+TemFlYwXc2In2F/E4T7aXqNDXSjEcX/x2/VHS5W2EoWbSk+Mz6zlFZduAv4oG c35AQjHMktlo6voZm0L4WgH0JYT4dyu6DJG3mo7adRyYKvjv/OC48wt4jhYa0LGZ XLcYBoaK1zqpG2M6ZIv138a9krGtkfSCy/Pt7YQ4WpA8CQyJlYqaoW9Yrpkhw13b OcO22myGbjMnxTwpqS9rwDPnNR2PjG9ExDHmO3x4k+zsLqyJHxzv6ikKJWl0eiUF JUv/mzxiaYsOBiMTYYuueNYegzhzGiW8jzp+j6E3WXTPxwCP2It8/31aBfyuaKcG B807//VKcHulPONe3emBK7I2KzsJ6UOUs7iHuqrdwoglQKqMC0iyy2/ZFXbu7JJU cMlHObCNFOGPZxKGsYXG =5zhn -----END PGP SIGNATURE----- Merge tag 'renesas-boards-for-v3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/boards From Simon Horman: Renesas ARM based SoC board updates for v3.14 * Global - Kconfig: Mention Renesas ARM SoCs instead of SH-Mobile * r7s72100 SoC (RZ/A1H) based Genmai Board - Add Multiplatform support - Add Reference DT * r8a7791 (R-Car M2) based Koelsch board - Add pinctrl_register_mappings() for Koelsch - Hook up SW30-SW36 on Koelsch - Mark GPIO keys as wake-up sources - Use ->init_late() - Add Multiplatform support - Set .debounce_interval for GPIO keys - Add SW2 to GPIO keys - Add Led 6, 7 and 8 support - Add reference DT - Enable PFC/GPIO * r8a7790 (R-Car H2) based Lager board - Add gpio/fixed regulator for SDHI - Add SPI FLASH support on QSPI - Mark GPIO keys as wake-up sources - Use ->init_late() - Set .debounce_interval for GPIO keys * r8a7778 (R-Car M1) based Bock-W board - bockw: remove unused RSND_SSI_CLK_FROM_ADG - Set .debounce_interval for GPIO keys - Correct FPGA ioremap area - Use regulator for MMCIF * r8a7740 (R-Mobile A1) based Armadillo board - Correct FSI address size * sh7374 (SH-Mobile AP4) based Mackerel board - Use pinconf API to configure pin pull-down - clk_round_rate() can return a zero to indicate an error * tag 'renesas-boards-for-v3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas: (75 commits) ARM: shmobile: lager: add gpio/fixed regulator for SDHI ARM: shmobile: bockw: remove unused RSND_SSI_CLK_FROM_ADG ARM: shmobile: armadillo: fixup FSI address size ARM: Kconfig: Mention Renesas ARM SoCs instead of SH-Mobile ARM: shmobile: mackerel: Use pinconf API to configure pin pull-down ARM: shmobile: Lager:add SPI FLASH support on QSPI ARM: shmobile: mackerel: clk_round_rate() can return a zero to indicate an error ARM: shmobile: Add pinctrl_register_mappings() for Koelsch ARM: shmobile: Use ->init_late() on Lager ARM: shmobile: Hook up SW30-SW36 on Koelsch ARM: shmobile: koelsch: mark GPIO keys as wake-up sources ARM: shmobile: Use ->init_late() on Koelsch ARM: shmobile: lager: mark GPIO keys as wake-up sources ARM: shmobile: r7s72100 Genmai Multiplatform ARM: shmobile: r7s72100 Genmai DT reference C bits ARM: shmobile: r7s72100 Genmai DT reference DTS bits ARM: shmobile: Initial r8a7791 and Koelsch multiplatform support ARM: shmobile: koelsch: set .debounce_interval ARM: shmobile: lager: set .debounce_interval ARM: shmobile: bockw: add pin pull-up setting for SDHI ... Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
commit
acdcbd6331
|
@ -644,8 +644,9 @@ config ARCH_MSM
|
|||
stack and controls some vital subsystems
|
||||
(clock and power control, etc).
|
||||
|
||||
config ARCH_SHMOBILE
|
||||
bool "Renesas SH-Mobile / R-Mobile"
|
||||
config ARCH_SHMOBILE_LEGACY
|
||||
bool "Renesas ARM SoCs (non-multiplatform)"
|
||||
select ARCH_SHMOBILE
|
||||
select ARM_PATCH_PHYS_VIRT
|
||||
select CLKDEV_LOOKUP
|
||||
select GENERIC_CLOCKEVENTS
|
||||
|
@ -660,7 +661,9 @@ config ARCH_SHMOBILE
|
|||
select PM_GENERIC_DOMAINS if PM
|
||||
select SPARSE_IRQ
|
||||
help
|
||||
Support for Renesas's SH-Mobile and R-Mobile ARM platforms.
|
||||
Support for Renesas ARM SoC platforms using a non-multiplatform
|
||||
kernel. This includes the SH-Mobile, R-Mobile, EMMA-Mobile, R-Car
|
||||
and RZ families.
|
||||
|
||||
config ARCH_RPC
|
||||
bool "RiscPC"
|
||||
|
@ -1611,7 +1614,7 @@ config HZ_FIXED
|
|||
default 200 if ARCH_EBSA110 || ARCH_S3C24XX || ARCH_S5P64X0 || \
|
||||
ARCH_S5PV210 || ARCH_EXYNOS4
|
||||
default AT91_TIMER_HZ if ARCH_AT91
|
||||
default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE
|
||||
default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE_LEGACY
|
||||
default 0
|
||||
|
||||
choice
|
||||
|
@ -1796,8 +1799,8 @@ config ARCH_WANT_GENERAL_HUGETLB
|
|||
source "mm/Kconfig"
|
||||
|
||||
config FORCE_MAX_ZONEORDER
|
||||
int "Maximum zone order" if ARCH_SHMOBILE
|
||||
range 11 64 if ARCH_SHMOBILE
|
||||
int "Maximum zone order" if ARCH_SHMOBILE_LEGACY
|
||||
range 11 64 if ARCH_SHMOBILE_LEGACY
|
||||
default "12" if SOC_AM33XX
|
||||
default "9" if SA1111
|
||||
default "11"
|
||||
|
|
|
@ -190,7 +190,6 @@ machine-$(CONFIG_ARCH_S5PC100) += s5pc100
|
|||
machine-$(CONFIG_ARCH_S5PV210) += s5pv210
|
||||
machine-$(CONFIG_ARCH_SA1100) += sa1100
|
||||
machine-$(CONFIG_ARCH_SHMOBILE) += shmobile
|
||||
machine-$(CONFIG_ARCH_SHMOBILE_MULTI) += shmobile
|
||||
machine-$(CONFIG_ARCH_SIRF) += prima2
|
||||
machine-$(CONFIG_ARCH_SOCFPGA) += socfpga
|
||||
machine-$(CONFIG_ARCH_STI) += sti
|
||||
|
|
|
@ -64,7 +64,7 @@ else
|
|||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_SHMOBILE),y)
|
||||
ifeq ($(CONFIG_ARCH_SHMOBILE_LEGACY),y)
|
||||
OBJS += head-shmobile.o
|
||||
endif
|
||||
|
||||
|
|
|
@ -221,8 +221,9 @@ dtb-$(CONFIG_ARCH_U8500) += ste-snowball.dtb \
|
|||
dtb-$(CONFIG_ARCH_S3C24XX) += s3c2416-smdk2416.dtb
|
||||
dtb-$(CONFIG_ARCH_S3C64XX) += s3c6410-mini6410.dtb \
|
||||
s3c6410-smdk6410.dtb
|
||||
dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
|
||||
dtb-$(CONFIG_ARCH_SHMOBILE_LEGACY) += emev2-kzm9d.dtb \
|
||||
r7s72100-genmai.dtb \
|
||||
r7s72100-genmai-reference.dtb \
|
||||
r8a7740-armadillo800eva.dtb \
|
||||
r8a7778-bockw.dtb \
|
||||
r8a7778-bockw-reference.dtb \
|
||||
|
@ -237,7 +238,9 @@ dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
|
|||
r8a73a4-ape6evm.dtb \
|
||||
r8a73a4-ape6evm-reference.dtb \
|
||||
sh7372-mackerel.dtb
|
||||
dtb-$(CONFIG_ARCH_SHMOBILE_MULTI) += emev2-kzm9d.dtb
|
||||
dtb-$(CONFIG_ARCH_SHMOBILE_MULTI) += emev2-kzm9d.dtb \
|
||||
r7s72100-genmai-reference.dtb \
|
||||
r8a7791-koelsch-reference.dtb
|
||||
dtb-$(CONFIG_ARCH_SOCFPGA) += socfpga_arria5_socdk.dtb \
|
||||
socfpga_cyclone5_socdk.dtb \
|
||||
socfpga_cyclone5_sockit.dtb \
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Device Tree Source for the Genmai board
|
||||
*
|
||||
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/include/ "r7s72100.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Genmai";
|
||||
compatible = "renesas,genmai-reference", "renesas,r7s72100";
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttySC2,115200 ignore_loglevel rw root=/dev/nfs ip=dhcp";
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x08000000 0x08000000>;
|
||||
};
|
||||
|
||||
lbsc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
};
|
||||
};
|
|
@ -13,7 +13,7 @@ CONFIG_EMBEDDED=y
|
|||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_BLOCK is not set
|
||||
CONFIG_ARCH_SHMOBILE=y
|
||||
CONFIG_ARCH_SHMOBILE_LEGACY=y
|
||||
CONFIG_ARCH_R8A73A4=y
|
||||
CONFIG_MACH_APE6EVM=y
|
||||
# CONFIG_ARM_THUMB is not set
|
||||
|
|
|
@ -15,7 +15,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
|
|||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
CONFIG_ARCH_SHMOBILE=y
|
||||
CONFIG_ARCH_SHMOBILE_LEGACY=y
|
||||
CONFIG_ARCH_R8A7740=y
|
||||
CONFIG_MACH_ARMADILLO800EVA=y
|
||||
# CONFIG_SH_TIMER_TMU is not set
|
||||
|
|
|
@ -8,7 +8,7 @@ CONFIG_SYSCTL_SYSCALL=y
|
|||
CONFIG_EMBEDDED=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
CONFIG_ARCH_SHMOBILE=y
|
||||
CONFIG_ARCH_SHMOBILE_LEGACY=y
|
||||
CONFIG_ARCH_R8A7778=y
|
||||
CONFIG_MACH_BOCKW=y
|
||||
CONFIG_MEMORY_START=0x60000000
|
||||
|
|
|
@ -9,7 +9,7 @@ CONFIG_EMBEDDED=y
|
|||
CONFIG_PERF_EVENTS=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_BLOCK is not set
|
||||
CONFIG_ARCH_SHMOBILE=y
|
||||
CONFIG_ARCH_SHMOBILE_LEGACY=y
|
||||
CONFIG_ARCH_R8A7791=y
|
||||
CONFIG_MACH_KOELSCH=y
|
||||
# CONFIG_SWP_EMULATE is not set
|
||||
|
|
|
@ -13,7 +13,7 @@ CONFIG_SLAB=y
|
|||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
CONFIG_ARCH_SHMOBILE=y
|
||||
CONFIG_ARCH_SHMOBILE_LEGACY=y
|
||||
CONFIG_ARCH_EMEV2=y
|
||||
CONFIG_MACH_KZM9D=y
|
||||
CONFIG_MEMORY_START=0x40000000
|
||||
|
|
|
@ -22,7 +22,7 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
CONFIG_ARCH_SHMOBILE=y
|
||||
CONFIG_ARCH_SHMOBILE_LEGACY=y
|
||||
CONFIG_ARCH_SH73A0=y
|
||||
CONFIG_MACH_KZM9G=y
|
||||
CONFIG_MEMORY_START=0x41000000
|
||||
|
|
|
@ -12,7 +12,7 @@ CONFIG_SLAB=y
|
|||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
CONFIG_ARCH_SHMOBILE=y
|
||||
CONFIG_ARCH_SHMOBILE_LEGACY=y
|
||||
CONFIG_ARCH_R8A7790=y
|
||||
CONFIG_MACH_LAGER=y
|
||||
# CONFIG_SH_TIMER_TMU is not set
|
||||
|
|
|
@ -14,7 +14,7 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
CONFIG_ARCH_SHMOBILE=y
|
||||
CONFIG_ARCH_SHMOBILE_LEGACY=y
|
||||
CONFIG_ARCH_SH7372=y
|
||||
CONFIG_MACH_MACKEREL=y
|
||||
CONFIG_MEMORY_SIZE=0x10000000
|
||||
|
|
|
@ -9,7 +9,7 @@ CONFIG_SYSCTL_SYSCALL=y
|
|||
CONFIG_EMBEDDED=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
CONFIG_ARCH_SHMOBILE=y
|
||||
CONFIG_ARCH_SHMOBILE_LEGACY=y
|
||||
CONFIG_ARCH_R8A7779=y
|
||||
CONFIG_MACH_MARZEN=y
|
||||
CONFIG_MEMORY_START=0x60000000
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
config ARCH_SHMOBILE
|
||||
bool
|
||||
|
||||
config ARCH_SHMOBILE_MULTI
|
||||
bool "SH-Mobile Series" if ARCH_MULTI_V7
|
||||
bool "Renesas ARM SoCs" if ARCH_MULTI_V7
|
||||
depends on MMU
|
||||
select ARCH_SHMOBILE
|
||||
select CPU_V7
|
||||
select GENERIC_CLOCKEVENTS
|
||||
select HAVE_ARM_SCU if SMP
|
||||
|
@ -15,24 +19,39 @@ config ARCH_SHMOBILE_MULTI
|
|||
|
||||
if ARCH_SHMOBILE_MULTI
|
||||
|
||||
comment "SH-Mobile System Type"
|
||||
comment "Renesas ARM SoCs System Type"
|
||||
|
||||
config ARCH_EMEV2
|
||||
bool "Emma Mobile EV2"
|
||||
|
||||
comment "SH-Mobile Board Type"
|
||||
config ARCH_R7S72100
|
||||
bool "RZ/A1H (R7S72100)"
|
||||
|
||||
config ARCH_R8A7791
|
||||
bool "R-Car M2 (R8A77910)"
|
||||
select RENESAS_IRQC
|
||||
|
||||
comment "Renesas ARM SoCs Board Type"
|
||||
|
||||
config MACH_GENMAI
|
||||
bool "Genmai board"
|
||||
depends on ARCH_R7S72100
|
||||
|
||||
config MACH_KOELSCH
|
||||
bool "Koelsch board"
|
||||
depends on ARCH_R8A7791
|
||||
|
||||
config MACH_KZM9D
|
||||
bool "KZM9D board"
|
||||
depends on ARCH_EMEV2
|
||||
select REGULATOR_FIXED_VOLTAGE if REGULATOR
|
||||
|
||||
comment "SH-Mobile System Configuration"
|
||||
comment "Renesas ARM SoCs System Configuration"
|
||||
endif
|
||||
|
||||
if ARCH_SHMOBILE
|
||||
if ARCH_SHMOBILE_LEGACY
|
||||
|
||||
comment "SH-Mobile System Type"
|
||||
comment "Renesas ARM SoCs System Type"
|
||||
|
||||
config ARCH_SH7372
|
||||
bool "SH-Mobile AP4 (SH7372)"
|
||||
|
@ -97,23 +116,28 @@ config ARCH_R8A7790
|
|||
|
||||
config ARCH_R8A7791
|
||||
bool "R-Car M2 (R8A77910)"
|
||||
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||
select ARM_GIC
|
||||
select CPU_V7
|
||||
select SH_CLK_CPG
|
||||
select RENESAS_IRQC
|
||||
|
||||
config ARCH_EMEV2
|
||||
bool "Emma Mobile EV2"
|
||||
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||
select ARM_GIC
|
||||
select CPU_V7
|
||||
select USE_OF
|
||||
select AUTO_ZRELADDR
|
||||
|
||||
config ARCH_R7S72100
|
||||
bool "RZ/A1H (R7S72100)"
|
||||
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||
select ARM_GIC
|
||||
select CPU_V7
|
||||
select SH_CLK_CPG
|
||||
|
||||
comment "SH-Mobile Board Type"
|
||||
comment "Renesas ARM SoCs Board Type"
|
||||
|
||||
config MACH_APE6EVM
|
||||
bool "APE6EVM board"
|
||||
|
@ -190,6 +214,17 @@ config MACH_GENMAI
|
|||
depends on ARCH_R7S72100
|
||||
select USE_OF
|
||||
|
||||
config MACH_GENMAI_REFERENCE
|
||||
bool "Genmai board - Reference Device Tree Implementation"
|
||||
depends on ARCH_R7S72100
|
||||
select USE_OF
|
||||
---help---
|
||||
Use reference implementation of Genmai board support
|
||||
which makes use of device tree at the expense
|
||||
of not supporting a number of devices.
|
||||
|
||||
This is intended to aid developers
|
||||
|
||||
config MACH_MARZEN
|
||||
bool "MARZEN board"
|
||||
depends on ARCH_R8A7779
|
||||
|
@ -231,11 +266,16 @@ config MACH_KOELSCH
|
|||
depends on ARCH_R8A7791
|
||||
select USE_OF
|
||||
|
||||
config MACH_KZM9D
|
||||
bool "KZM9D board"
|
||||
depends on ARCH_EMEV2
|
||||
select REGULATOR_FIXED_VOLTAGE if REGULATOR
|
||||
config MACH_KOELSCH_REFERENCE
|
||||
bool "Koelsch board - Reference Device Tree Implementation"
|
||||
depends on ARCH_R8A7791
|
||||
select USE_OF
|
||||
---help---
|
||||
Use reference implementation of Koelsch board support
|
||||
which makes use of device tree at the expense
|
||||
of not supporting a number of devices.
|
||||
|
||||
This is intended to aid developers
|
||||
|
||||
config MACH_KZM9G
|
||||
bool "KZM-A9-GT board"
|
||||
|
@ -261,7 +301,7 @@ config MACH_KZM9G_REFERENCE
|
|||
|
||||
This is intended to aid developers
|
||||
|
||||
comment "SH-Mobile System Configuration"
|
||||
comment "Renesas ARM SoCs System Configuration"
|
||||
|
||||
config CPU_HAS_INTEVT
|
||||
bool
|
||||
|
@ -274,7 +314,7 @@ source "drivers/sh/Kconfig"
|
|||
|
||||
endif
|
||||
|
||||
if ARCH_SHMOBILE || ARCH_SHMOBILE_MULTI
|
||||
if ARCH_SHMOBILE
|
||||
|
||||
menu "Timer and clock configuration"
|
||||
|
||||
|
@ -286,8 +326,8 @@ config SHMOBILE_TIMER_HZ
|
|||
Allows the configuration of the timer frequency. It is customary
|
||||
to have the timer interrupt run at 1000 Hz or 100 Hz, but in the
|
||||
case of low timer frequencies other values may be more suitable.
|
||||
SH-Mobile systems using a 32768 Hz RCLK for clock events may want
|
||||
to select a HZ value such as 128 that can evenly divide RCLK.
|
||||
Renesas ARM SoC systems using a 32768 Hz RCLK for clock events may
|
||||
want to select a HZ value such as 128 that can evenly divide RCLK.
|
||||
A HZ value that does not divide evenly may cause timer drift.
|
||||
|
||||
config SH_TIMER_CMT
|
||||
|
|
|
@ -56,6 +56,8 @@ obj-$(CONFIG_ARCH_R8A7779) += pm-r8a7779.o
|
|||
|
||||
# Board objects
|
||||
ifdef CONFIG_ARCH_SHMOBILE_MULTI
|
||||
obj-$(CONFIG_MACH_GENMAI) += board-genmai-reference.o
|
||||
obj-$(CONFIG_MACH_KOELSCH) += board-koelsch-reference.o
|
||||
obj-$(CONFIG_MACH_KZM9D) += board-kzm9d-reference.o
|
||||
else
|
||||
obj-$(CONFIG_MACH_APE6EVM) += board-ape6evm.o
|
||||
|
@ -64,6 +66,7 @@ obj-$(CONFIG_MACH_MACKEREL) += board-mackerel.o
|
|||
obj-$(CONFIG_MACH_BOCKW) += board-bockw.o
|
||||
obj-$(CONFIG_MACH_BOCKW_REFERENCE) += board-bockw-reference.o
|
||||
obj-$(CONFIG_MACH_GENMAI) += board-genmai.o
|
||||
obj-$(CONFIG_MACH_GENMAI_REFERENCE) += board-genmai-reference.o
|
||||
obj-$(CONFIG_MACH_MARZEN) += board-marzen.o
|
||||
obj-$(CONFIG_MACH_MARZEN_REFERENCE) += board-marzen-reference.o
|
||||
obj-$(CONFIG_MACH_LAGER) += board-lager.o
|
||||
|
@ -71,7 +74,7 @@ obj-$(CONFIG_MACH_LAGER_REFERENCE) += board-lager-reference.o
|
|||
obj-$(CONFIG_MACH_ARMADILLO800EVA) += board-armadillo800eva.o
|
||||
obj-$(CONFIG_MACH_ARMADILLO800EVA_REFERENCE) += board-armadillo800eva-reference.o
|
||||
obj-$(CONFIG_MACH_KOELSCH) += board-koelsch.o
|
||||
obj-$(CONFIG_MACH_KZM9D) += board-kzm9d.o
|
||||
obj-$(CONFIG_MACH_KOELSCH_REFERENCE) += board-koelsch-reference.o
|
||||
obj-$(CONFIG_MACH_KZM9G) += board-kzm9g.o
|
||||
obj-$(CONFIG_MACH_KZM9G_REFERENCE) += board-kzm9g-reference.o
|
||||
endif
|
||||
|
|
|
@ -6,9 +6,10 @@ loadaddr-$(CONFIG_MACH_ARMADILLO800EVA) += 0x40008000
|
|||
loadaddr-$(CONFIG_MACH_ARMADILLO800EVA_REFERENCE) += 0x40008000
|
||||
loadaddr-$(CONFIG_MACH_BOCKW) += 0x60008000
|
||||
loadaddr-$(CONFIG_MACH_BOCKW_REFERENCE) += 0x60008000
|
||||
loadaddr-$(CONFIG_MACH_GENMAI) += 0x8008000
|
||||
loadaddr-$(CONFIG_MACH_GENMAI) += 0x08008000
|
||||
loadaddr-$(CONFIG_MACH_GENMAI_REFERENCE) += 0x08008000
|
||||
loadaddr-$(CONFIG_MACH_KOELSCH) += 0x40008000
|
||||
loadaddr-$(CONFIG_MACH_KZM9D) += 0x40008000
|
||||
loadaddr-$(CONFIG_MACH_KOELSCH_REFERENCE) += 0x40008000
|
||||
loadaddr-$(CONFIG_MACH_KZM9G) += 0x41008000
|
||||
loadaddr-$(CONFIG_MACH_KZM9G_REFERENCE) += 0x41008000
|
||||
loadaddr-$(CONFIG_MACH_LAGER) += 0x40008000
|
||||
|
|
|
@ -168,7 +168,7 @@ static const struct sh_mmcif_plat_data mmcif0_pdata __initconst = {
|
|||
};
|
||||
|
||||
static const struct resource mmcif0_resources[] __initconst = {
|
||||
DEFINE_RES_MEM_NAMED(0xee200000, 0x100, "MMCIF0"),
|
||||
DEFINE_RES_MEM(0xee200000, 0x100),
|
||||
DEFINE_RES_IRQ(gic_spi(169)),
|
||||
};
|
||||
|
||||
|
@ -179,7 +179,7 @@ static const struct sh_mobile_sdhi_info sdhi0_pdata __initconst = {
|
|||
};
|
||||
|
||||
static const struct resource sdhi0_resources[] __initconst = {
|
||||
DEFINE_RES_MEM_NAMED(0xee100000, 0x100, "SDHI0"),
|
||||
DEFINE_RES_MEM(0xee100000, 0x100),
|
||||
DEFINE_RES_IRQ(gic_spi(165)),
|
||||
};
|
||||
|
||||
|
@ -191,7 +191,7 @@ static const struct sh_mobile_sdhi_info sdhi1_pdata __initconst = {
|
|||
};
|
||||
|
||||
static const struct resource sdhi1_resources[] __initconst = {
|
||||
DEFINE_RES_MEM_NAMED(0xee120000, 0x100, "SDHI1"),
|
||||
DEFINE_RES_MEM(0xee120000, 0x100),
|
||||
DEFINE_RES_IRQ(gic_spi(166)),
|
||||
};
|
||||
|
||||
|
|
|
@ -958,7 +958,7 @@ static struct resource fsi_resources[] = {
|
|||
[0] = {
|
||||
.name = "FSI",
|
||||
.start = 0xfe1f0000,
|
||||
.end = 0xfe1f8400 - 1,
|
||||
.end = 0xfe1f0400 - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
*/
|
||||
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/pinctrl/machine.h>
|
||||
#include <mach/common.h>
|
||||
#include <mach/r8a7778.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
@ -39,9 +38,13 @@ static const struct pinctrl_map bockw_pinctrl_map[] = {
|
|||
#define FPGA 0x18200000
|
||||
#define IRQ0MR 0x30
|
||||
#define COMCTLR 0x101c
|
||||
|
||||
#define PFC 0xfffc0000
|
||||
#define PUPR4 0x110
|
||||
static void __init bockw_init(void)
|
||||
{
|
||||
static void __iomem *fpga;
|
||||
void __iomem *fpga;
|
||||
void __iomem *pfc;
|
||||
|
||||
r8a7778_clock_init();
|
||||
r8a7778_init_irq_extpin_dt(1);
|
||||
|
@ -63,6 +66,19 @@ static void __init bockw_init(void)
|
|||
u16 val = ioread16(fpga + IRQ0MR);
|
||||
val &= ~(1 << 4); /* enable SMSC911x */
|
||||
iowrite16(val, fpga + IRQ0MR);
|
||||
|
||||
iounmap(fpga);
|
||||
}
|
||||
|
||||
pfc = ioremap_nocache(PFC, 0x200);
|
||||
if (pfc) {
|
||||
/*
|
||||
* FIXME
|
||||
*
|
||||
* SDHI CD/WP pin needs pull-up
|
||||
*/
|
||||
iowrite32(ioread32(pfc + PUPR4) | (3 << 26), pfc + PUPR4);
|
||||
iounmap(pfc);
|
||||
}
|
||||
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
|
|
|
@ -116,6 +116,11 @@ static struct regulator_consumer_supply dummy_supplies[] = {
|
|||
REGULATOR_SUPPLY("vdd33a", "smsc911x"),
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply fixed3v3_power_consumers[] = {
|
||||
REGULATOR_SUPPLY("vmmc", "sh_mmcif"),
|
||||
REGULATOR_SUPPLY("vqmmc", "sh_mmcif"),
|
||||
};
|
||||
|
||||
static struct smsc911x_platform_config smsc911x_data __initdata = {
|
||||
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
||||
.irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
|
||||
|
@ -271,7 +276,6 @@ static struct resource mmc_resources[] __initdata = {
|
|||
|
||||
static struct sh_mmcif_plat_data sh_mmcif_plat __initdata = {
|
||||
.sup_pclk = 0,
|
||||
.ocr = MMC_VDD_165_195 | MMC_VDD_32_33 | MMC_VDD_33_34,
|
||||
.caps = MMC_CAP_4_BIT_DATA |
|
||||
MMC_CAP_8_BIT_DATA |
|
||||
MMC_CAP_NEEDS_POLL,
|
||||
|
@ -328,11 +332,11 @@ static struct rsnd_ssi_platform_info rsnd_ssi[] = {
|
|||
RSND_SSI_UNUSED, /* SSI 1 */
|
||||
RSND_SSI_UNUSED, /* SSI 2 */
|
||||
RSND_SSI_SET(1, 0, gic_iid(0x85), RSND_SSI_PLAY),
|
||||
RSND_SSI_SET(2, 0, gic_iid(0x85), RSND_SSI_CLK_PIN_SHARE | RSND_SSI_CLK_FROM_ADG),
|
||||
RSND_SSI_SET(2, 0, gic_iid(0x85), RSND_SSI_CLK_PIN_SHARE),
|
||||
RSND_SSI_SET(0, 0, gic_iid(0x86), RSND_SSI_PLAY),
|
||||
RSND_SSI_SET(0, 0, gic_iid(0x86), 0),
|
||||
RSND_SSI_SET(3, 0, gic_iid(0x86), RSND_SSI_PLAY),
|
||||
RSND_SSI_SET(4, 0, gic_iid(0x86), RSND_SSI_CLK_PIN_SHARE | RSND_SSI_CLK_FROM_ADG),
|
||||
RSND_SSI_SET(4, 0, gic_iid(0x86), RSND_SSI_CLK_PIN_SHARE),
|
||||
};
|
||||
|
||||
static struct rsnd_scu_platform_info rsnd_scu[9] = {
|
||||
|
@ -614,6 +618,10 @@ static void __init bockw_init(void)
|
|||
&usb_phy_platform_data,
|
||||
sizeof(struct rcar_phy_platform_data));
|
||||
|
||||
regulator_register_fixed(0, dummy_supplies,
|
||||
ARRAY_SIZE(dummy_supplies));
|
||||
regulator_register_always_on(1, "fixed-3.3V", fixed3v3_power_consumers,
|
||||
ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
|
||||
|
||||
/* for SMSC */
|
||||
fpga = ioremap_nocache(FPGA, SZ_1M);
|
||||
|
@ -629,9 +637,6 @@ static void __init bockw_init(void)
|
|||
val &= ~(1 << 4); /* enable SMSC911x */
|
||||
iowrite16(val, fpga + IRQ0MR);
|
||||
|
||||
regulator_register_fixed(0, dummy_supplies,
|
||||
ARRAY_SIZE(dummy_supplies));
|
||||
|
||||
platform_device_register_resndata(
|
||||
&platform_bus, "smsc911x", -1,
|
||||
smsc911x_resources, ARRAY_SIZE(smsc911x_resources),
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* Genmai board support
|
||||
*
|
||||
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||
* Copyright (C) 2013 Magnus Damm
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <mach/common.h>
|
||||
#include <mach/r7s72100.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
static void __init genmai_add_standard_devices(void)
|
||||
{
|
||||
#ifdef CONFIG_COMMON_CLK
|
||||
of_clk_init(NULL);
|
||||
#else
|
||||
r7s72100_clock_init();
|
||||
#endif
|
||||
r7s72100_add_dt_devices();
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
}
|
||||
|
||||
static const char * const genmai_boards_compat_dt[] __initconst = {
|
||||
"renesas,genmai-reference",
|
||||
NULL,
|
||||
};
|
||||
|
||||
DT_MACHINE_START(GENMAI_DT, "genmai")
|
||||
.init_early = r7s72100_init_early,
|
||||
.init_machine = genmai_add_standard_devices,
|
||||
.dt_compat = genmai_boards_compat_dt,
|
||||
MACHINE_END
|
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* Koelsch board support - Reference DT implementation
|
||||
*
|
||||
* Copyright (C) 2013 Renesas Electronics Corporation
|
||||
* Copyright (C) 2013 Renesas Solutions Corp.
|
||||
* Copyright (C) 2013 Magnus Damm
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <mach/common.h>
|
||||
#include <mach/rcar-gen2.h>
|
||||
#include <mach/r8a7791.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
static void __init koelsch_add_standard_devices(void)
|
||||
{
|
||||
#ifdef CONFIG_COMMON_CLK
|
||||
of_clk_init(NULL);
|
||||
#else
|
||||
r8a7791_clock_init();
|
||||
#endif
|
||||
r8a7791_add_dt_devices();
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
}
|
||||
|
||||
static const char * const koelsch_boards_compat_dt[] __initconst = {
|
||||
"renesas,koelsch-reference",
|
||||
NULL,
|
||||
};
|
||||
|
||||
DT_MACHINE_START(KOELSCH_DT, "koelsch")
|
||||
.smp = smp_ops(r8a7791_smp_ops),
|
||||
.init_early = r8a7791_init_early,
|
||||
.init_time = rcar_gen2_timer_init,
|
||||
.init_machine = koelsch_add_standard_devices,
|
||||
.init_late = shmobile_init_late,
|
||||
.dt_compat = koelsch_boards_compat_dt,
|
||||
MACHINE_END
|
|
@ -19,7 +19,13 @@
|
|||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/gpio_keys.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/pinctrl/machine.h>
|
||||
#include <linux/platform_data/gpio-rcar.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <mach/common.h>
|
||||
#include <mach/r8a7791.h>
|
||||
|
@ -27,10 +33,74 @@
|
|||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
/* LEDS */
|
||||
static struct gpio_led koelsch_leds[] = {
|
||||
{
|
||||
.name = "led8",
|
||||
.gpio = RCAR_GP_PIN(2, 21),
|
||||
.default_state = LEDS_GPIO_DEFSTATE_ON,
|
||||
}, {
|
||||
.name = "led7",
|
||||
.gpio = RCAR_GP_PIN(2, 20),
|
||||
.default_state = LEDS_GPIO_DEFSTATE_ON,
|
||||
}, {
|
||||
.name = "led6",
|
||||
.gpio = RCAR_GP_PIN(2, 19),
|
||||
.default_state = LEDS_GPIO_DEFSTATE_ON,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct gpio_led_platform_data koelsch_leds_pdata __initconst = {
|
||||
.leds = koelsch_leds,
|
||||
.num_leds = ARRAY_SIZE(koelsch_leds),
|
||||
};
|
||||
|
||||
/* GPIO KEY */
|
||||
#define GPIO_KEY(c, g, d, ...) \
|
||||
{ .code = c, .gpio = g, .desc = d, .active_low = 1, \
|
||||
.wakeup = 1, .debounce_interval = 20 }
|
||||
|
||||
static struct gpio_keys_button gpio_buttons[] = {
|
||||
GPIO_KEY(KEY_4, RCAR_GP_PIN(5, 3), "SW2-pin4"),
|
||||
GPIO_KEY(KEY_3, RCAR_GP_PIN(5, 2), "SW2-pin3"),
|
||||
GPIO_KEY(KEY_2, RCAR_GP_PIN(5, 1), "SW2-pin2"),
|
||||
GPIO_KEY(KEY_1, RCAR_GP_PIN(5, 0), "SW2-pin1"),
|
||||
GPIO_KEY(KEY_G, RCAR_GP_PIN(7, 6), "SW36"),
|
||||
GPIO_KEY(KEY_F, RCAR_GP_PIN(7, 5), "SW35"),
|
||||
GPIO_KEY(KEY_E, RCAR_GP_PIN(7, 4), "SW34"),
|
||||
GPIO_KEY(KEY_D, RCAR_GP_PIN(7, 3), "SW33"),
|
||||
GPIO_KEY(KEY_C, RCAR_GP_PIN(7, 2), "SW32"),
|
||||
GPIO_KEY(KEY_B, RCAR_GP_PIN(7, 1), "SW31"),
|
||||
GPIO_KEY(KEY_A, RCAR_GP_PIN(7, 0), "SW30"),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_platform_data koelsch_keys_pdata __initconst = {
|
||||
.buttons = gpio_buttons,
|
||||
.nbuttons = ARRAY_SIZE(gpio_buttons),
|
||||
};
|
||||
|
||||
static const struct pinctrl_map koelsch_pinctrl_map[] = {
|
||||
/* SCIF0 (CN19: DEBUG SERIAL0) */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7791",
|
||||
"scif0_data_d", "scif0"),
|
||||
/* SCIF1 (CN20: DEBUG SERIAL1) */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7791",
|
||||
"scif1_data_d", "scif1"),
|
||||
};
|
||||
|
||||
static void __init koelsch_add_standard_devices(void)
|
||||
{
|
||||
r8a7791_clock_init();
|
||||
pinctrl_register_mappings(koelsch_pinctrl_map,
|
||||
ARRAY_SIZE(koelsch_pinctrl_map));
|
||||
r8a7791_pinmux_init();
|
||||
r8a7791_add_standard_devices();
|
||||
platform_device_register_data(&platform_bus, "leds-gpio", -1,
|
||||
&koelsch_leds_pdata,
|
||||
sizeof(koelsch_leds_pdata));
|
||||
platform_device_register_data(&platform_bus, "gpio-keys", -1,
|
||||
&koelsch_keys_pdata,
|
||||
sizeof(koelsch_keys_pdata));
|
||||
}
|
||||
|
||||
static const char * const koelsch_boards_compat_dt[] __initconst = {
|
||||
|
@ -41,7 +111,8 @@ static const char * const koelsch_boards_compat_dt[] __initconst = {
|
|||
DT_MACHINE_START(KOELSCH_DT, "koelsch")
|
||||
.smp = smp_ops(r8a7791_smp_ops),
|
||||
.init_early = r8a7791_init_early,
|
||||
.init_machine = koelsch_add_standard_devices,
|
||||
.init_time = rcar_gen2_timer_init,
|
||||
.init_machine = koelsch_add_standard_devices,
|
||||
.init_late = shmobile_init_late,
|
||||
.dt_compat = koelsch_boards_compat_dt,
|
||||
MACHINE_END
|
||||
|
|
|
@ -1,92 +0,0 @@
|
|||
/*
|
||||
* kzm9d board support
|
||||
*
|
||||
* Copyright (C) 2012 Renesas Solutions Corp.
|
||||
* Copyright (C) 2012 Magnus Damm
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regulator/fixed.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/smsc911x.h>
|
||||
#include <mach/common.h>
|
||||
#include <mach/emev2.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
/* Dummy supplies, where voltage doesn't matter */
|
||||
static struct regulator_consumer_supply dummy_supplies[] = {
|
||||
REGULATOR_SUPPLY("vddvario", "smsc911x"),
|
||||
REGULATOR_SUPPLY("vdd33a", "smsc911x"),
|
||||
};
|
||||
|
||||
/* Ether */
|
||||
static struct resource smsc911x_resources[] = {
|
||||
[0] = {
|
||||
.start = 0x20000000,
|
||||
.end = 0x2000ffff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = EMEV2_GPIO_IRQ(1),
|
||||
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,
|
||||
},
|
||||
};
|
||||
|
||||
static struct smsc911x_platform_config smsc911x_platdata = {
|
||||
.flags = SMSC911X_USE_32BIT,
|
||||
.irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
|
||||
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH,
|
||||
};
|
||||
|
||||
static struct platform_device smsc91x_device = {
|
||||
.name = "smsc911x",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &smsc911x_platdata,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(smsc911x_resources),
|
||||
.resource = smsc911x_resources,
|
||||
};
|
||||
|
||||
static struct platform_device *kzm9d_devices[] __initdata = {
|
||||
&smsc91x_device,
|
||||
};
|
||||
|
||||
void __init kzm9d_add_standard_devices(void)
|
||||
{
|
||||
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
||||
|
||||
emev2_add_standard_devices();
|
||||
|
||||
platform_add_devices(kzm9d_devices, ARRAY_SIZE(kzm9d_devices));
|
||||
}
|
||||
|
||||
static const char *kzm9d_boards_compat_dt[] __initdata = {
|
||||
"renesas,kzm9d",
|
||||
NULL,
|
||||
};
|
||||
|
||||
DT_MACHINE_START(KZM9D_DT, "kzm9d")
|
||||
.smp = smp_ops(emev2_smp_ops),
|
||||
.map_io = emev2_map_io,
|
||||
.init_early = emev2_init_delay,
|
||||
.init_machine = kzm9d_add_standard_devices,
|
||||
.init_late = shmobile_init_late,
|
||||
.dt_compat = kzm9d_boards_compat_dt,
|
||||
MACHINE_END
|
|
@ -20,16 +20,16 @@
|
|||
|
||||
#include <linux/init.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <mach/common.h>
|
||||
#include <mach/rcar-gen2.h>
|
||||
#include <mach/r8a7790.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
static void __init lager_add_standard_devices(void)
|
||||
{
|
||||
/* clocks are setup late during boot in the case of DT */
|
||||
r8a7790_clock_init();
|
||||
|
||||
r8a7790_add_dt_devices();
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
}
|
||||
|
||||
static const char *lager_boards_compat_dt[] __initdata = {
|
||||
|
@ -42,5 +42,6 @@ DT_MACHINE_START(LAGER_DT, "lager")
|
|||
.init_early = r8a7790_init_early,
|
||||
.init_time = rcar_gen2_timer_init,
|
||||
.init_machine = lager_add_standard_devices,
|
||||
.init_late = shmobile_init_late,
|
||||
.dt_compat = lager_boards_compat_dt,
|
||||
MACHINE_END
|
||||
|
|
|
@ -31,7 +31,9 @@
|
|||
#include <linux/platform_data/rcar-du.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/phy.h>
|
||||
#include <linux/regulator/driver.h>
|
||||
#include <linux/regulator/fixed.h>
|
||||
#include <linux/regulator/gpio-regulator.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/sh_eth.h>
|
||||
#include <mach/common.h>
|
||||
|
@ -39,6 +41,11 @@
|
|||
#include <mach/r8a7790.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#include <linux/spi/rspi.h>
|
||||
#include <linux/spi/spi.h>
|
||||
|
||||
/* DU */
|
||||
static struct rcar_du_encoder_data lager_du_encoders[] = {
|
||||
|
@ -120,7 +127,8 @@ static const struct gpio_led_platform_data lager_leds_pdata __initconst = {
|
|||
|
||||
/* GPIO KEY */
|
||||
#define GPIO_KEY(c, g, d, ...) \
|
||||
{ .code = c, .gpio = g, .desc = d, .active_low = 1 }
|
||||
{ .code = c, .gpio = g, .desc = d, .active_low = 1, \
|
||||
.wakeup = 1, .debounce_interval = 20 }
|
||||
|
||||
static struct gpio_keys_button gpio_buttons[] = {
|
||||
GPIO_KEY(KEY_4, RCAR_GP_PIN(1, 28), "SW2-pin4"),
|
||||
|
@ -140,6 +148,71 @@ static struct regulator_consumer_supply fixed3v3_power_consumers[] =
|
|||
REGULATOR_SUPPLY("vmmc", "sh_mmcif.1"),
|
||||
};
|
||||
|
||||
/*
|
||||
* SDHI regulator macro
|
||||
*
|
||||
** FIXME**
|
||||
* Lager board vqmmc is provided via DA9063 PMIC chip,
|
||||
* and we should use ${LINK}/drivers/mfd/da9063-* driver for it.
|
||||
* but, it doesn't have regulator support at this point.
|
||||
* It uses gpio-regulator for vqmmc as quick-hack.
|
||||
*/
|
||||
#define SDHI_REGULATOR(idx, vdd_pin, vccq_pin) \
|
||||
static struct regulator_consumer_supply vcc_sdhi##idx##_consumer = \
|
||||
REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi." #idx); \
|
||||
\
|
||||
static struct regulator_init_data vcc_sdhi##idx##_init_data = { \
|
||||
.constraints = { \
|
||||
.valid_ops_mask = REGULATOR_CHANGE_STATUS, \
|
||||
}, \
|
||||
.consumer_supplies = &vcc_sdhi##idx##_consumer, \
|
||||
.num_consumer_supplies = 1, \
|
||||
}; \
|
||||
\
|
||||
static const struct fixed_voltage_config vcc_sdhi##idx##_info __initconst = {\
|
||||
.supply_name = "SDHI" #idx "Vcc", \
|
||||
.microvolts = 3300000, \
|
||||
.gpio = vdd_pin, \
|
||||
.enable_high = 1, \
|
||||
.init_data = &vcc_sdhi##idx##_init_data, \
|
||||
}; \
|
||||
\
|
||||
static struct regulator_consumer_supply vccq_sdhi##idx##_consumer = \
|
||||
REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi." #idx); \
|
||||
\
|
||||
static struct regulator_init_data vccq_sdhi##idx##_init_data = { \
|
||||
.constraints = { \
|
||||
.input_uV = 3300000, \
|
||||
.min_uV = 1800000, \
|
||||
.max_uV = 3300000, \
|
||||
.valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | \
|
||||
REGULATOR_CHANGE_STATUS, \
|
||||
}, \
|
||||
.consumer_supplies = &vccq_sdhi##idx##_consumer, \
|
||||
.num_consumer_supplies = 1, \
|
||||
}; \
|
||||
\
|
||||
static struct gpio vccq_sdhi##idx##_gpio = \
|
||||
{ vccq_pin, GPIOF_OUT_INIT_HIGH, "vccq-sdhi" #idx }; \
|
||||
\
|
||||
static struct gpio_regulator_state vccq_sdhi##idx##_states[] = { \
|
||||
{ .value = 1800000, .gpios = 0 }, \
|
||||
{ .value = 3300000, .gpios = 1 }, \
|
||||
}; \
|
||||
\
|
||||
static const struct gpio_regulator_config vccq_sdhi##idx##_info __initconst = {\
|
||||
.supply_name = "vqmmc", \
|
||||
.gpios = &vccq_sdhi##idx##_gpio, \
|
||||
.nr_gpios = 1, \
|
||||
.states = vccq_sdhi##idx##_states, \
|
||||
.nr_states = ARRAY_SIZE(vccq_sdhi##idx##_states), \
|
||||
.type = REGULATOR_VOLTAGE, \
|
||||
.init_data = &vccq_sdhi##idx##_init_data, \
|
||||
};
|
||||
|
||||
SDHI_REGULATOR(0, RCAR_GP_PIN(5, 24), RCAR_GP_PIN(5, 29));
|
||||
SDHI_REGULATOR(2, RCAR_GP_PIN(5, 25), RCAR_GP_PIN(5, 30));
|
||||
|
||||
/* MMCIF */
|
||||
static const struct sh_mmcif_plat_data mmcif1_pdata __initconst = {
|
||||
.caps = MMC_CAP_8_BIT_DATA | MMC_CAP_NONREMOVABLE,
|
||||
|
@ -148,7 +221,7 @@ static const struct sh_mmcif_plat_data mmcif1_pdata __initconst = {
|
|||
};
|
||||
|
||||
static const struct resource mmcif1_resources[] __initconst = {
|
||||
DEFINE_RES_MEM_NAMED(0xee220000, 0x80, "MMCIF1"),
|
||||
DEFINE_RES_MEM(0xee220000, 0x80),
|
||||
DEFINE_RES_IRQ(gic_spi(170)),
|
||||
};
|
||||
|
||||
|
@ -165,6 +238,59 @@ static const struct resource ether_resources[] __initconst = {
|
|||
DEFINE_RES_IRQ(gic_spi(162)),
|
||||
};
|
||||
|
||||
/* SPI Flash memory (Spansion S25FL512SAGMFIG11 64Mb) */
|
||||
static struct mtd_partition spi_flash_part[] = {
|
||||
/* Reserved for user loader program, read-only */
|
||||
{
|
||||
.name = "loader",
|
||||
.offset = 0,
|
||||
.size = SZ_256K,
|
||||
.mask_flags = MTD_WRITEABLE,
|
||||
},
|
||||
/* Reserved for user program, read-only */
|
||||
{
|
||||
.name = "user",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = SZ_4M,
|
||||
.mask_flags = MTD_WRITEABLE,
|
||||
},
|
||||
/* All else is writable (e.g. JFFS2) */
|
||||
{
|
||||
.name = "flash",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = MTDPART_SIZ_FULL,
|
||||
.mask_flags = 0,
|
||||
},
|
||||
};
|
||||
|
||||
static struct flash_platform_data spi_flash_data = {
|
||||
.name = "m25p80",
|
||||
.parts = spi_flash_part,
|
||||
.nr_parts = ARRAY_SIZE(spi_flash_part),
|
||||
.type = "s25fl512s",
|
||||
};
|
||||
|
||||
static const struct rspi_plat_data qspi_pdata __initconst = {
|
||||
.num_chipselect = 1,
|
||||
};
|
||||
|
||||
static const struct spi_board_info spi_info[] __initconst = {
|
||||
{
|
||||
.modalias = "m25p80",
|
||||
.platform_data = &spi_flash_data,
|
||||
.mode = SPI_MODE_0,
|
||||
.max_speed_hz = 30000000,
|
||||
.bus_num = 0,
|
||||
.chip_select = 0,
|
||||
},
|
||||
};
|
||||
|
||||
/* QSPI resource */
|
||||
static const struct resource qspi_resources[] __initconst = {
|
||||
DEFINE_RES_MEM(0xe6b10000, 0x1000),
|
||||
DEFINE_RES_IRQ(gic_spi(184)),
|
||||
};
|
||||
|
||||
static const struct pinctrl_map lager_pinctrl_map[] = {
|
||||
/* DU (CN10: ARGB0, CN13: LVDS) */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7790", "pfc-r8a7790",
|
||||
|
@ -197,6 +323,9 @@ static const struct pinctrl_map lager_pinctrl_map[] = {
|
|||
|
||||
static void __init lager_add_standard_devices(void)
|
||||
{
|
||||
int fixed_regulator_idx = 0;
|
||||
int gpio_regulator_idx = 0;
|
||||
|
||||
r8a7790_clock_init();
|
||||
|
||||
pinctrl_register_mappings(lager_pinctrl_map,
|
||||
|
@ -210,7 +339,8 @@ static void __init lager_add_standard_devices(void)
|
|||
platform_device_register_data(&platform_bus, "gpio-keys", -1,
|
||||
&lager_keys_pdata,
|
||||
sizeof(lager_keys_pdata));
|
||||
regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
|
||||
regulator_register_always_on(fixed_regulator_idx++,
|
||||
"fixed-3.3V", fixed3v3_power_consumers,
|
||||
ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
|
||||
platform_device_register_resndata(&platform_bus, "sh_mmcif", 1,
|
||||
mmcif1_resources, ARRAY_SIZE(mmcif1_resources),
|
||||
|
@ -222,6 +352,22 @@ static void __init lager_add_standard_devices(void)
|
|||
ðer_pdata, sizeof(ether_pdata));
|
||||
|
||||
lager_add_du_device();
|
||||
|
||||
platform_device_register_resndata(&platform_bus, "qspi", 0,
|
||||
qspi_resources,
|
||||
ARRAY_SIZE(qspi_resources),
|
||||
&qspi_pdata, sizeof(qspi_pdata));
|
||||
spi_register_board_info(spi_info, ARRAY_SIZE(spi_info));
|
||||
|
||||
platform_device_register_data(&platform_bus, "reg-fixed-voltage", fixed_regulator_idx++,
|
||||
&vcc_sdhi0_info, sizeof(struct fixed_voltage_config));
|
||||
platform_device_register_data(&platform_bus, "reg-fixed-voltage", fixed_regulator_idx++,
|
||||
&vcc_sdhi2_info, sizeof(struct fixed_voltage_config));
|
||||
|
||||
platform_device_register_data(&platform_bus, "gpio-regulator", gpio_regulator_idx++,
|
||||
&vccq_sdhi0_info, sizeof(struct gpio_regulator_config));
|
||||
platform_device_register_data(&platform_bus, "gpio-regulator", gpio_regulator_idx++,
|
||||
&vccq_sdhi2_info, sizeof(struct gpio_regulator_config));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -260,5 +406,6 @@ DT_MACHINE_START(LAGER_DT, "lager")
|
|||
.init_early = r8a7790_init_early,
|
||||
.init_time = rcar_gen2_timer_init,
|
||||
.init_machine = lager_init,
|
||||
.init_late = shmobile_init_late,
|
||||
.dt_compat = lager_boards_compat_dt,
|
||||
MACHINE_END
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/mtd/sh_flctl.h>
|
||||
#include <linux/pinctrl/machine.h>
|
||||
#include <linux/pinctrl/pinconf-generic.h>
|
||||
#include <linux/platform_data/gpio_backlight.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/regulator/fixed.h>
|
||||
|
@ -548,9 +549,9 @@ static void __init hdmi_init_pm_clock(void)
|
|||
clk_get_rate(&sh7372_pllc2_clk));
|
||||
|
||||
rate = clk_round_rate(&sh7372_pllc2_clk, 594000000);
|
||||
if (rate < 0) {
|
||||
if (rate <= 0) {
|
||||
pr_err("Cannot get suitable rate: %ld\n", rate);
|
||||
ret = rate;
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
@ -1311,6 +1312,10 @@ static struct i2c_board_info i2c1_devices[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static unsigned long pin_pulldown_conf[] = {
|
||||
PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_DOWN, 0),
|
||||
};
|
||||
|
||||
static const struct pinctrl_map mackerel_pinctrl_map[] = {
|
||||
/* ADXL34X */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("1-0053", "pfc-sh7372",
|
||||
|
@ -1396,17 +1401,19 @@ static const struct pinctrl_map mackerel_pinctrl_map[] = {
|
|||
/* USBHS0 */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("renesas_usbhs.0", "pfc-sh7372",
|
||||
"usb0_vbus", "usb0"),
|
||||
PIN_MAP_CONFIGS_GROUP_DEFAULT("renesas_usbhs.0", "pfc-sh7372",
|
||||
"usb0_vbus", pin_pulldown_conf),
|
||||
/* USBHS1 */
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("renesas_usbhs.1", "pfc-sh7372",
|
||||
"usb1_vbus", "usb1"),
|
||||
PIN_MAP_CONFIGS_GROUP_DEFAULT("renesas_usbhs.&", "pfc-sh7372",
|
||||
"usb1_vbus", pin_pulldown_conf),
|
||||
PIN_MAP_MUX_GROUP_DEFAULT("renesas_usbhs.1", "pfc-sh7372",
|
||||
"usb1_otg_id_0", "usb1"),
|
||||
};
|
||||
|
||||
#define GPIO_PORT9CR IOMEM(0xE6051009)
|
||||
#define GPIO_PORT10CR IOMEM(0xE605100A)
|
||||
#define GPIO_PORT167CR IOMEM(0xE60520A7)
|
||||
#define GPIO_PORT168CR IOMEM(0xE60520A8)
|
||||
#define SRCR4 IOMEM(0xe61580bc)
|
||||
#define USCCR1 IOMEM(0xE6058144)
|
||||
static void __init mackerel_init(void)
|
||||
|
@ -1446,12 +1453,6 @@ static void __init mackerel_init(void)
|
|||
|
||||
gpio_request_one(151, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */
|
||||
|
||||
/* USBHS0 */
|
||||
gpio_request_pulldown(GPIO_PORT168CR); /* VBUS0_0 pull down */
|
||||
|
||||
/* USBHS1 */
|
||||
gpio_request_pulldown(GPIO_PORT167CR); /* VBUS0_1 pull down */
|
||||
|
||||
/* FSI2 port A (ak4643) */
|
||||
gpio_request_one(161, GPIOF_OUT_INIT_LOW, NULL); /* slave */
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include <linux/leds.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/pinctrl/machine.h>
|
||||
#include <linux/platform_data/camera-rcar.h>
|
||||
#include <linux/platform_data/gpio-rcar.h>
|
||||
#include <linux/platform_data/rcar-du.h>
|
||||
#include <linux/platform_data/usb-rcar-phy.h>
|
||||
|
@ -259,10 +260,30 @@ static struct platform_device leds_device = {
|
|||
},
|
||||
};
|
||||
|
||||
/* VIN */
|
||||
static struct rcar_vin_platform_data vin_platform_data __initdata = {
|
||||
.flags = RCAR_VIN_BT656,
|
||||
};
|
||||
|
||||
#define MARZEN_VIN(idx) \
|
||||
static struct resource vin##idx##_resources[] __initdata = { \
|
||||
DEFINE_RES_MEM(0xffc50000 + 0x1000 * (idx), 0x1000), \
|
||||
DEFINE_RES_IRQ(gic_iid(0x5f + (idx))), \
|
||||
}; \
|
||||
\
|
||||
static struct platform_device_info vin##idx##_info __initdata = { \
|
||||
.parent = &platform_bus, \
|
||||
.name = "r8a7779-vin", \
|
||||
.id = idx, \
|
||||
.res = vin##idx##_resources, \
|
||||
.num_res = ARRAY_SIZE(vin##idx##_resources), \
|
||||
.dma_mask = DMA_BIT_MASK(32), \
|
||||
.data = &vin_platform_data, \
|
||||
.size_data = sizeof(vin_platform_data), \
|
||||
}
|
||||
MARZEN_VIN(1);
|
||||
MARZEN_VIN(3);
|
||||
|
||||
#define MARZEN_CAMERA(idx) \
|
||||
static struct i2c_board_info camera##idx##_info = { \
|
||||
I2C_BOARD_INFO("adv7180", 0x20 + (idx)), \
|
||||
|
@ -367,8 +388,8 @@ static void __init marzen_init(void)
|
|||
r8a7779_init_irq_extpin(1); /* IRQ1 as individual interrupt */
|
||||
|
||||
r8a7779_add_standard_devices();
|
||||
r8a7779_add_vin_device(1, &vin_platform_data);
|
||||
r8a7779_add_vin_device(3, &vin_platform_data);
|
||||
platform_device_register_full(&vin1_info);
|
||||
platform_device_register_full(&vin3_info);
|
||||
platform_add_devices(marzen_devices, ARRAY_SIZE(marzen_devices));
|
||||
marzen_add_du_device();
|
||||
}
|
||||
|
|
|
@ -170,6 +170,9 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_CON_ID("cpu_clk", &div4_clks[DIV4_I]),
|
||||
|
||||
/* MSTP clocks */
|
||||
CLKDEV_CON_ID("mtu2_fck", &mstp_clks[MSTP33]),
|
||||
|
||||
/* ICK */
|
||||
CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP47]),
|
||||
CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP46]),
|
||||
CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[MSTP45]),
|
||||
|
@ -178,6 +181,7 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_ICK_ID("sci_fck", "sh-sci.5", &mstp_clks[MSTP42]),
|
||||
CLKDEV_ICK_ID("sci_fck", "sh-sci.6", &mstp_clks[MSTP41]),
|
||||
CLKDEV_ICK_ID("sci_fck", "sh-sci.7", &mstp_clks[MSTP40]),
|
||||
CLKDEV_CON_ID("mtu2_fck", &mstp_clks[MSTP33]),
|
||||
};
|
||||
|
||||
void __init r7s72100_clock_init(void)
|
||||
|
|
|
@ -585,6 +585,7 @@ static struct clk_lookup lookups[] = {
|
|||
|
||||
CLKDEV_DEV_ID("sh_cmt.10", &mstp_clks[MSTP329]),
|
||||
CLKDEV_DEV_ID("sh_fsi2", &mstp_clks[MSTP328]),
|
||||
CLKDEV_DEV_ID("fe1f0000.sound", &mstp_clks[MSTP328]),
|
||||
CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[MSTP323]),
|
||||
CLKDEV_DEV_ID("e6c20000.i2c", &mstp_clks[MSTP323]),
|
||||
CLKDEV_DEV_ID("renesas_usbhs", &mstp_clks[MSTP320]),
|
||||
|
|
|
@ -173,9 +173,13 @@ static struct clk_lookup lookups[] = {
|
|||
|
||||
/* MSTP32 clocks */
|
||||
CLKDEV_DEV_ID("sh_mmcif", &mstp_clks[MSTP331]), /* MMC */
|
||||
CLKDEV_DEV_ID("ffe4e000.mmcif", &mstp_clks[MSTP331]), /* MMC */
|
||||
CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP323]), /* SDHI0 */
|
||||
CLKDEV_DEV_ID("ffe4c000.sdhi", &mstp_clks[MSTP323]), /* SDHI0 */
|
||||
CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP322]), /* SDHI1 */
|
||||
CLKDEV_DEV_ID("ffe4d000.sdhi", &mstp_clks[MSTP322]), /* SDHI1 */
|
||||
CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP321]), /* SDHI2 */
|
||||
CLKDEV_DEV_ID("ffe4f000.sdhi", &mstp_clks[MSTP321]), /* SDHI2 */
|
||||
CLKDEV_DEV_ID("r8a777x-ether", &mstp_clks[MSTP114]), /* Ether */
|
||||
CLKDEV_DEV_ID("r8a7778-vin.0", &mstp_clks[MSTP110]), /* VIN0 */
|
||||
CLKDEV_DEV_ID("r8a7778-vin.1", &mstp_clks[MSTP109]), /* VIN1 */
|
||||
|
@ -183,9 +187,13 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_DEV_ID("ohci-platform", &mstp_clks[MSTP100]), /* USB OHCI port0/1 */
|
||||
CLKDEV_DEV_ID("renesas_usbhs", &mstp_clks[MSTP100]), /* USB FUNC */
|
||||
CLKDEV_DEV_ID("i2c-rcar.0", &mstp_clks[MSTP030]), /* I2C0 */
|
||||
CLKDEV_DEV_ID("ffc70000.i2c", &mstp_clks[MSTP030]), /* I2C0 */
|
||||
CLKDEV_DEV_ID("i2c-rcar.1", &mstp_clks[MSTP029]), /* I2C1 */
|
||||
CLKDEV_DEV_ID("ffc71000.i2c", &mstp_clks[MSTP029]), /* I2C1 */
|
||||
CLKDEV_DEV_ID("i2c-rcar.2", &mstp_clks[MSTP028]), /* I2C2 */
|
||||
CLKDEV_DEV_ID("ffc72000.i2c", &mstp_clks[MSTP028]), /* I2C2 */
|
||||
CLKDEV_DEV_ID("i2c-rcar.3", &mstp_clks[MSTP027]), /* I2C3 */
|
||||
CLKDEV_DEV_ID("ffc73000.i2c", &mstp_clks[MSTP027]), /* I2C3 */
|
||||
CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP026]), /* SCIF0 */
|
||||
CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP025]), /* SCIF1 */
|
||||
CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP024]), /* SCIF2 */
|
||||
|
@ -195,8 +203,11 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_DEV_ID("sh_tmu.0", &mstp_clks[MSTP016]), /* TMU00 */
|
||||
CLKDEV_DEV_ID("sh_tmu.1", &mstp_clks[MSTP015]), /* TMU01 */
|
||||
CLKDEV_DEV_ID("sh-hspi.0", &mstp_clks[MSTP007]), /* HSPI0 */
|
||||
CLKDEV_DEV_ID("fffc7000.spi", &mstp_clks[MSTP007]), /* HSPI0 */
|
||||
CLKDEV_DEV_ID("sh-hspi.1", &mstp_clks[MSTP007]), /* HSPI1 */
|
||||
CLKDEV_DEV_ID("fffc8000.spi", &mstp_clks[MSTP007]), /* HSPI1 */
|
||||
CLKDEV_DEV_ID("sh-hspi.2", &mstp_clks[MSTP007]), /* HSPI2 */
|
||||
CLKDEV_DEV_ID("fffc6000.spi", &mstp_clks[MSTP007]), /* HSPI2 */
|
||||
CLKDEV_DEV_ID("rcar_sound", &mstp_clks[MSTP008]), /* SRU */
|
||||
|
||||
CLKDEV_ICK_ID("ssi.0", "rcar_sound", &mstp_clks[MSTP012]),
|
||||
|
|
|
@ -184,9 +184,13 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_DEV_ID("sh_tmu.1", &mstp_clks[MSTP016]), /* TMU01 */
|
||||
CLKDEV_DEV_ID("sh_tmu.2", &mstp_clks[MSTP016]), /* TMU02 */
|
||||
CLKDEV_DEV_ID("i2c-rcar.0", &mstp_clks[MSTP030]), /* I2C0 */
|
||||
CLKDEV_DEV_ID("ffc70000.i2c", &mstp_clks[MSTP030]), /* I2C0 */
|
||||
CLKDEV_DEV_ID("i2c-rcar.1", &mstp_clks[MSTP029]), /* I2C1 */
|
||||
CLKDEV_DEV_ID("ffc71000.i2c", &mstp_clks[MSTP029]), /* I2C1 */
|
||||
CLKDEV_DEV_ID("i2c-rcar.2", &mstp_clks[MSTP028]), /* I2C2 */
|
||||
CLKDEV_DEV_ID("ffc72000.i2c", &mstp_clks[MSTP028]), /* I2C2 */
|
||||
CLKDEV_DEV_ID("i2c-rcar.3", &mstp_clks[MSTP027]), /* I2C3 */
|
||||
CLKDEV_DEV_ID("ffc73000.i2c", &mstp_clks[MSTP027]), /* I2C3 */
|
||||
CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP026]), /* SCIF0 */
|
||||
CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP025]), /* SCIF1 */
|
||||
CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP024]), /* SCIF2 */
|
||||
|
@ -194,12 +198,19 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_DEV_ID("sh-sci.4", &mstp_clks[MSTP022]), /* SCIF4 */
|
||||
CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP021]), /* SCIF6 */
|
||||
CLKDEV_DEV_ID("sh-hspi.0", &mstp_clks[MSTP007]), /* HSPI0 */
|
||||
CLKDEV_DEV_ID("fffc7000.spi", &mstp_clks[MSTP007]), /* HSPI0 */
|
||||
CLKDEV_DEV_ID("sh-hspi.1", &mstp_clks[MSTP007]), /* HSPI1 */
|
||||
CLKDEV_DEV_ID("fffc8000.spi", &mstp_clks[MSTP007]), /* HSPI1 */
|
||||
CLKDEV_DEV_ID("sh-hspi.2", &mstp_clks[MSTP007]), /* HSPI2 */
|
||||
CLKDEV_DEV_ID("fffc6000.spi", &mstp_clks[MSTP007]), /* HSPI2 */
|
||||
CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP323]), /* SDHI0 */
|
||||
CLKDEV_DEV_ID("ffe4c000.sdhi", &mstp_clks[MSTP323]), /* SDHI0 */
|
||||
CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP322]), /* SDHI1 */
|
||||
CLKDEV_DEV_ID("ffe4d000.sdhi", &mstp_clks[MSTP322]), /* SDHI1 */
|
||||
CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP321]), /* SDHI2 */
|
||||
CLKDEV_DEV_ID("ffe4e000.sdhi", &mstp_clks[MSTP321]), /* SDHI2 */
|
||||
CLKDEV_DEV_ID("sh_mobile_sdhi.3", &mstp_clks[MSTP320]), /* SDHI3 */
|
||||
CLKDEV_DEV_ID("ffe4f000.sdhi", &mstp_clks[MSTP320]), /* SDHI3 */
|
||||
CLKDEV_DEV_ID("rcar-du-r8a7779", &mstp_clks[MSTP103]), /* DU */
|
||||
};
|
||||
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
#define SMSTPCR7 0xe615014c
|
||||
#define SMSTPCR8 0xe6150990
|
||||
#define SMSTPCR9 0xe6150994
|
||||
#define SMSTPCR10 0xe6150998
|
||||
|
||||
#define SDCKCR 0xE6150074
|
||||
#define SD2CKCR 0xE6150078
|
||||
|
@ -77,7 +78,7 @@ static struct sh_clk_ops followparent_clk_ops = {
|
|||
};
|
||||
|
||||
static struct clk main_clk = {
|
||||
/* .parent will be set r8a73a4_clock_init */
|
||||
/* .parent will be set r8a7790_clock_init */
|
||||
.ops = &followparent_clk_ops,
|
||||
};
|
||||
|
||||
|
@ -182,10 +183,14 @@ static struct clk div6_clks[DIV6_NR] = {
|
|||
|
||||
/* MSTP */
|
||||
enum {
|
||||
MSTP1015, MSTP1014, MSTP1013, MSTP1012, MSTP1011, MSTP1010,
|
||||
MSTP1009, MSTP1008, MSTP1007, MSTP1006, MSTP1005,
|
||||
MSTP931, MSTP930, MSTP929, MSTP928,
|
||||
MSTP917,
|
||||
MSTP813,
|
||||
MSTP726, MSTP725, MSTP724, MSTP723, MSTP722, MSTP721, MSTP720,
|
||||
MSTP717, MSTP716,
|
||||
MSTP704,
|
||||
MSTP522,
|
||||
MSTP315, MSTP314, MSTP313, MSTP312, MSTP311, MSTP305, MSTP304,
|
||||
MSTP216, MSTP207, MSTP206, MSTP204, MSTP203, MSTP202,
|
||||
|
@ -194,10 +199,22 @@ enum {
|
|||
};
|
||||
|
||||
static struct clk mstp_clks[MSTP_NR] = {
|
||||
[MSTP931] = SH_CLK_MSTP32(&hp_clk, SMSTPCR9, 31, 0), /* I2C0 */
|
||||
[MSTP930] = SH_CLK_MSTP32(&hp_clk, SMSTPCR9, 30, 0), /* I2C1 */
|
||||
[MSTP929] = SH_CLK_MSTP32(&hp_clk, SMSTPCR9, 29, 0), /* I2C2 */
|
||||
[MSTP928] = SH_CLK_MSTP32(&hp_clk, SMSTPCR9, 28, 0), /* I2C3 */
|
||||
[MSTP1015] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 15, 0), /* SSI0 */
|
||||
[MSTP1014] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 14, 0), /* SSI1 */
|
||||
[MSTP1013] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 13, 0), /* SSI2 */
|
||||
[MSTP1012] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 12, 0), /* SSI3 */
|
||||
[MSTP1011] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 11, 0), /* SSI4 */
|
||||
[MSTP1010] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 10, 0), /* SSI5 */
|
||||
[MSTP1009] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 9, 0), /* SSI6 */
|
||||
[MSTP1008] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 8, 0), /* SSI7 */
|
||||
[MSTP1007] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 7, 0), /* SSI8 */
|
||||
[MSTP1006] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 6, 0), /* SSI9 */
|
||||
[MSTP1005] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 5, 0), /* SSI ALL */
|
||||
[MSTP931] = SH_CLK_MSTP32(&p_clk, SMSTPCR9, 31, 0), /* I2C0 */
|
||||
[MSTP930] = SH_CLK_MSTP32(&p_clk, SMSTPCR9, 30, 0), /* I2C1 */
|
||||
[MSTP929] = SH_CLK_MSTP32(&p_clk, SMSTPCR9, 29, 0), /* I2C2 */
|
||||
[MSTP928] = SH_CLK_MSTP32(&p_clk, SMSTPCR9, 28, 0), /* I2C3 */
|
||||
[MSTP917] = SH_CLK_MSTP32(&qspi_clk, SMSTPCR9, 17, 0), /* QSPI */
|
||||
[MSTP813] = SH_CLK_MSTP32(&p_clk, SMSTPCR8, 13, 0), /* Ether */
|
||||
[MSTP726] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 26, 0), /* LVDS0 */
|
||||
[MSTP725] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 25, 0), /* LVDS1 */
|
||||
|
@ -208,6 +225,7 @@ static struct clk mstp_clks[MSTP_NR] = {
|
|||
[MSTP720] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 20, 0), /* SCIF1 */
|
||||
[MSTP717] = SH_CLK_MSTP32(&zs_clk, SMSTPCR7, 17, 0), /* HSCIF0 */
|
||||
[MSTP716] = SH_CLK_MSTP32(&zs_clk, SMSTPCR7, 16, 0), /* HSCIF1 */
|
||||
[MSTP704] = SH_CLK_MSTP32(&mp_clk, SMSTPCR7, 4, 0), /* HSUSB */
|
||||
[MSTP522] = SH_CLK_MSTP32(&extal_clk, SMSTPCR5, 22, 0), /* Thermal */
|
||||
[MSTP315] = SH_CLK_MSTP32(&div6_clks[DIV6_MMC0], SMSTPCR3, 15, 0), /* MMC0 */
|
||||
[MSTP314] = SH_CLK_MSTP32(&div4_clks[DIV4_SD0], SMSTPCR3, 14, 0), /* SDHI0 */
|
||||
|
@ -262,11 +280,7 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_CON_ID("ssprs", &div6_clks[DIV6_SSPRS]),
|
||||
|
||||
/* MSTP */
|
||||
CLKDEV_ICK_ID("lvds.0", "rcar-du-r8a7790", &mstp_clks[MSTP726]),
|
||||
CLKDEV_ICK_ID("lvds.1", "rcar-du-r8a7790", &mstp_clks[MSTP725]),
|
||||
CLKDEV_ICK_ID("du.0", "rcar-du-r8a7790", &mstp_clks[MSTP724]),
|
||||
CLKDEV_ICK_ID("du.1", "rcar-du-r8a7790", &mstp_clks[MSTP723]),
|
||||
CLKDEV_ICK_ID("du.2", "rcar-du-r8a7790", &mstp_clks[MSTP722]),
|
||||
CLKDEV_DEV_ID("rcar_sound", &mstp_clks[MSTP1005]),
|
||||
CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]),
|
||||
CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]),
|
||||
CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP206]),
|
||||
|
@ -282,6 +296,7 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_DEV_ID("e6530000.i2c", &mstp_clks[MSTP929]),
|
||||
CLKDEV_DEV_ID("e6540000.i2c", &mstp_clks[MSTP928]),
|
||||
CLKDEV_DEV_ID("r8a7790-ether", &mstp_clks[MSTP813]),
|
||||
CLKDEV_DEV_ID("e61f0000.thermal", &mstp_clks[MSTP522]),
|
||||
CLKDEV_DEV_ID("rcar_thermal", &mstp_clks[MSTP522]),
|
||||
CLKDEV_DEV_ID("ee200000.mmcif", &mstp_clks[MSTP315]),
|
||||
CLKDEV_DEV_ID("sh_mmcif.0", &mstp_clks[MSTP315]),
|
||||
|
@ -296,6 +311,27 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_DEV_ID("ee220000.mmcif", &mstp_clks[MSTP305]),
|
||||
CLKDEV_DEV_ID("sh_mmcif.1", &mstp_clks[MSTP305]),
|
||||
CLKDEV_DEV_ID("sh_cmt.0", &mstp_clks[MSTP124]),
|
||||
CLKDEV_DEV_ID("qspi.0", &mstp_clks[MSTP917]),
|
||||
CLKDEV_DEV_ID("renesas_usbhs", &mstp_clks[MSTP704]),
|
||||
|
||||
/* ICK */
|
||||
CLKDEV_ICK_ID("usbhs", "usb_phy_rcar_gen2", &mstp_clks[MSTP704]),
|
||||
CLKDEV_ICK_ID("lvds.0", "rcar-du-r8a7790", &mstp_clks[MSTP726]),
|
||||
CLKDEV_ICK_ID("lvds.1", "rcar-du-r8a7790", &mstp_clks[MSTP725]),
|
||||
CLKDEV_ICK_ID("du.0", "rcar-du-r8a7790", &mstp_clks[MSTP724]),
|
||||
CLKDEV_ICK_ID("du.1", "rcar-du-r8a7790", &mstp_clks[MSTP723]),
|
||||
CLKDEV_ICK_ID("du.2", "rcar-du-r8a7790", &mstp_clks[MSTP722]),
|
||||
CLKDEV_ICK_ID("ssi.0", "rcar_sound", &mstp_clks[MSTP1015]),
|
||||
CLKDEV_ICK_ID("ssi.1", "rcar_sound", &mstp_clks[MSTP1014]),
|
||||
CLKDEV_ICK_ID("ssi.2", "rcar_sound", &mstp_clks[MSTP1013]),
|
||||
CLKDEV_ICK_ID("ssi.3", "rcar_sound", &mstp_clks[MSTP1012]),
|
||||
CLKDEV_ICK_ID("ssi.4", "rcar_sound", &mstp_clks[MSTP1011]),
|
||||
CLKDEV_ICK_ID("ssi.5", "rcar_sound", &mstp_clks[MSTP1010]),
|
||||
CLKDEV_ICK_ID("ssi.6", "rcar_sound", &mstp_clks[MSTP1009]),
|
||||
CLKDEV_ICK_ID("ssi.7", "rcar_sound", &mstp_clks[MSTP1008]),
|
||||
CLKDEV_ICK_ID("ssi.8", "rcar_sound", &mstp_clks[MSTP1007]),
|
||||
CLKDEV_ICK_ID("ssi.9", "rcar_sound", &mstp_clks[MSTP1006]),
|
||||
|
||||
};
|
||||
|
||||
#define R8A7790_CLOCK_ROOT(e, m, p0, p1, p30, p31) \
|
||||
|
@ -321,10 +357,10 @@ void __init r8a7790_clock_init(void)
|
|||
R8A7790_CLOCK_ROOT(20, &extal_clk, 130, 156, 80, 66);
|
||||
break;
|
||||
case MD(14):
|
||||
R8A7790_CLOCK_ROOT(26, &extal_div2_clk, 200, 240, 122, 102);
|
||||
R8A7790_CLOCK_ROOT(26 / 2, &extal_div2_clk, 200, 240, 122, 102);
|
||||
break;
|
||||
case MD(13) | MD(14):
|
||||
R8A7790_CLOCK_ROOT(30, &extal_div2_clk, 172, 208, 106, 88);
|
||||
R8A7790_CLOCK_ROOT(30 / 2, &extal_div2_clk, 172, 208, 106, 88);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -103,6 +103,7 @@ SH_FIXED_RATIO_CLK_SET(hp_clk, pll1_clk, 1, 12);
|
|||
SH_FIXED_RATIO_CLK_SET(p_clk, pll1_clk, 1, 24);
|
||||
SH_FIXED_RATIO_CLK_SET(rclk_clk, pll1_clk, 1, (48 * 1024));
|
||||
SH_FIXED_RATIO_CLK_SET(mp_clk, pll1_div2_clk, 1, 15);
|
||||
SH_FIXED_RATIO_CLK_SET(zx_clk, pll1_clk, 1, 3);
|
||||
|
||||
static struct clk *main_clks[] = {
|
||||
&extal_clk,
|
||||
|
@ -116,12 +117,14 @@ static struct clk *main_clks[] = {
|
|||
&rclk_clk,
|
||||
&mp_clk,
|
||||
&cp_clk,
|
||||
&zx_clk,
|
||||
};
|
||||
|
||||
/* MSTP */
|
||||
enum {
|
||||
MSTP721, MSTP720,
|
||||
MSTP726, MSTP724, MSTP723, MSTP721, MSTP720,
|
||||
MSTP719, MSTP718, MSTP715, MSTP714,
|
||||
MSTP522,
|
||||
MSTP216, MSTP207, MSTP206,
|
||||
MSTP204, MSTP203, MSTP202, MSTP1105, MSTP1106, MSTP1107,
|
||||
MSTP124,
|
||||
|
@ -129,12 +132,16 @@ enum {
|
|||
};
|
||||
|
||||
static struct clk mstp_clks[MSTP_NR] = {
|
||||
[MSTP726] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 26, 0), /* LVDS0 */
|
||||
[MSTP724] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 24, 0), /* DU0 */
|
||||
[MSTP723] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 23, 0), /* DU1 */
|
||||
[MSTP721] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 21, 0), /* SCIF0 */
|
||||
[MSTP720] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 20, 0), /* SCIF1 */
|
||||
[MSTP719] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 19, 0), /* SCIF2 */
|
||||
[MSTP718] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 18, 0), /* SCIF3 */
|
||||
[MSTP715] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 15, 0), /* SCIF4 */
|
||||
[MSTP714] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 14, 0), /* SCIF5 */
|
||||
[MSTP522] = SH_CLK_MSTP32(&extal_clk, SMSTPCR5, 22, 0), /* Thermal */
|
||||
[MSTP216] = SH_CLK_MSTP32(&mp_clk, SMSTPCR2, 16, 0), /* SCIFB2 */
|
||||
[MSTP207] = SH_CLK_MSTP32(&mp_clk, SMSTPCR2, 7, 0), /* SCIFB1 */
|
||||
[MSTP206] = SH_CLK_MSTP32(&mp_clk, SMSTPCR2, 6, 0), /* SCIFB0 */
|
||||
|
@ -164,6 +171,9 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_CON_ID("peripheral_clk", &hp_clk),
|
||||
|
||||
/* MSTP */
|
||||
CLKDEV_ICK_ID("lvds.0", "rcar-du-r8a7791", &mstp_clks[MSTP726]),
|
||||
CLKDEV_ICK_ID("du.0", "rcar-du-r8a7791", &mstp_clks[MSTP724]),
|
||||
CLKDEV_ICK_ID("du.1", "rcar-du-r8a7791", &mstp_clks[MSTP723]),
|
||||
CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */
|
||||
CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]), /* SCIFA1 */
|
||||
CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP206]), /* SCIFB0 */
|
||||
|
@ -180,6 +190,8 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_DEV_ID("sh-sci.13", &mstp_clks[MSTP1106]), /* SCIFA4 */
|
||||
CLKDEV_DEV_ID("sh-sci.14", &mstp_clks[MSTP1107]), /* SCIFA5 */
|
||||
CLKDEV_DEV_ID("sh_cmt.0", &mstp_clks[MSTP124]),
|
||||
CLKDEV_DEV_ID("e61f0000.thermal", &mstp_clks[MSTP522]),
|
||||
CLKDEV_DEV_ID("rcar_thermal", &mstp_clks[MSTP522]),
|
||||
};
|
||||
|
||||
#define R8A7791_CLOCK_ROOT(e, m, p0, p1, p30, p31) \
|
||||
|
|
|
@ -504,10 +504,6 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_CON_ID("spu_clk", &div6_clks[DIV6_SPU]),
|
||||
CLKDEV_CON_ID("vou_clk", &div6_clks[DIV6_VOU]),
|
||||
CLKDEV_CON_ID("hdmi_clk", &div6_reparent_clks[DIV6_HDMI]),
|
||||
CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSIT]),
|
||||
CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSIT]),
|
||||
CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSI0P]),
|
||||
CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSI1P]),
|
||||
|
||||
/* MSTP32 clocks */
|
||||
CLKDEV_DEV_ID("i2c-sh_mobile.2", &mstp_clks[MSTP001]), /* IIC2 */
|
||||
|
@ -574,6 +570,11 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_DEV_ID("sh_keysc.0", &mstp_clks[MSTP403]), /* KEYSC */
|
||||
CLKDEV_DEV_ID("sh_cmt.2", &mstp_clks[MSTP400]), /* CMT2 */
|
||||
|
||||
/* ICK */
|
||||
CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSIT]),
|
||||
CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSIT]),
|
||||
CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSI0P]),
|
||||
CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSI1P]),
|
||||
CLKDEV_ICK_ID("hdmi", "sh_mobile_lcdc_fb.1",
|
||||
&div6_reparent_clks[DIV6_HDMI]),
|
||||
CLKDEV_ICK_ID("ick", "sh-mobile-hdmi", &div6_reparent_clks[DIV6_HDMI]),
|
||||
|
|
|
@ -625,12 +625,6 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_CON_ID("sdhi0_clk", &div6_clks[DIV6_SDHI0]),
|
||||
CLKDEV_CON_ID("sdhi1_clk", &div6_clks[DIV6_SDHI1]),
|
||||
CLKDEV_CON_ID("sdhi2_clk", &div6_clks[DIV6_SDHI2]),
|
||||
CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSIT]),
|
||||
CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSIT]),
|
||||
CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSI0P]),
|
||||
CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSI1P]),
|
||||
CLKDEV_ICK_ID("dsiphy_clk", "sh-mipi-dsi.0", &dsi0phy_clk),
|
||||
CLKDEV_ICK_ID("dsiphy_clk", "sh-mipi-dsi.1", &dsi1phy_clk),
|
||||
|
||||
/* MSTP32 clocks */
|
||||
CLKDEV_DEV_ID("i2c-sh_mobile.2", &mstp_clks[MSTP001]), /* I2C2 */
|
||||
|
@ -680,6 +674,14 @@ static struct clk_lookup lookups[] = {
|
|||
CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* I2C4 */
|
||||
CLKDEV_DEV_ID("e6828000.i2c", &mstp_clks[MSTP410]), /* I2C4 */
|
||||
CLKDEV_DEV_ID("sh_keysc.0", &mstp_clks[MSTP403]), /* KEYSC */
|
||||
|
||||
/* ICK */
|
||||
CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSIT]),
|
||||
CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSIT]),
|
||||
CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSI0P]),
|
||||
CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSI1P]),
|
||||
CLKDEV_ICK_ID("dsiphy_clk", "sh-mipi-dsi.0", &dsi0phy_clk),
|
||||
CLKDEV_ICK_ID("dsiphy_clk", "sh-mipi-dsi.1", &dsi1phy_clk),
|
||||
};
|
||||
|
||||
void __init sh73a0_clock_init(void)
|
||||
|
|
|
@ -3,12 +3,7 @@
|
|||
|
||||
extern void emev2_map_io(void);
|
||||
extern void emev2_init_delay(void);
|
||||
extern void emev2_add_standard_devices(void);
|
||||
extern void emev2_clock_init(void);
|
||||
|
||||
#define EMEV2_GPIO_BASE 200
|
||||
#define EMEV2_GPIO_IRQ(n) (EMEV2_GPIO_BASE + (n))
|
||||
|
||||
extern struct smp_operations emev2_smp_ops;
|
||||
|
||||
#endif /* __ASM_EMEV2_H__ */
|
||||
|
|
|
@ -27,6 +27,24 @@ enum {
|
|||
HPBDMA_SLAVE_DUMMY,
|
||||
HPBDMA_SLAVE_SDHI0_TX,
|
||||
HPBDMA_SLAVE_SDHI0_RX,
|
||||
HPBDMA_SLAVE_HPBIF0_TX,
|
||||
HPBDMA_SLAVE_HPBIF0_RX,
|
||||
HPBDMA_SLAVE_HPBIF1_TX,
|
||||
HPBDMA_SLAVE_HPBIF1_RX,
|
||||
HPBDMA_SLAVE_HPBIF2_TX,
|
||||
HPBDMA_SLAVE_HPBIF2_RX,
|
||||
HPBDMA_SLAVE_HPBIF3_TX,
|
||||
HPBDMA_SLAVE_HPBIF3_RX,
|
||||
HPBDMA_SLAVE_HPBIF4_TX,
|
||||
HPBDMA_SLAVE_HPBIF4_RX,
|
||||
HPBDMA_SLAVE_HPBIF5_TX,
|
||||
HPBDMA_SLAVE_HPBIF5_RX,
|
||||
HPBDMA_SLAVE_HPBIF6_TX,
|
||||
HPBDMA_SLAVE_HPBIF6_RX,
|
||||
HPBDMA_SLAVE_HPBIF7_TX,
|
||||
HPBDMA_SLAVE_HPBIF7_RX,
|
||||
HPBDMA_SLAVE_HPBIF8_TX,
|
||||
HPBDMA_SLAVE_HPBIF8_RX,
|
||||
};
|
||||
|
||||
extern void r8a7778_add_standard_devices(void);
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
|
||||
#include <linux/sh_clk.h>
|
||||
#include <linux/pm_domain.h>
|
||||
#include <linux/sh_eth.h>
|
||||
#include <linux/platform_data/camera-rcar.h>
|
||||
|
||||
/* HPB-DMA slave IDs */
|
||||
enum {
|
||||
|
@ -40,9 +38,6 @@ extern void r8a7779_earlytimer_init(void);
|
|||
extern void r8a7779_add_early_devices(void);
|
||||
extern void r8a7779_add_standard_devices(void);
|
||||
extern void r8a7779_add_standard_devices_dt(void);
|
||||
extern void r8a7779_add_ether_device(struct sh_eth_plat_data *pdata);
|
||||
extern void r8a7779_add_vin_device(int idx,
|
||||
struct rcar_vin_platform_data *pdata);
|
||||
extern void r8a7779_init_late(void);
|
||||
extern void r8a7779_clock_init(void);
|
||||
extern void r8a7779_pinmux_init(void);
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
void r8a7791_add_standard_devices(void);
|
||||
void r8a7791_add_dt_devices(void);
|
||||
void r8a7791_clock_init(void);
|
||||
void r8a7791_pinmux_init(void);
|
||||
void r8a7791_init_early(void);
|
||||
extern struct smp_operations r8a7791_smp_ops;
|
||||
|
||||
|
|
|
@ -16,24 +16,15 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/platform_data/gpio-em.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/irqchip/arm-gic.h>
|
||||
#include <mach/common.h>
|
||||
#include <mach/emev2.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/mach/time.h>
|
||||
|
||||
static struct map_desc emev2_io_desc[] __initdata = {
|
||||
#ifdef CONFIG_SMP
|
||||
|
@ -52,150 +43,20 @@ void __init emev2_map_io(void)
|
|||
iotable_init(emev2_io_desc, ARRAY_SIZE(emev2_io_desc));
|
||||
}
|
||||
|
||||
/* UART */
|
||||
static struct resource uart0_resources[] = {
|
||||
DEFINE_RES_MEM(0xe1020000, 0x38),
|
||||
DEFINE_RES_IRQ(40),
|
||||
};
|
||||
|
||||
static struct resource uart1_resources[] = {
|
||||
DEFINE_RES_MEM(0xe1030000, 0x38),
|
||||
DEFINE_RES_IRQ(41),
|
||||
};
|
||||
|
||||
static struct resource uart2_resources[] = {
|
||||
DEFINE_RES_MEM(0xe1040000, 0x38),
|
||||
DEFINE_RES_IRQ(42),
|
||||
};
|
||||
|
||||
static struct resource uart3_resources[] = {
|
||||
DEFINE_RES_MEM(0xe1050000, 0x38),
|
||||
DEFINE_RES_IRQ(43),
|
||||
};
|
||||
|
||||
#define emev2_register_uart(idx) \
|
||||
platform_device_register_simple("serial8250-em", idx, \
|
||||
uart##idx##_resources, \
|
||||
ARRAY_SIZE(uart##idx##_resources))
|
||||
|
||||
/* STI */
|
||||
static struct resource sti_resources[] = {
|
||||
DEFINE_RES_MEM(0xe0180000, 0x54),
|
||||
DEFINE_RES_IRQ(157),
|
||||
};
|
||||
|
||||
#define emev2_register_sti() \
|
||||
platform_device_register_simple("em_sti", 0, \
|
||||
sti_resources, \
|
||||
ARRAY_SIZE(sti_resources))
|
||||
|
||||
/* GIO */
|
||||
static struct gpio_em_config gio0_config = {
|
||||
.gpio_base = 0,
|
||||
.irq_base = EMEV2_GPIO_IRQ(0),
|
||||
.number_of_pins = 32,
|
||||
};
|
||||
|
||||
static struct resource gio0_resources[] = {
|
||||
DEFINE_RES_MEM(0xe0050000, 0x2c),
|
||||
DEFINE_RES_MEM(0xe0050040, 0x20),
|
||||
DEFINE_RES_IRQ(99),
|
||||
DEFINE_RES_IRQ(100),
|
||||
};
|
||||
|
||||
static struct gpio_em_config gio1_config = {
|
||||
.gpio_base = 32,
|
||||
.irq_base = EMEV2_GPIO_IRQ(32),
|
||||
.number_of_pins = 32,
|
||||
};
|
||||
|
||||
static struct resource gio1_resources[] = {
|
||||
DEFINE_RES_MEM(0xe0050080, 0x2c),
|
||||
DEFINE_RES_MEM(0xe00500c0, 0x20),
|
||||
DEFINE_RES_IRQ(101),
|
||||
DEFINE_RES_IRQ(102),
|
||||
};
|
||||
|
||||
static struct gpio_em_config gio2_config = {
|
||||
.gpio_base = 64,
|
||||
.irq_base = EMEV2_GPIO_IRQ(64),
|
||||
.number_of_pins = 32,
|
||||
};
|
||||
|
||||
static struct resource gio2_resources[] = {
|
||||
DEFINE_RES_MEM(0xe0050100, 0x2c),
|
||||
DEFINE_RES_MEM(0xe0050140, 0x20),
|
||||
DEFINE_RES_IRQ(103),
|
||||
DEFINE_RES_IRQ(104),
|
||||
};
|
||||
|
||||
static struct gpio_em_config gio3_config = {
|
||||
.gpio_base = 96,
|
||||
.irq_base = EMEV2_GPIO_IRQ(96),
|
||||
.number_of_pins = 32,
|
||||
};
|
||||
|
||||
static struct resource gio3_resources[] = {
|
||||
DEFINE_RES_MEM(0xe0050180, 0x2c),
|
||||
DEFINE_RES_MEM(0xe00501c0, 0x20),
|
||||
DEFINE_RES_IRQ(105),
|
||||
DEFINE_RES_IRQ(106),
|
||||
};
|
||||
|
||||
static struct gpio_em_config gio4_config = {
|
||||
.gpio_base = 128,
|
||||
.irq_base = EMEV2_GPIO_IRQ(128),
|
||||
.number_of_pins = 31,
|
||||
};
|
||||
|
||||
static struct resource gio4_resources[] = {
|
||||
DEFINE_RES_MEM(0xe0050200, 0x2c),
|
||||
DEFINE_RES_MEM(0xe0050240, 0x20),
|
||||
DEFINE_RES_IRQ(107),
|
||||
DEFINE_RES_IRQ(108),
|
||||
};
|
||||
|
||||
#define emev2_register_gio(idx) \
|
||||
platform_device_register_resndata(&platform_bus, "em_gio", \
|
||||
idx, gio##idx##_resources, \
|
||||
ARRAY_SIZE(gio##idx##_resources), \
|
||||
&gio##idx##_config, \
|
||||
sizeof(struct gpio_em_config))
|
||||
|
||||
static struct resource pmu_resources[] = {
|
||||
DEFINE_RES_IRQ(152),
|
||||
DEFINE_RES_IRQ(153),
|
||||
};
|
||||
|
||||
#define emev2_register_pmu() \
|
||||
platform_device_register_simple("arm-pmu", -1, \
|
||||
pmu_resources, \
|
||||
ARRAY_SIZE(pmu_resources))
|
||||
|
||||
void __init emev2_add_standard_devices(void)
|
||||
{
|
||||
if (!IS_ENABLED(CONFIG_COMMON_CLK))
|
||||
emev2_clock_init();
|
||||
|
||||
emev2_register_uart(0);
|
||||
emev2_register_uart(1);
|
||||
emev2_register_uart(2);
|
||||
emev2_register_uart(3);
|
||||
emev2_register_sti();
|
||||
emev2_register_gio(0);
|
||||
emev2_register_gio(1);
|
||||
emev2_register_gio(2);
|
||||
emev2_register_gio(3);
|
||||
emev2_register_gio(4);
|
||||
emev2_register_pmu();
|
||||
}
|
||||
|
||||
void __init emev2_init_delay(void)
|
||||
{
|
||||
shmobile_setup_delay(533, 1, 3); /* Cortex-A9 @ 533MHz */
|
||||
}
|
||||
|
||||
#ifdef CONFIG_USE_OF
|
||||
static void __init emev2_add_standard_devices_dt(void)
|
||||
{
|
||||
#ifdef CONFIG_COMMON_CLK
|
||||
of_clk_init(NULL);
|
||||
#else
|
||||
emev2_clock_init();
|
||||
#endif
|
||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||
}
|
||||
|
||||
static const char *emev2_boards_compat_dt[] __initdata = {
|
||||
"renesas,emev2",
|
||||
|
@ -206,7 +67,7 @@ DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)")
|
|||
.smp = smp_ops(emev2_smp_ops),
|
||||
.map_io = emev2_map_io,
|
||||
.init_early = emev2_init_delay,
|
||||
.init_machine = emev2_add_standard_devices_dt,
|
||||
.init_late = shmobile_init_late,
|
||||
.dt_compat = emev2_boards_compat_dt,
|
||||
MACHINE_END
|
||||
|
||||
#endif /* CONFIG_USE_OF */
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <linux/kernel.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/serial_sci.h>
|
||||
#include <linux/sh_timer.h>
|
||||
#include <mach/common.h>
|
||||
#include <mach/irqs.h>
|
||||
#include <mach/r7s72100.h>
|
||||
|
@ -58,6 +59,26 @@ static inline void r7s72100_register_scif(int idx)
|
|||
sizeof(struct plat_sci_port));
|
||||
}
|
||||
|
||||
|
||||
static struct sh_timer_config mtu2_0_platform_data __initdata = {
|
||||
.name = "MTU2_0",
|
||||
.timer_bit = 0,
|
||||
.channel_offset = -0x80,
|
||||
.clockevent_rating = 200,
|
||||
};
|
||||
|
||||
static struct resource mtu2_0_resources[] __initdata = {
|
||||
DEFINE_RES_MEM(0xfcff0300, 0x27),
|
||||
DEFINE_RES_IRQ(gic_iid(139)), /* MTU2 TGI0A */
|
||||
};
|
||||
|
||||
#define r7s72100_register_mtu2(idx) \
|
||||
platform_device_register_resndata(&platform_bus, "sh_mtu2", \
|
||||
idx, mtu2_##idx##_resources, \
|
||||
ARRAY_SIZE(mtu2_##idx##_resources), \
|
||||
&mtu2_##idx##_platform_data, \
|
||||
sizeof(struct sh_timer_config))
|
||||
|
||||
void __init r7s72100_add_dt_devices(void)
|
||||
{
|
||||
r7s72100_register_scif(SCIF0);
|
||||
|
@ -68,6 +89,7 @@ void __init r7s72100_add_dt_devices(void)
|
|||
r7s72100_register_scif(SCIF5);
|
||||
r7s72100_register_scif(SCIF6);
|
||||
r7s72100_register_scif(SCIF7);
|
||||
r7s72100_register_mtu2(0);
|
||||
}
|
||||
|
||||
void __init r7s72100_init_early(void)
|
||||
|
|
|
@ -275,7 +275,7 @@ static const struct sh_dmae_pdata dma_pdata = {
|
|||
|
||||
static struct resource dma_resources[] = {
|
||||
DEFINE_RES_MEM(0xe6700020, 0x89e0),
|
||||
DEFINE_RES_IRQ_NAMED(gic_spi(220), "error_irq"),
|
||||
DEFINE_RES_IRQ(gic_spi(220)),
|
||||
{
|
||||
/* IRQ for channels 0-19 */
|
||||
.start = gic_spi(200),
|
||||
|
|
|
@ -319,6 +319,29 @@ void __init r8a7778_add_dt_devices(void)
|
|||
#define HPB_DMAE_ASYNCMDR_ASMD21_SINGLE BIT(1) /* SDHI0 */
|
||||
#define HPB_DMAE_ASYNCMDR_ASMD21_MULTI 0 /* SDHI0 */
|
||||
|
||||
#define HPBDMA_HPBIF(_id) \
|
||||
{ \
|
||||
.id = HPBDMA_SLAVE_HPBIF## _id ##_TX, \
|
||||
.addr = 0xffda0000 + (_id * 0x1000), \
|
||||
.dcr = HPB_DMAE_DCR_CT | \
|
||||
HPB_DMAE_DCR_DIP | \
|
||||
HPB_DMAE_DCR_SPDS_32BIT | \
|
||||
HPB_DMAE_DCR_DMDL | \
|
||||
HPB_DMAE_DCR_DPDS_32BIT, \
|
||||
.port = 0x1111, \
|
||||
.dma_ch = (28 + _id), \
|
||||
}, { \
|
||||
.id = HPBDMA_SLAVE_HPBIF## _id ##_RX, \
|
||||
.addr = 0xffda0000 + (_id * 0x1000), \
|
||||
.dcr = HPB_DMAE_DCR_CT | \
|
||||
HPB_DMAE_DCR_DIP | \
|
||||
HPB_DMAE_DCR_SMDL | \
|
||||
HPB_DMAE_DCR_SPDS_32BIT | \
|
||||
HPB_DMAE_DCR_DPDS_32BIT, \
|
||||
.port = 0x1111, \
|
||||
.dma_ch = (28 + _id), \
|
||||
}
|
||||
|
||||
static const struct hpb_dmae_slave_config hpb_dmae_slaves[] = {
|
||||
{
|
||||
.id = HPBDMA_SLAVE_SDHI0_TX,
|
||||
|
@ -349,11 +372,39 @@ static const struct hpb_dmae_slave_config hpb_dmae_slaves[] = {
|
|||
.flags = HPB_DMAE_SET_ASYNC_RESET | HPB_DMAE_SET_ASYNC_MODE,
|
||||
.dma_ch = 22,
|
||||
},
|
||||
|
||||
HPBDMA_HPBIF(0),
|
||||
HPBDMA_HPBIF(1),
|
||||
HPBDMA_HPBIF(2),
|
||||
HPBDMA_HPBIF(3),
|
||||
HPBDMA_HPBIF(4),
|
||||
HPBDMA_HPBIF(5),
|
||||
HPBDMA_HPBIF(6),
|
||||
HPBDMA_HPBIF(7),
|
||||
HPBDMA_HPBIF(8),
|
||||
};
|
||||
|
||||
static const struct hpb_dmae_channel hpb_dmae_channels[] = {
|
||||
HPB_DMAE_CHANNEL(0x7e, HPBDMA_SLAVE_SDHI0_TX), /* ch. 21 */
|
||||
HPB_DMAE_CHANNEL(0x7e, HPBDMA_SLAVE_SDHI0_RX), /* ch. 22 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF0_TX), /* ch. 28 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF0_RX), /* ch. 28 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF1_TX), /* ch. 29 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF1_RX), /* ch. 29 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF2_TX), /* ch. 30 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF2_RX), /* ch. 30 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF3_TX), /* ch. 31 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF3_RX), /* ch. 31 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF4_TX), /* ch. 32 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF4_RX), /* ch. 32 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF5_TX), /* ch. 33 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF5_RX), /* ch. 33 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF6_TX), /* ch. 34 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF6_RX), /* ch. 34 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF7_TX), /* ch. 35 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF7_RX), /* ch. 35 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF8_TX), /* ch. 36 */
|
||||
HPB_DMAE_CHANNEL(0x7f, HPBDMA_SLAVE_HPBIF8_RX), /* ch. 36 */
|
||||
};
|
||||
|
||||
static struct hpb_dmae_pdata dma_platform_data __initdata = {
|
||||
|
|
|
@ -598,45 +598,6 @@ static struct platform_device ohci1_device = {
|
|||
.resource = ohci1_resources,
|
||||
};
|
||||
|
||||
/* Ether */
|
||||
static struct resource ether_resources[] __initdata = {
|
||||
{
|
||||
.start = 0xfde00000,
|
||||
.end = 0xfde003ff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = gic_iid(0xb4),
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
#define R8A7779_VIN(idx) \
|
||||
static struct resource vin##idx##_resources[] __initdata = { \
|
||||
DEFINE_RES_MEM(0xffc50000 + 0x1000 * (idx), 0x1000), \
|
||||
DEFINE_RES_IRQ(gic_iid(0x5f + (idx))), \
|
||||
}; \
|
||||
\
|
||||
static struct platform_device_info vin##idx##_info __initdata = { \
|
||||
.parent = &platform_bus, \
|
||||
.name = "r8a7779-vin", \
|
||||
.id = idx, \
|
||||
.res = vin##idx##_resources, \
|
||||
.num_res = ARRAY_SIZE(vin##idx##_resources), \
|
||||
.dma_mask = DMA_BIT_MASK(32), \
|
||||
}
|
||||
|
||||
R8A7779_VIN(0);
|
||||
R8A7779_VIN(1);
|
||||
R8A7779_VIN(2);
|
||||
R8A7779_VIN(3);
|
||||
|
||||
static struct platform_device_info *vin_info_table[] __initdata = {
|
||||
&vin0_info,
|
||||
&vin1_info,
|
||||
&vin2_info,
|
||||
&vin3_info,
|
||||
};
|
||||
|
||||
/* HPB-DMA */
|
||||
|
||||
/* Asynchronous mode register bits */
|
||||
|
@ -825,24 +786,6 @@ void __init r8a7779_add_standard_devices(void)
|
|||
r8a7779_register_hpb_dmae();
|
||||
}
|
||||
|
||||
void __init r8a7779_add_ether_device(struct sh_eth_plat_data *pdata)
|
||||
{
|
||||
platform_device_register_resndata(&platform_bus, "r8a777x-ether", -1,
|
||||
ether_resources,
|
||||
ARRAY_SIZE(ether_resources),
|
||||
pdata, sizeof(*pdata));
|
||||
}
|
||||
|
||||
void __init r8a7779_add_vin_device(int id, struct rcar_vin_platform_data *pdata)
|
||||
{
|
||||
BUG_ON(id < 0 || id > 3);
|
||||
|
||||
vin_info_table[id]->data = pdata;
|
||||
vin_info_table[id]->size_data = sizeof(*pdata);
|
||||
|
||||
platform_device_register_full(vin_info_table[id]);
|
||||
}
|
||||
|
||||
/* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */
|
||||
void __init __weak r8a7779_register_twd(void) { }
|
||||
|
||||
|
|
|
@ -34,6 +34,10 @@ static const struct resource pfc_resources[] __initconst = {
|
|||
DEFINE_RES_MEM(0xe6060000, 0x250),
|
||||
};
|
||||
|
||||
#define r8a7790_register_pfc() \
|
||||
platform_device_register_simple("pfc-r8a7790", -1, pfc_resources, \
|
||||
ARRAY_SIZE(pfc_resources))
|
||||
|
||||
#define R8A7790_GPIO(idx) \
|
||||
static const struct resource r8a7790_gpio##idx##_resources[] __initconst = { \
|
||||
DEFINE_RES_MEM(0xe6050000 + 0x1000 * (idx), 0x50), \
|
||||
|
@ -65,8 +69,7 @@ R8A7790_GPIO(5);
|
|||
|
||||
void __init r8a7790_pinmux_init(void)
|
||||
{
|
||||
platform_device_register_simple("pfc-r8a7790", -1, pfc_resources,
|
||||
ARRAY_SIZE(pfc_resources));
|
||||
r8a7790_register_pfc();
|
||||
r8a7790_register_gpio(0);
|
||||
r8a7790_register_gpio(1);
|
||||
r8a7790_register_gpio(2);
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <linux/irq.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_data/gpio-rcar.h>
|
||||
#include <linux/platform_data/irq-renesas-irqc.h>
|
||||
#include <linux/serial_sci.h>
|
||||
#include <linux/sh_timer.h>
|
||||
|
@ -31,6 +32,58 @@
|
|||
#include <mach/rcar-gen2.h>
|
||||
#include <asm/mach/arch.h>
|
||||
|
||||
static const struct resource pfc_resources[] __initconst = {
|
||||
DEFINE_RES_MEM(0xe6060000, 0x250),
|
||||
};
|
||||
|
||||
#define r8a7791_register_pfc() \
|
||||
platform_device_register_simple("pfc-r8a7791", -1, pfc_resources, \
|
||||
ARRAY_SIZE(pfc_resources))
|
||||
|
||||
#define R8A7791_GPIO(idx, base, nr) \
|
||||
static const struct resource r8a7791_gpio##idx##_resources[] __initconst = { \
|
||||
DEFINE_RES_MEM((base), 0x50), \
|
||||
DEFINE_RES_IRQ(gic_spi(4 + (idx))), \
|
||||
}; \
|
||||
\
|
||||
static const struct gpio_rcar_config \
|
||||
r8a7791_gpio##idx##_platform_data __initconst = { \
|
||||
.gpio_base = 32 * (idx), \
|
||||
.irq_base = 0, \
|
||||
.number_of_pins = (nr), \
|
||||
.pctl_name = "pfc-r8a7791", \
|
||||
.has_both_edge_trigger = 1, \
|
||||
}; \
|
||||
|
||||
R8A7791_GPIO(0, 0xe6050000, 32);
|
||||
R8A7791_GPIO(1, 0xe6051000, 32);
|
||||
R8A7791_GPIO(2, 0xe6052000, 32);
|
||||
R8A7791_GPIO(3, 0xe6053000, 32);
|
||||
R8A7791_GPIO(4, 0xe6054000, 32);
|
||||
R8A7791_GPIO(5, 0xe6055000, 32);
|
||||
R8A7791_GPIO(6, 0xe6055400, 32);
|
||||
R8A7791_GPIO(7, 0xe6055800, 26);
|
||||
|
||||
#define r8a7791_register_gpio(idx) \
|
||||
platform_device_register_resndata(&platform_bus, "gpio_rcar", idx, \
|
||||
r8a7791_gpio##idx##_resources, \
|
||||
ARRAY_SIZE(r8a7791_gpio##idx##_resources), \
|
||||
&r8a7791_gpio##idx##_platform_data, \
|
||||
sizeof(r8a7791_gpio##idx##_platform_data))
|
||||
|
||||
void __init r8a7791_pinmux_init(void)
|
||||
{
|
||||
r8a7791_register_pfc();
|
||||
r8a7791_register_gpio(0);
|
||||
r8a7791_register_gpio(1);
|
||||
r8a7791_register_gpio(2);
|
||||
r8a7791_register_gpio(3);
|
||||
r8a7791_register_gpio(4);
|
||||
r8a7791_register_gpio(5);
|
||||
r8a7791_register_gpio(6);
|
||||
r8a7791_register_gpio(7);
|
||||
}
|
||||
|
||||
#define SCIF_COMMON(scif_type, baseaddr, irq) \
|
||||
.type = scif_type, \
|
||||
.mapbase = baseaddr, \
|
||||
|
@ -136,6 +189,17 @@ static struct resource irqc0_resources[] = {
|
|||
&irqc##idx##_data, \
|
||||
sizeof(struct renesas_irqc_config))
|
||||
|
||||
static const struct resource thermal_resources[] __initconst = {
|
||||
DEFINE_RES_MEM(0xe61f0000, 0x14),
|
||||
DEFINE_RES_MEM(0xe61f0100, 0x38),
|
||||
DEFINE_RES_IRQ(gic_spi(69)),
|
||||
};
|
||||
|
||||
#define r8a7791_register_thermal() \
|
||||
platform_device_register_simple("rcar_thermal", -1, \
|
||||
thermal_resources, \
|
||||
ARRAY_SIZE(thermal_resources))
|
||||
|
||||
void __init r8a7791_add_dt_devices(void)
|
||||
{
|
||||
r8a7791_register_scif(SCIFA0);
|
||||
|
@ -160,6 +224,7 @@ void __init r8a7791_add_standard_devices(void)
|
|||
{
|
||||
r8a7791_add_dt_devices();
|
||||
r8a7791_register_irqc(0);
|
||||
r8a7791_register_thermal();
|
||||
}
|
||||
|
||||
void __init r8a7791_init_early(void)
|
||||
|
|
|
@ -273,7 +273,7 @@ static struct sh_timer_config tmu00_platform_data = {
|
|||
};
|
||||
|
||||
static struct resource tmu00_resources[] = {
|
||||
[0] = DEFINE_RES_MEM_NAMED(0xfff60008, 0xc, "TMU00"),
|
||||
[0] = DEFINE_RES_MEM(0xfff60008, 0xc),
|
||||
[1] = {
|
||||
.start = intcs_evt2irq(0x0e80), /* TMU0_TUNI00 */
|
||||
.flags = IORESOURCE_IRQ,
|
||||
|
@ -298,7 +298,7 @@ static struct sh_timer_config tmu01_platform_data = {
|
|||
};
|
||||
|
||||
static struct resource tmu01_resources[] = {
|
||||
[0] = DEFINE_RES_MEM_NAMED(0xfff60014, 0xc, "TMU00"),
|
||||
[0] = DEFINE_RES_MEM(0xfff60014, 0xc),
|
||||
[1] = {
|
||||
.start = intcs_evt2irq(0x0ea0), /* TMU0_TUNI01 */
|
||||
.flags = IORESOURCE_IRQ,
|
||||
|
@ -316,7 +316,7 @@ static struct platform_device tmu01_device = {
|
|||
};
|
||||
|
||||
static struct resource i2c0_resources[] = {
|
||||
[0] = DEFINE_RES_MEM_NAMED(0xe6820000, 0x426, "IIC0"),
|
||||
[0] = DEFINE_RES_MEM(0xe6820000, 0x426),
|
||||
[1] = {
|
||||
.start = gic_spi(167),
|
||||
.end = gic_spi(170),
|
||||
|
@ -325,7 +325,7 @@ static struct resource i2c0_resources[] = {
|
|||
};
|
||||
|
||||
static struct resource i2c1_resources[] = {
|
||||
[0] = DEFINE_RES_MEM_NAMED(0xe6822000, 0x426, "IIC1"),
|
||||
[0] = DEFINE_RES_MEM(0xe6822000, 0x426),
|
||||
[1] = {
|
||||
.start = gic_spi(51),
|
||||
.end = gic_spi(54),
|
||||
|
@ -334,7 +334,7 @@ static struct resource i2c1_resources[] = {
|
|||
};
|
||||
|
||||
static struct resource i2c2_resources[] = {
|
||||
[0] = DEFINE_RES_MEM_NAMED(0xe6824000, 0x426, "IIC2"),
|
||||
[0] = DEFINE_RES_MEM(0xe6824000, 0x426),
|
||||
[1] = {
|
||||
.start = gic_spi(171),
|
||||
.end = gic_spi(174),
|
||||
|
@ -343,7 +343,7 @@ static struct resource i2c2_resources[] = {
|
|||
};
|
||||
|
||||
static struct resource i2c3_resources[] = {
|
||||
[0] = DEFINE_RES_MEM_NAMED(0xe6826000, 0x426, "IIC3"),
|
||||
[0] = DEFINE_RES_MEM(0xe6826000, 0x426),
|
||||
[1] = {
|
||||
.start = gic_spi(183),
|
||||
.end = gic_spi(186),
|
||||
|
@ -352,7 +352,7 @@ static struct resource i2c3_resources[] = {
|
|||
};
|
||||
|
||||
static struct resource i2c4_resources[] = {
|
||||
[0] = DEFINE_RES_MEM_NAMED(0xe6828000, 0x426, "IIC4"),
|
||||
[0] = DEFINE_RES_MEM(0xe6828000, 0x426),
|
||||
[1] = {
|
||||
.start = gic_spi(187),
|
||||
.end = gic_spi(190),
|
||||
|
@ -722,7 +722,7 @@ static struct platform_device pmu_device = {
|
|||
|
||||
/* an IPMMU module for ICB */
|
||||
static struct resource ipmmu_resources[] = {
|
||||
DEFINE_RES_MEM_NAMED(0xfe951000, 0x100, "IPMMU"),
|
||||
DEFINE_RES_MEM(0xfe951000, 0x100),
|
||||
};
|
||||
|
||||
static const char * const ipmmu_dev_names[] = {
|
||||
|
|
|
@ -26,23 +26,4 @@ static inline void __init gpio_direction_none(void __iomem * addr)
|
|||
__raw_writeb(0x00, addr);
|
||||
}
|
||||
|
||||
static inline void __init gpio_request_pullup(void __iomem * addr)
|
||||
{
|
||||
u8 data = __raw_readb(addr);
|
||||
|
||||
data &= 0x0F;
|
||||
data |= 0xC0;
|
||||
__raw_writeb(data, addr);
|
||||
}
|
||||
|
||||
static inline void __init gpio_request_pulldown(void __iomem * addr)
|
||||
{
|
||||
u8 data = __raw_readb(addr);
|
||||
|
||||
data &= 0x0F;
|
||||
data |= 0xA0;
|
||||
|
||||
__raw_writeb(data, addr);
|
||||
}
|
||||
|
||||
#endif /* __ASM_ARCH_GPIO_H */
|
||||
|
|
|
@ -118,7 +118,7 @@ obj-$(CONFIG_SGI_SN) += sn/
|
|||
obj-y += firmware/
|
||||
obj-$(CONFIG_CRYPTO) += crypto/
|
||||
obj-$(CONFIG_SUPERH) += sh/
|
||||
obj-$(CONFIG_ARCH_SHMOBILE) += sh/
|
||||
obj-$(CONFIG_ARCH_SHMOBILE_LEGACY) += sh/
|
||||
ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
|
||||
obj-y += clocksource/
|
||||
endif
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
* B : SSI direction
|
||||
*/
|
||||
#define RSND_SSI_CLK_PIN_SHARE (1 << 31)
|
||||
#define RSND_SSI_CLK_FROM_ADG (1 << 30) /* clock parent is master */
|
||||
#define RSND_SSI_SYNC (1 << 29) /* SSI34_sync etc */
|
||||
|
||||
#define RSND_SSI_PLAY (1 << 24)
|
||||
|
|
Loading…
Reference in New Issue