diff options
Diffstat (limited to 'arch')
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 |
88 | CONFIG_SERIAL_SH_SCI=y | 88 | CONFIG_SERIAL_SH_SCI=y |
89 | CONFIG_SERIAL_SH_SCI_NR_UARTS=8 | 89 | CONFIG_SERIAL_SH_SCI_NR_UARTS=9 |
90 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | 90 | CONFIG_SERIAL_SH_SCI_CONSOLE=y |
91 | # CONFIG_HW_RANDOM is not set | 91 | # CONFIG_HW_RANDOM is not set |
92 | CONFIG_I2C=y | 92 | CONFIG_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 |
61 | CONFIG_SERIAL_AMBA_PL011=y | 60 | CONFIG_SERIAL_AMBA_PL011=y |
62 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | 61 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y |
63 | CONFIG_TTY_PRINTK=y | 62 | CONFIG_TTY_PRINTK=y |
64 | CONFIG_HW_RANDOM=y | ||
65 | CONFIG_HW_RANDOM_BCM2835=y | ||
66 | CONFIG_I2C=y | 63 | CONFIG_I2C=y |
67 | CONFIG_I2C_CHARDEV=y | 64 | CONFIG_I2C_CHARDEV=y |
68 | CONFIG_I2C_BCM2835=y | 65 | CONFIG_I2C_BCM2835=y |
@@ -70,11 +67,27 @@ CONFIG_SPI=y | |||
70 | CONFIG_SPI_BCM2835=y | 67 | CONFIG_SPI_BCM2835=y |
71 | CONFIG_GPIO_SYSFS=y | 68 | CONFIG_GPIO_SYSFS=y |
72 | # CONFIG_HWMON is not set | 69 | # CONFIG_HWMON is not set |
70 | CONFIG_FB=y | ||
71 | CONFIG_FB_SIMPLE=y | ||
72 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
73 | CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y | ||
73 | # CONFIG_USB_SUPPORT is not set | 74 | # CONFIG_USB_SUPPORT is not set |
74 | CONFIG_MMC=y | 75 | CONFIG_MMC=y |
75 | CONFIG_MMC_SDHCI=y | 76 | CONFIG_MMC_SDHCI=y |
76 | CONFIG_MMC_SDHCI_PLTFM=y | 77 | CONFIG_MMC_SDHCI_PLTFM=y |
77 | CONFIG_MMC_SDHCI_BCM2835=y | 78 | CONFIG_MMC_SDHCI_BCM2835=y |
79 | CONFIG_NEW_LEDS=y | ||
80 | CONFIG_LEDS_CLASS=y | ||
81 | CONFIG_LEDS_GPIO=y | ||
82 | CONFIG_LEDS_TRIGGERS=y | ||
83 | CONFIG_LEDS_TRIGGER_TIMER=y | ||
84 | CONFIG_LEDS_TRIGGER_ONESHOT=y | ||
85 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | ||
86 | CONFIG_LEDS_TRIGGER_CPU=y | ||
87 | CONFIG_LEDS_TRIGGER_GPIO=y | ||
88 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=y | ||
89 | CONFIG_LEDS_TRIGGER_TRANSIENT=y | ||
90 | CONFIG_LEDS_TRIGGER_CAMERA=y | ||
78 | # CONFIG_IOMMU_SUPPORT is not set | 91 | # CONFIG_IOMMU_SUPPORT is not set |
79 | CONFIG_EXT2_FS=y | 92 | CONFIG_EXT2_FS=y |
80 | CONFIG_EXT2_FS_XATTR=y | 93 | CONFIG_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" | |||
31 | CONFIG_CMDLINE_FORCE=y | 31 | CONFIG_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 |
34 | CONFIG_PM_RUNTIME=y | ||
34 | CONFIG_NET=y | 35 | CONFIG_NET=y |
35 | CONFIG_UNIX=y | 36 | CONFIG_UNIX=y |
36 | CONFIG_INET=y | 37 | CONFIG_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 |
52 | CONFIG_MTD=y | ||
53 | CONFIG_MTD_CHAR=y | ||
54 | CONFIG_MTD_BLOCK=y | ||
55 | CONFIG_MTD_CFI=y | ||
56 | CONFIG_MTD_CFI_AMDSTD=y | ||
57 | CONFIG_MTD_M25P80=y | ||
58 | CONFIG_SCSI=y | ||
59 | CONFIG_BLK_DEV_SD=y | ||
51 | CONFIG_NETDEVICES=y | 60 | CONFIG_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 | |||
71 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | 80 | CONFIG_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 | 83 | CONFIG_I2C=y |
84 | CONFIG_I2C_RCAR=y | ||
85 | CONFIG_SPI=y | ||
86 | CONFIG_SPI_SH_HSPI=y | ||
87 | CONFIG_USB=y | ||
88 | CONFIG_USB_ANNOUNCE_NEW_DEVICES=y | ||
89 | CONFIG_USB_EHCI_HCD=y | ||
90 | CONFIG_USB_OHCI_HCD=y | ||
91 | CONFIG_USB_OHCI_HCD_PLATFORM=y | ||
92 | CONFIG_USB_EHCI_HCD_PLATFORM=y | ||
93 | CONFIG_USB_STORAGE=y | ||
94 | CONFIG_USB_RCAR_PHY=y | ||
95 | CONFIG_MMC=y | ||
96 | CONFIG_MMC_SDHI=y | ||
97 | CONFIG_MMC_SH_MMCIF=y | ||
98 | CONFIG_RTC_CLASS=y | ||
99 | CONFIG_RTC_DRV_RX8581=y | ||
75 | CONFIG_UIO=y | 100 | CONFIG_UIO=y |
76 | CONFIG_UIO_PDRV_GENIRQ=y | 101 | CONFIG_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 | |||
84 | CONFIG_I2C_SH_MOBILE=y | 84 | CONFIG_I2C_SH_MOBILE=y |
85 | CONFIG_GPIO_PCF857X=y | 85 | CONFIG_GPIO_PCF857X=y |
86 | # CONFIG_HWMON is not set | 86 | # CONFIG_HWMON is not set |
87 | CONFIG_MFD_AS3711=y | ||
87 | CONFIG_REGULATOR=y | 88 | CONFIG_REGULATOR=y |
89 | CONFIG_REGULATOR_AS3711=y | ||
88 | CONFIG_FB=y | 90 | CONFIG_FB=y |
89 | CONFIG_FB_SH_MOBILE_LCDC=y | 91 | CONFIG_FB_SH_MOBILE_LCDC=y |
92 | CONFIG_BACKLIGHT_AS3711=y | ||
90 | CONFIG_FRAMEBUFFER_CONSOLE=y | 93 | CONFIG_FRAMEBUFFER_CONSOLE=y |
91 | CONFIG_LOGO=y | 94 | CONFIG_LOGO=y |
92 | CONFIG_FB_SH_MOBILE_MERAM=y | 95 | CONFIG_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 @@ | |||
1 | CONFIG_EXPERIMENTAL=y | 1 | CONFIG_EXPERIMENTAL=y |
2 | CONFIG_NO_HZ=y | 2 | CONFIG_NO_HZ=y |
3 | CONFIG_HIGH_RES_TIMERS=y | 3 | CONFIG_HIGH_RES_TIMERS=y |
4 | CONFIG_BLK_DEV_INITRD=y | ||
4 | CONFIG_ARCH_MVEBU=y | 5 | CONFIG_ARCH_MVEBU=y |
5 | CONFIG_MACH_ARMADA_370=y | 6 | CONFIG_MACH_ARMADA_370=y |
6 | CONFIG_ARCH_SIRF=y | 7 | CONFIG_ARCH_SIRF=y |
@@ -48,6 +49,8 @@ CONFIG_SERIAL_SIRFSOC=y | |||
48 | CONFIG_SERIAL_SIRFSOC_CONSOLE=y | 49 | CONFIG_SERIAL_SIRFSOC_CONSOLE=y |
49 | CONFIG_SERIAL_VT8500=y | 50 | CONFIG_SERIAL_VT8500=y |
50 | CONFIG_SERIAL_VT8500_CONSOLE=y | 51 | CONFIG_SERIAL_VT8500_CONSOLE=y |
52 | CONFIG_SERIAL_XILINX_PS_UART=y | ||
53 | CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y | ||
51 | CONFIG_IPMI_HANDLER=y | 54 | CONFIG_IPMI_HANDLER=y |
52 | CONFIG_IPMI_SI=y | 55 | CONFIG_IPMI_SI=y |
53 | CONFIG_I2C=y | 56 | CONFIG_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 | |||
210 | CONFIG_USB_STORAGE=y | 210 | CONFIG_USB_STORAGE=y |
211 | CONFIG_USB_LIBUSUAL=y | 211 | CONFIG_USB_LIBUSUAL=y |
212 | CONFIG_USB_TEST=y | 212 | CONFIG_USB_TEST=y |
213 | CONFIG_USB_PHY=y | ||
214 | CONFIG_NOP_USB_XCEIV=y | ||
213 | CONFIG_USB_GADGET=y | 215 | CONFIG_USB_GADGET=y |
214 | CONFIG_USB_GADGET_DEBUG=y | 216 | CONFIG_USB_GADGET_DEBUG=y |
215 | CONFIG_USB_GADGET_DEBUG_FILES=y | 217 | CONFIG_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 | |||
21 | CONFIG_PARTITION_ADVANCED=y | 21 | CONFIG_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 |
24 | CONFIG_ARCH_TEGRA=y | ||
25 | CONFIG_GPIO_PCA953X=y | 24 | CONFIG_GPIO_PCA953X=y |
25 | CONFIG_ARCH_TEGRA=y | ||
26 | CONFIG_ARCH_TEGRA_2x_SOC=y | 26 | CONFIG_ARCH_TEGRA_2x_SOC=y |
27 | CONFIG_ARCH_TEGRA_3x_SOC=y | 27 | CONFIG_ARCH_TEGRA_3x_SOC=y |
28 | CONFIG_ARCH_TEGRA_114_SOC=y | 28 | CONFIG_ARCH_TEGRA_114_SOC=y |
@@ -36,7 +36,6 @@ CONFIG_HIGHMEM=y | |||
36 | CONFIG_ZBOOT_ROM_TEXT=0x0 | 36 | CONFIG_ZBOOT_ROM_TEXT=0x0 |
37 | CONFIG_ZBOOT_ROM_BSS=0x0 | 37 | CONFIG_ZBOOT_ROM_BSS=0x0 |
38 | CONFIG_KEXEC=y | 38 | CONFIG_KEXEC=y |
39 | CONFIG_AUTO_ZRELADDR=y | ||
40 | CONFIG_CPU_FREQ=y | 39 | CONFIG_CPU_FREQ=y |
41 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y | 40 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
42 | CONFIG_CPU_IDLE=y | 41 | CONFIG_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 |
82 | CONFIG_CMA=y | 81 | CONFIG_CMA=y |
83 | CONFIG_MTD=y | 82 | CONFIG_MTD=y |
84 | CONFIG_MTD_CHAR=y | ||
85 | CONFIG_MTD_M25P80=y | 83 | CONFIG_MTD_M25P80=y |
86 | CONFIG_PROC_DEVICETREE=y | 84 | CONFIG_PROC_DEVICETREE=y |
87 | CONFIG_BLK_DEV_LOOP=y | 85 | CONFIG_BLK_DEV_LOOP=y |
@@ -105,8 +103,8 @@ CONFIG_BRCMFMAC=m | |||
105 | CONFIG_RT2X00=y | 103 | CONFIG_RT2X00=y |
106 | CONFIG_RT2800USB=m | 104 | CONFIG_RT2800USB=m |
107 | CONFIG_INPUT_EVDEV=y | 105 | CONFIG_INPUT_EVDEV=y |
108 | CONFIG_KEYBOARD_TEGRA=y | ||
109 | CONFIG_KEYBOARD_GPIO=y | 106 | CONFIG_KEYBOARD_GPIO=y |
107 | CONFIG_KEYBOARD_TEGRA=y | ||
110 | CONFIG_INPUT_MISC=y | 108 | CONFIG_INPUT_MISC=y |
111 | CONFIG_INPUT_MPU3050=y | 109 | CONFIG_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 | |||
121 | CONFIG_I2C_MUX_PINCTRL=y | 119 | CONFIG_I2C_MUX_PINCTRL=y |
122 | CONFIG_I2C_TEGRA=y | 120 | CONFIG_I2C_TEGRA=y |
123 | CONFIG_SPI=y | 121 | CONFIG_SPI=y |
122 | CONFIG_SPI_TEGRA114=y | ||
124 | CONFIG_SPI_TEGRA20_SFLASH=y | 123 | CONFIG_SPI_TEGRA20_SFLASH=y |
125 | CONFIG_SPI_TEGRA20_SLINK=y | 124 | CONFIG_SPI_TEGRA20_SLINK=y |
126 | CONFIG_GPIO_PCA953X_IRQ=y | 125 | CONFIG_GPIO_PCA953X_IRQ=y |
@@ -129,14 +128,15 @@ CONFIG_GPIO_TPS6586X=y | |||
129 | CONFIG_GPIO_TPS65910=y | 128 | CONFIG_GPIO_TPS65910=y |
130 | CONFIG_POWER_SUPPLY=y | 129 | CONFIG_POWER_SUPPLY=y |
131 | CONFIG_BATTERY_SBS=y | 130 | CONFIG_BATTERY_SBS=y |
131 | CONFIG_CHARGER_TPS65090=y | ||
132 | CONFIG_POWER_RESET=y | 132 | CONFIG_POWER_RESET=y |
133 | CONFIG_POWER_RESET_GPIO=y | 133 | CONFIG_POWER_RESET_GPIO=y |
134 | CONFIG_SENSORS_LM90=y | 134 | CONFIG_SENSORS_LM90=y |
135 | CONFIG_MFD_TPS6586X=y | ||
136 | CONFIG_MFD_TPS65910=y | ||
137 | CONFIG_MFD_MAX8907=y | 135 | CONFIG_MFD_MAX8907=y |
138 | CONFIG_MFD_TPS65090=y | ||
139 | CONFIG_MFD_PALMAS=y | 136 | CONFIG_MFD_PALMAS=y |
137 | CONFIG_MFD_TPS65090=y | ||
138 | CONFIG_MFD_TPS6586X=y | ||
139 | CONFIG_MFD_TPS65910=y | ||
140 | CONFIG_REGULATOR=y | 140 | CONFIG_REGULATOR=y |
141 | CONFIG_REGULATOR_FIXED_VOLTAGE=y | 141 | CONFIG_REGULATOR_FIXED_VOLTAGE=y |
142 | CONFIG_REGULATOR_VIRTUAL_CONSUMER=y | 142 | CONFIG_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 |
172 | CONFIG_SND_SOC=y | 172 | CONFIG_SND_SOC=y |
173 | CONFIG_SND_SOC_TEGRA=y | 173 | CONFIG_SND_SOC_TEGRA=y |
174 | CONFIG_SND_SOC_TEGRA_RT5640=y | ||
174 | CONFIG_SND_SOC_TEGRA_WM8753=y | 175 | CONFIG_SND_SOC_TEGRA_WM8753=y |
175 | CONFIG_SND_SOC_TEGRA_WM8903=y | 176 | CONFIG_SND_SOC_TEGRA_WM8903=y |
176 | CONFIG_SND_SOC_TEGRA_TRIMSLICE=y | 177 | CONFIG_SND_SOC_TEGRA_TRIMSLICE=y |
@@ -190,7 +191,13 @@ CONFIG_NEW_LEDS=y | |||
190 | CONFIG_LEDS_CLASS=y | 191 | CONFIG_LEDS_CLASS=y |
191 | CONFIG_LEDS_GPIO=y | 192 | CONFIG_LEDS_GPIO=y |
192 | CONFIG_LEDS_TRIGGERS=y | 193 | CONFIG_LEDS_TRIGGERS=y |
194 | CONFIG_LEDS_TRIGGER_TIMER=y | ||
195 | CONFIG_LEDS_TRIGGER_ONESHOT=y | ||
196 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | ||
193 | CONFIG_LEDS_TRIGGER_GPIO=y | 197 | CONFIG_LEDS_TRIGGER_GPIO=y |
198 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=y | ||
199 | CONFIG_LEDS_TRIGGER_TRANSIENT=y | ||
200 | CONFIG_LEDS_TRIGGER_CAMERA=y | ||
194 | CONFIG_RTC_CLASS=y | 201 | CONFIG_RTC_CLASS=y |
195 | CONFIG_RTC_DRV_MAX8907=y | 202 | CONFIG_RTC_DRV_MAX8907=y |
196 | CONFIG_RTC_DRV_PALMAS=y | 203 | CONFIG_RTC_DRV_PALMAS=y |
@@ -203,7 +210,6 @@ CONFIG_TEGRA20_APB_DMA=y | |||
203 | CONFIG_STAGING=y | 210 | CONFIG_STAGING=y |
204 | CONFIG_SENSORS_ISL29018=y | 211 | CONFIG_SENSORS_ISL29018=y |
205 | CONFIG_SENSORS_ISL29028=y | 212 | CONFIG_SENSORS_ISL29028=y |
206 | CONFIG_AK8975=y | ||
207 | CONFIG_MFD_NVEC=y | 213 | CONFIG_MFD_NVEC=y |
208 | CONFIG_KEYBOARD_NVEC=y | 214 | CONFIG_KEYBOARD_NVEC=y |
209 | CONFIG_SERIO_NVEC_PS2=y | 215 | CONFIG_SERIO_NVEC_PS2=y |
@@ -213,6 +219,7 @@ CONFIG_TEGRA_IOMMU_GART=y | |||
213 | CONFIG_TEGRA_IOMMU_SMMU=y | 219 | CONFIG_TEGRA_IOMMU_SMMU=y |
214 | CONFIG_MEMORY=y | 220 | CONFIG_MEMORY=y |
215 | CONFIG_IIO=y | 221 | CONFIG_IIO=y |
222 | CONFIG_AK8975=y | ||
216 | CONFIG_PWM=y | 223 | CONFIG_PWM=y |
217 | CONFIG_PWM_TEGRA=y | 224 | CONFIG_PWM_TEGRA=y |
218 | CONFIG_EXT2_FS=y | 225 | CONFIG_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 | |||
227 | config MACH_LSXL_DT | 227 | config 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 | ||
292 | config 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 | |||
291 | config MACH_TOPKICK_DT | 299 | config 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 | |||
39 | obj-$(CONFIG_MACH_NETSPACE_V2_DT) += board-ns2.o | 39 | obj-$(CONFIG_MACH_NETSPACE_V2_DT) += board-ns2.o |
40 | obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o | 40 | obj-$(CONFIG_MACH_OPENBLOCKS_A6_DT) += board-openblocks_a6.o |
41 | obj-$(CONFIG_MACH_READYNAS_DT) += board-readynas.o | 41 | obj-$(CONFIG_MACH_READYNAS_DT) += board-readynas.o |
42 | obj-$(CONFIG_MACH_SHEEVAPLUG_DT) += board-sheevaplug.o | ||
42 | obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o | 43 | obj-$(CONFIG_MACH_TOPKICK_DT) += board-usi_topkick.o |
43 | obj-$(CONFIG_MACH_TS219_DT) += board-ts219.o tsx1x-common.o | 44 | obj-$(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) | |||
165 | static const char * const kirkwood_dt_board_compat[] = { | 168 | static 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 | */ | ||
36 | static void lsxl_power_off(void) | ||
37 | { | ||
38 | kirkwood_restart('h', NULL); | ||
39 | } | ||
40 | |||
41 | void __init lsxl_init(void) | 28 | void __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 | |||
17 | static struct mv643xx_eth_platform_data sheevaplug_ge00_data = { | ||
18 | .phy_addr = MV643XX_ETH_PHY_ADDR(0), | ||
19 | }; | ||
20 | |||
21 | void __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 | ||
28 | static struct mv643xx_eth_platform_data qnap_ts219_ge00_data = { | 27 | static 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 |
68 | static inline void guruplug_dt_init(void) {}; | 68 | static inline void guruplug_dt_init(void) {}; |
69 | #endif | 69 | #endif |
70 | #ifdef CONFIG_MACH_SHEEVAPLUG_DT | ||
71 | void sheevaplug_dt_init(void); | ||
72 | #else | ||
73 | static inline void sheevaplug_dt_init(void) {}; | ||
74 | #endif | ||
70 | #ifdef CONFIG_MACH_TS219_DT | 75 | #ifdef CONFIG_MACH_TS219_DT |
71 | void qnap_dt_ts219_init(void); | 76 | void 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 | ||
239 | static void __init nokia770_cbus_init(void) | 242 | static 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 | ||
177 | static void __init omap3_evm_display_init(void) | 178 | static 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 | ||
197 | static struct omap_dss_device omap3_evm_lcd_device = { | 199 | static 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 | ||
66 | static void __init ape6evm_add_standard_devices(void) | 67 | static 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 */ | ||
62 | static struct regulator_consumer_supply dummy_supplies[] = { | ||
63 | REGULATOR_SUPPLY("vddvario", "smsc911x"), | ||
64 | REGULATOR_SUPPLY("vdd33a", "smsc911x"), | ||
65 | }; | ||
66 | |||
29 | static struct smsc911x_platform_config smsc911x_data = { | 67 | static 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 */ | ||
41 | static struct rcar_phy_platform_data usb_phy_platform_data __initdata; | 80 | static struct rcar_phy_platform_data usb_phy_platform_data __initdata; |
42 | 81 | ||
82 | /* SDHI */ | ||
83 | static 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 | |||
89 | static 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 */ | ||
104 | static struct i2c_board_info i2c0_devices[] = { | ||
105 | { | ||
106 | I2C_BOARD_INFO("rx8581", 0x51), | ||
107 | }, | ||
108 | }; | ||
109 | |||
110 | /* HSPI*/ | ||
111 | static struct mtd_partition m25p80_spi_flash_partitions[] = { | ||
112 | { | ||
113 | .name = "data(spi)", | ||
114 | .size = 0x0100000, | ||
115 | .offset = 0, | ||
116 | }, | ||
117 | }; | ||
118 | |||
119 | static 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 | |||
126 | static 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 */ | ||
138 | static 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 | |||
43 | static const struct pinctrl_map bockw_pinctrl_map[] = { | 146 | static 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 | ||
56 | static void __init bockw_init(void) | 177 | static 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(ðer_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 | ||
90 | static const char *bockw_boards_compat_dt[] __initdata = { | 237 | static 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 | ||
57 | static struct platform_device smsc91x_device = { | 57 | static 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 */ | ||
612 | static 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 */ | ||
623 | static 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 */ | ||
639 | static 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 */ | ||
652 | static 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 */ | ||
663 | static 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 */ | ||
674 | static 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 */ | ||
685 | static 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 */ | ||
698 | static 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 */ | ||
709 | static 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 | |||
719 | static 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 | |||
609 | static struct pcf857x_platform_data pcf8575_pdata = { | 744 | static 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 | ||
630 | static struct i2c_board_info i2c1_devices[] = { | 770 | static 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 | */ | ||
723 | static 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 | } | ||
769 | device_initcall(as3711_enable_lcdc_backlight); | ||
770 | |||
771 | static void __init kzm_init(void) | 858 | static 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 */ | ||
37 | static 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 | |||
53 | static __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 | |||
62 | static __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 | |||
69 | static __initdata struct gpio_keys_platform_data lager_keys_pdata = { | ||
70 | .buttons = gpio_buttons, | ||
71 | .nbuttons = ARRAY_SIZE(gpio_buttons), | ||
72 | }; | ||
73 | |||
31 | static const struct pinctrl_map lager_pinctrl_map[] = { | 74 | static 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 | ||
51 | static const char *lager_boards_compat_dt[] __initdata = { | 100 | static 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); | |||
34 | BIAS(out_hi, PIN_OUTPUT_HIGH); | 35 | BIAS(out_hi, PIN_OUTPUT_HIGH); |
35 | BIAS(out_lo, PIN_OUTPUT_LOW); | 36 | BIAS(out_lo, PIN_OUTPUT_LOW); |
36 | BIAS(out_lo_slpm_nowkup, PIN_OUTPUT_LOW|PIN_SLPM_WAKEUP_DISABLE); | 37 | BIAS(out_lo_slpm_nowkup, PIN_OUTPUT_LOW|PIN_SLPM_WAKEUP_DISABLE); |
38 | |||
39 | BIAS(abx500_out_lo, PIN_CONF_PACKED(PIN_CONFIG_OUTPUT, 0)); | ||
40 | BIAS(abx500_in_pd, PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_DOWN, 1)); | ||
41 | BIAS(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 */ |
38 | BIAS(gpio_in_pu, PIN_INPUT_PULLUP|PIN_GPIOMODE_ENABLED); | 44 | BIAS(gpio_in_pu, PIN_INPUT_PULLUP|PIN_GPIOMODE_ENABLED); |
39 | BIAS(gpio_in_pd, PIN_INPUT_PULLDOWN|PIN_GPIOMODE_ENABLED); | 45 | BIAS(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 | |||
42 | BIAS(gpio_out_hi, PIN_OUTPUT_HIGH|PIN_GPIOMODE_ENABLED); | 48 | BIAS(gpio_out_hi, PIN_OUTPUT_HIGH|PIN_GPIOMODE_ENABLED); |
43 | BIAS(gpio_out_lo, PIN_OUTPUT_LOW|PIN_GPIOMODE_ENABLED); | 49 | BIAS(gpio_out_lo, PIN_OUTPUT_LOW|PIN_GPIOMODE_ENABLED); |
44 | /* Sleep modes */ | 50 | /* Sleep modes */ |
45 | BIAS(slpm_in_nopull_wkup, PIN_SLEEPMODE_ENABLED| | ||
46 | PIN_SLPM_DIR_INPUT|PIN_SLPM_PULL_NONE|PIN_SLPM_WAKEUP_ENABLE); | ||
47 | BIAS(slpm_in_wkup_pdis, PIN_SLEEPMODE_ENABLED| | 51 | BIAS(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); |
49 | BIAS(slpm_in_wkup_pdis_en, PIN_SLEEPMODE_ENABLED| | 53 | BIAS(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); |
55 | BIAS(slpm_out_lo_pdis, PIN_SLEEPMODE_ENABLED| | 59 | BIAS(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); |
57 | BIAS(slpm_out_lo_wkup, PIN_SLEEPMODE_ENABLED| | ||
58 | PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_ENABLE); | ||
59 | BIAS(slpm_out_lo_wkup_pdis, PIN_SLEEPMODE_ENABLED| | 61 | BIAS(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); |
61 | BIAS(slpm_out_hi_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_OUTPUT_HIGH| | 63 | BIAS(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 | |||
122 | static 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 | |||
294 | static 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 */ |
101 | static struct pinctrl_map __initdata mop500_family_pinmap[] = { | 349 | static 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 | ||
826 | void __init snowball_pinmaps_init(void) | 1075 | void __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 | ||
836 | void __init hrefv60_pinmaps_init(void) | 1087 | void __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 */ | ||
1003 | struct ab8500_regulator_platform_data ab8505_regulator_plat_data = { | 1002 | struct 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 | ||
54 | struct mmci_platform_data mop500_sdi0_data = { | 54 | struct 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 | ||
107 | struct mmci_platform_data mop500_sdi1_data = { | 109 | struct 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 | ||
144 | struct mmci_platform_data mop500_sdi2_data = { | 147 | struct 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 | ||
182 | struct mmci_platform_data mop500_sdi4_data = { | 189 | struct 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 | ||
22 | struct dbx500_asic_id dbx500_id; | 22 | struct dbx500_asic_id dbx500_id; |
23 | 23 | ||
24 | static unsigned int ux500_read_asicid(phys_addr_t addr) | 24 | static 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 | ||
43 | static void ux500_print_soc_info(unsigned int asicid) | 43 | static void ux500_print_soc_info(unsigned int asicid) |