aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/boot/dts/r8a7778-bockw-reference.dts4
-rw-r--r--arch/arm/configs/ape6evm_defconfig2
-rw-r--r--arch/arm/configs/armadillo800eva_defconfig2
-rw-r--r--arch/arm/configs/bockw_defconfig2
-rw-r--r--arch/arm/configs/dove_defconfig3
-rw-r--r--arch/arm/configs/genmai_defconfig8
-rw-r--r--arch/arm/configs/keystone_defconfig15
-rw-r--r--arch/arm/configs/koelsch_defconfig21
-rw-r--r--arch/arm/configs/kzm9d_defconfig89
-rw-r--r--arch/arm/configs/kzm9g_defconfig2
-rw-r--r--arch/arm/configs/lager_defconfig21
-rw-r--r--arch/arm/configs/mackerel_defconfig2
-rw-r--r--arch/arm/configs/marzen_defconfig2
-rw-r--r--arch/arm/configs/multi_v5_defconfig190
-rw-r--r--arch/arm/configs/multi_v7_defconfig23
-rw-r--r--arch/arm/configs/mvebu_v5_defconfig181
-rw-r--r--arch/arm/configs/mvebu_v7_defconfig (renamed from arch/arm/configs/mvebu_defconfig)9
-rw-r--r--arch/arm/configs/shmobile_defconfig129
-rw-r--r--arch/arm/configs/sunxi_defconfig3
-rw-r--r--arch/arm/configs/tegra_defconfig7
-rw-r--r--arch/arm/mach-pxa/corgi.c40
-rw-r--r--arch/arm/mach-shmobile/Kconfig18
-rw-r--r--arch/arm/mach-shmobile/Makefile1
-rw-r--r--arch/arm/mach-shmobile/board-armadillo800eva.c2
-rw-r--r--arch/arm/mach-shmobile/board-bockw.c45
-rw-r--r--arch/arm/mach-shmobile/board-genmai.c75
-rw-r--r--arch/arm/mach-shmobile/board-koelsch-reference.c106
-rw-r--r--arch/arm/mach-shmobile/board-koelsch.c305
-rw-r--r--arch/arm/mach-shmobile/board-kzm9d-reference.c48
-rw-r--r--arch/arm/mach-shmobile/board-lager-reference.c109
-rw-r--r--arch/arm/mach-shmobile/board-lager.c492
-rw-r--r--arch/arm/mach-shmobile/include/mach/head-kzm9g.txt410
-rw-r--r--arch/arm/mach-shmobile/include/mach/zboot.h3
-rw-r--r--arch/arm/mach-shmobile/include/mach/zboot_macros.h43
34 files changed, 2196 insertions, 216 deletions
diff --git a/arch/arm/boot/dts/r8a7778-bockw-reference.dts b/arch/arm/boot/dts/r8a7778-bockw-reference.dts
index bb62c7a906f4..06cda19dac6a 100644
--- a/arch/arm/boot/dts/r8a7778-bockw-reference.dts
+++ b/arch/arm/boot/dts/r8a7778-bockw-reference.dts
@@ -17,6 +17,7 @@
17/dts-v1/; 17/dts-v1/;
18#include "r8a7778.dtsi" 18#include "r8a7778.dtsi"
19#include <dt-bindings/interrupt-controller/irq.h> 19#include <dt-bindings/interrupt-controller/irq.h>
20#include <dt-bindings/gpio/gpio.h>
20 21
21/ { 22/ {
22 model = "bockw"; 23 model = "bockw";
@@ -84,7 +85,7 @@
84 85
85 sdhi0_pins: sd0 { 86 sdhi0_pins: sd0 {
86 renesas,groups = "sdhi0_data4", "sdhi0_ctrl", 87 renesas,groups = "sdhi0_data4", "sdhi0_ctrl",
87 "sdhi0_cd", "sdhi0_wp"; 88 "sdhi0_cd";
88 renesas,function = "sdhi0"; 89 renesas,function = "sdhi0";
89 }; 90 };
90 91
@@ -101,6 +102,7 @@
101 vmmc-supply = <&fixedregulator3v3>; 102 vmmc-supply = <&fixedregulator3v3>;
102 bus-width = <4>; 103 bus-width = <4>;
103 status = "okay"; 104 status = "okay";
105 wp-gpios = <&gpio3 18 GPIO_ACTIVE_HIGH>;
104}; 106};
105 107
106&hspi0 { 108&hspi0 {
diff --git a/arch/arm/configs/ape6evm_defconfig b/arch/arm/configs/ape6evm_defconfig
index cb26c62dc722..bb396c0e5fda 100644
--- a/arch/arm/configs/ape6evm_defconfig
+++ b/arch/arm/configs/ape6evm_defconfig
@@ -48,6 +48,8 @@ CONFIG_IP_PNP_DHCP=y
48# CONFIG_IPV6_SIT is not set 48# CONFIG_IPV6_SIT is not set
49CONFIG_NETFILTER=y 49CONFIG_NETFILTER=y
50CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 50CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
51CONFIG_DEVTMPFS=y
52CONFIG_DEVTMPFS_MOUNT=y
51# CONFIG_FW_LOADER_USER_HELPER is not set 53# CONFIG_FW_LOADER_USER_HELPER is not set
52CONFIG_NETDEVICES=y 54CONFIG_NETDEVICES=y
53# CONFIG_NET_CADENCE is not set 55# CONFIG_NET_CADENCE is not set
diff --git a/arch/arm/configs/armadillo800eva_defconfig b/arch/arm/configs/armadillo800eva_defconfig
index 9287a62de830..065adddeee3e 100644
--- a/arch/arm/configs/armadillo800eva_defconfig
+++ b/arch/arm/configs/armadillo800eva_defconfig
@@ -58,6 +58,8 @@ CONFIG_IP_PNP_DHCP=y
58# CONFIG_IPV6 is not set 58# CONFIG_IPV6 is not set
59# CONFIG_WIRELESS is not set 59# CONFIG_WIRELESS is not set
60CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 60CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
61CONFIG_DEVTMPFS=y
62CONFIG_DEVTMPFS_MOUNT=y
61CONFIG_SCSI=y 63CONFIG_SCSI=y
62CONFIG_BLK_DEV_SD=y 64CONFIG_BLK_DEV_SD=y
63CONFIG_MD=y 65CONFIG_MD=y
diff --git a/arch/arm/configs/bockw_defconfig b/arch/arm/configs/bockw_defconfig
index 80cff50beb34..e816140d81c5 100644
--- a/arch/arm/configs/bockw_defconfig
+++ b/arch/arm/configs/bockw_defconfig
@@ -44,6 +44,8 @@ CONFIG_IP_PNP_DHCP=y
44# CONFIG_INET_DIAG is not set 44# CONFIG_INET_DIAG is not set
45# CONFIG_IPV6 is not set 45# CONFIG_IPV6 is not set
46CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 46CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
47CONFIG_DEVTMPFS=y
48CONFIG_DEVTMPFS_MOUNT=y
47# CONFIG_STANDALONE is not set 49# CONFIG_STANDALONE is not set
48# CONFIG_PREVENT_FIRMWARE_BUILD is not set 50# CONFIG_PREVENT_FIRMWARE_BUILD is not set
49# CONFIG_FW_LOADER is not set 51# CONFIG_FW_LOADER is not set
diff --git a/arch/arm/configs/dove_defconfig b/arch/arm/configs/dove_defconfig
index 110105476848..f15955144175 100644
--- a/arch/arm/configs/dove_defconfig
+++ b/arch/arm/configs/dove_defconfig
@@ -48,7 +48,6 @@ CONFIG_MTD_CFI_INTELEXT=y
48CONFIG_MTD_CFI_STAA=y 48CONFIG_MTD_CFI_STAA=y
49CONFIG_MTD_PHYSMAP=y 49CONFIG_MTD_PHYSMAP=y
50CONFIG_MTD_M25P80=y 50CONFIG_MTD_M25P80=y
51CONFIG_MTD_UBI=y
52CONFIG_BLK_DEV_LOOP=y 51CONFIG_BLK_DEV_LOOP=y
53CONFIG_BLK_DEV_RAM=y 52CONFIG_BLK_DEV_RAM=y
54CONFIG_BLK_DEV_RAM_COUNT=1 53CONFIG_BLK_DEV_RAM_COUNT=1
@@ -80,6 +79,8 @@ CONFIG_SPI_ORION=y
80# CONFIG_HWMON is not set 79# CONFIG_HWMON is not set
81CONFIG_THERMAL=y 80CONFIG_THERMAL=y
82CONFIG_DOVE_THERMAL=y 81CONFIG_DOVE_THERMAL=y
82CONFIG_WATCHDOG=y
83CONFIG_ORION_WATCHDOG=y
83CONFIG_USB=y 84CONFIG_USB=y
84CONFIG_USB_XHCI_HCD=y 85CONFIG_USB_XHCI_HCD=y
85CONFIG_USB_EHCI_HCD=y 86CONFIG_USB_EHCI_HCD=y
diff --git a/arch/arm/configs/genmai_defconfig b/arch/arm/configs/genmai_defconfig
index aa0b704f48af..d238fafb6762 100644
--- a/arch/arm/configs/genmai_defconfig
+++ b/arch/arm/configs/genmai_defconfig
@@ -50,6 +50,9 @@ CONFIG_IP_PNP_DHCP=y
50# CONFIG_IPV6 is not set 50# CONFIG_IPV6 is not set
51# CONFIG_WIRELESS is not set 51# CONFIG_WIRELESS is not set
52CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 52CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
53CONFIG_DEVTMPFS=y
54CONFIG_DEVTMPFS_MOUNT=y
55CONFIG_EEPROM_AT24=y
53CONFIG_NETDEVICES=y 56CONFIG_NETDEVICES=y
54# CONFIG_NET_CORE is not set 57# CONFIG_NET_CORE is not set
55# CONFIG_NET_VENDOR_ARC is not set 58# CONFIG_NET_VENDOR_ARC is not set
@@ -78,7 +81,10 @@ CONFIG_SERIAL_SH_SCI=y
78CONFIG_SERIAL_SH_SCI_NR_UARTS=10 81CONFIG_SERIAL_SH_SCI_NR_UARTS=10
79CONFIG_SERIAL_SH_SCI_CONSOLE=y 82CONFIG_SERIAL_SH_SCI_CONSOLE=y
80# CONFIG_HW_RANDOM is not set 83# CONFIG_HW_RANDOM is not set
81CONFIG_I2C_SH_MOBILE=y 84CONFIG_I2C_CHARDEV=y
85CONFIG_I2C_RIIC=y
86CONFIG_SPI=y
87CONFIG_SPI_RSPI=y
82# CONFIG_HWMON is not set 88# CONFIG_HWMON is not set
83CONFIG_THERMAL=y 89CONFIG_THERMAL=y
84CONFIG_RCAR_THERMAL=y 90CONFIG_RCAR_THERMAL=y
diff --git a/arch/arm/configs/keystone_defconfig b/arch/arm/configs/keystone_defconfig
index 4582e160feab..ec9a41d50680 100644
--- a/arch/arm/configs/keystone_defconfig
+++ b/arch/arm/configs/keystone_defconfig
@@ -111,6 +111,7 @@ CONFIG_MTD_BLOCK=y
111CONFIG_MTD_PLATRAM=y 111CONFIG_MTD_PLATRAM=y
112CONFIG_MTD_M25P80=y 112CONFIG_MTD_M25P80=y
113CONFIG_MTD_NAND=y 113CONFIG_MTD_NAND=y
114CONFIG_MTD_NAND_DAVINCI=y
114CONFIG_MTD_UBI=y 115CONFIG_MTD_UBI=y
115CONFIG_PROC_DEVICETREE=y 116CONFIG_PROC_DEVICETREE=y
116CONFIG_BLK_DEV_LOOP=y 117CONFIG_BLK_DEV_LOOP=y
@@ -131,6 +132,8 @@ CONFIG_SPI_DAVINCI=y
131CONFIG_SPI_SPIDEV=y 132CONFIG_SPI_SPIDEV=y
132# CONFIG_HWMON is not set 133# CONFIG_HWMON is not set
133CONFIG_WATCHDOG=y 134CONFIG_WATCHDOG=y
135CONFIG_WATCHDOG_CORE=y
136CONFIG_DAVINCI_WATCHDOG=y
134CONFIG_USB=y 137CONFIG_USB=y
135CONFIG_USB_DEBUG=y 138CONFIG_USB_DEBUG=y
136CONFIG_USB_ANNOUNCE_NEW_DEVICES=y 139CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
@@ -145,6 +148,7 @@ CONFIG_DMADEVICES=y
145CONFIG_TI_EDMA=y 148CONFIG_TI_EDMA=y
146CONFIG_COMMON_CLK_DEBUG=y 149CONFIG_COMMON_CLK_DEBUG=y
147CONFIG_MEMORY=y 150CONFIG_MEMORY=y
151CONFIG_TI_AEMIF=y
148CONFIG_EXT4_FS=y 152CONFIG_EXT4_FS=y
149CONFIG_EXT4_FS_POSIX_ACL=y 153CONFIG_EXT4_FS_POSIX_ACL=y
150CONFIG_MSDOS_FS=y 154CONFIG_MSDOS_FS=y
@@ -177,3 +181,14 @@ CONFIG_CRYPTO_DES=y
177CONFIG_CRYPTO_ANSI_CPRNG=y 181CONFIG_CRYPTO_ANSI_CPRNG=y
178CONFIG_CRYPTO_USER_API_HASH=y 182CONFIG_CRYPTO_USER_API_HASH=y
179CONFIG_CRYPTO_USER_API_SKCIPHER=y 183CONFIG_CRYPTO_USER_API_SKCIPHER=y
184CONFIG_GPIOLIB=y
185CONFIG_GPIO_SYSFS=y
186CONFIG_GPIO_DAVINCI=y
187CONFIG_LEDS_CLASS=y
188CONFIG_NEW_LEDS=y
189CONFIG_LEDS_GPIO=y
190CONFIG_LEDS_TRIGGERS=y
191CONFIG_LEDS_TRIGGER_ONESHOT=y
192CONFIG_LEDS_TRIGGER_HEARTBEAT=y
193CONFIG_LEDS_TRIGGER_BACKLIGHT=y
194CONFIG_LEDS_TRIGGER_GPIO=y
diff --git a/arch/arm/configs/koelsch_defconfig b/arch/arm/configs/koelsch_defconfig
index e248f49d5549..86faab565a96 100644
--- a/arch/arm/configs/koelsch_defconfig
+++ b/arch/arm/configs/koelsch_defconfig
@@ -8,7 +8,6 @@ CONFIG_SYSCTL_SYSCALL=y
8CONFIG_EMBEDDED=y 8CONFIG_EMBEDDED=y
9CONFIG_PERF_EVENTS=y 9CONFIG_PERF_EVENTS=y
10CONFIG_SLAB=y 10CONFIG_SLAB=y
11# CONFIG_BLOCK is not set
12CONFIG_ARCH_SHMOBILE_LEGACY=y 11CONFIG_ARCH_SHMOBILE_LEGACY=y
13CONFIG_ARCH_R8A7791=y 12CONFIG_ARCH_R8A7791=y
14CONFIG_MACH_KOELSCH=y 13CONFIG_MACH_KOELSCH=y
@@ -35,7 +34,14 @@ CONFIG_UNIX=y
35CONFIG_INET=y 34CONFIG_INET=y
36CONFIG_IP_PNP=y 35CONFIG_IP_PNP=y
37CONFIG_IP_PNP_DHCP=y 36CONFIG_IP_PNP_DHCP=y
37CONFIG_DEVTMPFS=y
38CONFIG_DEVTMPFS_MOUNT=y
38CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 39CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
40CONFIG_BLK_DEV_SD=y
41CONFIG_ATA=y
42CONFIG_SATA_RCAR=y
43CONFIG_MTD=y
44CONFIG_MTD_M25P80=y
39CONFIG_NETDEVICES=y 45CONFIG_NETDEVICES=y
40# CONFIG_NET_VENDOR_ARC is not set 46# CONFIG_NET_VENDOR_ARC is not set
41# CONFIG_NET_CADENCE is not set 47# CONFIG_NET_CADENCE is not set
@@ -53,18 +59,31 @@ CONFIG_SH_ETH=y
53# CONFIG_NET_VENDOR_VIA is not set 59# CONFIG_NET_VENDOR_VIA is not set
54# CONFIG_NET_VENDOR_WIZNET is not set 60# CONFIG_NET_VENDOR_WIZNET is not set
55# CONFIG_INPUT_MOUSEDEV_PSAUX is not set 61# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
62CONFIG_KEYBOARD_GPIO=y
56# CONFIG_INPUT_MOUSE is not set 63# CONFIG_INPUT_MOUSE is not set
57# CONFIG_LEGACY_PTYS is not set 64# CONFIG_LEGACY_PTYS is not set
58CONFIG_SERIAL_SH_SCI=y 65CONFIG_SERIAL_SH_SCI=y
59CONFIG_SERIAL_SH_SCI_NR_UARTS=20 66CONFIG_SERIAL_SH_SCI_NR_UARTS=20
60CONFIG_SERIAL_SH_SCI_CONSOLE=y 67CONFIG_SERIAL_SH_SCI_CONSOLE=y
68CONFIG_I2C=y
69CONFIG_I2C_RCAR=y
70CONFIG_SPI=y
71CONFIG_SPI_RSPI=y
72CONFIG_GPIOLIB=y
73CONFIG_GPIO_RCAR=y
61# CONFIG_HWMON is not set 74# CONFIG_HWMON is not set
62CONFIG_THERMAL=y 75CONFIG_THERMAL=y
63CONFIG_RCAR_THERMAL=y 76CONFIG_RCAR_THERMAL=y
77CONFIG_REGULATOR=y
78CONFIG_REGULATOR_FIXED_VOLTAGE=y
79CONFIG_REGULATOR_GPIO=y
64# CONFIG_HID is not set 80# CONFIG_HID is not set
65# CONFIG_USB_SUPPORT is not set 81# CONFIG_USB_SUPPORT is not set
82CONFIG_MMC=y
83CONFIG_MMC_SDHI=y
66CONFIG_NEW_LEDS=y 84CONFIG_NEW_LEDS=y
67CONFIG_LEDS_CLASS=y 85CONFIG_LEDS_CLASS=y
86CONFIG_LEDS_GPIO=y
68# CONFIG_IOMMU_SUPPORT is not set 87# CONFIG_IOMMU_SUPPORT is not set
69# CONFIG_DNOTIFY is not set 88# CONFIG_DNOTIFY is not set
70CONFIG_TMPFS=y 89CONFIG_TMPFS=y
diff --git a/arch/arm/configs/kzm9d_defconfig b/arch/arm/configs/kzm9d_defconfig
deleted file mode 100644
index e42ce3756af3..000000000000
--- a/arch/arm/configs/kzm9d_defconfig
+++ /dev/null
@@ -1,89 +0,0 @@
1# CONFIG_ARM_PATCH_PHYS_VIRT is not set
2CONFIG_EXPERIMENTAL=y
3CONFIG_SYSVIPC=y
4CONFIG_NO_HZ=y
5CONFIG_IKCONFIG=y
6CONFIG_IKCONFIG_PROC=y
7CONFIG_LOG_BUF_SHIFT=16
8CONFIG_CC_OPTIMIZE_FOR_SIZE=y
9CONFIG_SYSCTL_SYSCALL=y
10CONFIG_EMBEDDED=y
11CONFIG_PERF_EVENTS=y
12CONFIG_SLAB=y
13# CONFIG_BLK_DEV_BSG is not set
14# CONFIG_IOSCHED_DEADLINE is not set
15# CONFIG_IOSCHED_CFQ is not set
16CONFIG_ARCH_SHMOBILE_LEGACY=y
17CONFIG_ARCH_EMEV2=y
18CONFIG_MACH_KZM9D=y
19CONFIG_MEMORY_START=0x40000000
20CONFIG_MEMORY_SIZE=0x10000000
21# CONFIG_SH_TIMER_TMU is not set
22# CONFIG_SWP_EMULATE is not set
23# CONFIG_CACHE_L2X0 is not set
24CONFIG_SMP=y
25CONFIG_NR_CPUS=2
26CONFIG_HOTPLUG_CPU=y
27# CONFIG_LOCAL_TIMERS is not set
28CONFIG_AEABI=y
29# CONFIG_OABI_COMPAT is not set
30# CONFIG_CROSS_MEMORY_ATTACH is not set
31CONFIG_FORCE_MAX_ZONEORDER=13
32CONFIG_ZBOOT_ROM_TEXT=0x0
33CONFIG_ZBOOT_ROM_BSS=0x0
34CONFIG_ARM_APPENDED_DTB=y
35CONFIG_AUTO_ZRELADDR=y
36CONFIG_VFP=y
37# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
38CONFIG_PM_RUNTIME=y
39CONFIG_NET=y
40CONFIG_PACKET=y
41CONFIG_UNIX=y
42CONFIG_INET=y
43CONFIG_IP_PNP=y
44CONFIG_IP_PNP_DHCP=y
45# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
46# CONFIG_INET_XFRM_MODE_TUNNEL is not set
47# CONFIG_INET_XFRM_MODE_BEET is not set
48# CONFIG_INET_LRO is not set
49# CONFIG_INET_DIAG is not set
50# CONFIG_IPV6 is not set
51# CONFIG_WIRELESS is not set
52CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
53# CONFIG_BLK_DEV is not set
54CONFIG_NETDEVICES=y
55# CONFIG_NET_VENDOR_BROADCOM is not set
56# CONFIG_NET_VENDOR_CHELSIO is not set
57# CONFIG_NET_VENDOR_CIRRUS is not set
58# CONFIG_NET_VENDOR_FARADAY is not set
59# CONFIG_NET_VENDOR_INTEL is not set
60# CONFIG_NET_VENDOR_MARVELL is not set
61# CONFIG_NET_VENDOR_MICREL is not set
62# CONFIG_NET_VENDOR_NATSEMI is not set
63# CONFIG_NET_VENDOR_SEEQ is not set
64CONFIG_SMSC911X=y
65# CONFIG_NET_VENDOR_STMICRO is not set
66# CONFIG_NET_VENDOR_WIZNET is not set
67# CONFIG_WLAN is not set
68# CONFIG_INPUT_MOUSEDEV is not set
69# CONFIG_INPUT_KEYBOARD is not set
70# CONFIG_INPUT_MOUSE is not set
71# CONFIG_SERIO is not set
72# CONFIG_LEGACY_PTYS is not set
73# CONFIG_DEVKMEM is not set
74CONFIG_SERIAL_8250=y
75CONFIG_SERIAL_8250_CONSOLE=y
76CONFIG_SERIAL_8250_EM=y
77# CONFIG_HW_RANDOM is not set
78CONFIG_GPIOLIB=y
79CONFIG_GPIO_EM=y
80# CONFIG_HWMON is not set
81# CONFIG_HID_SUPPORT is not set
82# CONFIG_USB_SUPPORT is not set
83# CONFIG_IOMMU_SUPPORT is not set
84# CONFIG_DNOTIFY is not set
85CONFIG_TMPFS=y
86# CONFIG_MISC_FILESYSTEMS is not set
87CONFIG_NFS_FS=y
88CONFIG_ROOT_NFS=y
89# CONFIG_FTRACE is not set
diff --git a/arch/arm/configs/kzm9g_defconfig b/arch/arm/configs/kzm9g_defconfig
index 9934dbc23d64..12bd1f63c399 100644
--- a/arch/arm/configs/kzm9g_defconfig
+++ b/arch/arm/configs/kzm9g_defconfig
@@ -60,6 +60,8 @@ CONFIG_IRDA=y
60CONFIG_SH_IRDA=y 60CONFIG_SH_IRDA=y
61# CONFIG_WIRELESS is not set 61# CONFIG_WIRELESS is not set
62CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 62CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
63CONFIG_DEVTMPFS=y
64CONFIG_DEVTMPFS_MOUNT=y
63CONFIG_SCSI=y 65CONFIG_SCSI=y
64CONFIG_BLK_DEV_SD=y 66CONFIG_BLK_DEV_SD=y
65CONFIG_NETDEVICES=y 67CONFIG_NETDEVICES=y
diff --git a/arch/arm/configs/lager_defconfig b/arch/arm/configs/lager_defconfig
index 883443f8f4f3..58702440472a 100644
--- a/arch/arm/configs/lager_defconfig
+++ b/arch/arm/configs/lager_defconfig
@@ -49,6 +49,13 @@ CONFIG_IP_PNP_DHCP=y
49# CONFIG_IPV6 is not set 49# CONFIG_IPV6 is not set
50# CONFIG_WIRELESS is not set 50# CONFIG_WIRELESS is not set
51CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 51CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
52CONFIG_DEVTMPFS=y
53CONFIG_DEVTMPFS_MOUNT=y
54CONFIG_MTD=y
55CONFIG_MTD_M25P80=y
56CONFIG_BLK_DEV_SD=y
57CONFIG_ATA=y
58CONFIG_SATA_RCAR=y
52CONFIG_NETDEVICES=y 59CONFIG_NETDEVICES=y
53# CONFIG_NET_CORE is not set 60# CONFIG_NET_CORE is not set
54# CONFIG_NET_VENDOR_ARC is not set 61# CONFIG_NET_VENDOR_ARC is not set
@@ -81,6 +88,8 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
81CONFIG_I2C=y 88CONFIG_I2C=y
82CONFIG_I2C_GPIO=y 89CONFIG_I2C_GPIO=y
83CONFIG_I2C_RCAR=y 90CONFIG_I2C_RCAR=y
91CONFIG_SPI=y
92CONFIG_SPI_RSPI=y
84CONFIG_GPIO_SH_PFC=y 93CONFIG_GPIO_SH_PFC=y
85CONFIG_GPIOLIB=y 94CONFIG_GPIOLIB=y
86CONFIG_GPIO_RCAR=y 95CONFIG_GPIO_RCAR=y
@@ -90,8 +99,20 @@ CONFIG_RCAR_THERMAL=y
90CONFIG_REGULATOR=y 99CONFIG_REGULATOR=y
91CONFIG_REGULATOR_FIXED_VOLTAGE=y 100CONFIG_REGULATOR_FIXED_VOLTAGE=y
92CONFIG_REGULATOR_GPIO=y 101CONFIG_REGULATOR_GPIO=y
102CONFIG_MEDIA_SUPPORT=y
103CONFIG_MEDIA_CAMERA_SUPPORT=y
104CONFIG_V4L_PLATFORM_DRIVERS=y
105CONFIG_SOC_CAMERA=y
106CONFIG_SOC_CAMERA_PLATFORM=y
107CONFIG_VIDEO_RCAR_VIN=y
108# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
109CONFIG_VIDEO_ADV7180=y
93CONFIG_DRM=y 110CONFIG_DRM=y
94CONFIG_DRM_RCAR_DU=y 111CONFIG_DRM_RCAR_DU=y
112CONFIG_SOUND=y
113CONFIG_SND=y
114CONFIG_SND_SOC=y
115CONFIG_SND_SOC_RCAR=y
95# CONFIG_USB_SUPPORT is not set 116# CONFIG_USB_SUPPORT is not set
96CONFIG_MMC=y 117CONFIG_MMC=y
97CONFIG_MMC_SDHI=y 118CONFIG_MMC_SDHI=y
diff --git a/arch/arm/configs/mackerel_defconfig b/arch/arm/configs/mackerel_defconfig
index a61e1653fc5e..57ececba2ae6 100644
--- a/arch/arm/configs/mackerel_defconfig
+++ b/arch/arm/configs/mackerel_defconfig
@@ -42,6 +42,8 @@ CONFIG_IP_PNP_DHCP=y
42# CONFIG_IPV6 is not set 42# CONFIG_IPV6 is not set
43# CONFIG_WIRELESS is not set 43# CONFIG_WIRELESS is not set
44CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 44CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
45CONFIG_DEVTMPFS=y
46CONFIG_DEVTMPFS_MOUNT=y
45# CONFIG_FIRMWARE_IN_KERNEL is not set 47# CONFIG_FIRMWARE_IN_KERNEL is not set
46CONFIG_MTD=y 48CONFIG_MTD=y
47CONFIG_MTD_CONCAT=y 49CONFIG_MTD_CONCAT=y
diff --git a/arch/arm/configs/marzen_defconfig b/arch/arm/configs/marzen_defconfig
index f21bd405cc2a..92994f7f6fd8 100644
--- a/arch/arm/configs/marzen_defconfig
+++ b/arch/arm/configs/marzen_defconfig
@@ -43,6 +43,8 @@ CONFIG_IP_PNP_DHCP=y
43# CONFIG_IPV6 is not set 43# CONFIG_IPV6 is not set
44# CONFIG_WIRELESS is not set 44# CONFIG_WIRELESS is not set
45CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 45CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
46CONFIG_DEVTMPFS=y
47CONFIG_DEVTMPFS_MOUNT=y
46# CONFIG_STANDALONE is not set 48# CONFIG_STANDALONE is not set
47# CONFIG_PREVENT_FIRMWARE_BUILD is not set 49# CONFIG_PREVENT_FIRMWARE_BUILD is not set
48# CONFIG_FW_LOADER is not set 50# CONFIG_FW_LOADER is not set
diff --git a/arch/arm/configs/multi_v5_defconfig b/arch/arm/configs/multi_v5_defconfig
new file mode 100644
index 000000000000..aa3dfb084fed
--- /dev/null
+++ b/arch/arm/configs/multi_v5_defconfig
@@ -0,0 +1,190 @@
1CONFIG_SYSVIPC=y
2CONFIG_NO_HZ=y
3CONFIG_HIGH_RES_TIMERS=y
4CONFIG_LOG_BUF_SHIFT=19
5CONFIG_PROFILING=y
6CONFIG_OPROFILE=y
7CONFIG_KPROBES=y
8CONFIG_MODULES=y
9CONFIG_MODULE_UNLOAD=y
10# CONFIG_BLK_DEV_BSG is not set
11# CONFIG_ARCH_MULTI_V7 is not set
12CONFIG_ARCH_MVEBU=y
13CONFIG_MACH_KIRKWOOD=y
14CONFIG_MACH_T5325=y
15CONFIG_ARCH_MXC=y
16CONFIG_MACH_IMX25_DT=y
17CONFIG_MACH_IMX27_DT=y
18CONFIG_ARCH_U300=y
19CONFIG_PCI_MVEBU=y
20CONFIG_PREEMPT=y
21CONFIG_AEABI=y
22CONFIG_HIGHMEM=y
23CONFIG_ZBOOT_ROM_TEXT=0x0
24CONFIG_ZBOOT_ROM_BSS=0x0
25CONFIG_ARM_APPENDED_DTB=y
26CONFIG_ARM_ATAG_DTB_COMPAT=y
27CONFIG_CPU_FREQ=y
28CONFIG_CPU_FREQ_STAT_DETAILS=y
29CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
30CONFIG_CPU_IDLE=y
31CONFIG_ARM_KIRKWOOD_CPUIDLE=y
32CONFIG_NET=y
33CONFIG_PACKET=y
34CONFIG_UNIX=y
35CONFIG_INET=y
36CONFIG_IP_MULTICAST=y
37CONFIG_IP_PNP=y
38CONFIG_IP_PNP_DHCP=y
39CONFIG_IP_PNP_BOOTP=y
40# CONFIG_IPV6 is not set
41CONFIG_NET_PKTGEN=m
42CONFIG_CFG80211=y
43CONFIG_MAC80211=y
44CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
45CONFIG_MTD=y
46CONFIG_MTD_CMDLINE_PARTS=y
47CONFIG_MTD_BLOCK=y
48CONFIG_MTD_CFI=y
49CONFIG_MTD_JEDECPROBE=y
50CONFIG_MTD_CFI_ADV_OPTIONS=y
51CONFIG_MTD_CFI_GEOMETRY=y
52# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
53CONFIG_MTD_CFI_INTELEXT=y
54CONFIG_MTD_CFI_STAA=y
55CONFIG_MTD_PHYSMAP=y
56CONFIG_MTD_M25P80=y
57CONFIG_MTD_NAND=y
58CONFIG_MTD_NAND_ORION=y
59CONFIG_BLK_DEV_LOOP=y
60CONFIG_EEPROM_AT24=y
61# CONFIG_SCSI_PROC_FS is not set
62CONFIG_BLK_DEV_SD=y
63CONFIG_BLK_DEV_SR=m
64CONFIG_CHR_DEV_SG=m
65CONFIG_ATA=y
66CONFIG_SATA_AHCI=y
67CONFIG_SATA_MV=y
68CONFIG_NETDEVICES=y
69CONFIG_NET_DSA_MV88E6123_61_65=y
70CONFIG_MV643XX_ETH=y
71CONFIG_R8169=y
72CONFIG_MARVELL_PHY=y
73CONFIG_LIBERTAS=y
74CONFIG_LIBERTAS_SDIO=y
75CONFIG_INPUT_EVDEV=y
76CONFIG_KEYBOARD_GPIO=y
77# CONFIG_INPUT_MOUSE is not set
78CONFIG_LEGACY_PTY_COUNT=16
79# CONFIG_DEVKMEM is not set
80CONFIG_SERIAL_8250=y
81CONFIG_SERIAL_8250_CONSOLE=y
82CONFIG_SERIAL_8250_RUNTIME_UARTS=2
83CONFIG_SERIAL_OF_PLATFORM=y
84# CONFIG_HW_RANDOM is not set
85CONFIG_I2C=y
86# CONFIG_I2C_COMPAT is not set
87CONFIG_I2C_CHARDEV=y
88CONFIG_I2C_MV64XXX=y
89CONFIG_I2C_NOMADIK=y
90CONFIG_SPI=y
91CONFIG_SPI_ORION=y
92CONFIG_GPIO_SYSFS=y
93CONFIG_POWER_SUPPLY=y
94CONFIG_POWER_RESET=y
95CONFIG_POWER_RESET_GPIO=y
96CONFIG_POWER_RESET_QNAP=y
97CONFIG_SENSORS_ADT7475=y
98CONFIG_SENSORS_LM63=y
99CONFIG_SENSORS_LM75=y
100CONFIG_SENSORS_LM85=y
101CONFIG_THERMAL=y
102CONFIG_KIRKWOOD_THERMAL=y
103CONFIG_WATCHDOG=y
104CONFIG_ORION_WATCHDOG=y
105CONFIG_FB=y
106CONFIG_SOUND=y
107CONFIG_SND=y
108CONFIG_SND_SOC=y
109CONFIG_SND_KIRKWOOD_SOC=y
110CONFIG_SND_KIRKWOOD_SOC_T5325=y
111# CONFIG_ABX500_CORE is not set
112CONFIG_REGULATOR=y
113CONFIG_REGULATOR_FIXED_VOLTAGE=y
114CONFIG_HID_DRAGONRISE=y
115CONFIG_HID_GYRATION=y
116CONFIG_HID_TWINHAN=y
117CONFIG_HID_NTRIG=y
118CONFIG_HID_PANTHERLORD=y
119CONFIG_HID_PETALYNX=y
120CONFIG_HID_SAMSUNG=y
121CONFIG_HID_SONY=y
122CONFIG_HID_SUNPLUS=y
123CONFIG_HID_GREENASIA=y
124CONFIG_HID_SMARTJOYPLUS=y
125CONFIG_HID_TOPSEED=y
126CONFIG_HID_THRUSTMASTER=y
127CONFIG_HID_ZEROPLUS=y
128CONFIG_USB=y
129CONFIG_USB_XHCI_HCD=y
130CONFIG_USB_EHCI_HCD=y
131CONFIG_USB_EHCI_ROOT_HUB_TT=y
132CONFIG_USB_PRINTER=m
133CONFIG_USB_STORAGE=y
134CONFIG_USB_STORAGE_DATAFAB=y
135CONFIG_USB_STORAGE_FREECOM=y
136CONFIG_USB_STORAGE_SDDR09=y
137CONFIG_USB_STORAGE_SDDR55=y
138CONFIG_USB_STORAGE_JUMPSHOT=y
139CONFIG_MMC=y
140CONFIG_SDIO_UART=y
141CONFIG_MMC_MVSDIO=y
142CONFIG_NEW_LEDS=y
143CONFIG_LEDS_CLASS=y
144CONFIG_LEDS_GPIO=y
145CONFIG_LEDS_TRIGGERS=y
146CONFIG_LEDS_TRIGGER_TIMER=y
147CONFIG_LEDS_TRIGGER_HEARTBEAT=y
148CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
149CONFIG_RTC_CLASS=y
150CONFIG_RTC_DRV_RS5C372=y
151CONFIG_RTC_DRV_PCF8563=y
152CONFIG_RTC_DRV_S35390A=y
153CONFIG_RTC_DRV_MV=y
154CONFIG_DMADEVICES=y
155CONFIG_MV_XOR=y
156CONFIG_STAGING=y
157CONFIG_FB_XGI=y
158CONFIG_EXT2_FS=y
159CONFIG_EXT3_FS=y
160# CONFIG_EXT3_FS_XATTR is not set
161CONFIG_EXT4_FS=y
162CONFIG_ISO9660_FS=m
163CONFIG_JOLIET=y
164CONFIG_UDF_FS=m
165CONFIG_MSDOS_FS=y
166CONFIG_VFAT_FS=y
167CONFIG_TMPFS=y
168CONFIG_JFFS2_FS=y
169CONFIG_CRAMFS=y
170CONFIG_NFS_FS=y
171CONFIG_ROOT_NFS=y
172CONFIG_NLS_CODEPAGE_437=y
173CONFIG_NLS_CODEPAGE_850=y
174CONFIG_NLS_ISO8859_1=y
175CONFIG_NLS_ISO8859_2=y
176CONFIG_NLS_UTF8=y
177CONFIG_DEBUG_INFO=y
178CONFIG_DEBUG_FS=y
179CONFIG_MAGIC_SYSRQ=y
180CONFIG_DEBUG_KERNEL=y
181# CONFIG_SCHED_DEBUG is not set
182# CONFIG_DEBUG_PREEMPT is not set
183# CONFIG_FTRACE is not set
184CONFIG_DEBUG_USER=y
185CONFIG_CRYPTO_CBC=m
186CONFIG_CRYPTO_PCBC=m
187# CONFIG_CRYPTO_ANSI_CPRNG is not set
188CONFIG_CRYPTO_DEV_MV_CESA=y
189CONFIG_CRC_CCITT=y
190CONFIG_LIBCRC32C=y
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index 4863cdc3fb95..d4e8a47a2f7c 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -1,4 +1,5 @@
1CONFIG_SYSVIPC=y 1CONFIG_SYSVIPC=y
2CONFIG_FHANDLE=y
2CONFIG_IRQ_DOMAIN_DEBUG=y 3CONFIG_IRQ_DOMAIN_DEBUG=y
3CONFIG_NO_HZ=y 4CONFIG_NO_HZ=y
4CONFIG_HIGH_RES_TIMERS=y 5CONFIG_HIGH_RES_TIMERS=y
@@ -9,7 +10,10 @@ CONFIG_MODULE_UNLOAD=y
9CONFIG_PARTITION_ADVANCED=y 10CONFIG_PARTITION_ADVANCED=y
10CONFIG_ARCH_MVEBU=y 11CONFIG_ARCH_MVEBU=y
11CONFIG_MACH_ARMADA_370=y 12CONFIG_MACH_ARMADA_370=y
13CONFIG_MACH_ARMADA_375=y
14CONFIG_MACH_ARMADA_38X=y
12CONFIG_MACH_ARMADA_XP=y 15CONFIG_MACH_ARMADA_XP=y
16CONFIG_MACH_DOVE=y
13CONFIG_ARCH_BCM=y 17CONFIG_ARCH_BCM=y
14CONFIG_ARCH_BCM_5301X=y 18CONFIG_ARCH_BCM_5301X=y
15CONFIG_ARCH_BCM_MOBILE=y 19CONFIG_ARCH_BCM_MOBILE=y
@@ -32,6 +36,10 @@ CONFIG_SOC_OMAP5=y
32CONFIG_SOC_AM33XX=y 36CONFIG_SOC_AM33XX=y
33CONFIG_SOC_DRA7XX=y 37CONFIG_SOC_DRA7XX=y
34CONFIG_SOC_AM43XX=y 38CONFIG_SOC_AM43XX=y
39CONFIG_ARCH_QCOM=y
40CONFIG_ARCH_MSM8X60=y
41CONFIG_ARCH_MSM8960=y
42CONFIG_ARCH_MSM8974=y
35CONFIG_ARCH_ROCKCHIP=y 43CONFIG_ARCH_ROCKCHIP=y
36CONFIG_ARCH_SOCFPGA=y 44CONFIG_ARCH_SOCFPGA=y
37CONFIG_PLAT_SPEAR=y 45CONFIG_PLAT_SPEAR=y
@@ -96,6 +104,7 @@ CONFIG_RFKILL_GPIO=y
96CONFIG_DEVTMPFS=y 104CONFIG_DEVTMPFS=y
97CONFIG_DEVTMPFS_MOUNT=y 105CONFIG_DEVTMPFS_MOUNT=y
98CONFIG_DMA_CMA=y 106CONFIG_DMA_CMA=y
107CONFIG_CMA_SIZE_MBYTES=64
99CONFIG_OMAP_OCP2SCP=y 108CONFIG_OMAP_OCP2SCP=y
100CONFIG_MTD=y 109CONFIG_MTD=y
101CONFIG_MTD_M25P80=y 110CONFIG_MTD_M25P80=y
@@ -113,6 +122,7 @@ CONFIG_SATA_MV=y
113CONFIG_NETDEVICES=y 122CONFIG_NETDEVICES=y
114CONFIG_SUN4I_EMAC=y 123CONFIG_SUN4I_EMAC=y
115CONFIG_NET_CALXEDA_XGMAC=y 124CONFIG_NET_CALXEDA_XGMAC=y
125CONFIG_MV643XX_ETH=y
116CONFIG_MVNETA=y 126CONFIG_MVNETA=y
117CONFIG_KS8851=y 127CONFIG_KS8851=y
118CONFIG_R8169=y 128CONFIG_R8169=y
@@ -148,6 +158,8 @@ CONFIG_SERIAL_SIRFSOC_CONSOLE=y
148CONFIG_SERIAL_TEGRA=y 158CONFIG_SERIAL_TEGRA=y
149CONFIG_SERIAL_IMX=y 159CONFIG_SERIAL_IMX=y
150CONFIG_SERIAL_IMX_CONSOLE=y 160CONFIG_SERIAL_IMX_CONSOLE=y
161CONFIG_SERIAL_MSM=y
162CONFIG_SERIAL_MSM_CONSOLE=y
151CONFIG_SERIAL_VT8500=y 163CONFIG_SERIAL_VT8500=y
152CONFIG_SERIAL_VT8500_CONSOLE=y 164CONFIG_SERIAL_VT8500_CONSOLE=y
153CONFIG_SERIAL_OF_PLATFORM=y 165CONFIG_SERIAL_OF_PLATFORM=y
@@ -161,6 +173,7 @@ CONFIG_SERIAL_ST_ASC=y
161CONFIG_SERIAL_ST_ASC_CONSOLE=y 173CONFIG_SERIAL_ST_ASC_CONSOLE=y
162CONFIG_I2C_CHARDEV=y 174CONFIG_I2C_CHARDEV=y
163CONFIG_I2C_MUX=y 175CONFIG_I2C_MUX=y
176CONFIG_I2C_MUX_PCA954x=y
164CONFIG_I2C_MUX_PINCTRL=y 177CONFIG_I2C_MUX_PINCTRL=y
165CONFIG_I2C_DESIGNWARE_PLATFORM=y 178CONFIG_I2C_DESIGNWARE_PLATFORM=y
166CONFIG_I2C_MV64XXX=y 179CONFIG_I2C_MV64XXX=y
@@ -189,7 +202,10 @@ CONFIG_POWER_RESET_AS3722=y
189CONFIG_POWER_RESET_GPIO=y 202CONFIG_POWER_RESET_GPIO=y
190CONFIG_SENSORS_LM90=y 203CONFIG_SENSORS_LM90=y
191CONFIG_THERMAL=y 204CONFIG_THERMAL=y
205CONFIG_DOVE_THERMAL=y
192CONFIG_ARMADA_THERMAL=y 206CONFIG_ARMADA_THERMAL=y
207CONFIG_WATCHDOG=y
208CONFIG_ORION_WATCHDOG=y
193CONFIG_MFD_AS3722=y 209CONFIG_MFD_AS3722=y
194CONFIG_MFD_CROS_EC=y 210CONFIG_MFD_CROS_EC=y
195CONFIG_MFD_CROS_EC_SPI=y 211CONFIG_MFD_CROS_EC_SPI=y
@@ -214,6 +230,8 @@ CONFIG_REGULATOR_VEXPRESS=y
214CONFIG_MEDIA_SUPPORT=y 230CONFIG_MEDIA_SUPPORT=y
215CONFIG_MEDIA_CAMERA_SUPPORT=y 231CONFIG_MEDIA_CAMERA_SUPPORT=y
216CONFIG_MEDIA_USB_SUPPORT=y 232CONFIG_MEDIA_USB_SUPPORT=y
233CONFIG_USB_VIDEO_CLASS=y
234CONFIG_USB_GSPCA=y
217CONFIG_DRM=y 235CONFIG_DRM=y
218CONFIG_DRM_TEGRA=y 236CONFIG_DRM_TEGRA=y
219CONFIG_DRM_PANEL_SIMPLE=y 237CONFIG_DRM_PANEL_SIMPLE=y
@@ -256,6 +274,7 @@ CONFIG_MMC_ARMMMCI=y
256CONFIG_MMC_SDHCI=y 274CONFIG_MMC_SDHCI=y
257CONFIG_MMC_SDHCI_ESDHC_IMX=y 275CONFIG_MMC_SDHCI_ESDHC_IMX=y
258CONFIG_MMC_SDHCI_TEGRA=y 276CONFIG_MMC_SDHCI_TEGRA=y
277CONFIG_MMC_SDHCI_DOVE=y
259CONFIG_MMC_SDHCI_SPEAR=y 278CONFIG_MMC_SDHCI_SPEAR=y
260CONFIG_MMC_SDHCI_BCM_KONA=y 279CONFIG_MMC_SDHCI_BCM_KONA=y
261CONFIG_MMC_OMAP=y 280CONFIG_MMC_OMAP=y
@@ -296,6 +315,10 @@ CONFIG_MFD_NVEC=y
296CONFIG_KEYBOARD_NVEC=y 315CONFIG_KEYBOARD_NVEC=y
297CONFIG_SERIO_NVEC_PS2=y 316CONFIG_SERIO_NVEC_PS2=y
298CONFIG_NVEC_POWER=y 317CONFIG_NVEC_POWER=y
318CONFIG_COMMON_CLK_QCOM=y
319CONFIG_MSM_GCC_8660=y
320CONFIG_MSM_MMCC_8960=y
321CONFIG_MSM_MMCC_8974=y
299CONFIG_TEGRA_IOMMU_GART=y 322CONFIG_TEGRA_IOMMU_GART=y
300CONFIG_TEGRA_IOMMU_SMMU=y 323CONFIG_TEGRA_IOMMU_SMMU=y
301CONFIG_MEMORY=y 324CONFIG_MEMORY=y
diff --git a/arch/arm/configs/mvebu_v5_defconfig b/arch/arm/configs/mvebu_v5_defconfig
new file mode 100644
index 000000000000..36484a37a1ca
--- /dev/null
+++ b/arch/arm/configs/mvebu_v5_defconfig
@@ -0,0 +1,181 @@
1CONFIG_SYSVIPC=y
2CONFIG_NO_HZ=y
3CONFIG_HIGH_RES_TIMERS=y
4CONFIG_LOG_BUF_SHIFT=19
5CONFIG_PROFILING=y
6CONFIG_OPROFILE=y
7CONFIG_KPROBES=y
8CONFIG_MODULES=y
9CONFIG_MODULE_UNLOAD=y
10# CONFIG_BLK_DEV_BSG is not set
11# CONFIG_ARCH_MULTI_V7 is not set
12CONFIG_ARCH_MVEBU=y
13CONFIG_MACH_KIRKWOOD=y
14CONFIG_MACH_T5325=y
15# CONFIG_CPU_FEROCEON_OLD_ID is not set
16CONFIG_PCI_MVEBU=y
17CONFIG_PREEMPT=y
18CONFIG_AEABI=y
19CONFIG_HIGHMEM=y
20CONFIG_ZBOOT_ROM_TEXT=0x0
21CONFIG_ZBOOT_ROM_BSS=0x0
22CONFIG_CPU_FREQ=y
23CONFIG_CPU_FREQ_STAT_DETAILS=y
24CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
25CONFIG_CPU_IDLE=y
26CONFIG_NET=y
27CONFIG_PACKET=y
28CONFIG_UNIX=y
29CONFIG_INET=y
30CONFIG_IP_MULTICAST=y
31CONFIG_IP_PNP=y
32CONFIG_IP_PNP_DHCP=y
33CONFIG_IP_PNP_BOOTP=y
34# CONFIG_IPV6 is not set
35CONFIG_NET_PKTGEN=m
36CONFIG_CFG80211=y
37CONFIG_MAC80211=y
38CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
39CONFIG_MTD=y
40CONFIG_MTD_CMDLINE_PARTS=y
41CONFIG_MTD_BLOCK=y
42CONFIG_MTD_CFI=y
43CONFIG_MTD_JEDECPROBE=y
44CONFIG_MTD_CFI_ADV_OPTIONS=y
45CONFIG_MTD_CFI_GEOMETRY=y
46# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
47CONFIG_MTD_CFI_INTELEXT=y
48CONFIG_MTD_CFI_STAA=y
49CONFIG_MTD_PHYSMAP=y
50CONFIG_MTD_M25P80=y
51CONFIG_MTD_NAND=y
52CONFIG_MTD_NAND_ORION=y
53CONFIG_BLK_DEV_LOOP=y
54CONFIG_EEPROM_AT24=y
55# CONFIG_SCSI_PROC_FS is not set
56CONFIG_BLK_DEV_SD=y
57CONFIG_BLK_DEV_SR=m
58CONFIG_CHR_DEV_SG=m
59CONFIG_ATA=y
60CONFIG_SATA_AHCI=y
61CONFIG_SATA_MV=y
62CONFIG_NETDEVICES=y
63CONFIG_NET_DSA_MV88E6123_61_65=y
64CONFIG_MV643XX_ETH=y
65CONFIG_R8169=y
66CONFIG_MARVELL_PHY=y
67CONFIG_LIBERTAS=y
68CONFIG_LIBERTAS_SDIO=y
69CONFIG_INPUT_EVDEV=y
70CONFIG_KEYBOARD_GPIO=y
71# CONFIG_INPUT_MOUSE is not set
72CONFIG_LEGACY_PTY_COUNT=16
73# CONFIG_DEVKMEM is not set
74CONFIG_SERIAL_8250=y
75CONFIG_SERIAL_8250_CONSOLE=y
76CONFIG_SERIAL_8250_RUNTIME_UARTS=2
77CONFIG_SERIAL_OF_PLATFORM=y
78# CONFIG_HW_RANDOM is not set
79CONFIG_I2C=y
80# CONFIG_I2C_COMPAT is not set
81CONFIG_I2C_CHARDEV=y
82CONFIG_I2C_MV64XXX=y
83CONFIG_SPI=y
84CONFIG_SPI_ORION=y
85CONFIG_GPIO_SYSFS=y
86CONFIG_POWER_SUPPLY=y
87CONFIG_POWER_RESET=y
88CONFIG_POWER_RESET_GPIO=y
89CONFIG_POWER_RESET_QNAP=y
90CONFIG_SENSORS_ADT7475=y
91CONFIG_SENSORS_LM63=y
92CONFIG_SENSORS_LM75=y
93CONFIG_SENSORS_LM85=y
94CONFIG_THERMAL=y
95CONFIG_WATCHDOG=y
96CONFIG_ORION_WATCHDOG=y
97CONFIG_FB=y
98CONFIG_SOUND=y
99CONFIG_SND=y
100CONFIG_SND_SOC=y
101CONFIG_SND_KIRKWOOD_SOC=y
102CONFIG_SND_KIRKWOOD_SOC_T5325=y
103CONFIG_REGULATOR=y
104CONFIG_REGULATOR_FIXED_VOLTAGE=y
105CONFIG_HID_DRAGONRISE=y
106CONFIG_HID_GYRATION=y
107CONFIG_HID_TWINHAN=y
108CONFIG_HID_NTRIG=y
109CONFIG_HID_PANTHERLORD=y
110CONFIG_HID_PETALYNX=y
111CONFIG_HID_SAMSUNG=y
112CONFIG_HID_SONY=y
113CONFIG_HID_SUNPLUS=y
114CONFIG_HID_GREENASIA=y
115CONFIG_HID_SMARTJOYPLUS=y
116CONFIG_HID_TOPSEED=y
117CONFIG_HID_THRUSTMASTER=y
118CONFIG_HID_ZEROPLUS=y
119CONFIG_USB=y
120CONFIG_USB_XHCI_HCD=y
121CONFIG_USB_EHCI_HCD=y
122CONFIG_USB_EHCI_ROOT_HUB_TT=y
123CONFIG_USB_PRINTER=m
124CONFIG_USB_STORAGE=y
125CONFIG_USB_STORAGE_DATAFAB=y
126CONFIG_USB_STORAGE_FREECOM=y
127CONFIG_USB_STORAGE_SDDR09=y
128CONFIG_USB_STORAGE_SDDR55=y
129CONFIG_USB_STORAGE_JUMPSHOT=y
130CONFIG_MMC=y
131CONFIG_SDIO_UART=y
132CONFIG_MMC_MVSDIO=y
133CONFIG_NEW_LEDS=y
134CONFIG_LEDS_CLASS=y
135CONFIG_LEDS_GPIO=y
136CONFIG_LEDS_TRIGGERS=y
137CONFIG_LEDS_TRIGGER_TIMER=y
138CONFIG_LEDS_TRIGGER_HEARTBEAT=y
139CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
140CONFIG_RTC_CLASS=y
141CONFIG_RTC_DRV_RS5C372=y
142CONFIG_RTC_DRV_PCF8563=y
143CONFIG_RTC_DRV_S35390A=y
144CONFIG_RTC_DRV_MV=y
145CONFIG_DMADEVICES=y
146CONFIG_MV_XOR=y
147CONFIG_STAGING=y
148CONFIG_FB_XGI=y
149CONFIG_EXT2_FS=y
150CONFIG_EXT3_FS=y
151# CONFIG_EXT3_FS_XATTR is not set
152CONFIG_EXT4_FS=y
153CONFIG_ISO9660_FS=m
154CONFIG_JOLIET=y
155CONFIG_UDF_FS=m
156CONFIG_MSDOS_FS=y
157CONFIG_VFAT_FS=y
158CONFIG_TMPFS=y
159CONFIG_JFFS2_FS=y
160CONFIG_CRAMFS=y
161CONFIG_NFS_FS=y
162CONFIG_ROOT_NFS=y
163CONFIG_NLS_CODEPAGE_437=y
164CONFIG_NLS_CODEPAGE_850=y
165CONFIG_NLS_ISO8859_1=y
166CONFIG_NLS_ISO8859_2=y
167CONFIG_NLS_UTF8=y
168CONFIG_DEBUG_INFO=y
169CONFIG_DEBUG_FS=y
170CONFIG_MAGIC_SYSRQ=y
171CONFIG_DEBUG_KERNEL=y
172# CONFIG_SCHED_DEBUG is not set
173# CONFIG_DEBUG_PREEMPT is not set
174# CONFIG_FTRACE is not set
175CONFIG_DEBUG_USER=y
176CONFIG_CRYPTO_CBC=m
177CONFIG_CRYPTO_PCBC=m
178# CONFIG_CRYPTO_ANSI_CPRNG is not set
179CONFIG_CRYPTO_DEV_MV_CESA=y
180CONFIG_CRC_CCITT=y
181CONFIG_LIBCRC32C=y
diff --git a/arch/arm/configs/mvebu_defconfig b/arch/arm/configs/mvebu_v7_defconfig
index 2ffba3d7b5a5..a34713d8db9f 100644
--- a/arch/arm/configs/mvebu_defconfig
+++ b/arch/arm/configs/mvebu_v7_defconfig
@@ -10,6 +10,8 @@ CONFIG_MODULES=y
10CONFIG_MODULE_UNLOAD=y 10CONFIG_MODULE_UNLOAD=y
11CONFIG_ARCH_MVEBU=y 11CONFIG_ARCH_MVEBU=y
12CONFIG_MACH_ARMADA_370=y 12CONFIG_MACH_ARMADA_370=y
13CONFIG_MACH_ARMADA_375=y
14CONFIG_MACH_ARMADA_38X=y
13CONFIG_MACH_ARMADA_XP=y 15CONFIG_MACH_ARMADA_XP=y
14CONFIG_NEON=y 16CONFIG_NEON=y
15# CONFIG_CACHE_L2X0 is not set 17# CONFIG_CACHE_L2X0 is not set
@@ -63,6 +65,13 @@ CONFIG_GPIOLIB=y
63CONFIG_GPIO_SYSFS=y 65CONFIG_GPIO_SYSFS=y
64CONFIG_THERMAL=y 66CONFIG_THERMAL=y
65CONFIG_ARMADA_THERMAL=y 67CONFIG_ARMADA_THERMAL=y
68CONFIG_SOUND=y
69CONFIG_SND=y
70CONFIG_SND_SOC=y
71CONFIG_SND_KIRKWOOD_SOC=y
72CONFIG_SND_KIRKWOOD_SOC_ARMADA370_DB=y
73CONFIG_WATCHDOG=y
74CONFIG_ORION_WATCHDOG=y
66CONFIG_USB_SUPPORT=y 75CONFIG_USB_SUPPORT=y
67CONFIG_USB=y 76CONFIG_USB=y
68CONFIG_USB_EHCI_HCD=y 77CONFIG_USB_EHCI_HCD=y
diff --git a/arch/arm/configs/shmobile_defconfig b/arch/arm/configs/shmobile_defconfig
new file mode 100644
index 000000000000..83b07258a385
--- /dev/null
+++ b/arch/arm/configs/shmobile_defconfig
@@ -0,0 +1,129 @@
1CONFIG_SYSVIPC=y
2CONFIG_NO_HZ=y
3CONFIG_IKCONFIG=y
4CONFIG_IKCONFIG_PROC=y
5CONFIG_LOG_BUF_SHIFT=16
6CONFIG_CC_OPTIMIZE_FOR_SIZE=y
7CONFIG_SYSCTL_SYSCALL=y
8CONFIG_EMBEDDED=y
9CONFIG_PERF_EVENTS=y
10CONFIG_SLAB=y
11CONFIG_ARCH_SHMOBILE_MULTI=y
12CONFIG_ARCH_EMEV2=y
13CONFIG_ARCH_R8A7790=y
14CONFIG_ARCH_R8A7791=y
15CONFIG_MACH_KOELSCH=y
16CONFIG_MACH_LAGER=y
17# CONFIG_SWP_EMULATE is not set
18CONFIG_CPU_BPREDICT_DISABLE=y
19CONFIG_PL310_ERRATA_588369=y
20CONFIG_ARM_ERRATA_754322=y
21CONFIG_PCI=y
22CONFIG_PCI_RCAR_GEN2=y
23CONFIG_SMP=y
24CONFIG_SCHED_MC=y
25CONFIG_HAVE_ARM_ARCH_TIMER=y
26CONFIG_NR_CPUS=8
27CONFIG_AEABI=y
28CONFIG_ZBOOT_ROM_TEXT=0x0
29CONFIG_ZBOOT_ROM_BSS=0x0
30CONFIG_ARM_APPENDED_DTB=y
31CONFIG_KEXEC=y
32CONFIG_VFP=y
33CONFIG_NEON=y
34# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
35CONFIG_NET=y
36CONFIG_PACKET=y
37CONFIG_UNIX=y
38CONFIG_INET=y
39CONFIG_IP_PNP=y
40CONFIG_IP_PNP_DHCP=y
41CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
42CONFIG_DEVTMPFS=y
43CONFIG_DEVTMPFS_MOUNT=y
44CONFIG_MTD=y
45CONFIG_MTD_M25P80=y
46CONFIG_BLK_DEV_SD=y
47CONFIG_ATA=y
48CONFIG_SATA_RCAR=y
49CONFIG_NETDEVICES=y
50# CONFIG_NET_VENDOR_ARC is not set
51# CONFIG_NET_CADENCE is not set
52# CONFIG_NET_VENDOR_BROADCOM is not set
53# CONFIG_NET_VENDOR_CIRRUS is not set
54# CONFIG_NET_VENDOR_FARADAY is not set
55# CONFIG_NET_VENDOR_INTEL is not set
56# CONFIG_NET_VENDOR_MARVELL is not set
57# CONFIG_NET_VENDOR_MICREL is not set
58# CONFIG_NET_VENDOR_NATSEMI is not set
59CONFIG_SH_ETH=y
60# CONFIG_NET_VENDOR_SEEQ is not set
61CONFIG_SMSC911X=y
62# CONFIG_NET_VENDOR_STMICRO is not set
63# CONFIG_NET_VENDOR_VIA is not set
64# CONFIG_NET_VENDOR_WIZNET is not set
65CONFIG_SMSC_PHY=y
66# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
67CONFIG_KEYBOARD_GPIO=y
68# CONFIG_INPUT_MOUSE is not set
69# CONFIG_LEGACY_PTYS is not set
70CONFIG_SERIAL_8250=y
71CONFIG_SERIAL_8250_CONSOLE=y
72CONFIG_SERIAL_8250_EXTENDED=y
73CONFIG_SERIAL_8250_EM=y
74CONFIG_SERIAL_SH_SCI=y
75CONFIG_SERIAL_SH_SCI_NR_UARTS=20
76CONFIG_SERIAL_SH_SCI_CONSOLE=y
77CONFIG_I2C_GPIO=y
78CONFIG_I2C_RCAR=y
79CONFIG_SPI=y
80CONFIG_SPI_RSPI=y
81CONFIG_GPIO_EM=y
82CONFIG_GPIO_RCAR=y
83# CONFIG_HWMON is not set
84CONFIG_THERMAL=y
85CONFIG_RCAR_THERMAL=y
86CONFIG_REGULATOR=y
87CONFIG_REGULATOR_FIXED_VOLTAGE=y
88CONFIG_REGULATOR_GPIO=y
89CONFIG_MEDIA_SUPPORT=y
90CONFIG_MEDIA_CAMERA_SUPPORT=y
91CONFIG_V4L_PLATFORM_DRIVERS=y
92CONFIG_SOC_CAMERA=y
93CONFIG_SOC_CAMERA_PLATFORM=y
94CONFIG_VIDEO_RCAR_VIN=y
95# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
96CONFIG_VIDEO_ADV7180=y
97CONFIG_DRM=y
98CONFIG_DRM_RCAR_DU=y
99CONFIG_SOUND=y
100CONFIG_SND=y
101CONFIG_SND_SOC=y
102CONFIG_SND_SOC_RCAR=y
103CONFIG_USB_RCAR_GEN2_PHY=y
104CONFIG_MMC=y
105CONFIG_MMC_SDHI=y
106CONFIG_MMC_SH_MMCIF=y
107CONFIG_NEW_LEDS=y
108CONFIG_LEDS_CLASS=y
109CONFIG_LEDS_GPIO=y
110CONFIG_RTC_CLASS=y
111CONFIG_DMADEVICES=y
112CONFIG_SH_DMAE=y
113# CONFIG_IOMMU_SUPPORT is not set
114# CONFIG_DNOTIFY is not set
115CONFIG_MSDOS_FS=y
116CONFIG_VFAT_FS=y
117CONFIG_TMPFS=y
118CONFIG_CONFIGFS_FS=y
119# CONFIG_MISC_FILESYSTEMS is not set
120CONFIG_NFS_FS=y
121CONFIG_NFS_V3_ACL=y
122CONFIG_NFS_V4=y
123CONFIG_NFS_V4_1=y
124CONFIG_ROOT_NFS=y
125CONFIG_NLS_CODEPAGE_437=y
126CONFIG_NLS_ISO8859_1=y
127# CONFIG_ENABLE_WARN_DEPRECATED is not set
128# CONFIG_ENABLE_MUST_CHECK is not set
129# CONFIG_ARM_UNWIND is not set
diff --git a/arch/arm/configs/sunxi_defconfig b/arch/arm/configs/sunxi_defconfig
index 3e2259b60236..b5df4a511b0a 100644
--- a/arch/arm/configs/sunxi_defconfig
+++ b/arch/arm/configs/sunxi_defconfig
@@ -24,6 +24,7 @@ CONFIG_IP_PNP_BOOTP=y
24# CONFIG_WIRELESS is not set 24# CONFIG_WIRELESS is not set
25CONFIG_DEVTMPFS=y 25CONFIG_DEVTMPFS=y
26CONFIG_DEVTMPFS_MOUNT=y 26CONFIG_DEVTMPFS_MOUNT=y
27CONFIG_EEPROM_SUNXI_SID=y
27CONFIG_NETDEVICES=y 28CONFIG_NETDEVICES=y
28CONFIG_SUN4I_EMAC=y 29CONFIG_SUN4I_EMAC=y
29# CONFIG_NET_CADENCE is not set 30# CONFIG_NET_CADENCE is not set
@@ -48,6 +49,8 @@ CONFIG_I2C=y
48# CONFIG_I2C_COMPAT is not set 49# CONFIG_I2C_COMPAT is not set
49CONFIG_I2C_CHARDEV=y 50CONFIG_I2C_CHARDEV=y
50CONFIG_I2C_MV64XXX=y 51CONFIG_I2C_MV64XXX=y
52CONFIG_SPI=y
53CONFIG_SPI_SUN6I=y
51CONFIG_GPIO_SYSFS=y 54CONFIG_GPIO_SYSFS=y
52# CONFIG_HWMON is not set 55# CONFIG_HWMON is not set
53CONFIG_WATCHDOG=y 56CONFIG_WATCHDOG=y
diff --git a/arch/arm/configs/tegra_defconfig b/arch/arm/configs/tegra_defconfig
index 27d69b558c5d..2926281368ab 100644
--- a/arch/arm/configs/tegra_defconfig
+++ b/arch/arm/configs/tegra_defconfig
@@ -1,4 +1,5 @@
1CONFIG_SYSVIPC=y 1CONFIG_SYSVIPC=y
2CONFIG_FHANDLE=y
2CONFIG_NO_HZ=y 3CONFIG_NO_HZ=y
3CONFIG_HIGH_RES_TIMERS=y 4CONFIG_HIGH_RES_TIMERS=y
4CONFIG_IKCONFIG=y 5CONFIG_IKCONFIG=y
@@ -86,6 +87,7 @@ CONFIG_DEVTMPFS=y
86CONFIG_DEVTMPFS_MOUNT=y 87CONFIG_DEVTMPFS_MOUNT=y
87# CONFIG_FIRMWARE_IN_KERNEL is not set 88# CONFIG_FIRMWARE_IN_KERNEL is not set
88CONFIG_DMA_CMA=y 89CONFIG_DMA_CMA=y
90CONFIG_CMA_SIZE_MBYTES=64
89CONFIG_MTD=y 91CONFIG_MTD=y
90CONFIG_MTD_M25P80=y 92CONFIG_MTD_M25P80=y
91CONFIG_PROC_DEVICETREE=y 93CONFIG_PROC_DEVICETREE=y
@@ -125,6 +127,7 @@ CONFIG_SERIAL_TEGRA=y
125CONFIG_SERIAL_OF_PLATFORM=y 127CONFIG_SERIAL_OF_PLATFORM=y
126# CONFIG_HW_RANDOM is not set 128# CONFIG_HW_RANDOM is not set
127# CONFIG_I2C_COMPAT is not set 129# CONFIG_I2C_COMPAT is not set
130CONFIG_I2C_MUX_PCA954x=y
128CONFIG_I2C_MUX_PINCTRL=y 131CONFIG_I2C_MUX_PINCTRL=y
129CONFIG_I2C_TEGRA=y 132CONFIG_I2C_TEGRA=y
130CONFIG_SPI=y 133CONFIG_SPI=y
@@ -141,6 +144,7 @@ CONFIG_POWER_SUPPLY=y
141CONFIG_BATTERY_SBS=y 144CONFIG_BATTERY_SBS=y
142CONFIG_CHARGER_TPS65090=y 145CONFIG_CHARGER_TPS65090=y
143CONFIG_POWER_RESET=y 146CONFIG_POWER_RESET=y
147CONFIG_POWER_RESET_AS3722=y
144CONFIG_POWER_RESET_GPIO=y 148CONFIG_POWER_RESET_GPIO=y
145CONFIG_SENSORS_LM90=y 149CONFIG_SENSORS_LM90=y
146CONFIG_MFD_AS3722=y 150CONFIG_MFD_AS3722=y
@@ -166,7 +170,8 @@ CONFIG_REGULATOR_TPS65910=y
166CONFIG_MEDIA_SUPPORT=y 170CONFIG_MEDIA_SUPPORT=y
167CONFIG_MEDIA_CAMERA_SUPPORT=y 171CONFIG_MEDIA_CAMERA_SUPPORT=y
168CONFIG_MEDIA_USB_SUPPORT=y 172CONFIG_MEDIA_USB_SUPPORT=y
169CONFIG_USB_VIDEO_CLASS=m 173CONFIG_USB_VIDEO_CLASS=y
174CONFIG_USB_GSPCA=y
170CONFIG_DRM=y 175CONFIG_DRM=y
171CONFIG_DRM_TEGRA=y 176CONFIG_DRM_TEGRA=y
172CONFIG_DRM_PANEL_SIMPLE=y 177CONFIG_DRM_PANEL_SIMPLE=y
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index f162f1b77cd2..57d60542f982 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -32,6 +32,7 @@
32#include <linux/spi/pxa2xx_spi.h> 32#include <linux/spi/pxa2xx_spi.h>
33#include <linux/mtd/sharpsl.h> 33#include <linux/mtd/sharpsl.h>
34#include <linux/input/matrix_keypad.h> 34#include <linux/input/matrix_keypad.h>
35#include <linux/gpio_keys.h>
35#include <linux/module.h> 36#include <linux/module.h>
36#include <video/w100fb.h> 37#include <video/w100fb.h>
37 38
@@ -405,6 +406,44 @@ static struct platform_device corgikbd_device = {
405 }, 406 },
406}; 407};
407 408
409static struct gpio_keys_button corgi_gpio_keys[] = {
410 {
411 .type = EV_SW,
412 .code = SW_LID,
413 .gpio = CORGI_GPIO_SWA,
414 .desc = "Lid close switch",
415 .debounce_interval = 500,
416 },
417 {
418 .type = EV_SW,
419 .code = SW_TABLET_MODE,
420 .gpio = CORGI_GPIO_SWB,
421 .desc = "Tablet mode switch",
422 .debounce_interval = 500,
423 },
424 {
425 .type = EV_SW,
426 .code = SW_HEADPHONE_INSERT,
427 .gpio = CORGI_GPIO_AK_INT,
428 .desc = "HeadPhone insert",
429 .debounce_interval = 500,
430 },
431};
432
433static struct gpio_keys_platform_data corgi_gpio_keys_platform_data = {
434 .buttons = corgi_gpio_keys,
435 .nbuttons = ARRAY_SIZE(corgi_gpio_keys),
436 .poll_interval = 250,
437};
438
439static struct platform_device corgi_gpio_keys_device = {
440 .name = "gpio-keys-polled",
441 .id = -1,
442 .dev = {
443 .platform_data = &corgi_gpio_keys_platform_data,
444 },
445};
446
408/* 447/*
409 * Corgi LEDs 448 * Corgi LEDs
410 */ 449 */
@@ -646,6 +685,7 @@ static struct platform_device sharpsl_rom_device = {
646static struct platform_device *devices[] __initdata = { 685static struct platform_device *devices[] __initdata = {
647 &corgiscoop_device, 686 &corgiscoop_device,
648 &corgifb_device, 687 &corgifb_device,
688 &corgi_gpio_keys_device,
649 &corgikbd_device, 689 &corgikbd_device,
650 &corgiled_device, 690 &corgiled_device,
651 &corgi_audio_device, 691 &corgi_audio_device,
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
index c0b650b1c846..a182008e3aeb 100644
--- a/arch/arm/mach-shmobile/Kconfig
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -45,15 +45,12 @@ config MACH_GENMAI
45config MACH_KOELSCH 45config MACH_KOELSCH
46 bool "Koelsch board" 46 bool "Koelsch board"
47 depends on ARCH_R8A7791 47 depends on ARCH_R8A7791
48 48 select MICREL_PHY if SH_ETH
49config MACH_KZM9D
50 bool "KZM9D board"
51 depends on ARCH_EMEV2
52 select REGULATOR_FIXED_VOLTAGE if REGULATOR
53 49
54config MACH_LAGER 50config MACH_LAGER
55 bool "Lager board" 51 bool "Lager board"
56 depends on ARCH_R8A7790 52 depends on ARCH_R8A7790
53 select MICREL_PHY if SH_ETH
57 54
58comment "Renesas ARM SoCs System Configuration" 55comment "Renesas ARM SoCs System Configuration"
59endif 56endif
@@ -166,11 +163,13 @@ comment "Renesas ARM SoCs Board Type"
166config MACH_APE6EVM 163config MACH_APE6EVM
167 bool "APE6EVM board" 164 bool "APE6EVM board"
168 depends on ARCH_R8A73A4 165 depends on ARCH_R8A73A4
166 select SMSC_PHY if SMSC911X
169 select USE_OF 167 select USE_OF
170 168
171config MACH_APE6EVM_REFERENCE 169config MACH_APE6EVM_REFERENCE
172 bool "APE6EVM board - Reference Device Tree Implementation" 170 bool "APE6EVM board - Reference Device Tree Implementation"
173 depends on ARCH_R8A73A4 171 depends on ARCH_R8A73A4
172 select SMSC_PHY if SMSC911X
174 select USE_OF 173 select USE_OF
175 ---help--- 174 ---help---
176 Use reference implementation of APE6EVM board support 175 Use reference implementation of APE6EVM board support
@@ -184,6 +183,7 @@ config MACH_MACKEREL
184 depends on ARCH_SH7372 183 depends on ARCH_SH7372
185 select ARCH_REQUIRE_GPIOLIB 184 select ARCH_REQUIRE_GPIOLIB
186 select REGULATOR_FIXED_VOLTAGE if REGULATOR 185 select REGULATOR_FIXED_VOLTAGE if REGULATOR
186 select SMSC_PHY if SMSC911X
187 select SND_SOC_AK4642 if SND_SIMPLE_CARD 187 select SND_SOC_AK4642 if SND_SIMPLE_CARD
188 select USE_OF 188 select USE_OF
189 189
@@ -192,6 +192,7 @@ config MACH_ARMADILLO800EVA
192 depends on ARCH_R8A7740 192 depends on ARCH_R8A7740
193 select ARCH_REQUIRE_GPIOLIB 193 select ARCH_REQUIRE_GPIOLIB
194 select REGULATOR_FIXED_VOLTAGE if REGULATOR 194 select REGULATOR_FIXED_VOLTAGE if REGULATOR
195 select SMSC_PHY if SH_ETH
195 select SND_SOC_WM8978 if SND_SIMPLE_CARD 196 select SND_SOC_WM8978 if SND_SIMPLE_CARD
196 select USE_OF 197 select USE_OF
197 198
@@ -200,6 +201,7 @@ config MACH_ARMADILLO800EVA_REFERENCE
200 depends on ARCH_R8A7740 201 depends on ARCH_R8A7740
201 select ARCH_REQUIRE_GPIOLIB 202 select ARCH_REQUIRE_GPIOLIB
202 select REGULATOR_FIXED_VOLTAGE if REGULATOR 203 select REGULATOR_FIXED_VOLTAGE if REGULATOR
204 select SMSC_PHY if SH_ETH
203 select SND_SOC_WM8978 if SND_SIMPLE_CARD 205 select SND_SOC_WM8978 if SND_SIMPLE_CARD
204 select USE_OF 206 select USE_OF
205 ---help--- 207 ---help---
@@ -213,11 +215,11 @@ config MACH_BOCKW
213 bool "BOCK-W platform" 215 bool "BOCK-W platform"
214 depends on ARCH_R8A7778 216 depends on ARCH_R8A7778
215 select ARCH_REQUIRE_GPIOLIB 217 select ARCH_REQUIRE_GPIOLIB
216 select RENESAS_INTC_IRQPIN
217 select REGULATOR_FIXED_VOLTAGE if REGULATOR 218 select REGULATOR_FIXED_VOLTAGE if REGULATOR
218 select USE_OF 219 select RENESAS_INTC_IRQPIN
219 select SND_SOC_AK4554 if SND_SIMPLE_CARD 220 select SND_SOC_AK4554 if SND_SIMPLE_CARD
220 select SND_SOC_AK4642 if SND_SIMPLE_CARD 221 select SND_SOC_AK4642 if SND_SIMPLE_CARD
222 select USE_OF
221 223
222config MACH_BOCKW_REFERENCE 224config MACH_BOCKW_REFERENCE
223 bool "BOCK-W - Reference Device Tree Implementation" 225 bool "BOCK-W - Reference Device Tree Implementation"
@@ -273,6 +275,8 @@ config MACH_LAGER
273 bool "Lager board" 275 bool "Lager board"
274 depends on ARCH_R8A7790 276 depends on ARCH_R8A7790
275 select USE_OF 277 select USE_OF
278 select MICREL_PHY if SH_ETH
279 select SND_SOC_AK4642 if SND_SIMPLE_CARD
276 280
277config MACH_KOELSCH 281config MACH_KOELSCH
278 bool "Koelsch board" 282 bool "Koelsch board"
diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile
index d38a6362e5f8..4caffc912a81 100644
--- a/arch/arm/mach-shmobile/Makefile
+++ b/arch/arm/mach-shmobile/Makefile
@@ -59,7 +59,6 @@ obj-$(CONFIG_ARCH_R8A7790) += pm-r8a7790.o pm-rcar.o
59ifdef CONFIG_ARCH_SHMOBILE_MULTI 59ifdef CONFIG_ARCH_SHMOBILE_MULTI
60obj-$(CONFIG_MACH_GENMAI) += board-genmai-reference.o 60obj-$(CONFIG_MACH_GENMAI) += board-genmai-reference.o
61obj-$(CONFIG_MACH_KOELSCH) += board-koelsch-reference.o 61obj-$(CONFIG_MACH_KOELSCH) += board-koelsch-reference.o
62obj-$(CONFIG_MACH_KZM9D) += board-kzm9d-reference.o
63obj-$(CONFIG_MACH_LAGER) += board-lager-reference.o 62obj-$(CONFIG_MACH_LAGER) += board-lager-reference.o
64else 63else
65obj-$(CONFIG_MACH_APE6EVM) += board-ape6evm.o 64obj-$(CONFIG_MACH_APE6EVM) += board-ape6evm.o
diff --git a/arch/arm/mach-shmobile/board-armadillo800eva.c b/arch/arm/mach-shmobile/board-armadillo800eva.c
index 9323854242ca..2858f380beae 100644
--- a/arch/arm/mach-shmobile/board-armadillo800eva.c
+++ b/arch/arm/mach-shmobile/board-armadillo800eva.c
@@ -383,6 +383,8 @@ static struct platform_device sh_eth_device = {
383 .id = -1, 383 .id = -1,
384 .dev = { 384 .dev = {
385 .platform_data = &sh_eth_platdata, 385 .platform_data = &sh_eth_platdata,
386 .dma_mask = &sh_eth_device.dev.coherent_dma_mask,
387 .coherent_dma_mask = DMA_BIT_MASK(32),
386 }, 388 },
387 .resource = sh_eth_resources, 389 .resource = sh_eth_resources,
388 .num_resources = ARRAY_SIZE(sh_eth_resources), 390 .num_resources = ARRAY_SIZE(sh_eth_resources),
diff --git a/arch/arm/mach-shmobile/board-bockw.c b/arch/arm/mach-shmobile/board-bockw.c
index 74c27d9d6900..b4122f8cb8d9 100644
--- a/arch/arm/mach-shmobile/board-bockw.c
+++ b/arch/arm/mach-shmobile/board-bockw.c
@@ -1,9 +1,9 @@
1/* 1/*
2 * Bock-W board support 2 * Bock-W board support
3 * 3 *
4 * Copyright (C) 2013 Renesas Solutions Corp. 4 * Copyright (C) 2013-2014 Renesas Solutions Corp.
5 * Copyright (C) 2013 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> 5 * Copyright (C) 2013 Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
6 * Copyright (C) 2013 Cogent Embedded, Inc. 6 * Copyright (C) 2013-2014 Cogent Embedded, Inc.
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
@@ -168,6 +168,8 @@ static struct renesas_usbhs_platform_info usbhs_info __initdata = {
168 }, 168 },
169 .driver_param = { 169 .driver_param = {
170 .buswait_bwait = 4, 170 .buswait_bwait = 4,
171 .d0_tx_id = HPBDMA_SLAVE_USBFUNC_TX,
172 .d1_rx_id = HPBDMA_SLAVE_USBFUNC_RX,
171 }, 173 },
172}; 174};
173 175
@@ -233,6 +235,17 @@ static struct sh_eth_plat_data ether_platform_data __initdata = {
233 .no_ether_link = 1, 235 .no_ether_link = 1,
234}; 236};
235 237
238static struct platform_device_info ether_info __initdata = {
239 .parent = &platform_bus,
240 .name = "r8a777x-ether",
241 .id = -1,
242 .res = ether_resources,
243 .num_res = ARRAY_SIZE(ether_resources),
244 .data = &ether_platform_data,
245 .size_data = sizeof(ether_platform_data),
246 .dma_mask = DMA_BIT_MASK(32),
247};
248
236/* I2C */ 249/* I2C */
237static struct i2c_board_info i2c0_devices[] = { 250static struct i2c_board_info i2c0_devices[] = {
238 { 251 {
@@ -332,16 +345,24 @@ static struct rsnd_ssi_platform_info rsnd_ssi[] = {
332 RSND_SSI_UNUSED, /* SSI 0 */ 345 RSND_SSI_UNUSED, /* SSI 0 */
333 RSND_SSI_UNUSED, /* SSI 1 */ 346 RSND_SSI_UNUSED, /* SSI 1 */
334 RSND_SSI_UNUSED, /* SSI 2 */ 347 RSND_SSI_UNUSED, /* SSI 2 */
335 RSND_SSI_SET(1, 0, gic_iid(0x85), RSND_SSI_PLAY), 348 RSND_SSI_SET(1, HPBDMA_SLAVE_HPBIF3_TX, gic_iid(0x85), RSND_SSI_PLAY),
336 RSND_SSI_SET(2, 0, gic_iid(0x85), RSND_SSI_CLK_PIN_SHARE), 349 RSND_SSI_SET(2, HPBDMA_SLAVE_HPBIF4_RX, gic_iid(0x85), RSND_SSI_CLK_PIN_SHARE),
337 RSND_SSI_SET(0, 0, gic_iid(0x86), RSND_SSI_PLAY), 350 RSND_SSI_SET(0, HPBDMA_SLAVE_HPBIF5_TX, gic_iid(0x86), RSND_SSI_PLAY),
338 RSND_SSI_SET(0, 0, gic_iid(0x86), 0), 351 RSND_SSI_SET(0, HPBDMA_SLAVE_HPBIF6_RX, gic_iid(0x86), 0),
339 RSND_SSI_SET(3, 0, gic_iid(0x86), RSND_SSI_PLAY), 352 RSND_SSI_SET(3, HPBDMA_SLAVE_HPBIF7_TX, gic_iid(0x86), RSND_SSI_PLAY),
340 RSND_SSI_SET(4, 0, gic_iid(0x86), RSND_SSI_CLK_PIN_SHARE), 353 RSND_SSI_SET(4, HPBDMA_SLAVE_HPBIF8_RX, gic_iid(0x86), RSND_SSI_CLK_PIN_SHARE),
341}; 354};
342 355
343static struct rsnd_scu_platform_info rsnd_scu[9] = { 356static struct rsnd_scu_platform_info rsnd_scu[9] = {
344 /* no member at this point */ 357 { .flags = 0, }, /* SRU 0 */
358 { .flags = 0, }, /* SRU 1 */
359 { .flags = 0, }, /* SRU 2 */
360 { .flags = RSND_SCU_USE_HPBIF, },
361 { .flags = RSND_SCU_USE_HPBIF, },
362 { .flags = RSND_SCU_USE_HPBIF, },
363 { .flags = RSND_SCU_USE_HPBIF, },
364 { .flags = RSND_SCU_USE_HPBIF, },
365 { .flags = RSND_SCU_USE_HPBIF, },
345}; 366};
346 367
347enum { 368enum {
@@ -576,11 +597,7 @@ static void __init bockw_init(void)
576 r8a7778_init_irq_extpin(1); 597 r8a7778_init_irq_extpin(1);
577 r8a7778_add_standard_devices(); 598 r8a7778_add_standard_devices();
578 599
579 platform_device_register_resndata(&platform_bus, "r8a777x-ether", -1, 600 platform_device_register_full(&ether_info);
580 ether_resources,
581 ARRAY_SIZE(ether_resources),
582 &ether_platform_data,
583 sizeof(ether_platform_data));
584 601
585 platform_device_register_full(&vin0_info); 602 platform_device_register_full(&vin0_info);
586 /* VIN1 has a pin conflict with Ether */ 603 /* VIN1 has a pin conflict with Ether */
diff --git a/arch/arm/mach-shmobile/board-genmai.c b/arch/arm/mach-shmobile/board-genmai.c
index 3e92e3c62d4c..6c328d63b819 100644
--- a/arch/arm/mach-shmobile/board-genmai.c
+++ b/arch/arm/mach-shmobile/board-genmai.c
@@ -1,8 +1,9 @@
1/* 1/*
2 * Genmai board support 2 * Genmai board support
3 * 3 *
4 * Copyright (C) 2013 Renesas Solutions Corp. 4 * Copyright (C) 2013-2014 Renesas Solutions Corp.
5 * Copyright (C) 2013 Magnus Damm 5 * Copyright (C) 2013 Magnus Damm
6 * Copyright (C) 2014 Cogent Embedded, Inc.
6 * 7 *
7 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
@@ -20,15 +21,87 @@
20 21
21#include <linux/kernel.h> 22#include <linux/kernel.h>
22#include <linux/platform_device.h> 23#include <linux/platform_device.h>
24#include <linux/sh_eth.h>
25#include <linux/spi/rspi.h>
26#include <linux/spi/spi.h>
23#include <mach/common.h> 27#include <mach/common.h>
28#include <mach/irqs.h>
24#include <mach/r7s72100.h> 29#include <mach/r7s72100.h>
25#include <asm/mach-types.h> 30#include <asm/mach-types.h>
26#include <asm/mach/arch.h> 31#include <asm/mach/arch.h>
27 32
33/* Ether */
34static const struct sh_eth_plat_data ether_pdata __initconst = {
35 .phy = 0x00, /* PD60610 */
36 .edmac_endian = EDMAC_LITTLE_ENDIAN,
37 .phy_interface = PHY_INTERFACE_MODE_MII,
38 .no_ether_link = 1
39};
40
41static const struct resource ether_resources[] __initconst = {
42 DEFINE_RES_MEM(0xe8203000, 0x800),
43 DEFINE_RES_MEM(0xe8204800, 0x200),
44 DEFINE_RES_IRQ(gic_iid(359)),
45};
46
47static const struct platform_device_info ether_info __initconst = {
48 .parent = &platform_bus,
49 .name = "r7s72100-ether",
50 .id = -1,
51 .res = ether_resources,
52 .num_res = ARRAY_SIZE(ether_resources),
53 .data = &ether_pdata,
54 .size_data = sizeof(ether_pdata),
55 .dma_mask = DMA_BIT_MASK(32),
56};
57
58/* RSPI */
59#define RSPI_RESOURCE(idx, baseaddr, irq) \
60static const struct resource rspi##idx##_resources[] __initconst = { \
61 DEFINE_RES_MEM(baseaddr, 0x24), \
62 DEFINE_RES_IRQ_NAMED(irq, "error"), \
63 DEFINE_RES_IRQ_NAMED(irq + 1, "rx"), \
64 DEFINE_RES_IRQ_NAMED(irq + 2, "tx"), \
65}
66
67RSPI_RESOURCE(0, 0xe800c800, gic_iid(270));
68RSPI_RESOURCE(1, 0xe800d000, gic_iid(273));
69RSPI_RESOURCE(2, 0xe800d800, gic_iid(276));
70RSPI_RESOURCE(3, 0xe800e000, gic_iid(279));
71RSPI_RESOURCE(4, 0xe800e800, gic_iid(282));
72
73static const struct rspi_plat_data rspi_pdata __initconst = {
74 .num_chipselect = 1,
75};
76
77#define r7s72100_register_rspi(idx) \
78 platform_device_register_resndata(&platform_bus, "rspi-rz", idx, \
79 rspi##idx##_resources, \
80 ARRAY_SIZE(rspi##idx##_resources), \
81 &rspi_pdata, sizeof(rspi_pdata))
82
83static const struct spi_board_info spi_info[] __initconst = {
84 {
85 .modalias = "wm8978",
86 .max_speed_hz = 5000000,
87 .bus_num = 4,
88 .chip_select = 0,
89 },
90};
91
28static void __init genmai_add_standard_devices(void) 92static void __init genmai_add_standard_devices(void)
29{ 93{
30 r7s72100_clock_init(); 94 r7s72100_clock_init();
31 r7s72100_add_dt_devices(); 95 r7s72100_add_dt_devices();
96
97 platform_device_register_full(&ether_info);
98
99 r7s72100_register_rspi(0);
100 r7s72100_register_rspi(1);
101 r7s72100_register_rspi(2);
102 r7s72100_register_rspi(3);
103 r7s72100_register_rspi(4);
104 spi_register_board_info(spi_info, ARRAY_SIZE(spi_info));
32} 105}
33 106
34static const char * const genmai_boards_compat_dt[] __initconst = { 107static const char * const genmai_boards_compat_dt[] __initconst = {
diff --git a/arch/arm/mach-shmobile/board-koelsch-reference.c b/arch/arm/mach-shmobile/board-koelsch-reference.c
index 652b59268416..a3fd30242bd8 100644
--- a/arch/arm/mach-shmobile/board-koelsch-reference.c
+++ b/arch/arm/mach-shmobile/board-koelsch-reference.c
@@ -21,46 +21,114 @@
21 21
22#include <linux/clk.h> 22#include <linux/clk.h>
23#include <linux/clkdev.h> 23#include <linux/clkdev.h>
24#include <linux/dma-mapping.h>
24#include <linux/kernel.h> 25#include <linux/kernel.h>
25#include <linux/of_platform.h> 26#include <linux/of_platform.h>
27#include <linux/platform_data/rcar-du.h>
26#include <mach/common.h> 28#include <mach/common.h>
29#include <mach/irqs.h>
27#include <mach/rcar-gen2.h> 30#include <mach/rcar-gen2.h>
28#include <mach/r8a7791.h> 31#include <mach/r8a7791.h>
29#include <asm/mach/arch.h> 32#include <asm/mach/arch.h>
30 33
34/* DU */
35static struct rcar_du_encoder_data koelsch_du_encoders[] = {
36 {
37 .type = RCAR_DU_ENCODER_NONE,
38 .output = RCAR_DU_OUTPUT_LVDS0,
39 .connector.lvds.panel = {
40 .width_mm = 210,
41 .height_mm = 158,
42 .mode = {
43 .clock = 65000,
44 .hdisplay = 1024,
45 .hsync_start = 1048,
46 .hsync_end = 1184,
47 .htotal = 1344,
48 .vdisplay = 768,
49 .vsync_start = 771,
50 .vsync_end = 777,
51 .vtotal = 806,
52 .flags = 0,
53 },
54 },
55 },
56};
57
58static struct rcar_du_platform_data koelsch_du_pdata = {
59 .encoders = koelsch_du_encoders,
60 .num_encoders = ARRAY_SIZE(koelsch_du_encoders),
61};
62
63static const struct resource du_resources[] __initconst = {
64 DEFINE_RES_MEM(0xfeb00000, 0x40000),
65 DEFINE_RES_MEM_NAMED(0xfeb90000, 0x1c, "lvds.0"),
66 DEFINE_RES_IRQ(gic_spi(256)),
67 DEFINE_RES_IRQ(gic_spi(268)),
68};
69
70static void __init koelsch_add_du_device(void)
71{
72 struct platform_device_info info = {
73 .name = "rcar-du-r8a7791",
74 .id = -1,
75 .res = du_resources,
76 .num_res = ARRAY_SIZE(du_resources),
77 .data = &koelsch_du_pdata,
78 .size_data = sizeof(koelsch_du_pdata),
79 .dma_mask = DMA_BIT_MASK(32),
80 };
81
82 platform_device_register_full(&info);
83}
84
31static void __init koelsch_add_standard_devices(void) 85static void __init koelsch_add_standard_devices(void)
32{ 86{
33#ifdef CONFIG_COMMON_CLK
34 /* 87 /*
35 * This is a really crude hack to provide clkdev support to the SCIF 88 * This is a really crude hack to provide clkdev support to the CMT and
36 * and CMT devices until they get moved to DT. 89 * DU devices until they get moved to DT.
37 */ 90 */
38 static const char * const scif_names[] = { 91 static const struct clk_name {
39 "scifa0", "scifa1", "scifb0", "scifb1", "scifb2", "scifa2", 92 const char *clk;
40 "scif0", "scif1", "scif2", "scif3", "scif4", "scif5", "scifa3", 93 const char *con_id;
41 "scifa4", "scifa5", 94 const char *dev_id;
95 } clk_names[] = {
96 { "cmt0", NULL, "sh_cmt.0" },
97 { "scifa0", NULL, "sh-sci.0" },
98 { "scifa1", NULL, "sh-sci.1" },
99 { "scifb0", NULL, "sh-sci.2" },
100 { "scifb1", NULL, "sh-sci.3" },
101 { "scifb2", NULL, "sh-sci.4" },
102 { "scifa2", NULL, "sh-sci.5" },
103 { "scif0", NULL, "sh-sci.6" },
104 { "scif1", NULL, "sh-sci.7" },
105 { "scif2", NULL, "sh-sci.8" },
106 { "scif3", NULL, "sh-sci.9" },
107 { "scif4", NULL, "sh-sci.10" },
108 { "scif5", NULL, "sh-sci.11" },
109 { "scifa3", NULL, "sh-sci.12" },
110 { "scifa4", NULL, "sh-sci.13" },
111 { "scifa5", NULL, "sh-sci.14" },
112 { "du0", "du.0", "rcar-du-r8a7791" },
113 { "du1", "du.1", "rcar-du-r8a7791" },
114 { "lvds0", "lvds.0", "rcar-du-r8a7791" },
42 }; 115 };
43 struct clk *clk; 116 struct clk *clk;
44 unsigned int i; 117 unsigned int i;
45 118
46 for (i = 0; i < ARRAY_SIZE(scif_names); ++i) { 119 for (i = 0; i < ARRAY_SIZE(clk_names); ++i) {
47 clk = clk_get(NULL, scif_names[i]); 120 clk = clk_get(NULL, clk_names[i].clk);
48 if (clk) { 121 if (!IS_ERR(clk)) {
49 clk_register_clkdev(clk, NULL, "sh-sci.%u", i); 122 clk_register_clkdev(clk, clk_names[i].con_id,
123 clk_names[i].dev_id);
50 clk_put(clk); 124 clk_put(clk);
51 } 125 }
52 } 126 }
53 127
54 clk = clk_get(NULL, "cmt0");
55 if (clk) {
56 clk_register_clkdev(clk, NULL, "sh_cmt.0");
57 clk_put(clk);
58 }
59#else
60 r8a7791_clock_init();
61#endif
62 r8a7791_add_dt_devices(); 128 r8a7791_add_dt_devices();
63 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 129 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
130
131 koelsch_add_du_device();
64} 132}
65 133
66static const char * const koelsch_boards_compat_dt[] __initconst = { 134static const char * const koelsch_boards_compat_dt[] __initconst = {
diff --git a/arch/arm/mach-shmobile/board-koelsch.c b/arch/arm/mach-shmobile/board-koelsch.c
index de7cc64b1f37..5a034ff405d0 100644
--- a/arch/arm/mach-shmobile/board-koelsch.c
+++ b/arch/arm/mach-shmobile/board-koelsch.c
@@ -2,8 +2,9 @@
2 * Koelsch board support 2 * Koelsch board support
3 * 3 *
4 * Copyright (C) 2013 Renesas Electronics Corporation 4 * Copyright (C) 2013 Renesas Electronics Corporation
5 * Copyright (C) 2013 Renesas Solutions Corp. 5 * Copyright (C) 2013-2014 Renesas Solutions Corp.
6 * Copyright (C) 2013 Magnus Damm 6 * Copyright (C) 2013 Magnus Damm
7 * Copyright (C) 2014 Cogent Embedded, Inc.
7 * 8 *
8 * This program is free software; you can redistribute it and/or modify 9 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by 10 * it under the terms of the GNU General Public License as published by
@@ -23,14 +24,27 @@
23#include <linux/gpio.h> 24#include <linux/gpio.h>
24#include <linux/gpio_keys.h> 25#include <linux/gpio_keys.h>
25#include <linux/input.h> 26#include <linux/input.h>
27#include <linux/irq.h>
26#include <linux/kernel.h> 28#include <linux/kernel.h>
27#include <linux/leds.h> 29#include <linux/leds.h>
30#include <linux/mfd/tmio.h>
31#include <linux/mmc/host.h>
32#include <linux/mmc/sh_mobile_sdhi.h>
33#include <linux/mtd/mtd.h>
34#include <linux/mtd/partitions.h>
28#include <linux/phy.h> 35#include <linux/phy.h>
29#include <linux/pinctrl/machine.h> 36#include <linux/pinctrl/machine.h>
30#include <linux/platform_data/gpio-rcar.h> 37#include <linux/platform_data/gpio-rcar.h>
31#include <linux/platform_data/rcar-du.h> 38#include <linux/platform_data/rcar-du.h>
32#include <linux/platform_device.h> 39#include <linux/platform_device.h>
40#include <linux/regulator/driver.h>
41#include <linux/regulator/fixed.h>
42#include <linux/regulator/gpio-regulator.h>
43#include <linux/regulator/machine.h>
33#include <linux/sh_eth.h> 44#include <linux/sh_eth.h>
45#include <linux/spi/flash.h>
46#include <linux/spi/rspi.h>
47#include <linux/spi/spi.h>
34#include <mach/common.h> 48#include <mach/common.h>
35#include <mach/irqs.h> 49#include <mach/irqs.h>
36#include <mach/r8a7791.h> 50#include <mach/r8a7791.h>
@@ -92,6 +106,7 @@ static void __init koelsch_add_du_device(void)
92/* Ether */ 106/* Ether */
93static const struct sh_eth_plat_data ether_pdata __initconst = { 107static const struct sh_eth_plat_data ether_pdata __initconst = {
94 .phy = 0x1, 108 .phy = 0x1,
109 .phy_irq = irq_pin(0),
95 .edmac_endian = EDMAC_LITTLE_ENDIAN, 110 .edmac_endian = EDMAC_LITTLE_ENDIAN,
96 .phy_interface = PHY_INTERFACE_MODE_RMII, 111 .phy_interface = PHY_INTERFACE_MODE_RMII,
97 .ether_link_active_low = 1, 112 .ether_link_active_low = 1,
@@ -102,6 +117,17 @@ static const struct resource ether_resources[] __initconst = {
102 DEFINE_RES_IRQ(gic_spi(162)), 117 DEFINE_RES_IRQ(gic_spi(162)),
103}; 118};
104 119
120static const struct platform_device_info ether_info __initconst = {
121 .parent = &platform_bus,
122 .name = "r8a7791-ether",
123 .id = -1,
124 .res = ether_resources,
125 .num_res = ARRAY_SIZE(ether_resources),
126 .data = &ether_pdata,
127 .size_data = sizeof(ether_pdata),
128 .dma_mask = DMA_BIT_MASK(32),
129};
130
105/* LEDS */ 131/* LEDS */
106static struct gpio_led koelsch_leds[] = { 132static struct gpio_led koelsch_leds[] = {
107 { 133 {
@@ -148,6 +174,199 @@ static const struct gpio_keys_platform_data koelsch_keys_pdata __initconst = {
148 .nbuttons = ARRAY_SIZE(gpio_buttons), 174 .nbuttons = ARRAY_SIZE(gpio_buttons),
149}; 175};
150 176
177/* QSPI */
178static const struct resource qspi_resources[] __initconst = {
179 DEFINE_RES_MEM(0xe6b10000, 0x1000),
180 DEFINE_RES_IRQ_NAMED(gic_spi(184), "mux"),
181};
182
183static const struct rspi_plat_data qspi_pdata __initconst = {
184 .num_chipselect = 1,
185};
186
187/* SPI Flash memory (Spansion S25FL512SAGMFIG11 64 MiB) */
188static struct mtd_partition spi_flash_part[] = {
189 {
190 .name = "loader",
191 .offset = 0x00000000,
192 .size = 512 * 1024,
193 .mask_flags = MTD_WRITEABLE,
194 },
195 {
196 .name = "bootenv",
197 .offset = MTDPART_OFS_APPEND,
198 .size = 512 * 1024,
199 .mask_flags = MTD_WRITEABLE,
200 },
201 {
202 .name = "data",
203 .offset = MTDPART_OFS_APPEND,
204 .size = MTDPART_SIZ_FULL,
205 },
206};
207
208static const struct flash_platform_data spi_flash_data = {
209 .name = "m25p80",
210 .parts = spi_flash_part,
211 .nr_parts = ARRAY_SIZE(spi_flash_part),
212 .type = "s25fl512s",
213};
214
215static const struct spi_board_info spi_info[] __initconst = {
216 {
217 .modalias = "m25p80",
218 .platform_data = &spi_flash_data,
219 .mode = SPI_MODE_0,
220 .max_speed_hz = 30000000,
221 .bus_num = 0,
222 .chip_select = 0,
223 },
224};
225
226/* SATA0 */
227static const struct resource sata0_resources[] __initconst = {
228 DEFINE_RES_MEM(0xee300000, 0x2000),
229 DEFINE_RES_IRQ(gic_spi(105)),
230};
231
232static const struct platform_device_info sata0_info __initconst = {
233 .parent = &platform_bus,
234 .name = "sata-r8a7791",
235 .id = 0,
236 .res = sata0_resources,
237 .num_res = ARRAY_SIZE(sata0_resources),
238 .dma_mask = DMA_BIT_MASK(32),
239};
240
241/* I2C */
242static const struct resource i2c_resources[] __initconst = {
243 /* I2C0 */
244 DEFINE_RES_MEM(0xE6508000, 0x40),
245 DEFINE_RES_IRQ(gic_spi(287)),
246 /* I2C1 */
247 DEFINE_RES_MEM(0xE6518000, 0x40),
248 DEFINE_RES_IRQ(gic_spi(288)),
249 /* I2C2 */
250 DEFINE_RES_MEM(0xE6530000, 0x40),
251 DEFINE_RES_IRQ(gic_spi(286)),
252 /* I2C3 */
253 DEFINE_RES_MEM(0xE6540000, 0x40),
254 DEFINE_RES_IRQ(gic_spi(290)),
255 /* I2C4 */
256 DEFINE_RES_MEM(0xE6520000, 0x40),
257 DEFINE_RES_IRQ(gic_spi(19)),
258 /* I2C5 */
259 DEFINE_RES_MEM(0xE6528000, 0x40),
260 DEFINE_RES_IRQ(gic_spi(20)),
261};
262
263static void __init koelsch_add_i2c(unsigned idx)
264{
265 unsigned res_idx = idx * 2;
266
267 BUG_ON(res_idx >= ARRAY_SIZE(i2c_resources));
268
269 platform_device_register_simple("i2c-rcar_gen2", idx,
270 i2c_resources + res_idx, 2);
271}
272
273#define SDHI_REGULATOR(idx, vdd_pin, vccq_pin) \
274static struct regulator_consumer_supply vcc_sdhi##idx##_consumer = \
275 REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi." #idx); \
276 \
277static struct regulator_init_data vcc_sdhi##idx##_init_data = { \
278 .constraints = { \
279 .valid_ops_mask = REGULATOR_CHANGE_STATUS, \
280 }, \
281 .consumer_supplies = &vcc_sdhi##idx##_consumer, \
282 .num_consumer_supplies = 1, \
283}; \
284 \
285static const struct fixed_voltage_config vcc_sdhi##idx##_info __initconst = {\
286 .supply_name = "SDHI" #idx "Vcc", \
287 .microvolts = 3300000, \
288 .gpio = vdd_pin, \
289 .enable_high = 1, \
290 .init_data = &vcc_sdhi##idx##_init_data, \
291}; \
292 \
293static struct regulator_consumer_supply vccq_sdhi##idx##_consumer = \
294 REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi." #idx); \
295 \
296static struct regulator_init_data vccq_sdhi##idx##_init_data = { \
297 .constraints = { \
298 .input_uV = 3300000, \
299 .min_uV = 1800000, \
300 .max_uV = 3300000, \
301 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | \
302 REGULATOR_CHANGE_STATUS, \
303 }, \
304 .consumer_supplies = &vccq_sdhi##idx##_consumer, \
305 .num_consumer_supplies = 1, \
306}; \
307 \
308static struct gpio vccq_sdhi##idx##_gpio = \
309 { vccq_pin, GPIOF_OUT_INIT_HIGH, "vccq-sdhi" #idx }; \
310 \
311static struct gpio_regulator_state vccq_sdhi##idx##_states[] = { \
312 { .value = 1800000, .gpios = 0 }, \
313 { .value = 3300000, .gpios = 1 }, \
314}; \
315 \
316static const struct gpio_regulator_config vccq_sdhi##idx##_info __initconst = {\
317 .supply_name = "vqmmc", \
318 .gpios = &vccq_sdhi##idx##_gpio, \
319 .nr_gpios = 1, \
320 .states = vccq_sdhi##idx##_states, \
321 .nr_states = ARRAY_SIZE(vccq_sdhi##idx##_states), \
322 .type = REGULATOR_VOLTAGE, \
323 .init_data = &vccq_sdhi##idx##_init_data, \
324};
325
326SDHI_REGULATOR(0, RCAR_GP_PIN(7, 17), RCAR_GP_PIN(2, 12));
327SDHI_REGULATOR(1, RCAR_GP_PIN(7, 18), RCAR_GP_PIN(2, 13));
328SDHI_REGULATOR(2, RCAR_GP_PIN(7, 19), RCAR_GP_PIN(2, 26));
329
330/* SDHI0 */
331static struct sh_mobile_sdhi_info sdhi0_info __initdata = {
332 .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
333 MMC_CAP_POWER_OFF_CARD,
334 .tmio_caps2 = MMC_CAP2_NO_MULTI_READ,
335 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT,
336};
337
338static struct resource sdhi0_resources[] __initdata = {
339 DEFINE_RES_MEM(0xee100000, 0x200),
340 DEFINE_RES_IRQ(gic_spi(165)),
341};
342
343/* SDHI1 */
344static struct sh_mobile_sdhi_info sdhi1_info __initdata = {
345 .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
346 MMC_CAP_POWER_OFF_CARD,
347 .tmio_caps2 = MMC_CAP2_NO_MULTI_READ,
348 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT,
349};
350
351static struct resource sdhi1_resources[] __initdata = {
352 DEFINE_RES_MEM(0xee140000, 0x100),
353 DEFINE_RES_IRQ(gic_spi(167)),
354};
355
356/* SDHI2 */
357static struct sh_mobile_sdhi_info sdhi2_info __initdata = {
358 .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
359 MMC_CAP_POWER_OFF_CARD,
360 .tmio_caps2 = MMC_CAP2_NO_MULTI_READ,
361 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT |
362 TMIO_MMC_WRPROTECT_DISABLE,
363};
364
365static struct resource sdhi2_resources[] __initdata = {
366 DEFINE_RES_MEM(0xee160000, 0x100),
367 DEFINE_RES_IRQ(gic_spi(168)),
368};
369
151static const struct pinctrl_map koelsch_pinctrl_map[] = { 370static const struct pinctrl_map koelsch_pinctrl_map[] = {
152 /* DU */ 371 /* DU */
153 PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7791", "pfc-r8a7791", 372 PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7791", "pfc-r8a7791",
@@ -165,12 +384,51 @@ static const struct pinctrl_map koelsch_pinctrl_map[] = {
165 "eth_rmii", "eth"), 384 "eth_rmii", "eth"),
166 PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-ether", "pfc-r8a7791", 385 PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-ether", "pfc-r8a7791",
167 "intc_irq0", "intc"), 386 "intc_irq0", "intc"),
387 /* QSPI */
388 PIN_MAP_MUX_GROUP_DEFAULT("qspi.0", "pfc-r8a7791",
389 "qspi_ctrl", "qspi"),
390 PIN_MAP_MUX_GROUP_DEFAULT("qspi.0", "pfc-r8a7791",
391 "qspi_data4", "qspi"),
168 /* SCIF0 (CN19: DEBUG SERIAL0) */ 392 /* SCIF0 (CN19: DEBUG SERIAL0) */
169 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7791", 393 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7791",
170 "scif0_data_d", "scif0"), 394 "scif0_data_d", "scif0"),
171 /* SCIF1 (CN20: DEBUG SERIAL1) */ 395 /* SCIF1 (CN20: DEBUG SERIAL1) */
172 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7791", 396 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7791",
173 "scif1_data_d", "scif1"), 397 "scif1_data_d", "scif1"),
398 /* I2C1 */
399 PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.1", "pfc-r8a7791",
400 "i2c1_e", "i2c1"),
401 /* I2C2 */
402 PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.2", "pfc-r8a7791",
403 "i2c2", "i2c2"),
404 /* I2C4 */
405 PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.4", "pfc-r8a7791",
406 "i2c4_c", "i2c4"),
407 /* SDHI0 */
408 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791",
409 "sdhi0_data4", "sdhi0"),
410 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791",
411 "sdhi0_ctrl", "sdhi0"),
412 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791",
413 "sdhi0_cd", "sdhi0"),
414 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791",
415 "sdhi0_wp", "sdhi0"),
416 /* SDHI2 */
417 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791",
418 "sdhi1_data4", "sdhi1"),
419 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791",
420 "sdhi1_ctrl", "sdhi1"),
421 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791",
422 "sdhi1_cd", "sdhi1"),
423 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791",
424 "sdhi1_wp", "sdhi1"),
425 /* SDHI2 */
426 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7791",
427 "sdhi2_data4", "sdhi2"),
428 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7791",
429 "sdhi2_ctrl", "sdhi2"),
430 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7791",
431 "sdhi2_cd", "sdhi2"),
174}; 432};
175 433
176static void __init koelsch_add_standard_devices(void) 434static void __init koelsch_add_standard_devices(void)
@@ -180,18 +438,53 @@ static void __init koelsch_add_standard_devices(void)
180 ARRAY_SIZE(koelsch_pinctrl_map)); 438 ARRAY_SIZE(koelsch_pinctrl_map));
181 r8a7791_pinmux_init(); 439 r8a7791_pinmux_init();
182 r8a7791_add_standard_devices(); 440 r8a7791_add_standard_devices();
183 platform_device_register_resndata(&platform_bus, "r8a7791-ether", -1, 441 platform_device_register_full(&ether_info);
184 ether_resources,
185 ARRAY_SIZE(ether_resources),
186 &ether_pdata, sizeof(ether_pdata));
187 platform_device_register_data(&platform_bus, "leds-gpio", -1, 442 platform_device_register_data(&platform_bus, "leds-gpio", -1,
188 &koelsch_leds_pdata, 443 &koelsch_leds_pdata,
189 sizeof(koelsch_leds_pdata)); 444 sizeof(koelsch_leds_pdata));
190 platform_device_register_data(&platform_bus, "gpio-keys", -1, 445 platform_device_register_data(&platform_bus, "gpio-keys", -1,
191 &koelsch_keys_pdata, 446 &koelsch_keys_pdata,
192 sizeof(koelsch_keys_pdata)); 447 sizeof(koelsch_keys_pdata));
448 platform_device_register_resndata(&platform_bus, "qspi", 0,
449 qspi_resources,
450 ARRAY_SIZE(qspi_resources),
451 &qspi_pdata, sizeof(qspi_pdata));
452 spi_register_board_info(spi_info, ARRAY_SIZE(spi_info));
193 453
194 koelsch_add_du_device(); 454 koelsch_add_du_device();
455
456 platform_device_register_full(&sata0_info);
457
458 koelsch_add_i2c(1);
459 koelsch_add_i2c(2);
460 koelsch_add_i2c(4);
461 koelsch_add_i2c(5);
462
463 platform_device_register_data(&platform_bus, "reg-fixed-voltage", 0,
464 &vcc_sdhi0_info, sizeof(struct fixed_voltage_config));
465 platform_device_register_data(&platform_bus, "reg-fixed-voltage", 1,
466 &vcc_sdhi1_info, sizeof(struct fixed_voltage_config));
467 platform_device_register_data(&platform_bus, "reg-fixed-voltage", 2,
468 &vcc_sdhi2_info, sizeof(struct fixed_voltage_config));
469 platform_device_register_data(&platform_bus, "gpio-regulator", 0,
470 &vccq_sdhi0_info, sizeof(struct gpio_regulator_config));
471 platform_device_register_data(&platform_bus, "gpio-regulator", 1,
472 &vccq_sdhi1_info, sizeof(struct gpio_regulator_config));
473 platform_device_register_data(&platform_bus, "gpio-regulator", 2,
474 &vccq_sdhi2_info, sizeof(struct gpio_regulator_config));
475
476 platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 0,
477 sdhi0_resources, ARRAY_SIZE(sdhi0_resources),
478 &sdhi0_info, sizeof(struct sh_mobile_sdhi_info));
479
480 platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 1,
481 sdhi1_resources, ARRAY_SIZE(sdhi1_resources),
482 &sdhi1_info, sizeof(struct sh_mobile_sdhi_info));
483
484 platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 2,
485 sdhi2_resources, ARRAY_SIZE(sdhi2_resources),
486 &sdhi2_info, sizeof(struct sh_mobile_sdhi_info));
487
195} 488}
196 489
197/* 490/*
@@ -215,6 +508,8 @@ static void __init koelsch_init(void)
215{ 508{
216 koelsch_add_standard_devices(); 509 koelsch_add_standard_devices();
217 510
511 irq_set_irq_type(irq_pin(0), IRQ_TYPE_LEVEL_LOW);
512
218 if (IS_ENABLED(CONFIG_PHYLIB)) 513 if (IS_ENABLED(CONFIG_PHYLIB))
219 phy_register_fixup_for_id("r8a7791-ether-ff:01", 514 phy_register_fixup_for_id("r8a7791-ether-ff:01",
220 koelsch_ksz8041_fixup); 515 koelsch_ksz8041_fixup);
diff --git a/arch/arm/mach-shmobile/board-kzm9d-reference.c b/arch/arm/mach-shmobile/board-kzm9d-reference.c
deleted file mode 100644
index 054d8d5c8fc1..000000000000
--- a/arch/arm/mach-shmobile/board-kzm9d-reference.c
+++ /dev/null
@@ -1,48 +0,0 @@
1/*
2 * kzm9d board support - Reference DT implementation
3 *
4 * Copyright (C) 2013 Renesas Solutions Corp.
5 * Copyright (C) 2013 Magnus Damm
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#include <linux/init.h>
22#include <linux/of_platform.h>
23#include <mach/emev2.h>
24#include <mach/common.h>
25#include <asm/mach/arch.h>
26
27static void __init kzm9d_add_standard_devices(void)
28{
29 if (!IS_ENABLED(CONFIG_COMMON_CLK))
30 emev2_clock_init();
31
32 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
33}
34
35static const char *kzm9d_boards_compat_dt[] __initdata = {
36 "renesas,kzm9d",
37 "renesas,kzm9d-reference",
38 NULL,
39};
40
41DT_MACHINE_START(KZM9D_DT, "kzm9d")
42 .smp = smp_ops(emev2_smp_ops),
43 .map_io = emev2_map_io,
44 .init_early = emev2_init_delay,
45 .init_machine = kzm9d_add_standard_devices,
46 .init_late = shmobile_init_late,
47 .dt_compat = kzm9d_boards_compat_dt,
48MACHINE_END
diff --git a/arch/arm/mach-shmobile/board-lager-reference.c b/arch/arm/mach-shmobile/board-lager-reference.c
index a6e271d92af0..440aac36d693 100644
--- a/arch/arm/mach-shmobile/board-lager-reference.c
+++ b/arch/arm/mach-shmobile/board-lager-reference.c
@@ -20,47 +20,116 @@
20 20
21#include <linux/clk.h> 21#include <linux/clk.h>
22#include <linux/clkdev.h> 22#include <linux/clkdev.h>
23#include <linux/dma-mapping.h>
23#include <linux/init.h> 24#include <linux/init.h>
24#include <linux/of_platform.h> 25#include <linux/of_platform.h>
26#include <linux/platform_data/rcar-du.h>
25#include <mach/common.h> 27#include <mach/common.h>
28#include <mach/irqs.h>
26#include <mach/rcar-gen2.h> 29#include <mach/rcar-gen2.h>
27#include <mach/r8a7790.h> 30#include <mach/r8a7790.h>
28#include <asm/mach/arch.h> 31#include <asm/mach/arch.h>
29 32
33/* DU */
34static struct rcar_du_encoder_data lager_du_encoders[] = {
35 {
36 .type = RCAR_DU_ENCODER_VGA,
37 .output = RCAR_DU_OUTPUT_DPAD0,
38 }, {
39 .type = RCAR_DU_ENCODER_NONE,
40 .output = RCAR_DU_OUTPUT_LVDS1,
41 .connector.lvds.panel = {
42 .width_mm = 210,
43 .height_mm = 158,
44 .mode = {
45 .clock = 65000,
46 .hdisplay = 1024,
47 .hsync_start = 1048,
48 .hsync_end = 1184,
49 .htotal = 1344,
50 .vdisplay = 768,
51 .vsync_start = 771,
52 .vsync_end = 777,
53 .vtotal = 806,
54 .flags = 0,
55 },
56 },
57 },
58};
59
60static struct rcar_du_platform_data lager_du_pdata = {
61 .encoders = lager_du_encoders,
62 .num_encoders = ARRAY_SIZE(lager_du_encoders),
63};
64
65static const struct resource du_resources[] __initconst = {
66 DEFINE_RES_MEM(0xfeb00000, 0x70000),
67 DEFINE_RES_MEM_NAMED(0xfeb90000, 0x1c, "lvds.0"),
68 DEFINE_RES_MEM_NAMED(0xfeb94000, 0x1c, "lvds.1"),
69 DEFINE_RES_IRQ(gic_spi(256)),
70 DEFINE_RES_IRQ(gic_spi(268)),
71 DEFINE_RES_IRQ(gic_spi(269)),
72};
73
74static void __init lager_add_du_device(void)
75{
76 struct platform_device_info info = {
77 .name = "rcar-du-r8a7790",
78 .id = -1,
79 .res = du_resources,
80 .num_res = ARRAY_SIZE(du_resources),
81 .data = &lager_du_pdata,
82 .size_data = sizeof(lager_du_pdata),
83 .dma_mask = DMA_BIT_MASK(32),
84 };
85
86 platform_device_register_full(&info);
87}
88
30static void __init lager_add_standard_devices(void) 89static void __init lager_add_standard_devices(void)
31{ 90{
32#ifdef CONFIG_COMMON_CLK
33 /* 91 /*
34 * This is a really crude hack to provide clkdev support to the SCIF 92 * This is a really crude hack to provide clkdev support to platform
35 * and CMT devices until they get moved to DT. 93 * devices until they get moved to DT.
36 */ 94 */
37 static const char * const scif_names[] = { 95 static const struct clk_name {
38 "scifa0", "scifa1", "scifb0", "scifb1", 96 const char *clk;
39 "scifb2", "scifa2", "scif0", "scif1", 97 const char *con_id;
40 "hscif0", "hscif1", 98 const char *dev_id;
99 } clk_names[] = {
100 { "cmt0", NULL, "sh_cmt.0" },
101 { "scifa0", NULL, "sh-sci.0" },
102 { "scifa1", NULL, "sh-sci.1" },
103 { "scifb0", NULL, "sh-sci.2" },
104 { "scifb1", NULL, "sh-sci.3" },
105 { "scifb2", NULL, "sh-sci.4" },
106 { "scifa2", NULL, "sh-sci.5" },
107 { "scif0", NULL, "sh-sci.6" },
108 { "scif1", NULL, "sh-sci.7" },
109 { "hscif0", NULL, "sh-sci.8" },
110 { "hscif1", NULL, "sh-sci.9" },
111 { "du0", "du.0", "rcar-du-r8a7790" },
112 { "du1", "du.1", "rcar-du-r8a7790" },
113 { "du2", "du.2", "rcar-du-r8a7790" },
114 { "lvds0", "lvds.0", "rcar-du-r8a7790" },
115 { "lvds1", "lvds.1", "rcar-du-r8a7790" },
41 }; 116 };
42 struct clk *clk; 117 struct clk *clk;
43 unsigned int i; 118 unsigned int i;
44 119
45 for (i = 0; i < ARRAY_SIZE(scif_names); ++i) { 120 for (i = 0; i < ARRAY_SIZE(clk_names); ++i) {
46 clk = clk_get(NULL, scif_names[i]); 121 clk = clk_get(NULL, clk_names[i].clk);
47 if (clk) { 122 if (!IS_ERR(clk)) {
48 clk_register_clkdev(clk, NULL, "sh-sci.%u", i); 123 clk_register_clkdev(clk, clk_names[i].con_id,
124 clk_names[i].dev_id);
49 clk_put(clk); 125 clk_put(clk);
50 } 126 }
51 } 127 }
52 128
53 clk = clk_get(NULL, "cmt0");
54 if (clk) {
55 clk_register_clkdev(clk, NULL, "sh_cmt.0");
56 clk_put(clk);
57 }
58#else
59 r8a7790_clock_init();
60#endif
61
62 r8a7790_add_dt_devices(); 129 r8a7790_add_dt_devices();
63 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 130 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
131
132 lager_add_du_device();
64} 133}
65 134
66static const char *lager_boards_compat_dt[] __initdata = { 135static const char *lager_boards_compat_dt[] __initdata = {
diff --git a/arch/arm/mach-shmobile/board-lager.c b/arch/arm/mach-shmobile/board-lager.c
index f20c10a18543..f0104bfe544e 100644
--- a/arch/arm/mach-shmobile/board-lager.c
+++ b/arch/arm/mach-shmobile/board-lager.c
@@ -1,8 +1,9 @@
1/* 1/*
2 * Lager board support 2 * Lager board support
3 * 3 *
4 * Copyright (C) 2013 Renesas Solutions Corp. 4 * Copyright (C) 2013-2014 Renesas Solutions Corp.
5 * Copyright (C) 2013 Magnus Damm 5 * Copyright (C) 2013 Magnus Damm
6 * Copyright (C) 2014 Cogent Embedded, Inc.
6 * 7 *
7 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
@@ -20,15 +21,21 @@
20 21
21#include <linux/gpio.h> 22#include <linux/gpio.h>
22#include <linux/gpio_keys.h> 23#include <linux/gpio_keys.h>
24#include <linux/i2c.h>
23#include <linux/input.h> 25#include <linux/input.h>
24#include <linux/interrupt.h> 26#include <linux/interrupt.h>
27#include <linux/irq.h>
25#include <linux/kernel.h> 28#include <linux/kernel.h>
26#include <linux/leds.h> 29#include <linux/leds.h>
30#include <linux/mfd/tmio.h>
27#include <linux/mmc/host.h> 31#include <linux/mmc/host.h>
28#include <linux/mmc/sh_mmcif.h> 32#include <linux/mmc/sh_mmcif.h>
33#include <linux/mmc/sh_mobile_sdhi.h>
29#include <linux/pinctrl/machine.h> 34#include <linux/pinctrl/machine.h>
35#include <linux/platform_data/camera-rcar.h>
30#include <linux/platform_data/gpio-rcar.h> 36#include <linux/platform_data/gpio-rcar.h>
31#include <linux/platform_data/rcar-du.h> 37#include <linux/platform_data/rcar-du.h>
38#include <linux/platform_data/usb-rcar-gen2-phy.h>
32#include <linux/platform_device.h> 39#include <linux/platform_device.h>
33#include <linux/phy.h> 40#include <linux/phy.h>
34#include <linux/regulator/driver.h> 41#include <linux/regulator/driver.h>
@@ -36,9 +43,12 @@
36#include <linux/regulator/gpio-regulator.h> 43#include <linux/regulator/gpio-regulator.h>
37#include <linux/regulator/machine.h> 44#include <linux/regulator/machine.h>
38#include <linux/sh_eth.h> 45#include <linux/sh_eth.h>
46#include <linux/usb/phy.h>
47#include <linux/usb/renesas_usbhs.h>
39#include <mach/common.h> 48#include <mach/common.h>
40#include <mach/irqs.h> 49#include <mach/irqs.h>
41#include <mach/r8a7790.h> 50#include <mach/r8a7790.h>
51#include <media/soc_camera.h>
42#include <asm/mach-types.h> 52#include <asm/mach-types.h>
43#include <asm/mach/arch.h> 53#include <asm/mach/arch.h>
44#include <linux/mtd/partitions.h> 54#include <linux/mtd/partitions.h>
@@ -46,6 +56,33 @@
46#include <linux/spi/flash.h> 56#include <linux/spi/flash.h>
47#include <linux/spi/rspi.h> 57#include <linux/spi/rspi.h>
48#include <linux/spi/spi.h> 58#include <linux/spi/spi.h>
59#include <sound/rcar_snd.h>
60#include <sound/simple_card.h>
61
62/*
63 * SSI-AK4643
64 *
65 * SW1: 1: AK4643
66 * 2: CN22
67 * 3: ADV7511
68 *
69 * this command is required when playback.
70 *
71 * # amixer set "LINEOUT Mixer DACL" on
72 */
73
74/*
75 * SDHI0 (CN8)
76 *
77 * JP3: pin1
78 * SW20: pin1
79
80 * GP5_24: 1: VDD 3.3V (defult)
81 * 0: VDD 0.0V
82 * GP5_29: 1: VccQ 3.3V (defult)
83 * 0: VccQ 1.8V
84 *
85 */
49 86
50/* DU */ 87/* DU */
51static struct rcar_du_encoder_data lager_du_encoders[] = { 88static struct rcar_du_encoder_data lager_du_encoders[] = {
@@ -228,6 +265,7 @@ static const struct resource mmcif1_resources[] __initconst = {
228/* Ether */ 265/* Ether */
229static const struct sh_eth_plat_data ether_pdata __initconst = { 266static const struct sh_eth_plat_data ether_pdata __initconst = {
230 .phy = 0x1, 267 .phy = 0x1,
268 .phy_irq = irq_pin(0),
231 .edmac_endian = EDMAC_LITTLE_ENDIAN, 269 .edmac_endian = EDMAC_LITTLE_ENDIAN,
232 .phy_interface = PHY_INTERFACE_MODE_RMII, 270 .phy_interface = PHY_INTERFACE_MODE_RMII,
233 .ether_link_active_low = 1, 271 .ether_link_active_low = 1,
@@ -238,6 +276,17 @@ static const struct resource ether_resources[] __initconst = {
238 DEFINE_RES_IRQ(gic_spi(162)), 276 DEFINE_RES_IRQ(gic_spi(162)),
239}; 277};
240 278
279static const struct platform_device_info ether_info __initconst = {
280 .parent = &platform_bus,
281 .name = "r8a7790-ether",
282 .id = -1,
283 .res = ether_resources,
284 .num_res = ARRAY_SIZE(ether_resources),
285 .data = &ether_pdata,
286 .size_data = sizeof(ether_pdata),
287 .dma_mask = DMA_BIT_MASK(32),
288};
289
241/* SPI Flash memory (Spansion S25FL512SAGMFIG11 64Mb) */ 290/* SPI Flash memory (Spansion S25FL512SAGMFIG11 64Mb) */
242static struct mtd_partition spi_flash_part[] = { 291static struct mtd_partition spi_flash_part[] = {
243 /* Reserved for user loader program, read-only */ 292 /* Reserved for user loader program, read-only */
@@ -263,7 +312,7 @@ static struct mtd_partition spi_flash_part[] = {
263 }, 312 },
264}; 313};
265 314
266static struct flash_platform_data spi_flash_data = { 315static const struct flash_platform_data spi_flash_data = {
267 .name = "m25p80", 316 .name = "m25p80",
268 .parts = spi_flash_part, 317 .parts = spi_flash_part,
269 .nr_parts = ARRAY_SIZE(spi_flash_part), 318 .nr_parts = ARRAY_SIZE(spi_flash_part),
@@ -288,9 +337,361 @@ static const struct spi_board_info spi_info[] __initconst = {
288/* QSPI resource */ 337/* QSPI resource */
289static const struct resource qspi_resources[] __initconst = { 338static const struct resource qspi_resources[] __initconst = {
290 DEFINE_RES_MEM(0xe6b10000, 0x1000), 339 DEFINE_RES_MEM(0xe6b10000, 0x1000),
291 DEFINE_RES_IRQ(gic_spi(184)), 340 DEFINE_RES_IRQ_NAMED(gic_spi(184), "mux"),
341};
342
343/* VIN */
344static const struct resource vin_resources[] __initconst = {
345 /* VIN0 */
346 DEFINE_RES_MEM(0xe6ef0000, 0x1000),
347 DEFINE_RES_IRQ(gic_spi(188)),
348 /* VIN1 */
349 DEFINE_RES_MEM(0xe6ef1000, 0x1000),
350 DEFINE_RES_IRQ(gic_spi(189)),
351};
352
353static void __init lager_add_vin_device(unsigned idx,
354 struct rcar_vin_platform_data *pdata)
355{
356 struct platform_device_info vin_info = {
357 .parent = &platform_bus,
358 .name = "r8a7790-vin",
359 .id = idx,
360 .res = &vin_resources[idx * 2],
361 .num_res = 2,
362 .dma_mask = DMA_BIT_MASK(32),
363 .data = pdata,
364 .size_data = sizeof(*pdata),
365 };
366
367 BUG_ON(idx > 1);
368
369 platform_device_register_full(&vin_info);
370}
371
372#define LAGER_CAMERA(idx, name, addr, pdata, flag) \
373static struct i2c_board_info i2c_cam##idx##_device = { \
374 I2C_BOARD_INFO(name, addr), \
375}; \
376 \
377static struct rcar_vin_platform_data vin##idx##_pdata = { \
378 .flags = flag, \
379}; \
380 \
381static struct soc_camera_link cam##idx##_link = { \
382 .bus_id = idx, \
383 .board_info = &i2c_cam##idx##_device, \
384 .i2c_adapter_id = 2, \
385 .module_name = name, \
386 .priv = pdata, \
387}
388
389/* Camera 0 is not currently supported due to adv7612 support missing */
390LAGER_CAMERA(1, "adv7180", 0x20, NULL, RCAR_VIN_BT656);
391
392static void __init lager_add_camera1_device(void)
393{
394 platform_device_register_data(&platform_bus, "soc-camera-pdrv", 1,
395 &cam1_link, sizeof(cam1_link));
396 lager_add_vin_device(1, &vin1_pdata);
397}
398
399/* SATA1 */
400static const struct resource sata1_resources[] __initconst = {
401 DEFINE_RES_MEM(0xee500000, 0x2000),
402 DEFINE_RES_IRQ(gic_spi(106)),
403};
404
405static const struct platform_device_info sata1_info __initconst = {
406 .parent = &platform_bus,
407 .name = "sata-r8a7790",
408 .id = 1,
409 .res = sata1_resources,
410 .num_res = ARRAY_SIZE(sata1_resources),
411 .dma_mask = DMA_BIT_MASK(32),
412};
413
414/* USBHS */
415static const struct resource usbhs_resources[] __initconst = {
416 DEFINE_RES_MEM(0xe6590000, 0x100),
417 DEFINE_RES_IRQ(gic_spi(107)),
418};
419
420struct usbhs_private {
421 struct renesas_usbhs_platform_info info;
422 struct usb_phy *phy;
423};
424
425#define usbhs_get_priv(pdev) \
426 container_of(renesas_usbhs_get_info(pdev), struct usbhs_private, info)
427
428static int usbhs_power_ctrl(struct platform_device *pdev,
429 void __iomem *base, int enable)
430{
431 struct usbhs_private *priv = usbhs_get_priv(pdev);
432
433 if (!priv->phy)
434 return -ENODEV;
435
436 if (enable) {
437 int retval = usb_phy_init(priv->phy);
438
439 if (!retval)
440 retval = usb_phy_set_suspend(priv->phy, 0);
441 return retval;
442 }
443
444 usb_phy_set_suspend(priv->phy, 1);
445 usb_phy_shutdown(priv->phy);
446 return 0;
447}
448
449static int usbhs_hardware_init(struct platform_device *pdev)
450{
451 struct usbhs_private *priv = usbhs_get_priv(pdev);
452 struct usb_phy *phy;
453 int ret;
454
455 /* USB0 Function - use PWEN as GPIO input to detect DIP Switch SW5
456 * setting to avoid VBUS short circuit due to wrong cable.
457 * PWEN should be pulled up high if USB Function is selected by SW5
458 */
459 gpio_request_one(RCAR_GP_PIN(5, 18), GPIOF_IN, NULL); /* USB0_PWEN */
460 if (!gpio_get_value(RCAR_GP_PIN(5, 18))) {
461 pr_warn("Error: USB Function not selected - check SW5 + SW6\n");
462 ret = -ENOTSUPP;
463 goto error;
464 }
465
466 phy = usb_get_phy_dev(&pdev->dev, 0);
467 if (IS_ERR(phy)) {
468 ret = PTR_ERR(phy);
469 goto error;
470 }
471
472 priv->phy = phy;
473 return 0;
474 error:
475 gpio_free(RCAR_GP_PIN(5, 18));
476 return ret;
477}
478
479static int usbhs_hardware_exit(struct platform_device *pdev)
480{
481 struct usbhs_private *priv = usbhs_get_priv(pdev);
482
483 if (!priv->phy)
484 return 0;
485
486 usb_put_phy(priv->phy);
487 priv->phy = NULL;
488
489 gpio_free(RCAR_GP_PIN(5, 18));
490 return 0;
491}
492
493static int usbhs_get_id(struct platform_device *pdev)
494{
495 return USBHS_GADGET;
496}
497
498static u32 lager_usbhs_pipe_type[] = {
499 USB_ENDPOINT_XFER_CONTROL,
500 USB_ENDPOINT_XFER_ISOC,
501 USB_ENDPOINT_XFER_ISOC,
502 USB_ENDPOINT_XFER_BULK,
503 USB_ENDPOINT_XFER_BULK,
504 USB_ENDPOINT_XFER_BULK,
505 USB_ENDPOINT_XFER_INT,
506 USB_ENDPOINT_XFER_INT,
507 USB_ENDPOINT_XFER_INT,
508 USB_ENDPOINT_XFER_BULK,
509 USB_ENDPOINT_XFER_BULK,
510 USB_ENDPOINT_XFER_BULK,
511 USB_ENDPOINT_XFER_BULK,
512 USB_ENDPOINT_XFER_BULK,
513 USB_ENDPOINT_XFER_BULK,
514 USB_ENDPOINT_XFER_BULK,
292}; 515};
293 516
517static struct usbhs_private usbhs_priv __initdata = {
518 .info = {
519 .platform_callback = {
520 .power_ctrl = usbhs_power_ctrl,
521 .hardware_init = usbhs_hardware_init,
522 .hardware_exit = usbhs_hardware_exit,
523 .get_id = usbhs_get_id,
524 },
525 .driver_param = {
526 .buswait_bwait = 4,
527 .pipe_type = lager_usbhs_pipe_type,
528 .pipe_size = ARRAY_SIZE(lager_usbhs_pipe_type),
529 },
530 }
531};
532
533static void __init lager_register_usbhs(void)
534{
535 usb_bind_phy("renesas_usbhs", 0, "usb_phy_rcar_gen2");
536 platform_device_register_resndata(&platform_bus,
537 "renesas_usbhs", -1,
538 usbhs_resources,
539 ARRAY_SIZE(usbhs_resources),
540 &usbhs_priv.info,
541 sizeof(usbhs_priv.info));
542}
543
544/* USBHS PHY */
545static const struct rcar_gen2_phy_platform_data usbhs_phy_pdata __initconst = {
546 .chan0_pci = 0, /* Channel 0 is USBHS */
547 .chan2_pci = 1, /* Channel 2 is PCI USB */
548};
549
550static const struct resource usbhs_phy_resources[] __initconst = {
551 DEFINE_RES_MEM(0xe6590100, 0x100),
552};
553
554/* I2C */
555static struct i2c_board_info i2c2_devices[] = {
556 {
557 I2C_BOARD_INFO("ak4643", 0x12),
558 }
559};
560
561/* Sound */
562static struct resource rsnd_resources[] __initdata = {
563 [RSND_GEN2_SCU] = DEFINE_RES_MEM(0xec500000, 0x1000),
564 [RSND_GEN2_ADG] = DEFINE_RES_MEM(0xec5a0000, 0x100),
565 [RSND_GEN2_SSIU] = DEFINE_RES_MEM(0xec540000, 0x1000),
566 [RSND_GEN2_SSI] = DEFINE_RES_MEM(0xec541000, 0x1280),
567};
568
569static struct rsnd_ssi_platform_info rsnd_ssi[] = {
570 RSND_SSI_SET(0, 0, gic_spi(370), RSND_SSI_PLAY),
571 RSND_SSI_SET(0, 0, gic_spi(371), RSND_SSI_CLK_PIN_SHARE),
572};
573
574static struct rsnd_scu_platform_info rsnd_scu[2] = {
575 /* no member at this point */
576};
577
578static struct rcar_snd_info rsnd_info = {
579 .flags = RSND_GEN2,
580 .ssi_info = rsnd_ssi,
581 .ssi_info_nr = ARRAY_SIZE(rsnd_ssi),
582 .scu_info = rsnd_scu,
583 .scu_info_nr = ARRAY_SIZE(rsnd_scu),
584};
585
586static struct asoc_simple_card_info rsnd_card_info = {
587 .name = "AK4643",
588 .card = "SSI01-AK4643",
589 .codec = "ak4642-codec.2-0012",
590 .platform = "rcar_sound",
591 .daifmt = SND_SOC_DAIFMT_LEFT_J,
592 .cpu_dai = {
593 .name = "rcar_sound",
594 .fmt = SND_SOC_DAIFMT_CBS_CFS,
595 },
596 .codec_dai = {
597 .name = "ak4642-hifi",
598 .fmt = SND_SOC_DAIFMT_CBM_CFM,
599 .sysclk = 11289600,
600 },
601};
602
603static void __init lager_add_rsnd_device(void)
604{
605 struct platform_device_info cardinfo = {
606 .parent = &platform_bus,
607 .name = "asoc-simple-card",
608 .id = -1,
609 .data = &rsnd_card_info,
610 .size_data = sizeof(struct asoc_simple_card_info),
611 .dma_mask = DMA_BIT_MASK(32),
612 };
613
614 i2c_register_board_info(2, i2c2_devices,
615 ARRAY_SIZE(i2c2_devices));
616
617 platform_device_register_resndata(
618 &platform_bus, "rcar_sound", -1,
619 rsnd_resources, ARRAY_SIZE(rsnd_resources),
620 &rsnd_info, sizeof(rsnd_info));
621
622 platform_device_register_full(&cardinfo);
623}
624
625/* SDHI0 */
626static struct sh_mobile_sdhi_info sdhi0_info __initdata = {
627 .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
628 MMC_CAP_POWER_OFF_CARD,
629 .tmio_caps2 = MMC_CAP2_NO_MULTI_READ,
630 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT |
631 TMIO_MMC_WRPROTECT_DISABLE,
632};
633
634static struct resource sdhi0_resources[] __initdata = {
635 DEFINE_RES_MEM(0xee100000, 0x200),
636 DEFINE_RES_IRQ(gic_spi(165)),
637};
638
639/* SDHI2 */
640static struct sh_mobile_sdhi_info sdhi2_info __initdata = {
641 .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ |
642 MMC_CAP_POWER_OFF_CARD,
643 .tmio_caps2 = MMC_CAP2_NO_MULTI_READ,
644 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT |
645 TMIO_MMC_WRPROTECT_DISABLE,
646};
647
648static struct resource sdhi2_resources[] __initdata = {
649 DEFINE_RES_MEM(0xee140000, 0x100),
650 DEFINE_RES_IRQ(gic_spi(167)),
651};
652
653/* Internal PCI1 */
654static const struct resource pci1_resources[] __initconst = {
655 DEFINE_RES_MEM(0xee0b0000, 0x10000), /* CFG */
656 DEFINE_RES_MEM(0xee0a0000, 0x10000), /* MEM */
657 DEFINE_RES_IRQ(gic_spi(112)),
658};
659
660static const struct platform_device_info pci1_info __initconst = {
661 .parent = &platform_bus,
662 .name = "pci-rcar-gen2",
663 .id = 1,
664 .res = pci1_resources,
665 .num_res = ARRAY_SIZE(pci1_resources),
666 .dma_mask = DMA_BIT_MASK(32),
667};
668
669static void __init lager_add_usb1_device(void)
670{
671 platform_device_register_full(&pci1_info);
672}
673
674/* Internal PCI2 */
675static const struct resource pci2_resources[] __initconst = {
676 DEFINE_RES_MEM(0xee0d0000, 0x10000), /* CFG */
677 DEFINE_RES_MEM(0xee0c0000, 0x10000), /* MEM */
678 DEFINE_RES_IRQ(gic_spi(113)),
679};
680
681static const struct platform_device_info pci2_info __initconst = {
682 .parent = &platform_bus,
683 .name = "pci-rcar-gen2",
684 .id = 2,
685 .res = pci2_resources,
686 .num_res = ARRAY_SIZE(pci2_resources),
687 .dma_mask = DMA_BIT_MASK(32),
688};
689
690static void __init lager_add_usb2_device(void)
691{
692 platform_device_register_full(&pci2_info);
693}
694
294static const struct pinctrl_map lager_pinctrl_map[] = { 695static const struct pinctrl_map lager_pinctrl_map[] = {
295 /* DU (CN10: ARGB0, CN13: LVDS) */ 696 /* DU (CN10: ARGB0, CN13: LVDS) */
296 PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7790", "pfc-r8a7790", 697 PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7790", "pfc-r8a7790",
@@ -299,12 +700,43 @@ static const struct pinctrl_map lager_pinctrl_map[] = {
299 "du_sync_1", "du"), 700 "du_sync_1", "du"),
300 PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7790", "pfc-r8a7790", 701 PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7790", "pfc-r8a7790",
301 "du_clk_out_0", "du"), 702 "du_clk_out_0", "du"),
703 /* I2C2 */
704 PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar.2", "pfc-r8a7790",
705 "i2c2", "i2c2"),
706 /* QSPI */
707 PIN_MAP_MUX_GROUP_DEFAULT("qspi.0", "pfc-r8a7790",
708 "qspi_ctrl", "qspi"),
709 PIN_MAP_MUX_GROUP_DEFAULT("qspi.0", "pfc-r8a7790",
710 "qspi_data4", "qspi"),
302 /* SCIF0 (CN19: DEBUG SERIAL0) */ 711 /* SCIF0 (CN19: DEBUG SERIAL0) */
303 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7790", 712 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7790",
304 "scif0_data", "scif0"), 713 "scif0_data", "scif0"),
305 /* SCIF1 (CN20: DEBUG SERIAL1) */ 714 /* SCIF1 (CN20: DEBUG SERIAL1) */
306 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7790", 715 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7790",
307 "scif1_data", "scif1"), 716 "scif1_data", "scif1"),
717 /* SDHI0 */
718 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7790",
719 "sdhi0_data4", "sdhi0"),
720 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7790",
721 "sdhi0_ctrl", "sdhi0"),
722 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7790",
723 "sdhi0_cd", "sdhi0"),
724 /* SDHI2 */
725 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7790",
726 "sdhi2_data4", "sdhi2"),
727 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7790",
728 "sdhi2_ctrl", "sdhi2"),
729 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7790",
730 "sdhi2_cd", "sdhi2"),
731 /* SSI (CN17: sound) */
732 PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7790",
733 "ssi0129_ctrl", "ssi"),
734 PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7790",
735 "ssi0_data", "ssi"),
736 PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7790",
737 "ssi1_data", "ssi"),
738 PIN_MAP_MUX_GROUP_DEFAULT("rcar_sound", "pfc-r8a7790",
739 "audio_clk_a", "audio_clk"),
308 /* MMCIF1 */ 740 /* MMCIF1 */
309 PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.1", "pfc-r8a7790", 741 PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif.1", "pfc-r8a7790",
310 "mmc1_data8", "mmc1"), 742 "mmc1_data8", "mmc1"),
@@ -319,6 +751,31 @@ static const struct pinctrl_map lager_pinctrl_map[] = {
319 "eth_rmii", "eth"), 751 "eth_rmii", "eth"),
320 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-ether", "pfc-r8a7790", 752 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-ether", "pfc-r8a7790",
321 "intc_irq0", "intc"), 753 "intc_irq0", "intc"),
754 /* VIN0 */
755 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-vin.0", "pfc-r8a7790",
756 "vin0_data24", "vin0"),
757 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-vin.0", "pfc-r8a7790",
758 "vin0_sync", "vin0"),
759 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-vin.0", "pfc-r8a7790",
760 "vin0_field", "vin0"),
761 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-vin.0", "pfc-r8a7790",
762 "vin0_clkenb", "vin0"),
763 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-vin.0", "pfc-r8a7790",
764 "vin0_clk", "vin0"),
765 /* VIN1 */
766 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-vin.1", "pfc-r8a7790",
767 "vin1_data8", "vin1"),
768 PIN_MAP_MUX_GROUP_DEFAULT("r8a7790-vin.1", "pfc-r8a7790",
769 "vin1_clk", "vin1"),
770 /* USB0 */
771 PIN_MAP_MUX_GROUP_DEFAULT("renesas_usbhs", "pfc-r8a7790",
772 "usb0_ovc_vbus", "usb0"),
773 /* USB1 */
774 PIN_MAP_MUX_GROUP_DEFAULT("pci-rcar-gen2.1", "pfc-r8a7790",
775 "usb1", "usb1"),
776 /* USB2 */
777 PIN_MAP_MUX_GROUP_DEFAULT("pci-rcar-gen2.2", "pfc-r8a7790",
778 "usb2", "usb2"),
322}; 779};
323 780
324static void __init lager_add_standard_devices(void) 781static void __init lager_add_standard_devices(void)
@@ -346,10 +803,7 @@ static void __init lager_add_standard_devices(void)
346 mmcif1_resources, ARRAY_SIZE(mmcif1_resources), 803 mmcif1_resources, ARRAY_SIZE(mmcif1_resources),
347 &mmcif1_pdata, sizeof(mmcif1_pdata)); 804 &mmcif1_pdata, sizeof(mmcif1_pdata));
348 805
349 platform_device_register_resndata(&platform_bus, "r8a7790-ether", -1, 806 platform_device_register_full(&ether_info);
350 ether_resources,
351 ARRAY_SIZE(ether_resources),
352 &ether_pdata, sizeof(ether_pdata));
353 807
354 lager_add_du_device(); 808 lager_add_du_device();
355 809
@@ -368,6 +822,28 @@ static void __init lager_add_standard_devices(void)
368 &vccq_sdhi0_info, sizeof(struct gpio_regulator_config)); 822 &vccq_sdhi0_info, sizeof(struct gpio_regulator_config));
369 platform_device_register_data(&platform_bus, "gpio-regulator", gpio_regulator_idx++, 823 platform_device_register_data(&platform_bus, "gpio-regulator", gpio_regulator_idx++,
370 &vccq_sdhi2_info, sizeof(struct gpio_regulator_config)); 824 &vccq_sdhi2_info, sizeof(struct gpio_regulator_config));
825
826 lager_add_camera1_device();
827
828 platform_device_register_full(&sata1_info);
829
830 platform_device_register_resndata(&platform_bus, "usb_phy_rcar_gen2",
831 -1, usbhs_phy_resources,
832 ARRAY_SIZE(usbhs_phy_resources),
833 &usbhs_phy_pdata,
834 sizeof(usbhs_phy_pdata));
835 lager_register_usbhs();
836 lager_add_usb1_device();
837 lager_add_usb2_device();
838
839 lager_add_rsnd_device();
840
841 platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 0,
842 sdhi0_resources, ARRAY_SIZE(sdhi0_resources),
843 &sdhi0_info, sizeof(struct sh_mobile_sdhi_info));
844 platform_device_register_resndata(&platform_bus, "sh_mobile_sdhi", 2,
845 sdhi2_resources, ARRAY_SIZE(sdhi2_resources),
846 &sdhi2_info, sizeof(struct sh_mobile_sdhi_info));
371} 847}
372 848
373/* 849/*
@@ -391,6 +867,8 @@ static void __init lager_init(void)
391{ 867{
392 lager_add_standard_devices(); 868 lager_add_standard_devices();
393 869
870 irq_set_irq_type(irq_pin(0), IRQ_TYPE_LEVEL_LOW);
871
394 if (IS_ENABLED(CONFIG_PHYLIB)) 872 if (IS_ENABLED(CONFIG_PHYLIB))
395 phy_register_fixup_for_id("r8a7790-ether-ff:01", 873 phy_register_fixup_for_id("r8a7790-ether-ff:01",
396 lager_ksz8041_fixup); 874 lager_ksz8041_fixup);
diff --git a/arch/arm/mach-shmobile/include/mach/head-kzm9g.txt b/arch/arm/mach-shmobile/include/mach/head-kzm9g.txt
new file mode 100644
index 000000000000..9531f46a822a
--- /dev/null
+++ b/arch/arm/mach-shmobile/include/mach/head-kzm9g.txt
@@ -0,0 +1,410 @@
1LIST "KZM9G low-level initialization routine."
2LIST "Adapted from u-boot KZM9G support code."
3
4LIST "Copyright (C) 2013 Ulrich Hecht"
5
6LIST "This program is free software; you can redistribute it and/or modify"
7LIST "it under the terms of the GNU General Public License version 2 as"
8LIST "published by the Free Software Foundation."
9
10LIST "This program is distributed in the hope that it will be useful,"
11LIST "but WITHOUT ANY WARRANTY; without even the implied warranty of"
12LIST "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the"
13LIST "GNU General Public License for more details."
14
15
16LIST "Register definitions:"
17
18LIST "Secure control register"
19#define LIFEC_SEC_SRC (0xE6110008)
20
21LIST "RWDT"
22#define RWDT_BASE (0xE6020000)
23#define RWTCSRA0 (RWDT_BASE + 0x04)
24
25LIST "HPB Semaphore Control Registers"
26#define HPBSCR_BASE (0xE6000000)
27#define HPBCTRL6 (HPBSCR_BASE + 0x1030)
28
29#define SBSC1_BASE (0xFE400000)
30#define SDCR0A (SBSC1_BASE + 0x0008)
31#define SDCR1A (SBSC1_BASE + 0x000C)
32#define SDPCRA (SBSC1_BASE + 0x0010)
33#define SDCR0SA (SBSC1_BASE + 0x0018)
34#define SDCR1SA (SBSC1_BASE + 0x001C)
35#define RTCSRA (SBSC1_BASE + 0x0020)
36#define RTCORA (SBSC1_BASE + 0x0028)
37#define RTCORHA (SBSC1_BASE + 0x002C)
38#define SDWCRC0A (SBSC1_BASE + 0x0040)
39#define SDWCRC1A (SBSC1_BASE + 0x0044)
40#define SDWCR00A (SBSC1_BASE + 0x0048)
41#define SDWCR01A (SBSC1_BASE + 0x004C)
42#define SDWCR10A (SBSC1_BASE + 0x0050)
43#define SDWCR11A (SBSC1_BASE + 0x0054)
44#define SDWCR2A (SBSC1_BASE + 0x0060)
45#define SDWCRC2A (SBSC1_BASE + 0x0064)
46#define ZQCCRA (SBSC1_BASE + 0x0068)
47#define SDMRACR0A (SBSC1_BASE + 0x0084)
48#define SDMRTMPCRA (SBSC1_BASE + 0x008C)
49#define SDMRTMPMSKA (SBSC1_BASE + 0x0094)
50#define SDGENCNTA (SBSC1_BASE + 0x009C)
51#define SDDRVCR0A (SBSC1_BASE + 0x00B4)
52#define DLLCNT0A (SBSC1_BASE + 0x0354)
53
54#define SDMRA1 (0xFE500000)
55#define SDMRA2 (0xFE5C0000)
56#define SDMRA3 (0xFE504000)
57
58#define SBSC2_BASE (0xFB400000)
59#define SDCR0B (SBSC2_BASE + 0x0008)
60#define SDCR1B (SBSC2_BASE + 0x000C)
61#define SDPCRB (SBSC2_BASE + 0x0010)
62#define SDCR0SB (SBSC2_BASE + 0x0018)
63#define SDCR1SB (SBSC2_BASE + 0x001C)
64#define RTCSRB (SBSC2_BASE + 0x0020)
65#define RTCORB (SBSC2_BASE + 0x0028)
66#define RTCORHB (SBSC2_BASE + 0x002C)
67#define SDWCRC0B (SBSC2_BASE + 0x0040)
68#define SDWCRC1B (SBSC2_BASE + 0x0044)
69#define SDWCR00B (SBSC2_BASE + 0x0048)
70#define SDWCR01B (SBSC2_BASE + 0x004C)
71#define SDWCR10B (SBSC2_BASE + 0x0050)
72#define SDWCR11B (SBSC2_BASE + 0x0054)
73#define SDPDCR0B (SBSC2_BASE + 0x0058)
74#define SDWCR2B (SBSC2_BASE + 0x0060)
75#define SDWCRC2B (SBSC2_BASE + 0x0064)
76#define ZQCCRB (SBSC2_BASE + 0x0068)
77#define SDMRACR0B (SBSC2_BASE + 0x0084)
78#define SDMRTMPCRB (SBSC2_BASE + 0x008C)
79#define SDMRTMPMSKB (SBSC2_BASE + 0x0094)
80#define SDGENCNTB (SBSC2_BASE + 0x009C)
81#define DPHYCNT0B (SBSC2_BASE + 0x00A0)
82#define DPHYCNT1B (SBSC2_BASE + 0x00A4)
83#define DPHYCNT2B (SBSC2_BASE + 0x00A8)
84#define SDDRVCR0B (SBSC2_BASE + 0x00B4)
85#define DLLCNT0B (SBSC2_BASE + 0x0354)
86
87#define SDMRB1 (0xFB500000)
88#define SDMRB2 (0xFB5C0000)
89#define SDMRB3 (0xFB504000)
90
91#define CPG_BASE (0xE6150000)
92#define FRQCRA (CPG_BASE + 0x0000)
93#define FRQCRB (CPG_BASE + 0x0004)
94#define FRQCRD (CPG_BASE + 0x00E4)
95#define VCLKCR1 (CPG_BASE + 0x0008)
96#define VCLKCR2 (CPG_BASE + 0x000C)
97#define VCLKCR3 (CPG_BASE + 0x001C)
98#define ZBCKCR (CPG_BASE + 0x0010)
99#define FLCKCR (CPG_BASE + 0x0014)
100#define SD0CKCR (CPG_BASE + 0x0074)
101#define SD1CKCR (CPG_BASE + 0x0078)
102#define SD2CKCR (CPG_BASE + 0x007C)
103#define FSIACKCR (CPG_BASE + 0x0018)
104#define SUBCKCR (CPG_BASE + 0x0080)
105#define SPUACKCR (CPG_BASE + 0x0084)
106#define SPUVCKCR (CPG_BASE + 0x0094)
107#define MSUCKCR (CPG_BASE + 0x0088)
108#define HSICKCR (CPG_BASE + 0x008C)
109#define FSIBCKCR (CPG_BASE + 0x0090)
110#define MFCK1CR (CPG_BASE + 0x0098)
111#define MFCK2CR (CPG_BASE + 0x009C)
112#define DSITCKCR (CPG_BASE + 0x0060)
113#define DSI0PCKCR (CPG_BASE + 0x0064)
114#define DSI1PCKCR (CPG_BASE + 0x0068)
115#define DSI0PHYCR (CPG_BASE + 0x006C)
116#define DVFSCR3 (CPG_BASE + 0x0174)
117#define DVFSCR4 (CPG_BASE + 0x0178)
118#define DVFSCR5 (CPG_BASE + 0x017C)
119#define MPMODE (CPG_BASE + 0x00CC)
120
121#define PLLECR (CPG_BASE + 0x00D0)
122#define PLL0CR (CPG_BASE + 0x00D8)
123#define PLL1CR (CPG_BASE + 0x0028)
124#define PLL2CR (CPG_BASE + 0x002C)
125#define PLL3CR (CPG_BASE + 0x00DC)
126#define PLL0STPCR (CPG_BASE + 0x00F0)
127#define PLL1STPCR (CPG_BASE + 0x00C8)
128#define PLL2STPCR (CPG_BASE + 0x00F8)
129#define PLL3STPCR (CPG_BASE + 0x00FC)
130#define RMSTPCR0 (CPG_BASE + 0x0110)
131#define RMSTPCR1 (CPG_BASE + 0x0114)
132#define RMSTPCR2 (CPG_BASE + 0x0118)
133#define RMSTPCR3 (CPG_BASE + 0x011C)
134#define RMSTPCR4 (CPG_BASE + 0x0120)
135#define RMSTPCR5 (CPG_BASE + 0x0124)
136#define SMSTPCR0 (CPG_BASE + 0x0130)
137#define SMSTPCR2 (CPG_BASE + 0x0138)
138#define SMSTPCR3 (CPG_BASE + 0x013C)
139#define CPGXXCR4 (CPG_BASE + 0x0150)
140#define SRCR0 (CPG_BASE + 0x80A0)
141#define SRCR2 (CPG_BASE + 0x80B0)
142#define SRCR3 (CPG_BASE + 0x80A8)
143#define VREFCR (CPG_BASE + 0x00EC)
144#define PCLKCR (CPG_BASE + 0x1020)
145
146#define PORT32CR (0xE6051020)
147#define PORT33CR (0xE6051021)
148#define PORT34CR (0xE6051022)
149#define PORT35CR (0xE6051023)
150
151LIST "DRAM initialization code:"
152
153EW RWTCSRA0, 0xA507
154
155ED_AND LIFEC_SEC_SRC, 0xFFFF7FFF
156
157ED_AND SMSTPCR3,0xFFFF7FFF
158ED_AND SRCR3, 0xFFFF7FFF
159ED_AND SMSTPCR2,0xFFFBFFFF
160ED_AND SRCR2, 0xFFFBFFFF
161ED PLLECR, 0x00000000
162
163WAIT_MASK PLLECR, 0x00000F00, 0x00000000
164WAIT_MASK FRQCRB, 0x80000000, 0x00000000
165
166ED PLL0CR, 0x2D000000
167ED PLL1CR, 0x17100000
168ED FRQCRB, 0x96235880
169WAIT_MASK FRQCRB, 0x80000000, 0x00000000
170
171ED FLCKCR, 0x0000000B
172ED_AND SMSTPCR0, 0xFFFFFFFD
173
174ED_AND SRCR0, 0xFFFFFFFD
175ED 0xE6001628, 0x514
176ED 0xE6001648, 0x514
177ED 0xE6001658, 0x514
178ED 0xE6001678, 0x514
179
180ED DVFSCR4, 0x00092000
181ED DVFSCR5, 0x000000DC
182ED PLLECR, 0x00000000
183WAIT_MASK PLLECR, 0x00000F00, 0x00000000
184
185ED FRQCRA, 0x0012453C
186ED FRQCRB, 0x80431350
187WAIT_MASK FRQCRB, 0x80000000, 0x00000000
188ED FRQCRD, 0x00000B0B
189WAIT_MASK FRQCRD, 0x80000000, 0x00000000
190
191ED PCLKCR, 0x00000003
192ED VCLKCR1, 0x0000012F
193ED VCLKCR2, 0x00000119
194ED VCLKCR3, 0x00000119
195ED ZBCKCR, 0x00000002
196ED FLCKCR, 0x00000005
197ED SD0CKCR, 0x00000080
198ED SD1CKCR, 0x00000080
199ED SD2CKCR, 0x00000080
200ED FSIACKCR, 0x0000003F
201ED FSIBCKCR, 0x0000003F
202ED SUBCKCR, 0x00000080
203ED SPUACKCR, 0x0000000B
204ED SPUVCKCR, 0x0000000B
205ED MSUCKCR, 0x0000013F
206ED HSICKCR, 0x00000080
207ED MFCK1CR, 0x0000003F
208ED MFCK2CR, 0x0000003F
209ED DSITCKCR, 0x00000107
210ED DSI0PCKCR, 0x00000313
211ED DSI1PCKCR, 0x0000130D
212ED DSI0PHYCR, 0x2A800E0E
213ED PLL0CR, 0x1E000000
214ED PLL0CR, 0x2D000000
215ED PLL1CR, 0x17100000
216ED PLL2CR, 0x27000080
217ED PLL3CR, 0x1D000000
218ED PLL0STPCR, 0x00080000
219ED PLL1STPCR, 0x000120C0
220ED PLL2STPCR, 0x00012000
221ED PLL3STPCR, 0x00000030
222ED PLLECR, 0x0000000B
223WAIT_MASK PLLECR, 0x00000B00, 0x00000B00
224
225ED DVFSCR3, 0x000120F0
226ED MPMODE, 0x00000020
227ED VREFCR, 0x0000028A
228ED RMSTPCR0, 0xE4628087
229ED RMSTPCR1, 0xFFFFFFFF
230ED RMSTPCR2, 0x53FFFFFF
231ED RMSTPCR3, 0xFFFFFFFF
232ED RMSTPCR4, 0x00800D3D
233ED RMSTPCR5, 0xFFFFF3FF
234ED SMSTPCR2, 0x00000000
235ED SRCR2, 0x00040000
236ED_AND PLLECR, 0xFFFFFFF7
237WAIT_MASK PLLECR, 0x00000800, 0x00000000
238
239LIST "set SBSC operational"
240ED HPBCTRL6, 0x00000001
241WAIT_MASK HPBCTRL6, 0x00000001, 0x00000001
242
243LIST "set SBSC operating frequency"
244ED FRQCRD, 0x00001414
245WAIT_MASK FRQCRD, 0x80000000, 0x00000000
246ED PLL3CR, 0x1D000000
247ED_OR PLLECR, 0x00000008
248WAIT_MASK PLLECR, 0x00000800, 0x00000800
249
250LIST "enable DLL oscillation in DDRPHY"
251ED_OR DLLCNT0A, 0x00000002
252
253LIST "wait >= 100 ns"
254ED SDGENCNTA, 0x00000005
255WAIT_MASK SDGENCNTA, 0xFFFFFFFF, 0x00000000
256
257LIST "target LPDDR2 device settings"
258ED SDCR0A, 0xACC90159
259ED SDCR1A, 0x00010059
260ED SDWCRC0A, 0x50874114
261ED SDWCRC1A, 0x33199B37
262ED SDWCRC2A, 0x008F2313
263ED SDWCR00A, 0x31020707
264ED SDWCR01A, 0x0017040A
265ED SDWCR10A, 0x31020707
266ED SDWCR11A, 0x0017040A
267
268ED SDDRVCR0A, 0x055557ff
269
270ED SDWCR2A, 0x30000000
271
272LIST "drive CKE high"
273ED_OR SDPCRA, 0x00000080
274WAIT_MASK SDPCRA, 0x00000080, 0x00000080
275
276LIST "wait >= 200 us"
277ED SDGENCNTA, 0x00002710
278WAIT_MASK SDGENCNTA, 0xFFFFFFFF, 0x00000000
279
280LIST "issue reset command to LPDDR2 device"
281ED SDMRACR0A, 0x0000003F
282ED SDMRA1, 0x00000000
283
284LIST "wait >= 10 (or 1) us (docs inconsistent)"
285ED SDGENCNTA, 0x000001F4
286WAIT_MASK SDGENCNTA, 0xFFFFFFFF, 0x00000000
287
288LIST "MRW ZS initialization calibration command"
289ED SDMRACR0A, 0x0000FF0A
290ED SDMRA3, 0x00000000
291
292LIST "wait >= 1 us"
293ED SDGENCNTA, 0x00000032
294WAIT_MASK SDGENCNTA, 0xFFFFFFFF, 0x00000000
295
296LIST "specify operating mode in LPDDR2"
297ED SDMRACR0A, 0x00002201
298ED SDMRA1, 0x00000000
299ED SDMRACR0A, 0x00000402
300ED SDMRA1, 0x00000000
301ED SDMRACR0A, 0x00000203
302ED SDMRA1, 0x00000000
303
304LIST "initialize DDR interface"
305ED SDMRA2, 0x00000000
306
307LIST "temperature sensor control"
308ED SDMRTMPCRA, 0x88800004
309ED SDMRTMPMSKA,0x00000004
310
311LIST "auto-refreshing control"
312ED RTCORA, 0xA55A0032
313ED RTCORHA, 0xA55A000C
314ED RTCSRA, 0xA55A2048
315
316ED_OR SDCR0A, 0x00000800
317ED_OR SDCR1A, 0x00000400
318
319LIST "auto ZQ calibration control"
320ED ZQCCRA, 0xFFF20000
321
322ED_OR DLLCNT0B, 0x00000002
323ED SDGENCNTB, 0x00000005
324WAIT_MASK SDGENCNTB, 0xFFFFFFFF, 0x00000000
325
326ED SDCR0B, 0xACC90159
327ED SDCR1B, 0x00010059
328ED SDWCRC0B, 0x50874114
329ED SDWCRC1B, 0x33199B37
330ED SDWCRC2B, 0x008F2313
331ED SDWCR00B, 0x31020707
332ED SDWCR01B, 0x0017040A
333ED SDWCR10B, 0x31020707
334ED SDWCR11B, 0x0017040A
335ED SDDRVCR0B, 0x055557ff
336ED SDWCR2B, 0x30000000
337ED_OR SDPCRB, 0x00000080
338WAIT_MASK SDPCRB, 0x00000080, 0x00000080
339
340ED SDGENCNTB, 0x00002710
341WAIT_MASK SDGENCNTB, 0xFFFFFFFF, 0x00000000
342ED SDMRACR0B, 0x0000003F
343
344LIST "upstream u-boot writes to SDMRA1A for both SBSC 1 and 2, which does"
345LIST "not seem to make a lot of sense..."
346ED SDMRB1, 0x00000000
347
348ED SDGENCNTB, 0x000001F4
349WAIT_MASK SDGENCNTB, 0xFFFFFFFF, 0x00000000
350
351ED SDMRACR0B, 0x0000FF0A
352ED SDMRB3, 0x00000000
353ED SDGENCNTB, 0x00000032
354WAIT_MASK SDGENCNTB, 0xFFFFFFFF, 0x00000000
355
356ED SDMRACR0B, 0x00002201
357ED SDMRB1, 0x00000000
358ED SDMRACR0B, 0x00000402
359ED SDMRB1, 0x00000000
360ED SDMRACR0B, 0x00000203
361ED SDMRB1, 0x00000000
362ED SDMRB2, 0x00000000
363ED SDMRTMPCRB, 0x88800004
364ED SDMRTMPMSKB, 0x00000004
365ED RTCORB, 0xA55A0032
366ED RTCORHB, 0xA55A000C
367ED RTCSRB, 0xA55A2048
368ED_OR SDCR0B, 0x00000800
369ED_OR SDCR1B, 0x00000400
370ED ZQCCRB, 0xFFF20000
371ED_OR SDPDCR0B, 0x00030000
372ED DPHYCNT1B, 0xA5390000
373ED DPHYCNT0B, 0x00001200
374ED DPHYCNT1B, 0x07CE0000
375ED DPHYCNT0B, 0x00001247
376WAIT_MASK DPHYCNT2B, 0xFFFFFFFF, 0x07CE0000
377
378ED_AND SDPDCR0B, 0xFFFCFFFF
379
380ED FRQCRD, 0x00000B0B
381WAIT_MASK FRQCRD, 0x80000000, 0x00000000
382
383ED CPGXXCR4, 0xfffffffc
384
385LIST "Setup SCIF4 / workaround"
386EB PORT32CR, 0x12
387EB PORT33CR, 0x22
388EB PORT34CR, 0x12
389EB PORT35CR, 0x22
390
391EW 0xE6C80000, 0
392EB 0xE6C80004, 0x19
393EW 0xE6C80008, 0x0030
394EW 0xE6C80018, 0
395EW 0xE6C80030, 0x0014
396
397LIST "Magic to avoid hangs and corruption on DRAM writes."
398
399LIST "It has been observed that the system would most often hang while"
400LIST "decompressing the kernel, and if it didn't it would always write"
401LIST "a corrupt image to DRAM."
402LIST "This problem does not occur in u-boot, and the reason is that"
403LIST "u-boot performs an additional cache invalidation after setting up"
404LIST "the DRAM controller. Such an invalidation should not be necessary at"
405LIST "this point, and attempts at removing parts of the routine to arrive"
406LIST "at the minimal snippet of code necessary to avoid the DRAM stability"
407LIST "problem yielded the following:"
408
409MRC p15, 0, r0, c1, c0, 0
410MCR p15, 0, r0, c1, c0, 0
diff --git a/arch/arm/mach-shmobile/include/mach/zboot.h b/arch/arm/mach-shmobile/include/mach/zboot.h
index c3c4669a2d72..727cc78ac8ec 100644
--- a/arch/arm/mach-shmobile/include/mach/zboot.h
+++ b/arch/arm/mach-shmobile/include/mach/zboot.h
@@ -12,6 +12,9 @@
12#ifdef CONFIG_MACH_MACKEREL 12#ifdef CONFIG_MACH_MACKEREL
13#define MEMORY_START 0x40000000 13#define MEMORY_START 0x40000000
14#include "mach/head-mackerel.txt" 14#include "mach/head-mackerel.txt"
15#elif defined(CONFIG_MACH_KZM9G) || defined(CONFIG_MACH_KZM9G_REFERENCE)
16#define MEMORY_START 0x43000000
17#include "mach/head-kzm9g.txt"
15#else 18#else
16#error "unsupported board." 19#error "unsupported board."
17#endif 20#endif
diff --git a/arch/arm/mach-shmobile/include/mach/zboot_macros.h b/arch/arm/mach-shmobile/include/mach/zboot_macros.h
index aa6111fbc989..14fd3d538e9a 100644
--- a/arch/arm/mach-shmobile/include/mach/zboot_macros.h
+++ b/arch/arm/mach-shmobile/include/mach/zboot_macros.h
@@ -62,4 +62,47 @@
622 : 622 :
63.endm 63.endm
64 64
65/* loop until a given value has been read (with mask) */
66.macro WAIT_MASK, addr, data, cmp
67 LDR r0, 2f
68 LDR r1, 3f
69 LDR r2, 4f
701:
71 LDR r3, [r0, #0]
72 AND r3, r1, r3
73 CMP r2, r3
74 BNE 1b
75 B 5f
762: .long \addr
773: .long \data
784: .long \cmp
795:
80.endm
81
82/* read 32-bit value from addr, "or" an immediate and write back */
83.macro ED_OR, addr, data
84 LDR r4, 1f
85 LDR r5, 2f
86 LDR r6, [r4]
87 ORR r5, r6, r5
88 STR r5, [r4]
89 B 3f
901: .long \addr
912: .long \data
923:
93.endm
94
95/* read 32-bit value from addr, "and" an immediate and write back */
96.macro ED_AND, addr, data
97 LDR r4, 1f
98 LDR r5, 2f
99 LDR r6, [r4]
100 AND r5, r6, r5
101 STR r5, [r4]
102 B 3f
1031: .long \addr
1042: .long \data
1053:
106.endm
107
65#endif /* __ZBOOT_MACRO_H */ 108#endif /* __ZBOOT_MACRO_H */