aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-07-02 17:10:26 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-07-02 17:10:26 -0400
commit40e71e7015ab85c8606f50736525220948a3b24b (patch)
tree76fadfaf9780dd1e5666954311a7976f674cbcd0
parent3883cbb6c1bda013a3ce2dbdab7dc97c52e4a232 (diff)
parentf8ace40e88eb7063f66697713373ac64cbc1412a (diff)
Merge tag 'boards-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
Pull ARM SoC board specific changes from Arnd Bergmann: "These are 18 branches on 9 platforms with board specific changes, mostly for defconfig files, but nothing really exciting in here. Since the shmobile platform still uses board files for some of the newer machines, we get a few changes there as the result of drivers getting enabled for those boards. This causes some conflicts with contents getting added from multiple branches in sh-mobile specific files. Renesas is putting a lot of work into migrating to device-tree based setup, which will make all those files obsolete in the future and avoid both the conflicts and the need to have these files in the first place." * tag 'boards-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (49 commits) arm: multi_v7_defconfig: Enable initrd/initramfs support arm: multi_v7_defconfig: Enable Zynq UART driver ARM: omap2plus_defconfig: enable USB_PHY and NOP_USB_XCEIV ARM: OMAP1: nokia770: enable Tahvo ARM: OMAP3EVM: Marking omap3_evm_display_init() with CONFIG_BROKEN arm: omap: board-overo: reset GPIO for SMSC911x ARM: shmobile: BOCK-W: change Ether device name ARM: ux500: board-mop500: remove unused pin modes ARM: shmobile: bockw: add MMCIF support ARM: shmobile: bockw: add SPI FLASH support ARM: shmobile: bockw: add I2C device support ARM: shmobile: BOCK-W: add Ether support ARM: tegra: defconfig updates ARM: shmobile: bockw defconfig: add MMCIF support ARM: shmobile: bockw defconfig: add M25P80 support ARM: shmobile: bockw defconfig: add RTC RX8581 support ARM: shmobile: marzen: keep local function as static ARM: shmobile: bockw: add SDHI0 support ARM: shmobile: marzen: Use INTC External IRQ pin driver for SMSC ARM: shmobile: lager: support GPIO switches ...
-rw-r--r--arch/arm/boot/dts/kirkwood-lsxl.dtsi4
-rw-r--r--arch/arm/boot/dts/kirkwood-ts219.dtsi5
-rw-r--r--arch/arm/configs/armadillo800eva_defconfig2
-rw-r--r--arch/arm/configs/bcm2835_defconfig19
-rw-r--r--arch/arm/configs/bockw_defconfig27
-rw-r--r--arch/arm/configs/kzm9g_defconfig3
-rw-r--r--arch/arm/configs/multi_v7_defconfig3
-rw-r--r--arch/arm/configs/omap2plus_defconfig2
-rw-r--r--arch/arm/configs/tegra_defconfig23
-rw-r--r--arch/arm/mach-kirkwood/Kconfig9
-rw-r--r--arch/arm/mach-kirkwood/Makefile1
-rw-r--r--arch/arm/mach-kirkwood/board-dt.c4
-rw-r--r--arch/arm/mach-kirkwood/board-lsxl.c16
-rw-r--r--arch/arm/mach-kirkwood/board-sheevaplug.c27
-rw-r--r--arch/arm/mach-kirkwood/board-ts219.c3
-rw-r--r--arch/arm/mach-kirkwood/common.h5
-rw-r--r--arch/arm/mach-omap1/board-nokia770.c10
-rw-r--r--arch/arm/mach-omap2/board-omap3evm.c4
-rw-r--r--arch/arm/mach-omap2/board-overo.c3
-rw-r--r--arch/arm/mach-shmobile/board-ape6evm.c15
-rw-r--r--arch/arm/mach-shmobile/board-bockw.c159
-rw-r--r--arch/arm/mach-shmobile/board-kzm9d.c2
-rw-r--r--arch/arm/mach-shmobile/board-kzm9g.c193
-rw-r--r--arch/arm/mach-shmobile/board-lager.c49
-rw-r--r--arch/arm/mach-shmobile/board-marzen.c3
-rw-r--r--arch/arm/mach-ux500/board-mop500-pins.c283
-rw-r--r--arch/arm/mach-ux500/board-mop500-regulators.c1
-rw-r--r--arch/arm/mach-ux500/board-mop500-sdi.c34
-rw-r--r--arch/arm/mach-ux500/db8500-regs.h3
-rw-r--r--arch/arm/mach-ux500/devices-db8500.c2
-rw-r--r--arch/arm/mach-ux500/id.c6
31 files changed, 792 insertions, 128 deletions
diff --git a/arch/arm/boot/dts/kirkwood-lsxl.dtsi b/arch/arm/boot/dts/kirkwood-lsxl.dtsi
index 37d45c4f88fb..996c7fefd253 100644
--- a/arch/arm/boot/dts/kirkwood-lsxl.dtsi
+++ b/arch/arm/boot/dts/kirkwood-lsxl.dtsi
@@ -172,6 +172,10 @@
172 alarm-gpios = <&gpio1 8 0>; 172 alarm-gpios = <&gpio1 8 0>;
173 }; 173 };
174 174
175 restart_poweroff {
176 compatible = "restart-poweroff";
177 };
178
175 regulators { 179 regulators {
176 compatible = "simple-bus"; 180 compatible = "simple-bus";
177 #address-cells = <1>; 181 #address-cells = <1>;
diff --git a/arch/arm/boot/dts/kirkwood-ts219.dtsi b/arch/arm/boot/dts/kirkwood-ts219.dtsi
index 7c022fd4aef7..09c820fc177f 100644
--- a/arch/arm/boot/dts/kirkwood-ts219.dtsi
+++ b/arch/arm/boot/dts/kirkwood-ts219.dtsi
@@ -29,6 +29,11 @@
29 clock-frequency = <200000000>; 29 clock-frequency = <200000000>;
30 status = "okay"; 30 status = "okay";
31 }; 31 };
32 poweroff@12100 {
33 compatible = "qnap,power-off";
34 reg = <0x12000 0x100>;
35 clocks = <&gate_clk 7>;
36 };
32 spi@10600 { 37 spi@10600 {
33 status = "okay"; 38 status = "okay";
34 39
diff --git a/arch/arm/configs/armadillo800eva_defconfig b/arch/arm/configs/armadillo800eva_defconfig
index 0f2d80da7378..fae939d3d7f0 100644
--- a/arch/arm/configs/armadillo800eva_defconfig
+++ b/arch/arm/configs/armadillo800eva_defconfig
@@ -86,7 +86,7 @@ CONFIG_TOUCHSCREEN_ST1232=y
86# CONFIG_SERIO is not set 86# CONFIG_SERIO is not set
87# CONFIG_LEGACY_PTYS is not set 87# CONFIG_LEGACY_PTYS is not set
88CONFIG_SERIAL_SH_SCI=y 88CONFIG_SERIAL_SH_SCI=y
89CONFIG_SERIAL_SH_SCI_NR_UARTS=8 89CONFIG_SERIAL_SH_SCI_NR_UARTS=9
90CONFIG_SERIAL_SH_SCI_CONSOLE=y 90CONFIG_SERIAL_SH_SCI_CONSOLE=y
91# CONFIG_HW_RANDOM is not set 91# CONFIG_HW_RANDOM is not set
92CONFIG_I2C=y 92CONFIG_I2C=y
diff --git a/arch/arm/configs/bcm2835_defconfig b/arch/arm/configs/bcm2835_defconfig
index ce987211a609..34e9780e63ba 100644
--- a/arch/arm/configs/bcm2835_defconfig
+++ b/arch/arm/configs/bcm2835_defconfig
@@ -55,14 +55,11 @@ CONFIG_DEVTMPFS_MOUNT=y
55# CONFIG_INPUT_KEYBOARD is not set 55# CONFIG_INPUT_KEYBOARD is not set
56# CONFIG_INPUT_MOUSE is not set 56# CONFIG_INPUT_MOUSE is not set
57# CONFIG_SERIO is not set 57# CONFIG_SERIO is not set
58# CONFIG_VT is not set
59# CONFIG_LEGACY_PTYS is not set 58# CONFIG_LEGACY_PTYS is not set
60# CONFIG_DEVKMEM is not set 59# CONFIG_DEVKMEM is not set
61CONFIG_SERIAL_AMBA_PL011=y 60CONFIG_SERIAL_AMBA_PL011=y
62CONFIG_SERIAL_AMBA_PL011_CONSOLE=y 61CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
63CONFIG_TTY_PRINTK=y 62CONFIG_TTY_PRINTK=y
64CONFIG_HW_RANDOM=y
65CONFIG_HW_RANDOM_BCM2835=y
66CONFIG_I2C=y 63CONFIG_I2C=y
67CONFIG_I2C_CHARDEV=y 64CONFIG_I2C_CHARDEV=y
68CONFIG_I2C_BCM2835=y 65CONFIG_I2C_BCM2835=y
@@ -70,11 +67,27 @@ CONFIG_SPI=y
70CONFIG_SPI_BCM2835=y 67CONFIG_SPI_BCM2835=y
71CONFIG_GPIO_SYSFS=y 68CONFIG_GPIO_SYSFS=y
72# CONFIG_HWMON is not set 69# CONFIG_HWMON is not set
70CONFIG_FB=y
71CONFIG_FB_SIMPLE=y
72CONFIG_FRAMEBUFFER_CONSOLE=y
73CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
73# CONFIG_USB_SUPPORT is not set 74# CONFIG_USB_SUPPORT is not set
74CONFIG_MMC=y 75CONFIG_MMC=y
75CONFIG_MMC_SDHCI=y 76CONFIG_MMC_SDHCI=y
76CONFIG_MMC_SDHCI_PLTFM=y 77CONFIG_MMC_SDHCI_PLTFM=y
77CONFIG_MMC_SDHCI_BCM2835=y 78CONFIG_MMC_SDHCI_BCM2835=y
79CONFIG_NEW_LEDS=y
80CONFIG_LEDS_CLASS=y
81CONFIG_LEDS_GPIO=y
82CONFIG_LEDS_TRIGGERS=y
83CONFIG_LEDS_TRIGGER_TIMER=y
84CONFIG_LEDS_TRIGGER_ONESHOT=y
85CONFIG_LEDS_TRIGGER_HEARTBEAT=y
86CONFIG_LEDS_TRIGGER_CPU=y
87CONFIG_LEDS_TRIGGER_GPIO=y
88CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
89CONFIG_LEDS_TRIGGER_TRANSIENT=y
90CONFIG_LEDS_TRIGGER_CAMERA=y
78# CONFIG_IOMMU_SUPPORT is not set 91# CONFIG_IOMMU_SUPPORT is not set
79CONFIG_EXT2_FS=y 92CONFIG_EXT2_FS=y
80CONFIG_EXT2_FS_XATTR=y 93CONFIG_EXT2_FS_XATTR=y
diff --git a/arch/arm/configs/bockw_defconfig b/arch/arm/configs/bockw_defconfig
index 6524cdf3b08d..845f5cdf62b5 100644
--- a/arch/arm/configs/bockw_defconfig
+++ b/arch/arm/configs/bockw_defconfig
@@ -31,6 +31,7 @@ CONFIG_CMDLINE="console=ttySC0,115200 ignore_loglevel root=/dev/nfs ip=dhcp"
31CONFIG_CMDLINE_FORCE=y 31CONFIG_CMDLINE_FORCE=y
32# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 32# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
33# CONFIG_SUSPEND is not set 33# CONFIG_SUSPEND is not set
34CONFIG_PM_RUNTIME=y
34CONFIG_NET=y 35CONFIG_NET=y
35CONFIG_UNIX=y 36CONFIG_UNIX=y
36CONFIG_INET=y 37CONFIG_INET=y
@@ -48,6 +49,14 @@ CONFIG_DEVTMPFS_MOUNT=y
48# CONFIG_STANDALONE is not set 49# CONFIG_STANDALONE is not set
49# CONFIG_PREVENT_FIRMWARE_BUILD is not set 50# CONFIG_PREVENT_FIRMWARE_BUILD is not set
50# CONFIG_FW_LOADER is not set 51# CONFIG_FW_LOADER is not set
52CONFIG_MTD=y
53CONFIG_MTD_CHAR=y
54CONFIG_MTD_BLOCK=y
55CONFIG_MTD_CFI=y
56CONFIG_MTD_CFI_AMDSTD=y
57CONFIG_MTD_M25P80=y
58CONFIG_SCSI=y
59CONFIG_BLK_DEV_SD=y
51CONFIG_NETDEVICES=y 60CONFIG_NETDEVICES=y
52# CONFIG_NET_CADENCE is not set 61# CONFIG_NET_CADENCE is not set
53# CONFIG_NET_VENDOR_BROADCOM is not set 62# CONFIG_NET_VENDOR_BROADCOM is not set
@@ -71,7 +80,23 @@ CONFIG_SERIAL_SH_SCI_NR_UARTS=6
71CONFIG_SERIAL_SH_SCI_CONSOLE=y 80CONFIG_SERIAL_SH_SCI_CONSOLE=y
72# CONFIG_HW_RANDOM is not set 81# CONFIG_HW_RANDOM is not set
73# CONFIG_HWMON is not set 82# CONFIG_HWMON is not set
74# CONFIG_USB_SUPPORT is not set 83CONFIG_I2C=y
84CONFIG_I2C_RCAR=y
85CONFIG_SPI=y
86CONFIG_SPI_SH_HSPI=y
87CONFIG_USB=y
88CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
89CONFIG_USB_EHCI_HCD=y
90CONFIG_USB_OHCI_HCD=y
91CONFIG_USB_OHCI_HCD_PLATFORM=y
92CONFIG_USB_EHCI_HCD_PLATFORM=y
93CONFIG_USB_STORAGE=y
94CONFIG_USB_RCAR_PHY=y
95CONFIG_MMC=y
96CONFIG_MMC_SDHI=y
97CONFIG_MMC_SH_MMCIF=y
98CONFIG_RTC_CLASS=y
99CONFIG_RTC_DRV_RX8581=y
75CONFIG_UIO=y 100CONFIG_UIO=y
76CONFIG_UIO_PDRV_GENIRQ=y 101CONFIG_UIO_PDRV_GENIRQ=y
77# CONFIG_IOMMU_SUPPORT is not set 102# CONFIG_IOMMU_SUPPORT is not set
diff --git a/arch/arm/configs/kzm9g_defconfig b/arch/arm/configs/kzm9g_defconfig
index f6e585b353a4..1ad028023a64 100644
--- a/arch/arm/configs/kzm9g_defconfig
+++ b/arch/arm/configs/kzm9g_defconfig
@@ -84,9 +84,12 @@ CONFIG_I2C_CHARDEV=y
84CONFIG_I2C_SH_MOBILE=y 84CONFIG_I2C_SH_MOBILE=y
85CONFIG_GPIO_PCF857X=y 85CONFIG_GPIO_PCF857X=y
86# CONFIG_HWMON is not set 86# CONFIG_HWMON is not set
87CONFIG_MFD_AS3711=y
87CONFIG_REGULATOR=y 88CONFIG_REGULATOR=y
89CONFIG_REGULATOR_AS3711=y
88CONFIG_FB=y 90CONFIG_FB=y
89CONFIG_FB_SH_MOBILE_LCDC=y 91CONFIG_FB_SH_MOBILE_LCDC=y
92CONFIG_BACKLIGHT_AS3711=y
90CONFIG_FRAMEBUFFER_CONSOLE=y 93CONFIG_FRAMEBUFFER_CONSOLE=y
91CONFIG_LOGO=y 94CONFIG_LOGO=y
92CONFIG_FB_SH_MOBILE_MERAM=y 95CONFIG_FB_SH_MOBILE_MERAM=y
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index 4aa640106611..340d550c12b0 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -1,6 +1,7 @@
1CONFIG_EXPERIMENTAL=y 1CONFIG_EXPERIMENTAL=y
2CONFIG_NO_HZ=y 2CONFIG_NO_HZ=y
3CONFIG_HIGH_RES_TIMERS=y 3CONFIG_HIGH_RES_TIMERS=y
4CONFIG_BLK_DEV_INITRD=y
4CONFIG_ARCH_MVEBU=y 5CONFIG_ARCH_MVEBU=y
5CONFIG_MACH_ARMADA_370=y 6CONFIG_MACH_ARMADA_370=y
6CONFIG_ARCH_SIRF=y 7CONFIG_ARCH_SIRF=y
@@ -48,6 +49,8 @@ CONFIG_SERIAL_SIRFSOC=y
48CONFIG_SERIAL_SIRFSOC_CONSOLE=y 49CONFIG_SERIAL_SIRFSOC_CONSOLE=y
49CONFIG_SERIAL_VT8500=y 50CONFIG_SERIAL_VT8500=y
50CONFIG_SERIAL_VT8500_CONSOLE=y 51CONFIG_SERIAL_VT8500_CONSOLE=y
52CONFIG_SERIAL_XILINX_PS_UART=y
53CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y
51CONFIG_IPMI_HANDLER=y 54CONFIG_IPMI_HANDLER=y
52CONFIG_IPMI_SI=y 55CONFIG_IPMI_SI=y
53CONFIG_I2C=y 56CONFIG_I2C=y
diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig
index abbe31937c65..2ac0ffb12f03 100644
--- a/arch/arm/configs/omap2plus_defconfig
+++ b/arch/arm/configs/omap2plus_defconfig
@@ -210,6 +210,8 @@ CONFIG_USB_WDM=y
210CONFIG_USB_STORAGE=y 210CONFIG_USB_STORAGE=y
211CONFIG_USB_LIBUSUAL=y 211CONFIG_USB_LIBUSUAL=y
212CONFIG_USB_TEST=y 212CONFIG_USB_TEST=y
213CONFIG_USB_PHY=y
214CONFIG_NOP_USB_XCEIV=y
213CONFIG_USB_GADGET=y 215CONFIG_USB_GADGET=y
214CONFIG_USB_GADGET_DEBUG=y 216CONFIG_USB_GADGET_DEBUG=y
215CONFIG_USB_GADGET_DEBUG_FILES=y 217CONFIG_USB_GADGET_DEBUG_FILES=y
diff --git a/arch/arm/configs/tegra_defconfig b/arch/arm/configs/tegra_defconfig
index f7ba316164d4..1effb43dab80 100644
--- a/arch/arm/configs/tegra_defconfig
+++ b/arch/arm/configs/tegra_defconfig
@@ -21,8 +21,8 @@ CONFIG_MODULE_FORCE_UNLOAD=y
21CONFIG_PARTITION_ADVANCED=y 21CONFIG_PARTITION_ADVANCED=y
22# CONFIG_IOSCHED_DEADLINE is not set 22# CONFIG_IOSCHED_DEADLINE is not set
23# CONFIG_IOSCHED_CFQ is not set 23# CONFIG_IOSCHED_CFQ is not set
24CONFIG_ARCH_TEGRA=y
25CONFIG_GPIO_PCA953X=y 24CONFIG_GPIO_PCA953X=y
25CONFIG_ARCH_TEGRA=y
26CONFIG_ARCH_TEGRA_2x_SOC=y 26CONFIG_ARCH_TEGRA_2x_SOC=y
27CONFIG_ARCH_TEGRA_3x_SOC=y 27CONFIG_ARCH_TEGRA_3x_SOC=y
28CONFIG_ARCH_TEGRA_114_SOC=y 28CONFIG_ARCH_TEGRA_114_SOC=y
@@ -36,7 +36,6 @@ CONFIG_HIGHMEM=y
36CONFIG_ZBOOT_ROM_TEXT=0x0 36CONFIG_ZBOOT_ROM_TEXT=0x0
37CONFIG_ZBOOT_ROM_BSS=0x0 37CONFIG_ZBOOT_ROM_BSS=0x0
38CONFIG_KEXEC=y 38CONFIG_KEXEC=y
39CONFIG_AUTO_ZRELADDR=y
40CONFIG_CPU_FREQ=y 39CONFIG_CPU_FREQ=y
41CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y 40CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
42CONFIG_CPU_IDLE=y 41CONFIG_CPU_IDLE=y
@@ -81,7 +80,6 @@ CONFIG_DEVTMPFS_MOUNT=y
81# CONFIG_FIRMWARE_IN_KERNEL is not set 80# CONFIG_FIRMWARE_IN_KERNEL is not set
82CONFIG_CMA=y 81CONFIG_CMA=y
83CONFIG_MTD=y 82CONFIG_MTD=y
84CONFIG_MTD_CHAR=y
85CONFIG_MTD_M25P80=y 83CONFIG_MTD_M25P80=y
86CONFIG_PROC_DEVICETREE=y 84CONFIG_PROC_DEVICETREE=y
87CONFIG_BLK_DEV_LOOP=y 85CONFIG_BLK_DEV_LOOP=y
@@ -105,8 +103,8 @@ CONFIG_BRCMFMAC=m
105CONFIG_RT2X00=y 103CONFIG_RT2X00=y
106CONFIG_RT2800USB=m 104CONFIG_RT2800USB=m
107CONFIG_INPUT_EVDEV=y 105CONFIG_INPUT_EVDEV=y
108CONFIG_KEYBOARD_TEGRA=y
109CONFIG_KEYBOARD_GPIO=y 106CONFIG_KEYBOARD_GPIO=y
107CONFIG_KEYBOARD_TEGRA=y
110CONFIG_INPUT_MISC=y 108CONFIG_INPUT_MISC=y
111CONFIG_INPUT_MPU3050=y 109CONFIG_INPUT_MPU3050=y
112# CONFIG_LEGACY_PTYS is not set 110# CONFIG_LEGACY_PTYS is not set
@@ -121,6 +119,7 @@ CONFIG_I2C_MUX=y
121CONFIG_I2C_MUX_PINCTRL=y 119CONFIG_I2C_MUX_PINCTRL=y
122CONFIG_I2C_TEGRA=y 120CONFIG_I2C_TEGRA=y
123CONFIG_SPI=y 121CONFIG_SPI=y
122CONFIG_SPI_TEGRA114=y
124CONFIG_SPI_TEGRA20_SFLASH=y 123CONFIG_SPI_TEGRA20_SFLASH=y
125CONFIG_SPI_TEGRA20_SLINK=y 124CONFIG_SPI_TEGRA20_SLINK=y
126CONFIG_GPIO_PCA953X_IRQ=y 125CONFIG_GPIO_PCA953X_IRQ=y
@@ -129,14 +128,15 @@ CONFIG_GPIO_TPS6586X=y
129CONFIG_GPIO_TPS65910=y 128CONFIG_GPIO_TPS65910=y
130CONFIG_POWER_SUPPLY=y 129CONFIG_POWER_SUPPLY=y
131CONFIG_BATTERY_SBS=y 130CONFIG_BATTERY_SBS=y
131CONFIG_CHARGER_TPS65090=y
132CONFIG_POWER_RESET=y 132CONFIG_POWER_RESET=y
133CONFIG_POWER_RESET_GPIO=y 133CONFIG_POWER_RESET_GPIO=y
134CONFIG_SENSORS_LM90=y 134CONFIG_SENSORS_LM90=y
135CONFIG_MFD_TPS6586X=y
136CONFIG_MFD_TPS65910=y
137CONFIG_MFD_MAX8907=y 135CONFIG_MFD_MAX8907=y
138CONFIG_MFD_TPS65090=y
139CONFIG_MFD_PALMAS=y 136CONFIG_MFD_PALMAS=y
137CONFIG_MFD_TPS65090=y
138CONFIG_MFD_TPS6586X=y
139CONFIG_MFD_TPS65910=y
140CONFIG_REGULATOR=y 140CONFIG_REGULATOR=y
141CONFIG_REGULATOR_FIXED_VOLTAGE=y 141CONFIG_REGULATOR_FIXED_VOLTAGE=y
142CONFIG_REGULATOR_VIRTUAL_CONSUMER=y 142CONFIG_REGULATOR_VIRTUAL_CONSUMER=y
@@ -171,6 +171,7 @@ CONFIG_SND=y
171# CONFIG_SND_USB is not set 171# CONFIG_SND_USB is not set
172CONFIG_SND_SOC=y 172CONFIG_SND_SOC=y
173CONFIG_SND_SOC_TEGRA=y 173CONFIG_SND_SOC_TEGRA=y
174CONFIG_SND_SOC_TEGRA_RT5640=y
174CONFIG_SND_SOC_TEGRA_WM8753=y 175CONFIG_SND_SOC_TEGRA_WM8753=y
175CONFIG_SND_SOC_TEGRA_WM8903=y 176CONFIG_SND_SOC_TEGRA_WM8903=y
176CONFIG_SND_SOC_TEGRA_TRIMSLICE=y 177CONFIG_SND_SOC_TEGRA_TRIMSLICE=y
@@ -190,7 +191,13 @@ CONFIG_NEW_LEDS=y
190CONFIG_LEDS_CLASS=y 191CONFIG_LEDS_CLASS=y
191CONFIG_LEDS_GPIO=y 192CONFIG_LEDS_GPIO=y
192CONFIG_LEDS_TRIGGERS=y 193CONFIG_LEDS_TRIGGERS=y
194CONFIG_LEDS_TRIGGER_TIMER=y
195CONFIG_LEDS_TRIGGER_ONESHOT=y
196CONFIG_LEDS_TRIGGER_HEARTBEAT=y
193CONFIG_LEDS_TRIGGER_GPIO=y 197CONFIG_LEDS_TRIGGER_GPIO=y
198CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
199CONFIG_LEDS_TRIGGER_TRANSIENT=y
200CONFIG_LEDS_TRIGGER_CAMERA=y
194CONFIG_RTC_CLASS=y 201CONFIG_RTC_CLASS=y
195CONFIG_RTC_DRV_MAX8907=y 202CONFIG_RTC_DRV_MAX8907=y
196CONFIG_RTC_DRV_PALMAS=y 203CONFIG_RTC_DRV_PALMAS=y
@@ -203,7 +210,6 @@ CONFIG_TEGRA20_APB_DMA=y
203CONFIG_STAGING=y 210CONFIG_STAGING=y
204CONFIG_SENSORS_ISL29018=y 211CONFIG_SENSORS_ISL29018=y
205CONFIG_SENSORS_ISL29028=y 212CONFIG_SENSORS_ISL29028=y
206CONFIG_AK8975=y
207CONFIG_MFD_NVEC=y 213CONFIG_MFD_NVEC=y
208CONFIG_KEYBOARD_NVEC=y 214CONFIG_KEYBOARD_NVEC=y
209CONFIG_SERIO_NVEC_PS2=y 215CONFIG_SERIO_NVEC_PS2=y
@@ -213,6 +219,7 @@ CONFIG_TEGRA_IOMMU_GART=y
213CONFIG_TEGRA_IOMMU_SMMU=y 219CONFIG_TEGRA_IOMMU_SMMU=y
214CONFIG_MEMORY=y 220CONFIG_MEMORY=y
215CONFIG_IIO=y 221CONFIG_IIO=y
222CONFIG_AK8975=y
216CONFIG_PWM=y 223CONFIG_PWM=y
217CONFIG_PWM_TEGRA=y 224CONFIG_PWM_TEGRA=y
218CONFIG_EXT2_FS=y 225CONFIG_EXT2_FS=y
diff --git a/arch/arm/mach-kirkwood/Kconfig b/arch/arm/mach-kirkwood/Kconfig
index e610e137aa36..b634f9650a7b 100644
--- a/arch/arm/mach-kirkwood/Kconfig
+++ b/arch/arm/mach-kirkwood/Kconfig
@@ -227,6 +227,7 @@ config MACH_KM_KIRKWOOD_DT
227config MACH_LSXL_DT 227config MACH_LSXL_DT
228 bool "Buffalo Linkstation LS-XHL, LS-CHLv2 (Flattened Device Tree)" 228 bool "Buffalo Linkstation LS-XHL, LS-CHLv2 (Flattened Device Tree)"
229 select ARCH_KIRKWOOD_DT 229 select ARCH_KIRKWOOD_DT
230 select POWER_RESET_RESTART
230 help 231 help
231 Say 'Y' here if you want your kernel to support the 232 Say 'Y' here if you want your kernel to support the
232 Buffalo Linkstation LS-XHL & LS-CHLv2 devices, using 233 Buffalo Linkstation LS-XHL & LS-CHLv2 devices, using
@@ -288,6 +289,13 @@ config MACH_READYNAS_DT
288 Say 'Y' here if you want your kernel to support the 289 Say 'Y' here if you want your kernel to support the
289 NETGEAR ReadyNAS Duo v2 using Fattened Device Tree. 290 NETGEAR ReadyNAS Duo v2 using Fattened Device Tree.
290 291
292config MACH_SHEEVAPLUG_DT
293 bool "Marvell (eSATA) SheevaPlug (Flattened Device Tree)"
294 select ARCH_KIRKWOOD_DT
295 help
296 Say 'Y' here if you want your kernel to support the
297 Marvell (eSATA) SheevaPlug (Flattened Device Tree).
298
291config MACH_TOPKICK_DT 299config MACH_TOPKICK_DT
292 bool "USI Topkick (Flattened Device Tree)" 300 bool "USI Topkick (Flattened Device Tree)"
293 select ARCH_KIRKWOOD_DT 301 select ARCH_KIRKWOOD_DT
@@ -300,6 +308,7 @@ config MACH_TS219_DT
300 select ARCH_KIRKWOOD_DT 308 select ARCH_KIRKWOOD_DT
301 select ARM_APPENDED_DTB 309 select ARM_APPENDED_DTB
302 select ARM_ATAG_DTB_COMPAT 310 select ARM_ATAG_DTB_COMPAT
311 select POWER_RESET_QNAP
303 help 312 help
304 Say 'Y' here if you want your kernel to support the QNAP 313 Say 'Y' here if you want your kernel to support the QNAP
305 TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and 314 TS-110, TS-119, TS-119P+, TS-210, TS-219, TS-219P and
diff --git a/arch/arm/mach-kirkwood/Makefile b/arch/arm/mach-kirkwood/Makefile
index 2fdc3a7ad226..ac4cd75dd499 100644
--- a/arch/arm/mach-kirkwood/Makefile
+++ b/arch/arm/mach-kirkwood/Makefile
@@ -39,5 +39,6 @@ obj-$(CONFIG_MACH_NETSPACE_MINI_V2_DT) += board-ns2.o
39obj-$(CONFIG_MACH_NETSPACE_V2_DT) += board-ns2.o 39obj-$(CONFIG_MACH_NETSPACE_V2_DT) += board-ns2.o
40obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o 40obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o
41obj-$(CONFIG_MACH_READYNAS_DT) += board-readynas.o 41obj-$(CONFIG_MACH_READYNAS_DT) += board-readynas.o
42obj-$(CONFIG_MACH_SHEEVAPLUG_DT) += board-sheevaplug.o
42obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o 43obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o
43obj-$(CONFIG_MACH_TS219_DT) += board-ts219.o tsx1x-common.o 44obj-$(CONFIG_MACH_TS219_DT) += board-ts219.o tsx1x-common.o
diff --git a/arch/arm/mach-kirkwood/board-dt.c b/arch/arm/mach-kirkwood/board-dt.c
index cee5dc71cb60..6e122ed3282f 100644
--- a/arch/arm/mach-kirkwood/board-dt.c
+++ b/arch/arm/mach-kirkwood/board-dt.c
@@ -108,6 +108,9 @@ static void __init kirkwood_dt_init(void)
108 if (of_machine_is_compatible("globalscale,guruplug")) 108 if (of_machine_is_compatible("globalscale,guruplug"))
109 guruplug_dt_init(); 109 guruplug_dt_init();
110 110
111 if (of_machine_is_compatible("globalscale,sheevaplug"))
112 sheevaplug_dt_init();
113
111 if (of_machine_is_compatible("dlink,dns-kirkwood")) 114 if (of_machine_is_compatible("dlink,dns-kirkwood"))
112 dnskw_init(); 115 dnskw_init();
113 116
@@ -165,6 +168,7 @@ static void __init kirkwood_dt_init(void)
165static const char * const kirkwood_dt_board_compat[] = { 168static const char * const kirkwood_dt_board_compat[] = {
166 "globalscale,dreamplug", 169 "globalscale,dreamplug",
167 "globalscale,guruplug", 170 "globalscale,guruplug",
171 "globalscale,sheevaplug",
168 "dlink,dns-320", 172 "dlink,dns-320",
169 "dlink,dns-325", 173 "dlink,dns-325",
170 "iom,iconnect", 174 "iom,iconnect",
diff --git a/arch/arm/mach-kirkwood/board-lsxl.c b/arch/arm/mach-kirkwood/board-lsxl.c
index 4ec8b7ae784a..348395238df6 100644
--- a/arch/arm/mach-kirkwood/board-lsxl.c
+++ b/arch/arm/mach-kirkwood/board-lsxl.c
@@ -25,19 +25,6 @@ static struct mv643xx_eth_platform_data lsxl_ge01_data = {
25 .phy_addr = MV643XX_ETH_PHY_ADDR(8), 25 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
26}; 26};
27 27
28/*
29 * On the LS-XHL/LS-CHLv2, the shutdown process is following:
30 * - Userland monitors key events until the power switch goes to off position
31 * - The board reboots
32 * - U-boot starts and goes into an idle mode waiting for the user
33 * to move the switch to ON position
34 *
35 */
36static void lsxl_power_off(void)
37{
38 kirkwood_restart('h', NULL);
39}
40
41void __init lsxl_init(void) 28void __init lsxl_init(void)
42{ 29{
43 /* 30 /*
@@ -46,7 +33,4 @@ void __init lsxl_init(void)
46 33
47 kirkwood_ge00_init(&lsxl_ge00_data); 34 kirkwood_ge00_init(&lsxl_ge00_data);
48 kirkwood_ge01_init(&lsxl_ge01_data); 35 kirkwood_ge01_init(&lsxl_ge01_data);
49
50 /* register power-off method */
51 pm_power_off = lsxl_power_off;
52} 36}
diff --git a/arch/arm/mach-kirkwood/board-sheevaplug.c b/arch/arm/mach-kirkwood/board-sheevaplug.c
new file mode 100644
index 000000000000..fa389373ca74
--- /dev/null
+++ b/arch/arm/mach-kirkwood/board-sheevaplug.c
@@ -0,0 +1,27 @@
1/*
2 * arch/arm/mach-kirkwood/board-sheevaplug.c
3 *
4 * Marvell Sheevaplug Reference Board Init for drivers not converted to
5 * flattened device tree yet.
6 *
7 * This file is licensed under the terms of the GNU General Public
8 * License version 2. This program is licensed "as is" without any
9 * warranty of any kind, whether express or implied.
10 */
11
12#include <linux/kernel.h>
13#include <linux/init.h>
14#include <linux/mv643xx_eth.h>
15#include "common.h"
16
17static struct mv643xx_eth_platform_data sheevaplug_ge00_data = {
18 .phy_addr = MV643XX_ETH_PHY_ADDR(0),
19};
20
21void __init sheevaplug_dt_init(void)
22{
23 /*
24 * Basic setup. Needs to be called early.
25 */
26 kirkwood_ge00_init(&sheevaplug_ge00_data);
27}
diff --git a/arch/arm/mach-kirkwood/board-ts219.c b/arch/arm/mach-kirkwood/board-ts219.c
index 4695d5f35fc9..860f44ab457d 100644
--- a/arch/arm/mach-kirkwood/board-ts219.c
+++ b/arch/arm/mach-kirkwood/board-ts219.c
@@ -23,7 +23,6 @@
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24#include <mach/kirkwood.h> 24#include <mach/kirkwood.h>
25#include "common.h" 25#include "common.h"
26#include "tsx1x-common.h"
27 26
28static struct mv643xx_eth_platform_data qnap_ts219_ge00_data = { 27static struct mv643xx_eth_platform_data qnap_ts219_ge00_data = {
29 .phy_addr = MV643XX_ETH_PHY_ADDR(8), 28 .phy_addr = MV643XX_ETH_PHY_ADDR(8),
@@ -38,6 +37,4 @@ void __init qnap_dt_ts219_init(void)
38 qnap_ts219_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0); 37 qnap_ts219_ge00_data.phy_addr = MV643XX_ETH_PHY_ADDR(0);
39 38
40 kirkwood_ge00_init(&qnap_ts219_ge00_data); 39 kirkwood_ge00_init(&qnap_ts219_ge00_data);
41
42 pm_power_off = qnap_tsx1x_power_off;
43} 40}
diff --git a/arch/arm/mach-kirkwood/common.h b/arch/arm/mach-kirkwood/common.h
index e2e19b302c28..1c09f3f93fbb 100644
--- a/arch/arm/mach-kirkwood/common.h
+++ b/arch/arm/mach-kirkwood/common.h
@@ -67,6 +67,11 @@ void guruplug_dt_init(void);
67#else 67#else
68static inline void guruplug_dt_init(void) {}; 68static inline void guruplug_dt_init(void) {};
69#endif 69#endif
70#ifdef CONFIG_MACH_SHEEVAPLUG_DT
71void sheevaplug_dt_init(void);
72#else
73static inline void sheevaplug_dt_init(void) {};
74#endif
70#ifdef CONFIG_MACH_TS219_DT 75#ifdef CONFIG_MACH_TS219_DT
71void qnap_dt_ts219_init(void); 76void qnap_dt_ts219_init(void);
72#else 77#else
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c
index 62a15e289c79..91449c5cb70f 100644
--- a/arch/arm/mach-omap1/board-nokia770.c
+++ b/arch/arm/mach-omap1/board-nokia770.c
@@ -234,16 +234,26 @@ static struct i2c_board_info nokia770_i2c_board_info_2[] __initdata = {
234 { 234 {
235 I2C_BOARD_INFO("retu-mfd", 0x01), 235 I2C_BOARD_INFO("retu-mfd", 0x01),
236 }, 236 },
237 {
238 I2C_BOARD_INFO("tahvo-mfd", 0x02),
239 },
237}; 240};
238 241
239static void __init nokia770_cbus_init(void) 242static void __init nokia770_cbus_init(void)
240{ 243{
241 const int retu_irq_gpio = 62; 244 const int retu_irq_gpio = 62;
245 const int tahvo_irq_gpio = 40;
242 246
243 if (gpio_request_one(retu_irq_gpio, GPIOF_IN, "Retu IRQ")) 247 if (gpio_request_one(retu_irq_gpio, GPIOF_IN, "Retu IRQ"))
244 return; 248 return;
249 if (gpio_request_one(tahvo_irq_gpio, GPIOF_IN, "Tahvo IRQ")) {
250 gpio_free(retu_irq_gpio);
251 return;
252 }
245 irq_set_irq_type(gpio_to_irq(retu_irq_gpio), IRQ_TYPE_EDGE_RISING); 253 irq_set_irq_type(gpio_to_irq(retu_irq_gpio), IRQ_TYPE_EDGE_RISING);
254 irq_set_irq_type(gpio_to_irq(tahvo_irq_gpio), IRQ_TYPE_EDGE_RISING);
246 nokia770_i2c_board_info_2[0].irq = gpio_to_irq(retu_irq_gpio); 255 nokia770_i2c_board_info_2[0].irq = gpio_to_irq(retu_irq_gpio);
256 nokia770_i2c_board_info_2[1].irq = gpio_to_irq(tahvo_irq_gpio);
247 i2c_register_board_info(2, nokia770_i2c_board_info_2, 257 i2c_register_board_info(2, nokia770_i2c_board_info_2,
248 ARRAY_SIZE(nokia770_i2c_board_info_2)); 258 ARRAY_SIZE(nokia770_i2c_board_info_2));
249 platform_device_register(&nokia770_cbus_device); 259 platform_device_register(&nokia770_cbus_device);
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
index f76d0de7b406..8c026269baca 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -174,6 +174,7 @@ static struct panel_sharp_ls037v7dw01_data omap3_evm_lcd_data = {
174 .ud_gpio = OMAP3EVM_LCD_PANEL_UD, 174 .ud_gpio = OMAP3EVM_LCD_PANEL_UD,
175}; 175};
176 176
177#ifdef CONFIG_BROKEN
177static void __init omap3_evm_display_init(void) 178static void __init omap3_evm_display_init(void)
178{ 179{
179 int r; 180 int r;
@@ -193,6 +194,7 @@ static void __init omap3_evm_display_init(void)
193 else 194 else
194 gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1); 195 gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1);
195} 196}
197#endif
196 198
197static struct omap_dss_device omap3_evm_lcd_device = { 199static struct omap_dss_device omap3_evm_lcd_device = {
198 .name = "lcd", 200 .name = "lcd",
@@ -715,7 +717,9 @@ static void __init omap3_evm_init(void)
715 717
716 omap_ads7846_init(1, OMAP3_EVM_TS_GPIO, 310, NULL); 718 omap_ads7846_init(1, OMAP3_EVM_TS_GPIO, 310, NULL);
717 omap3evm_init_smsc911x(); 719 omap3evm_init_smsc911x();
720#ifdef CONFIG_BROKEN
718 omap3_evm_display_init(); 721 omap3_evm_display_init();
722#endif
719 omap3_evm_wl12xx_init(); 723 omap3_evm_wl12xx_init();
720 omap_twl4030_audio_init("omap3evm", NULL); 724 omap_twl4030_audio_init("omap3evm", NULL);
721} 725}
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index 4ca6b680aa72..5748b5d06c23 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -68,6 +68,7 @@
68 68
69#define OVERO_SMSC911X_CS 5 69#define OVERO_SMSC911X_CS 5
70#define OVERO_SMSC911X_GPIO 176 70#define OVERO_SMSC911X_GPIO 176
71#define OVERO_SMSC911X_NRESET 64
71#define OVERO_SMSC911X2_CS 4 72#define OVERO_SMSC911X2_CS 4
72#define OVERO_SMSC911X2_GPIO 65 73#define OVERO_SMSC911X2_GPIO 65
73 74
@@ -122,7 +123,7 @@ static struct omap_smsc911x_platform_data smsc911x_cfg = {
122 .id = 0, 123 .id = 0,
123 .cs = OVERO_SMSC911X_CS, 124 .cs = OVERO_SMSC911X_CS,
124 .gpio_irq = OVERO_SMSC911X_GPIO, 125 .gpio_irq = OVERO_SMSC911X_GPIO,
125 .gpio_reset = -EINVAL, 126 .gpio_reset = OVERO_SMSC911X_NRESET,
126 .flags = SMSC911X_USE_32BIT, 127 .flags = SMSC911X_USE_32BIT,
127}; 128};
128 129
diff --git a/arch/arm/mach-shmobile/board-ape6evm.c b/arch/arm/mach-shmobile/board-ape6evm.c
index 55b8c9fef954..5eb0caa6a7d0 100644
--- a/arch/arm/mach-shmobile/board-ape6evm.c
+++ b/arch/arm/mach-shmobile/board-ape6evm.c
@@ -26,6 +26,7 @@
26#include <linux/platform_device.h> 26#include <linux/platform_device.h>
27#include <linux/regulator/fixed.h> 27#include <linux/regulator/fixed.h>
28#include <linux/regulator/machine.h> 28#include <linux/regulator/machine.h>
29#include <linux/sh_clk.h>
29#include <linux/smsc911x.h> 30#include <linux/smsc911x.h>
30#include <mach/common.h> 31#include <mach/common.h>
31#include <mach/irqs.h> 32#include <mach/irqs.h>
@@ -65,7 +66,21 @@ static const struct pinctrl_map ape6evm_pinctrl_map[] = {
65 66
66static void __init ape6evm_add_standard_devices(void) 67static void __init ape6evm_add_standard_devices(void)
67{ 68{
69
70 struct clk *parent;
71 struct clk *mp;
72
68 r8a73a4_clock_init(); 73 r8a73a4_clock_init();
74
75 /* MP clock parent = extal2 */
76 parent = clk_get(NULL, "extal2");
77 mp = clk_get(NULL, "mp");
78 BUG_ON(IS_ERR(parent) || IS_ERR(mp));
79
80 clk_set_parent(mp, parent);
81 clk_put(parent);
82 clk_put(mp);
83
69 pinctrl_register_mappings(ape6evm_pinctrl_map, 84 pinctrl_register_mappings(ape6evm_pinctrl_map,
70 ARRAY_SIZE(ape6evm_pinctrl_map)); 85 ARRAY_SIZE(ape6evm_pinctrl_map));
71 r8a73a4_pinmux_init(); 86 r8a73a4_pinmux_init();
diff --git a/arch/arm/mach-shmobile/board-bockw.c b/arch/arm/mach-shmobile/board-bockw.c
index 7ed2401b899c..d5554646916c 100644
--- a/arch/arm/mach-shmobile/board-bockw.c
+++ b/arch/arm/mach-shmobile/board-bockw.c
@@ -18,14 +18,52 @@
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */ 19 */
20 20
21#include <linux/mfd/tmio.h>
22#include <linux/mmc/host.h>
23#include <linux/mtd/partitions.h>
21#include <linux/pinctrl/machine.h> 24#include <linux/pinctrl/machine.h>
22#include <linux/platform_device.h> 25#include <linux/platform_device.h>
26#include <linux/regulator/fixed.h>
27#include <linux/regulator/machine.h>
23#include <linux/smsc911x.h> 28#include <linux/smsc911x.h>
29#include <linux/spi/spi.h>
30#include <linux/spi/flash.h>
24#include <mach/common.h> 31#include <mach/common.h>
25#include <mach/irqs.h> 32#include <mach/irqs.h>
26#include <mach/r8a7778.h> 33#include <mach/r8a7778.h>
27#include <asm/mach/arch.h> 34#include <asm/mach/arch.h>
28 35
36/*
37 * CN9(Upper side) SCIF/RCAN selection
38 *
39 * 1,4 3,6
40 * SW40 SCIF RCAN
41 * SW41 SCIF RCAN
42 */
43
44/*
45 * MMC (CN26) pin
46 *
47 * SW6 (D2) 3 pin
48 * SW7 (D5) ON
49 * SW8 (D3) 3 pin
50 * SW10 (D4) 1 pin
51 * SW12 (CLK) 1 pin
52 * SW13 (D6) 3 pin
53 * SW14 (CMD) ON
54 * SW15 (D6) 1 pin
55 * SW16 (D0) ON
56 * SW17 (D1) ON
57 * SW18 (D7) 3 pin
58 * SW19 (MMC) 1 pin
59 */
60
61/* Dummy supplies, where voltage doesn't matter */
62static struct regulator_consumer_supply dummy_supplies[] = {
63 REGULATOR_SUPPLY("vddvario", "smsc911x"),
64 REGULATOR_SUPPLY("vdd33a", "smsc911x"),
65};
66
29static struct smsc911x_platform_config smsc911x_data = { 67static struct smsc911x_platform_config smsc911x_data = {
30 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW, 68 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
31 .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL, 69 .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
@@ -38,36 +76,128 @@ static struct resource smsc911x_resources[] = {
38 DEFINE_RES_IRQ(irq_pin(0)), /* IRQ 0 */ 76 DEFINE_RES_IRQ(irq_pin(0)), /* IRQ 0 */
39}; 77};
40 78
79/* USB */
41static struct rcar_phy_platform_data usb_phy_platform_data __initdata; 80static struct rcar_phy_platform_data usb_phy_platform_data __initdata;
42 81
82/* SDHI */
83static struct sh_mobile_sdhi_info sdhi0_info = {
84 .tmio_caps = MMC_CAP_SD_HIGHSPEED,
85 .tmio_ocr_mask = MMC_VDD_165_195 | MMC_VDD_32_33 | MMC_VDD_33_34,
86 .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT,
87};
88
89static struct sh_eth_plat_data ether_platform_data __initdata = {
90 .phy = 0x01,
91 .edmac_endian = EDMAC_LITTLE_ENDIAN,
92 .register_type = SH_ETH_REG_FAST_RCAR,
93 .phy_interface = PHY_INTERFACE_MODE_RMII,
94 /*
95 * Although the LINK signal is available on the board, it's connected to
96 * the link/activity LED output of the PHY, thus the link disappears and
97 * reappears after each packet. We'd be better off ignoring such signal
98 * and getting the link state from the PHY indirectly.
99 */
100 .no_ether_link = 1,
101};
102
103/* I2C */
104static struct i2c_board_info i2c0_devices[] = {
105 {
106 I2C_BOARD_INFO("rx8581", 0x51),
107 },
108};
109
110/* HSPI*/
111static struct mtd_partition m25p80_spi_flash_partitions[] = {
112 {
113 .name = "data(spi)",
114 .size = 0x0100000,
115 .offset = 0,
116 },
117};
118
119static struct flash_platform_data spi_flash_data = {
120 .name = "m25p80",
121 .type = "s25fl008k",
122 .parts = m25p80_spi_flash_partitions,
123 .nr_parts = ARRAY_SIZE(m25p80_spi_flash_partitions),
124};
125
126static struct spi_board_info spi_board_info[] __initdata = {
127 {
128 .modalias = "m25p80",
129 .max_speed_hz = 104000000,
130 .chip_select = 0,
131 .bus_num = 0,
132 .mode = SPI_MODE_0,
133 .platform_data = &spi_flash_data,
134 },
135};
136
137/* MMC */
138static struct sh_mmcif_plat_data sh_mmcif_plat = {
139 .sup_pclk = 0,
140 .ocr = MMC_VDD_165_195 | MMC_VDD_32_33 | MMC_VDD_33_34,
141 .caps = MMC_CAP_4_BIT_DATA |
142 MMC_CAP_8_BIT_DATA |
143 MMC_CAP_NEEDS_POLL,
144};
145
43static const struct pinctrl_map bockw_pinctrl_map[] = { 146static const struct pinctrl_map bockw_pinctrl_map[] = {
147 /* Ether */
148 PIN_MAP_MUX_GROUP_DEFAULT("r8a777x-ether", "pfc-r8a7778",
149 "ether_rmii", "ether"),
150 /* HSPI0 */
151 PIN_MAP_MUX_GROUP_DEFAULT("sh-hspi.0", "pfc-r8a7778",
152 "hspi0_a", "hspi0"),
153 /* MMC */
154 PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif", "pfc-r8a7778",
155 "mmc_data8", "mmc"),
156 PIN_MAP_MUX_GROUP_DEFAULT("sh_mmcif", "pfc-r8a7778",
157 "mmc_ctrl", "mmc"),
44 /* SCIF0 */ 158 /* SCIF0 */
45 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778", 159 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778",
46 "scif0_data_a", "scif0"), 160 "scif0_data_a", "scif0"),
47 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778", 161 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778",
48 "scif0_ctrl", "scif0"), 162 "scif0_ctrl", "scif0"),
163 /* USB */
49 PIN_MAP_MUX_GROUP_DEFAULT("ehci-platform", "pfc-r8a7778", 164 PIN_MAP_MUX_GROUP_DEFAULT("ehci-platform", "pfc-r8a7778",
50 "usb0", "usb0"), 165 "usb0", "usb0"),
51 PIN_MAP_MUX_GROUP_DEFAULT("ehci-platform", "pfc-r8a7778", 166 PIN_MAP_MUX_GROUP_DEFAULT("ehci-platform", "pfc-r8a7778",
52 "usb1", "usb1"), 167 "usb1", "usb1"),
168 /* SDHI0 */
169 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7778",
170 "sdhi0", "sdhi0"),
53}; 171};
54 172
173#define FPGA 0x18200000
55#define IRQ0MR 0x30 174#define IRQ0MR 0x30
175#define PFC 0xfffc0000
176#define PUPR4 0x110
56static void __init bockw_init(void) 177static void __init bockw_init(void)
57{ 178{
58 void __iomem *fpga; 179 void __iomem *base;
59 180
60 r8a7778_clock_init(); 181 r8a7778_clock_init();
61 r8a7778_init_irq_extpin(1); 182 r8a7778_init_irq_extpin(1);
62 r8a7778_add_standard_devices(); 183 r8a7778_add_standard_devices();
63 r8a7778_add_usb_phy_device(&usb_phy_platform_data); 184 r8a7778_add_usb_phy_device(&usb_phy_platform_data);
185 r8a7778_add_ether_device(&ether_platform_data);
186 r8a7778_add_i2c_device(0);
187 r8a7778_add_hspi_device(0);
188 r8a7778_add_mmc_device(&sh_mmcif_plat);
64 189
190 i2c_register_board_info(0, i2c0_devices,
191 ARRAY_SIZE(i2c0_devices));
192 spi_register_board_info(spi_board_info,
193 ARRAY_SIZE(spi_board_info));
65 pinctrl_register_mappings(bockw_pinctrl_map, 194 pinctrl_register_mappings(bockw_pinctrl_map,
66 ARRAY_SIZE(bockw_pinctrl_map)); 195 ARRAY_SIZE(bockw_pinctrl_map));
67 r8a7778_pinmux_init(); 196 r8a7778_pinmux_init();
68 197
69 fpga = ioremap_nocache(0x18200000, SZ_1M); 198 /* for SMSC */
70 if (fpga) { 199 base = ioremap_nocache(FPGA, SZ_1M);
200 if (base) {
71 /* 201 /*
72 * CAUTION 202 * CAUTION
73 * 203 *
@@ -75,16 +205,33 @@ static void __init bockw_init(void)
75 * it should be cared in the future 205 * it should be cared in the future
76 * Now, it is assuming IRQ0 was used only from SMSC. 206 * Now, it is assuming IRQ0 was used only from SMSC.
77 */ 207 */
78 u16 val = ioread16(fpga + IRQ0MR); 208 u16 val = ioread16(base + IRQ0MR);
79 val &= ~(1 << 4); /* enable SMSC911x */ 209 val &= ~(1 << 4); /* enable SMSC911x */
80 iowrite16(val, fpga + IRQ0MR); 210 iowrite16(val, base + IRQ0MR);
81 iounmap(fpga); 211 iounmap(base);
212
213 regulator_register_fixed(0, dummy_supplies,
214 ARRAY_SIZE(dummy_supplies));
82 215
83 platform_device_register_resndata( 216 platform_device_register_resndata(
84 &platform_bus, "smsc911x", -1, 217 &platform_bus, "smsc911x", -1,
85 smsc911x_resources, ARRAY_SIZE(smsc911x_resources), 218 smsc911x_resources, ARRAY_SIZE(smsc911x_resources),
86 &smsc911x_data, sizeof(smsc911x_data)); 219 &smsc911x_data, sizeof(smsc911x_data));
87 } 220 }
221
222 /* for SDHI */
223 base = ioremap_nocache(PFC, 0x200);
224 if (base) {
225 /*
226 * FIXME
227 *
228 * SDHI CD/WP pin needs pull-up
229 */
230 iowrite32(ioread32(base + PUPR4) | (3 << 26), base + PUPR4);
231 iounmap(base);
232
233 r8a7778_sdhi_init(0, &sdhi0_info);
234 }
88} 235}
89 236
90static const char *bockw_boards_compat_dt[] __initdata = { 237static const char *bockw_boards_compat_dt[] __initdata = {
diff --git a/arch/arm/mach-shmobile/board-kzm9d.c b/arch/arm/mach-shmobile/board-kzm9d.c
index c016ccd92433..4368000e1127 100644
--- a/arch/arm/mach-shmobile/board-kzm9d.c
+++ b/arch/arm/mach-shmobile/board-kzm9d.c
@@ -56,7 +56,7 @@ static struct smsc911x_platform_config smsc911x_platdata = {
56 56
57static struct platform_device smsc91x_device = { 57static struct platform_device smsc91x_device = {
58 .name = "smsc911x", 58 .name = "smsc911x",
59 .id = 0, 59 .id = -1,
60 .dev = { 60 .dev = {
61 .platform_data = &smsc911x_platdata, 61 .platform_data = &smsc911x_platdata,
62 }, 62 },
diff --git a/arch/arm/mach-shmobile/board-kzm9g.c b/arch/arm/mach-shmobile/board-kzm9g.c
index 1fdf05cb6da1..165483c9bee2 100644
--- a/arch/arm/mach-shmobile/board-kzm9g.c
+++ b/arch/arm/mach-shmobile/board-kzm9g.c
@@ -29,6 +29,7 @@
29#include <linux/mmc/host.h> 29#include <linux/mmc/host.h>
30#include <linux/mmc/sh_mmcif.h> 30#include <linux/mmc/sh_mmcif.h>
31#include <linux/mmc/sh_mobile_sdhi.h> 31#include <linux/mmc/sh_mobile_sdhi.h>
32#include <linux/mfd/as3711.h>
32#include <linux/mfd/tmio.h> 33#include <linux/mfd/tmio.h>
33#include <linux/pinctrl/machine.h> 34#include <linux/pinctrl/machine.h>
34#include <linux/pinctrl/pinconf-generic.h> 35#include <linux/pinctrl/pinconf-generic.h>
@@ -606,6 +607,140 @@ static struct platform_device fsi_ak4648_device = {
606}; 607};
607 608
608/* I2C */ 609/* I2C */
610
611/* StepDown1 is used to supply 1.315V to the CPU */
612static struct regulator_init_data as3711_sd1 = {
613 .constraints = {
614 .name = "1.315V CPU",
615 .boot_on = 1,
616 .always_on = 1,
617 .min_uV = 1315000,
618 .max_uV = 1335000,
619 },
620};
621
622/* StepDown2 is used to supply 1.8V to the CPU and to the board */
623static struct regulator_init_data as3711_sd2 = {
624 .constraints = {
625 .name = "1.8V",
626 .boot_on = 1,
627 .always_on = 1,
628 .min_uV = 1800000,
629 .max_uV = 1800000,
630 },
631};
632
633/*
634 * StepDown3 is switched in parallel with StepDown2, seems to be off,
635 * according to read-back pre-set register values
636 */
637
638/* StepDown4 is used to supply 1.215V to the CPU and to the board */
639static struct regulator_init_data as3711_sd4 = {
640 .constraints = {
641 .name = "1.215V",
642 .boot_on = 1,
643 .always_on = 1,
644 .min_uV = 1215000,
645 .max_uV = 1235000,
646 },
647};
648
649/* LDO1 is unused and unconnected */
650
651/* LDO2 is used to supply 2.8V to the CPU */
652static struct regulator_init_data as3711_ldo2 = {
653 .constraints = {
654 .name = "2.8V CPU",
655 .boot_on = 1,
656 .always_on = 1,
657 .min_uV = 2800000,
658 .max_uV = 2800000,
659 },
660};
661
662/* LDO3 is used to supply 3.0V to the CPU */
663static struct regulator_init_data as3711_ldo3 = {
664 .constraints = {
665 .name = "3.0V CPU",
666 .boot_on = 1,
667 .always_on = 1,
668 .min_uV = 3000000,
669 .max_uV = 3000000,
670 },
671};
672
673/* LDO4 is used to supply 2.8V to the board */
674static struct regulator_init_data as3711_ldo4 = {
675 .constraints = {
676 .name = "2.8V",
677 .boot_on = 1,
678 .always_on = 1,
679 .min_uV = 2800000,
680 .max_uV = 2800000,
681 },
682};
683
684/* LDO5 is switched parallel to LDO4, also set to 2.8V */
685static struct regulator_init_data as3711_ldo5 = {
686 .constraints = {
687 .name = "2.8V #2",
688 .boot_on = 1,
689 .always_on = 1,
690 .min_uV = 2800000,
691 .max_uV = 2800000,
692 },
693};
694
695/* LDO6 is unused and unconnected */
696
697/* LDO7 is used to supply 1.15V to the CPU */
698static struct regulator_init_data as3711_ldo7 = {
699 .constraints = {
700 .name = "1.15V CPU",
701 .boot_on = 1,
702 .always_on = 1,
703 .min_uV = 1150000,
704 .max_uV = 1150000,
705 },
706};
707
708/* LDO8 is switched parallel to LDO7, also set to 1.15V */
709static struct regulator_init_data as3711_ldo8 = {
710 .constraints = {
711 .name = "1.15V CPU #2",
712 .boot_on = 1,
713 .always_on = 1,
714 .min_uV = 1150000,
715 .max_uV = 1150000,
716 },
717};
718
719static struct as3711_platform_data as3711_pdata = {
720 .regulator = {
721 .init_data = {
722 [AS3711_REGULATOR_SD_1] = &as3711_sd1,
723 [AS3711_REGULATOR_SD_2] = &as3711_sd2,
724 [AS3711_REGULATOR_SD_4] = &as3711_sd4,
725 [AS3711_REGULATOR_LDO_2] = &as3711_ldo2,
726 [AS3711_REGULATOR_LDO_3] = &as3711_ldo3,
727 [AS3711_REGULATOR_LDO_4] = &as3711_ldo4,
728 [AS3711_REGULATOR_LDO_5] = &as3711_ldo5,
729 [AS3711_REGULATOR_LDO_7] = &as3711_ldo7,
730 [AS3711_REGULATOR_LDO_8] = &as3711_ldo8,
731 },
732 },
733 .backlight = {
734 .su2_fb = "sh_mobile_lcdc_fb.0",
735 .su2_max_uA = 36000,
736 .su2_feedback = AS3711_SU2_CURR_AUTO,
737 .su2_fbprot = AS3711_SU2_GPIO4,
738 .su2_auto_curr1 = true,
739 .su2_auto_curr2 = true,
740 .su2_auto_curr3 = true,
741 },
742};
743
609static struct pcf857x_platform_data pcf8575_pdata = { 744static struct pcf857x_platform_data pcf8575_pdata = {
610 .gpio_base = GPIO_PCF8575_BASE, 745 .gpio_base = GPIO_PCF8575_BASE,
611}; 746};
@@ -625,6 +760,11 @@ static struct i2c_board_info i2c0_devices[] = {
625 I2C_BOARD_INFO("adxl34x", 0x1d), 760 I2C_BOARD_INFO("adxl34x", 0x1d),
626 .irq = irq_pin(26), /* IRQ26 */ 761 .irq = irq_pin(26), /* IRQ26 */
627 }, 762 },
763 {
764 I2C_BOARD_INFO("as3711", 0x40),
765 .irq = intcs_evt2irq(0x3300), /* IRQ24 */
766 .platform_data = &as3711_pdata,
767 },
628}; 768};
629 769
630static struct i2c_board_info i2c1_devices[] = { 770static struct i2c_board_info i2c1_devices[] = {
@@ -715,59 +855,6 @@ static const struct pinctrl_map kzm_pinctrl_map[] = {
715 "usb_vbus", "usb"), 855 "usb_vbus", "usb"),
716}; 856};
717 857
718/*
719 * FIXME
720 *
721 * This is quick hack for enabling LCDC backlight
722 */
723static int __init as3711_enable_lcdc_backlight(void)
724{
725 struct i2c_adapter *a = i2c_get_adapter(0);
726 struct i2c_msg msg;
727 int i, ret;
728 __u8 magic[] = {
729 0x40, 0x2a,
730 0x43, 0x3c,
731 0x44, 0x3c,
732 0x45, 0x3c,
733 0x54, 0x03,
734 0x51, 0x00,
735 0x51, 0x01,
736 0xff, 0x00, /* wait */
737 0x43, 0xf0,
738 0x44, 0xf0,
739 0x45, 0xf0,
740 };
741
742 if (!of_machine_is_compatible("renesas,kzm9g"))
743 return 0;
744
745 if (!a)
746 return 0;
747
748 msg.addr = 0x40;
749 msg.len = 2;
750 msg.flags = 0;
751
752 for (i = 0; i < ARRAY_SIZE(magic); i += 2) {
753 msg.buf = magic + i;
754
755 if (0xff == msg.buf[0]) {
756 udelay(500);
757 continue;
758 }
759
760 ret = i2c_transfer(a, &msg, 1);
761 if (ret < 0) {
762 pr_err("i2c transfer fail\n");
763 break;
764 }
765 }
766
767 return 0;
768}
769device_initcall(as3711_enable_lcdc_backlight);
770
771static void __init kzm_init(void) 858static void __init kzm_init(void)
772{ 859{
773 regulator_register_always_on(2, "fixed-1.8V", fixed1v8_power_consumers, 860 regulator_register_always_on(2, "fixed-1.8V", fixed1v8_power_consumers,
diff --git a/arch/arm/mach-shmobile/board-lager.c b/arch/arm/mach-shmobile/board-lager.c
index 6114edd0a977..d73e21d3ea8a 100644
--- a/arch/arm/mach-shmobile/board-lager.c
+++ b/arch/arm/mach-shmobile/board-lager.c
@@ -18,16 +18,59 @@
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */ 19 */
20 20
21#include <linux/gpio.h>
22#include <linux/gpio_keys.h>
23#include <linux/input.h>
21#include <linux/interrupt.h> 24#include <linux/interrupt.h>
22#include <linux/irqchip.h> 25#include <linux/irqchip.h>
23#include <linux/kernel.h> 26#include <linux/kernel.h>
27#include <linux/leds.h>
24#include <linux/pinctrl/machine.h> 28#include <linux/pinctrl/machine.h>
29#include <linux/platform_data/gpio-rcar.h>
25#include <linux/platform_device.h> 30#include <linux/platform_device.h>
26#include <mach/common.h> 31#include <mach/common.h>
27#include <mach/r8a7790.h> 32#include <mach/r8a7790.h>
28#include <asm/mach-types.h> 33#include <asm/mach-types.h>
29#include <asm/mach/arch.h> 34#include <asm/mach/arch.h>
30 35
36/* LEDS */
37static struct gpio_led lager_leds[] = {
38 {
39 .name = "led8",
40 .gpio = RCAR_GP_PIN(5, 17),
41 .default_state = LEDS_GPIO_DEFSTATE_ON,
42 }, {
43 .name = "led7",
44 .gpio = RCAR_GP_PIN(4, 23),
45 .default_state = LEDS_GPIO_DEFSTATE_ON,
46 }, {
47 .name = "led6",
48 .gpio = RCAR_GP_PIN(4, 22),
49 .default_state = LEDS_GPIO_DEFSTATE_ON,
50 },
51};
52
53static __initdata struct gpio_led_platform_data lager_leds_pdata = {
54 .leds = lager_leds,
55 .num_leds = ARRAY_SIZE(lager_leds),
56};
57
58/* GPIO KEY */
59#define GPIO_KEY(c, g, d, ...) \
60 { .code = c, .gpio = g, .desc = d, .active_low = 1 }
61
62static __initdata struct gpio_keys_button gpio_buttons[] = {
63 GPIO_KEY(KEY_4, RCAR_GP_PIN(1, 28), "SW2-pin4"),
64 GPIO_KEY(KEY_3, RCAR_GP_PIN(1, 26), "SW2-pin3"),
65 GPIO_KEY(KEY_2, RCAR_GP_PIN(1, 24), "SW2-pin2"),
66 GPIO_KEY(KEY_1, RCAR_GP_PIN(1, 14), "SW2-pin1"),
67};
68
69static __initdata struct gpio_keys_platform_data lager_keys_pdata = {
70 .buttons = gpio_buttons,
71 .nbuttons = ARRAY_SIZE(gpio_buttons),
72};
73
31static const struct pinctrl_map lager_pinctrl_map[] = { 74static const struct pinctrl_map lager_pinctrl_map[] = {
32 /* SCIF0 (CN19: DEBUG SERIAL0) */ 75 /* SCIF0 (CN19: DEBUG SERIAL0) */
33 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7790", 76 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7790",
@@ -46,6 +89,12 @@ static void __init lager_add_standard_devices(void)
46 r8a7790_pinmux_init(); 89 r8a7790_pinmux_init();
47 90
48 r8a7790_add_standard_devices(); 91 r8a7790_add_standard_devices();
92 platform_device_register_data(&platform_bus, "leds-gpio", -1,
93 &lager_leds_pdata,
94 sizeof(lager_leds_pdata));
95 platform_device_register_data(&platform_bus, "gpio-keys", -1,
96 &lager_keys_pdata,
97 sizeof(lager_keys_pdata));
49} 98}
50 99
51static const char *lager_boards_compat_dt[] __initdata = { 100static const char *lager_boards_compat_dt[] __initdata = {
diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c
index b1b41b199f99..a7d1010505bf 100644
--- a/arch/arm/mach-shmobile/board-marzen.c
+++ b/arch/arm/mach-shmobile/board-marzen.c
@@ -67,7 +67,7 @@ static struct resource smsc911x_resources[] = {
67 .flags = IORESOURCE_MEM, 67 .flags = IORESOURCE_MEM,
68 }, 68 },
69 [1] = { 69 [1] = {
70 .start = gic_iid(0x3c), /* IRQ 1 */ 70 .start = irq_pin(1), /* IRQ 1 */
71 .flags = IORESOURCE_IRQ, 71 .flags = IORESOURCE_IRQ,
72 }, 72 },
73}; 73};
@@ -231,6 +231,7 @@ static void __init marzen_init(void)
231 pinctrl_register_mappings(marzen_pinctrl_map, 231 pinctrl_register_mappings(marzen_pinctrl_map,
232 ARRAY_SIZE(marzen_pinctrl_map)); 232 ARRAY_SIZE(marzen_pinctrl_map));
233 r8a7779_pinmux_init(); 233 r8a7779_pinmux_init();
234 r8a7779_init_irq_extpin(1); /* IRQ1 as individual interrupt */
234 235
235 r8a7779_add_standard_devices(); 236 r8a7779_add_standard_devices();
236 r8a7779_add_usb_phy_device(&usb_phy_platform_data); 237 r8a7779_add_usb_phy_device(&usb_phy_platform_data);
diff --git a/arch/arm/mach-ux500/board-mop500-pins.c b/arch/arm/mach-ux500/board-mop500-pins.c
index 947bd9eca079..7936d40a5c37 100644
--- a/arch/arm/mach-ux500/board-mop500-pins.c
+++ b/arch/arm/mach-ux500/board-mop500-pins.c
@@ -9,6 +9,7 @@
9#include <linux/bug.h> 9#include <linux/bug.h>
10#include <linux/string.h> 10#include <linux/string.h>
11#include <linux/pinctrl/machine.h> 11#include <linux/pinctrl/machine.h>
12#include <linux/pinctrl/pinconf-generic.h>
12#include <linux/platform_data/pinctrl-nomadik.h> 13#include <linux/platform_data/pinctrl-nomadik.h>
13 14
14#include <asm/mach-types.h> 15#include <asm/mach-types.h>
@@ -34,6 +35,11 @@ BIAS(in_pd, PIN_INPUT_PULLDOWN);
34BIAS(out_hi, PIN_OUTPUT_HIGH); 35BIAS(out_hi, PIN_OUTPUT_HIGH);
35BIAS(out_lo, PIN_OUTPUT_LOW); 36BIAS(out_lo, PIN_OUTPUT_LOW);
36BIAS(out_lo_slpm_nowkup, PIN_OUTPUT_LOW|PIN_SLPM_WAKEUP_DISABLE); 37BIAS(out_lo_slpm_nowkup, PIN_OUTPUT_LOW|PIN_SLPM_WAKEUP_DISABLE);
38
39BIAS(abx500_out_lo, PIN_CONF_PACKED(PIN_CONFIG_OUTPUT, 0));
40BIAS(abx500_in_pd, PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_DOWN, 1));
41BIAS(abx500_in_nopull, PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_DOWN, 0));
42
37/* These also force them into GPIO mode */ 43/* These also force them into GPIO mode */
38BIAS(gpio_in_pu, PIN_INPUT_PULLUP|PIN_GPIOMODE_ENABLED); 44BIAS(gpio_in_pu, PIN_INPUT_PULLUP|PIN_GPIOMODE_ENABLED);
39BIAS(gpio_in_pd, PIN_INPUT_PULLDOWN|PIN_GPIOMODE_ENABLED); 45BIAS(gpio_in_pd, PIN_INPUT_PULLDOWN|PIN_GPIOMODE_ENABLED);
@@ -42,8 +48,6 @@ BIAS(gpio_in_pd_slpm_gpio_nopull, PIN_INPUT_PULLDOWN|PIN_GPIOMODE_ENABLED|PIN_SL
42BIAS(gpio_out_hi, PIN_OUTPUT_HIGH|PIN_GPIOMODE_ENABLED); 48BIAS(gpio_out_hi, PIN_OUTPUT_HIGH|PIN_GPIOMODE_ENABLED);
43BIAS(gpio_out_lo, PIN_OUTPUT_LOW|PIN_GPIOMODE_ENABLED); 49BIAS(gpio_out_lo, PIN_OUTPUT_LOW|PIN_GPIOMODE_ENABLED);
44/* Sleep modes */ 50/* Sleep modes */
45BIAS(slpm_in_nopull_wkup, PIN_SLEEPMODE_ENABLED|
46 PIN_SLPM_DIR_INPUT|PIN_SLPM_PULL_NONE|PIN_SLPM_WAKEUP_ENABLE);
47BIAS(slpm_in_wkup_pdis, PIN_SLEEPMODE_ENABLED| 51BIAS(slpm_in_wkup_pdis, PIN_SLEEPMODE_ENABLED|
48 PIN_SLPM_DIR_INPUT|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); 52 PIN_SLPM_DIR_INPUT|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED);
49BIAS(slpm_in_wkup_pdis_en, PIN_SLEEPMODE_ENABLED| 53BIAS(slpm_in_wkup_pdis_en, PIN_SLEEPMODE_ENABLED|
@@ -54,8 +58,6 @@ BIAS(slpm_wkup_pdis_en, PIN_SLEEPMODE_ENABLED|
54 PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_ENABLED); 58 PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_ENABLED);
55BIAS(slpm_out_lo_pdis, PIN_SLEEPMODE_ENABLED| 59BIAS(slpm_out_lo_pdis, PIN_SLEEPMODE_ENABLED|
56 PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_DISABLE|PIN_SLPM_PDIS_DISABLED); 60 PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_DISABLE|PIN_SLPM_PDIS_DISABLED);
57BIAS(slpm_out_lo_wkup, PIN_SLEEPMODE_ENABLED|
58 PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_ENABLE);
59BIAS(slpm_out_lo_wkup_pdis, PIN_SLEEPMODE_ENABLED| 61BIAS(slpm_out_lo_wkup_pdis, PIN_SLEEPMODE_ENABLED|
60 PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); 62 PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED);
61BIAS(slpm_out_hi_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_OUTPUT_HIGH| 63BIAS(slpm_out_hi_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_OUTPUT_HIGH|
@@ -97,6 +99,252 @@ BIAS(out_wkup_pdis, PIN_SLPM_DIR_OUTPUT|PIN_SLPM_WAKEUP_ENABLE|
97#define DB8500_PIN_STATE(pin, conf, dev, state) \ 99#define DB8500_PIN_STATE(pin, conf, dev, state) \
98 PIN_MAP_CONFIGS_PIN(dev, state, "pinctrl-db8500", pin, conf) 100 PIN_MAP_CONFIGS_PIN(dev, state, "pinctrl-db8500", pin, conf)
99 101
102#define AB8500_MUX_HOG(group, func) \
103 PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-ab8500.0", group, func)
104#define AB8500_PIN_HOG(pin, conf) \
105 PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-ab8500.0", pin, abx500_##conf)
106
107#define AB8500_MUX_STATE(group, func, dev, state) \
108 PIN_MAP_MUX_GROUP(dev, state, "pinctrl-ab8500.0", group, func)
109#define AB8500_PIN_STATE(pin, conf, dev, state) \
110 PIN_MAP_CONFIGS_PIN(dev, state, "pinctrl-ab8500.0", pin, abx500_##conf)
111
112#define AB8505_MUX_HOG(group, func) \
113 PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-ab8505.0", group, func)
114#define AB8505_PIN_HOG(pin, conf) \
115 PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-ab8505.0", pin, abx500_##conf)
116
117#define AB8505_MUX_STATE(group, func, dev, state) \
118 PIN_MAP_MUX_GROUP(dev, state, "pinctrl-ab8505.0", group, func)
119#define AB8505_PIN_STATE(pin, conf, dev, state) \
120 PIN_MAP_CONFIGS_PIN(dev, state, "pinctrl-ab8505.0", pin, abx500_##conf)
121
122static struct pinctrl_map __initdata ab8500_pinmap[] = {
123 /* Sysclkreq2 */
124 AB8500_MUX_STATE("sysclkreq2_d_1", "sysclkreq", "regulator.35", PINCTRL_STATE_DEFAULT),
125 AB8500_PIN_STATE("GPIO1_T10", in_nopull, "regulator.35", PINCTRL_STATE_DEFAULT),
126 /* sysclkreq2 disable, mux in gpio configured in input pulldown */
127 AB8500_MUX_STATE("gpio1_a_1", "gpio", "regulator.35", PINCTRL_STATE_SLEEP),
128 AB8500_PIN_STATE("GPIO1_T10", in_pd, "regulator.35", PINCTRL_STATE_SLEEP),
129
130 /* pins 2 is muxed in GPIO, configured in INPUT PULL DOWN */
131 AB8500_MUX_HOG("gpio2_a_1", "gpio"),
132 AB8500_PIN_HOG("GPIO2_T9", in_pd),
133
134 /* Sysclkreq4 */
135 AB8500_MUX_STATE("sysclkreq4_d_1", "sysclkreq", "regulator.36", PINCTRL_STATE_DEFAULT),
136 AB8500_PIN_STATE("GPIO3_U9", in_nopull, "regulator.36", PINCTRL_STATE_DEFAULT),
137 /* sysclkreq4 disable, mux in gpio configured in input pulldown */
138 AB8500_MUX_STATE("gpio3_a_1", "gpio", "regulator.36", PINCTRL_STATE_SLEEP),
139 AB8500_PIN_STATE("GPIO3_U9", in_pd, "regulator.36", PINCTRL_STATE_SLEEP),
140
141 /* pins 4 is muxed in GPIO, configured in INPUT PULL DOWN */
142 AB8500_MUX_HOG("gpio4_a_1", "gpio"),
143 AB8500_PIN_HOG("GPIO4_W2", in_pd),
144
145 /*
146 * pins 6,7,8 and 9 are muxed in YCBCR0123
147 * configured in INPUT PULL UP
148 */
149 AB8500_MUX_HOG("ycbcr0123_d_1", "ycbcr"),
150 AB8500_PIN_HOG("GPIO6_Y18", in_nopull),
151 AB8500_PIN_HOG("GPIO7_AA20", in_nopull),
152 AB8500_PIN_HOG("GPIO8_W18", in_nopull),
153 AB8500_PIN_HOG("GPIO9_AA19", in_nopull),
154
155 /*
156 * pins 10,11,12 and 13 are muxed in GPIO
157 * configured in INPUT PULL DOWN
158 */
159 AB8500_MUX_HOG("gpio10_d_1", "gpio"),
160 AB8500_PIN_HOG("GPIO10_U17", in_pd),
161
162 AB8500_MUX_HOG("gpio11_d_1", "gpio"),
163 AB8500_PIN_HOG("GPIO11_AA18", in_pd),
164
165 AB8500_MUX_HOG("gpio12_d_1", "gpio"),
166 AB8500_PIN_HOG("GPIO12_U16", in_pd),
167
168 AB8500_MUX_HOG("gpio13_d_1", "gpio"),
169 AB8500_PIN_HOG("GPIO13_W17", in_pd),
170
171 /*
172 * pins 14,15 are muxed in PWM1 and PWM2
173 * configured in INPUT PULL DOWN
174 */
175 AB8500_MUX_HOG("pwmout1_d_1", "pwmout"),
176 AB8500_PIN_HOG("GPIO14_F14", in_pd),
177
178 AB8500_MUX_HOG("pwmout2_d_1", "pwmout"),
179 AB8500_PIN_HOG("GPIO15_B17", in_pd),
180
181 /*
182 * pins 16 is muxed in GPIO
183 * configured in INPUT PULL DOWN
184 */
185 AB8500_MUX_HOG("gpio16_a_1", "gpio"),
186 AB8500_PIN_HOG("GPIO14_F14", in_pd),
187
188 /*
189 * pins 17,18,19 and 20 are muxed in AUDIO interface 1
190 * configured in INPUT PULL DOWN
191 */
192 AB8500_MUX_HOG("adi1_d_1", "adi1"),
193 AB8500_PIN_HOG("GPIO17_P5", in_pd),
194 AB8500_PIN_HOG("GPIO18_R5", in_pd),
195 AB8500_PIN_HOG("GPIO19_U5", in_pd),
196 AB8500_PIN_HOG("GPIO20_T5", in_pd),
197
198 /*
199 * pins 21,22 and 23 are muxed in USB UICC
200 * configured in INPUT PULL DOWN
201 */
202 AB8500_MUX_HOG("usbuicc_d_1", "usbuicc"),
203 AB8500_PIN_HOG("GPIO21_H19", in_pd),
204 AB8500_PIN_HOG("GPIO22_G20", in_pd),
205 AB8500_PIN_HOG("GPIO23_G19", in_pd),
206
207 /*
208 * pins 24,25 are muxed in GPIO
209 * configured in INPUT PULL DOWN
210 */
211 AB8500_MUX_HOG("gpio24_a_1", "gpio"),
212 AB8500_PIN_HOG("GPIO24_T14", in_pd),
213
214 AB8500_MUX_HOG("gpio25_a_1", "gpio"),
215 AB8500_PIN_HOG("GPIO25_R16", in_pd),
216
217 /*
218 * pins 26 is muxed in GPIO
219 * configured in OUTPUT LOW
220 */
221 AB8500_MUX_HOG("gpio26_d_1", "gpio"),
222 AB8500_PIN_HOG("GPIO26_M16", out_lo),
223
224 /*
225 * pins 27,28 are muxed in DMIC12
226 * configured in INPUT PULL DOWN
227 */
228 AB8500_MUX_HOG("dmic12_d_1", "dmic"),
229 AB8500_PIN_HOG("GPIO27_J6", in_pd),
230 AB8500_PIN_HOG("GPIO28_K6", in_pd),
231
232 /*
233 * pins 29,30 are muxed in DMIC34
234 * configured in INPUT PULL DOWN
235 */
236 AB8500_MUX_HOG("dmic34_d_1", "dmic"),
237 AB8500_PIN_HOG("GPIO29_G6", in_pd),
238 AB8500_PIN_HOG("GPIO30_H6", in_pd),
239
240 /*
241 * pins 31,32 are muxed in DMIC56
242 * configured in INPUT PULL DOWN
243 */
244 AB8500_MUX_HOG("dmic56_d_1", "dmic"),
245 AB8500_PIN_HOG("GPIO31_F5", in_pd),
246 AB8500_PIN_HOG("GPIO32_G5", in_pd),
247
248 /*
249 * pins 34 is muxed in EXTCPENA
250 * configured INPUT PULL DOWN
251 */
252 AB8500_MUX_HOG("extcpena_d_1", "extcpena"),
253 AB8500_PIN_HOG("GPIO34_R17", in_pd),
254
255 /*
256 * pins 35 is muxed in GPIO
257 * configured in OUTPUT LOW
258 */
259 AB8500_MUX_HOG("gpio35_d_1", "gpio"),
260 AB8500_PIN_HOG("GPIO35_W15", in_pd),
261
262 /*
263 * pins 36,37,38 and 39 are muxed in GPIO
264 * configured in INPUT PULL DOWN
265 */
266 AB8500_MUX_HOG("gpio36_a_1", "gpio"),
267 AB8500_PIN_HOG("GPIO36_A17", in_pd),
268
269 AB8500_MUX_HOG("gpio37_a_1", "gpio"),
270 AB8500_PIN_HOG("GPIO37_E15", in_pd),
271
272 AB8500_MUX_HOG("gpio38_a_1", "gpio"),
273 AB8500_PIN_HOG("GPIO38_C17", in_pd),
274
275 AB8500_MUX_HOG("gpio39_a_1", "gpio"),
276 AB8500_PIN_HOG("GPIO39_E16", in_pd),
277
278 /*
279 * pins 40 and 41 are muxed in MODCSLSDA
280 * configured INPUT PULL DOWN
281 */
282 AB8500_MUX_HOG("modsclsda_d_1", "modsclsda"),
283 AB8500_PIN_HOG("GPIO40_T19", in_pd),
284 AB8500_PIN_HOG("GPIO41_U19", in_pd),
285
286 /*
287 * pins 42 is muxed in GPIO
288 * configured INPUT PULL DOWN
289 */
290 AB8500_MUX_HOG("gpio42_a_1", "gpio"),
291 AB8500_PIN_HOG("GPIO42_U2", in_pd),
292};
293
294static struct pinctrl_map __initdata ab8505_pinmap[] = {
295 /* Sysclkreq2 */
296 AB8505_MUX_STATE("sysclkreq2_d_1", "sysclkreq", "regulator.36", PINCTRL_STATE_DEFAULT),
297 AB8505_PIN_STATE("GPIO1_N4", in_nopull, "regulator.36", PINCTRL_STATE_DEFAULT),
298 /* sysclkreq2 disable, mux in gpio configured in input pulldown */
299 AB8505_MUX_STATE("gpio1_a_1", "gpio", "regulator.36", PINCTRL_STATE_SLEEP),
300 AB8505_PIN_STATE("GPIO1_N4", in_pd, "regulator.36", PINCTRL_STATE_SLEEP),
301
302 /* pins 2 is muxed in GPIO, configured in INPUT PULL DOWN */
303 AB8505_MUX_HOG("gpio2_a_1", "gpio"),
304 AB8505_PIN_HOG("GPIO2_R5", in_pd),
305
306 /* Sysclkreq4 */
307 AB8505_MUX_STATE("sysclkreq4_d_1", "sysclkreq", "regulator.37", PINCTRL_STATE_DEFAULT),
308 AB8505_PIN_STATE("GPIO3_P5", in_nopull, "regulator.37", PINCTRL_STATE_DEFAULT),
309 /* sysclkreq4 disable, mux in gpio configured in input pulldown */
310 AB8505_MUX_STATE("gpio3_a_1", "gpio", "regulator.37", PINCTRL_STATE_SLEEP),
311 AB8505_PIN_STATE("GPIO3_P5", in_pd, "regulator.37", PINCTRL_STATE_SLEEP),
312
313 AB8505_MUX_HOG("gpio10_d_1", "gpio"),
314 AB8505_PIN_HOG("GPIO10_B16", in_pd),
315
316 AB8505_MUX_HOG("gpio11_d_1", "gpio"),
317 AB8505_PIN_HOG("GPIO11_B17", in_pd),
318
319 AB8505_MUX_HOG("gpio13_d_1", "gpio"),
320 AB8505_PIN_HOG("GPIO13_D17", in_nopull),
321
322 AB8505_MUX_HOG("pwmout1_d_1", "pwmout"),
323 AB8505_PIN_HOG("GPIO14_C16", in_pd),
324
325 AB8505_MUX_HOG("adi2_d_1", "adi2"),
326 AB8505_PIN_HOG("GPIO17_P2", in_pd),
327 AB8505_PIN_HOG("GPIO18_N3", in_pd),
328 AB8505_PIN_HOG("GPIO19_T1", in_pd),
329 AB8505_PIN_HOG("GPIO20_P3", in_pd),
330
331 AB8505_MUX_HOG("gpio34_a_1", "gpio"),
332 AB8505_PIN_HOG("GPIO34_H14", in_pd),
333
334 AB8505_MUX_HOG("modsclsda_d_1", "modsclsda"),
335 AB8505_PIN_HOG("GPIO40_J15", in_pd),
336 AB8505_PIN_HOG("GPIO41_J14", in_pd),
337
338 AB8505_MUX_HOG("gpio50_d_1", "gpio"),
339 AB8505_PIN_HOG("GPIO50_L4", in_nopull),
340
341 AB8505_MUX_HOG("resethw_d_1", "resethw"),
342 AB8505_PIN_HOG("GPIO52_D16", in_pd),
343
344 AB8505_MUX_HOG("service_d_1", "service"),
345 AB8505_PIN_HOG("GPIO53_D15", in_pd),
346};
347
100/* Pin control settings */ 348/* Pin control settings */
101static struct pinctrl_map __initdata mop500_family_pinmap[] = { 349static struct pinctrl_map __initdata mop500_family_pinmap[] = {
102 /* 350 /*
@@ -174,17 +422,12 @@ static struct pinctrl_map __initdata mop500_family_pinmap[] = {
174 DB8500_PIN_SLEEP("GPIO4_AH6", slpm_in_wkup_pdis, "uart1"), 422 DB8500_PIN_SLEEP("GPIO4_AH6", slpm_in_wkup_pdis, "uart1"),
175 DB8500_PIN_SLEEP("GPIO5_AG6", slpm_out_wkup_pdis, "uart1"), 423 DB8500_PIN_SLEEP("GPIO5_AG6", slpm_out_wkup_pdis, "uart1"),
176 /* MSP1 for ALSA codec */ 424 /* MSP1 for ALSA codec */
177 DB8500_MUX("msp1txrx_a_1", "msp1", "ux500-msp-i2s.1"), 425 DB8500_MUX_HOG("msp1txrx_a_1", "msp1"),
178 DB8500_MUX("msp1_a_1", "msp1", "ux500-msp-i2s.1"), 426 DB8500_MUX_HOG("msp1_a_1", "msp1"),
179 DB8500_PIN("GPIO33_AF2", out_lo_slpm_nowkup, "ux500-msp-i2s.1"), 427 DB8500_PIN_HOG("GPIO33_AF2", out_lo_slpm_nowkup),
180 DB8500_PIN("GPIO34_AE1", in_nopull_slpm_nowkup, "ux500-msp-i2s.1"), 428 DB8500_PIN_HOG("GPIO34_AE1", in_nopull_slpm_nowkup),
181 DB8500_PIN("GPIO35_AE2", in_nopull_slpm_nowkup, "ux500-msp-i2s.1"), 429 DB8500_PIN_HOG("GPIO35_AE2", in_nopull_slpm_nowkup),
182 DB8500_PIN("GPIO36_AG2", in_nopull_slpm_nowkup, "ux500-msp-i2s.1"), 430 DB8500_PIN_HOG("GPIO36_AG2", in_nopull_slpm_nowkup),
183 /* MSP1 sleep state */
184 DB8500_PIN_SLEEP("GPIO33_AF2", slpm_out_lo_wkup, "ux500-msp-i2s.1"),
185 DB8500_PIN_SLEEP("GPIO34_AE1", slpm_in_nopull_wkup, "ux500-msp-i2s.1"),
186 DB8500_PIN_SLEEP("GPIO35_AE2", slpm_in_nopull_wkup, "ux500-msp-i2s.1"),
187 DB8500_PIN_SLEEP("GPIO36_AG2", slpm_in_nopull_wkup, "ux500-msp-i2s.1"),
188 /* Mux in LCD data lines 8 thru 11 and LCDA CLK for MCDE TVOUT */ 431 /* Mux in LCD data lines 8 thru 11 and LCDA CLK for MCDE TVOUT */
189 DB8500_MUX("lcd_d8_d11_a_1", "lcd", "mcde-tvout"), 432 DB8500_MUX("lcd_d8_d11_a_1", "lcd", "mcde-tvout"),
190 DB8500_MUX("lcdaclk_b_1", "lcda", "mcde-tvout"), 433 DB8500_MUX("lcdaclk_b_1", "lcda", "mcde-tvout"),
@@ -821,6 +1064,12 @@ void __init mop500_pinmaps_init(void)
821 pinctrl_register_mappings(mop500_pinmap, 1064 pinctrl_register_mappings(mop500_pinmap,
822 ARRAY_SIZE(mop500_pinmap)); 1065 ARRAY_SIZE(mop500_pinmap));
823 mop500_href_family_pinmaps_init(); 1066 mop500_href_family_pinmaps_init();
1067 if (machine_is_u8520())
1068 pinctrl_register_mappings(ab8505_pinmap,
1069 ARRAY_SIZE(ab8505_pinmap));
1070 else
1071 pinctrl_register_mappings(ab8500_pinmap,
1072 ARRAY_SIZE(ab8500_pinmap));
824} 1073}
825 1074
826void __init snowball_pinmaps_init(void) 1075void __init snowball_pinmaps_init(void)
@@ -831,6 +1080,8 @@ void __init snowball_pinmaps_init(void)
831 ARRAY_SIZE(snowball_pinmap)); 1080 ARRAY_SIZE(snowball_pinmap));
832 pinctrl_register_mappings(u8500_pinmap, 1081 pinctrl_register_mappings(u8500_pinmap,
833 ARRAY_SIZE(u8500_pinmap)); 1082 ARRAY_SIZE(u8500_pinmap));
1083 pinctrl_register_mappings(ab8500_pinmap,
1084 ARRAY_SIZE(ab8500_pinmap));
834} 1085}
835 1086
836void __init hrefv60_pinmaps_init(void) 1087void __init hrefv60_pinmaps_init(void)
@@ -840,4 +1091,6 @@ void __init hrefv60_pinmaps_init(void)
840 pinctrl_register_mappings(hrefv60_pinmap, 1091 pinctrl_register_mappings(hrefv60_pinmap,
841 ARRAY_SIZE(hrefv60_pinmap)); 1092 ARRAY_SIZE(hrefv60_pinmap));
842 mop500_href_family_pinmaps_init(); 1093 mop500_href_family_pinmaps_init();
1094 pinctrl_register_mappings(ab8500_pinmap,
1095 ARRAY_SIZE(ab8500_pinmap));
843} 1096}
diff --git a/arch/arm/mach-ux500/board-mop500-regulators.c b/arch/arm/mach-ux500/board-mop500-regulators.c
index d6b7c8556fa1..0dc44c683427 100644
--- a/arch/arm/mach-ux500/board-mop500-regulators.c
+++ b/arch/arm/mach-ux500/board-mop500-regulators.c
@@ -999,7 +999,6 @@ struct ab8500_regulator_platform_data ab8500_regulator_plat_data = {
999 .num_ext_regulator = ARRAY_SIZE(ab8500_ext_regulators), 999 .num_ext_regulator = ARRAY_SIZE(ab8500_ext_regulators),
1000}; 1000};
1001 1001
1002/* Use the AB8500 init settings for AB8505 as they are the same right now */
1003struct ab8500_regulator_platform_data ab8505_regulator_plat_data = { 1002struct ab8500_regulator_platform_data ab8505_regulator_plat_data = {
1004 .reg_init = ab8505_reg_init, 1003 .reg_init = ab8505_reg_init,
1005 .num_reg_init = ARRAY_SIZE(ab8505_reg_init), 1004 .num_reg_init = ARRAY_SIZE(ab8505_reg_init),
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c
index 0ef38775a0c1..43be3e0d4e30 100644
--- a/arch/arm/mach-ux500/board-mop500-sdi.c
+++ b/arch/arm/mach-ux500/board-mop500-sdi.c
@@ -52,11 +52,13 @@ static struct stedma40_chan_cfg mop500_sdi0_dma_cfg_tx = {
52#endif 52#endif
53 53
54struct mmci_platform_data mop500_sdi0_data = { 54struct mmci_platform_data mop500_sdi0_data = {
55 .ocr_mask = MMC_VDD_29_30, 55 .f_max = 100000000,
56 .f_max = 50000000,
57 .capabilities = MMC_CAP_4_BIT_DATA | 56 .capabilities = MMC_CAP_4_BIT_DATA |
58 MMC_CAP_SD_HIGHSPEED | 57 MMC_CAP_SD_HIGHSPEED |
59 MMC_CAP_MMC_HIGHSPEED, 58 MMC_CAP_MMC_HIGHSPEED |
59 MMC_CAP_ERASE |
60 MMC_CAP_UHS_SDR12 |
61 MMC_CAP_UHS_SDR25,
60 .gpio_wp = -1, 62 .gpio_wp = -1,
61 .sigdir = MCI_ST_FBCLKEN | 63 .sigdir = MCI_ST_FBCLKEN |
62 MCI_ST_CMDDIREN | 64 MCI_ST_CMDDIREN |
@@ -106,8 +108,9 @@ static struct stedma40_chan_cfg sdi1_dma_cfg_tx = {
106 108
107struct mmci_platform_data mop500_sdi1_data = { 109struct mmci_platform_data mop500_sdi1_data = {
108 .ocr_mask = MMC_VDD_29_30, 110 .ocr_mask = MMC_VDD_29_30,
109 .f_max = 50000000, 111 .f_max = 100000000,
110 .capabilities = MMC_CAP_4_BIT_DATA, 112 .capabilities = MMC_CAP_4_BIT_DATA |
113 MMC_CAP_NONREMOVABLE,
111 .gpio_cd = -1, 114 .gpio_cd = -1,
112 .gpio_wp = -1, 115 .gpio_wp = -1,
113#ifdef CONFIG_STE_DMA40 116#ifdef CONFIG_STE_DMA40
@@ -143,9 +146,13 @@ static struct stedma40_chan_cfg mop500_sdi2_dma_cfg_tx = {
143 146
144struct mmci_platform_data mop500_sdi2_data = { 147struct mmci_platform_data mop500_sdi2_data = {
145 .ocr_mask = MMC_VDD_165_195, 148 .ocr_mask = MMC_VDD_165_195,
146 .f_max = 50000000, 149 .f_max = 100000000,
147 .capabilities = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA | 150 .capabilities = MMC_CAP_4_BIT_DATA |
148 MMC_CAP_MMC_HIGHSPEED, 151 MMC_CAP_8_BIT_DATA |
152 MMC_CAP_NONREMOVABLE |
153 MMC_CAP_MMC_HIGHSPEED |
154 MMC_CAP_ERASE |
155 MMC_CAP_CMD23,
149 .gpio_cd = -1, 156 .gpio_cd = -1,
150 .gpio_wp = -1, 157 .gpio_wp = -1,
151#ifdef CONFIG_STE_DMA40 158#ifdef CONFIG_STE_DMA40
@@ -180,10 +187,13 @@ static struct stedma40_chan_cfg mop500_sdi4_dma_cfg_tx = {
180#endif 187#endif
181 188
182struct mmci_platform_data mop500_sdi4_data = { 189struct mmci_platform_data mop500_sdi4_data = {
183 .ocr_mask = MMC_VDD_29_30, 190 .f_max = 100000000,
184 .f_max = 50000000, 191 .capabilities = MMC_CAP_4_BIT_DATA |
185 .capabilities = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA | 192 MMC_CAP_8_BIT_DATA |
186 MMC_CAP_MMC_HIGHSPEED, 193 MMC_CAP_NONREMOVABLE |
194 MMC_CAP_MMC_HIGHSPEED |
195 MMC_CAP_ERASE |
196 MMC_CAP_CMD23,
187 .gpio_cd = -1, 197 .gpio_cd = -1,
188 .gpio_wp = -1, 198 .gpio_wp = -1,
189#ifdef CONFIG_STE_DMA40 199#ifdef CONFIG_STE_DMA40
diff --git a/arch/arm/mach-ux500/db8500-regs.h b/arch/arm/mach-ux500/db8500-regs.h
index b2d7a0b98629..27399553c841 100644
--- a/arch/arm/mach-ux500/db8500-regs.h
+++ b/arch/arm/mach-ux500/db8500-regs.h
@@ -102,7 +102,6 @@
102#define U8500_PRCMU_BASE (U8500_PER4_BASE + 0x07000) 102#define U8500_PRCMU_BASE (U8500_PER4_BASE + 0x07000)
103#define U9540_DMC1_BASE (U8500_PER4_BASE + 0x0A000) 103#define U9540_DMC1_BASE (U8500_PER4_BASE + 0x0A000)
104#define U8500_PRCMU_TCDM_BASE (U8500_PER4_BASE + 0x68000) 104#define U8500_PRCMU_TCDM_BASE (U8500_PER4_BASE + 0x68000)
105#define U9540_PRCMU_TCDM_BASE (U8500_PER4_BASE + 0x6A000)
106#define U8500_PRCMU_TCPM_BASE (U8500_PER4_BASE + 0x60000) 105#define U8500_PRCMU_TCPM_BASE (U8500_PER4_BASE + 0x60000)
107#define U8500_PRCMU_TIMER_3_BASE (U8500_PER4_BASE + 0x07338) 106#define U8500_PRCMU_TIMER_3_BASE (U8500_PER4_BASE + 0x07338)
108#define U8500_PRCMU_TIMER_4_BASE (U8500_PER4_BASE + 0x07450) 107#define U8500_PRCMU_TIMER_4_BASE (U8500_PER4_BASE + 0x07450)
@@ -184,7 +183,7 @@
184#define U8500_IO_VIRTUAL 0xf0000000 183#define U8500_IO_VIRTUAL 0xf0000000
185#define U8500_IO_PHYSICAL 0xa0000000 184#define U8500_IO_PHYSICAL 0xa0000000
186/* This is where we map in the ROM to check ASIC IDs */ 185/* This is where we map in the ROM to check ASIC IDs */
187#define UX500_VIRT_ROM 0xf0000000 186#define UX500_VIRT_ROM IOMEM(0xf0000000)
188 187
189/* This macro is used in assembly, so no cast */ 188/* This macro is used in assembly, so no cast */
190#define IO_ADDRESS(x) \ 189#define IO_ADDRESS(x) \
diff --git a/arch/arm/mach-ux500/devices-db8500.c b/arch/arm/mach-ux500/devices-db8500.c
index 1cf94ce0feec..ddbdcda8306a 100644
--- a/arch/arm/mach-ux500/devices-db8500.c
+++ b/arch/arm/mach-ux500/devices-db8500.c
@@ -227,7 +227,7 @@ static struct resource db8500_prcmu_res[] = {
227 { 227 {
228 .name = "prcmu-tcpm", 228 .name = "prcmu-tcpm",
229 .start = U8500_PRCMU_TCPM_BASE, 229 .start = U8500_PRCMU_TCPM_BASE,
230 .end = U8500_PRCMU_TCPM_BASE + SZ_4K - 1, 230 .end = U8500_PRCMU_TCPM_BASE + SZ_32K - 1,
231 .flags = IORESOURCE_MEM, 231 .flags = IORESOURCE_MEM,
232 }, 232 },
233}; 233};
diff --git a/arch/arm/mach-ux500/id.c b/arch/arm/mach-ux500/id.c
index 0d33d1a06955..392f2fdb37d0 100644
--- a/arch/arm/mach-ux500/id.c
+++ b/arch/arm/mach-ux500/id.c
@@ -21,11 +21,11 @@
21 21
22struct dbx500_asic_id dbx500_id; 22struct dbx500_asic_id dbx500_id;
23 23
24static unsigned int ux500_read_asicid(phys_addr_t addr) 24static unsigned int __init ux500_read_asicid(phys_addr_t addr)
25{ 25{
26 phys_addr_t base = addr & ~0xfff; 26 phys_addr_t base = addr & ~0xfff;
27 struct map_desc desc = { 27 struct map_desc desc = {
28 .virtual = UX500_VIRT_ROM, 28 .virtual = (unsigned long)UX500_VIRT_ROM,
29 .pfn = __phys_to_pfn(base), 29 .pfn = __phys_to_pfn(base),
30 .length = SZ_16K, 30 .length = SZ_16K,
31 .type = MT_DEVICE, 31 .type = MT_DEVICE,
@@ -37,7 +37,7 @@ static unsigned int ux500_read_asicid(phys_addr_t addr)
37 local_flush_tlb_all(); 37 local_flush_tlb_all();
38 flush_cache_all(); 38 flush_cache_all();
39 39
40 return readl(IOMEM(UX500_VIRT_ROM + (addr & 0xfff))); 40 return readl(UX500_VIRT_ROM + (addr & 0xfff));
41} 41}
42 42
43static void ux500_print_soc_info(unsigned int asicid) 43static void ux500_print_soc_info(unsigned int asicid)