diff options
Diffstat (limited to 'arch/arm/mach-ux500')
-rw-r--r-- | arch/arm/mach-ux500/Kconfig | 2 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-audio.c | 22 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-pins.c | 428 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-sdi.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-stuib.c | 93 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.c | 222 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.h | 10 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu-db8500.c | 123 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-ux500/devices-common.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-ux500/devices-common.h | 8 | ||||
-rw-r--r-- | arch/arm/mach-ux500/devices-db8500.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-ux500/devices-db8500.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-ux500/include/mach/irqs.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-ux500/include/mach/msp.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-ux500/timer.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-ux500/usb.c | 4 |
17 files changed, 584 insertions, 352 deletions
diff --git a/arch/arm/mach-ux500/Kconfig b/arch/arm/mach-ux500/Kconfig index e8c3f0d70ca6..5dea90636d94 100644 --- a/arch/arm/mach-ux500/Kconfig +++ b/arch/arm/mach-ux500/Kconfig | |||
@@ -7,8 +7,8 @@ config UX500_SOC_COMMON | |||
7 | select ARM_ERRATA_764369 if SMP | 7 | select ARM_ERRATA_764369 if SMP |
8 | select ARM_GIC | 8 | select ARM_GIC |
9 | select CACHE_L2X0 | 9 | select CACHE_L2X0 |
10 | select CLKSRC_NOMADIK_MTU | ||
10 | select COMMON_CLK | 11 | select COMMON_CLK |
11 | select HAS_MTU | ||
12 | select PINCTRL | 12 | select PINCTRL |
13 | select PINCTRL_NOMADIK | 13 | select PINCTRL_NOMADIK |
14 | select PL310_ERRATA_753970 if CACHE_PL310 | 14 | select PL310_ERRATA_753970 if CACHE_PL310 |
diff --git a/arch/arm/mach-ux500/board-mop500-audio.c b/arch/arm/mach-ux500/board-mop500-audio.c index 070629a95625..7209db7cdc72 100644 --- a/arch/arm/mach-ux500/board-mop500-audio.c +++ b/arch/arm/mach-ux500/board-mop500-audio.c | |||
@@ -7,10 +7,8 @@ | |||
7 | #include <linux/platform_device.h> | 7 | #include <linux/platform_device.h> |
8 | #include <linux/init.h> | 8 | #include <linux/init.h> |
9 | #include <linux/gpio.h> | 9 | #include <linux/gpio.h> |
10 | 10 | #include <linux/platform_data/pinctrl-nomadik.h> | |
11 | #include <plat/gpio-nomadik.h> | 11 | #include <linux/platform_data/dma-ste-dma40.h> |
12 | #include <plat/pincfg.h> | ||
13 | #include <plat/ste_dma40.h> | ||
14 | 12 | ||
15 | #include <mach/devices.h> | 13 | #include <mach/devices.h> |
16 | #include <mach/hardware.h> | 14 | #include <mach/hardware.h> |
@@ -150,15 +148,6 @@ static struct platform_device snd_soc_mop500 = { | |||
150 | }, | 148 | }, |
151 | }; | 149 | }; |
152 | 150 | ||
153 | /* Platform device for Ux500-PCM */ | ||
154 | static struct platform_device ux500_pcm = { | ||
155 | .name = "ux500-pcm", | ||
156 | .id = 0, | ||
157 | .dev = { | ||
158 | .platform_data = NULL, | ||
159 | }, | ||
160 | }; | ||
161 | |||
162 | struct msp_i2s_platform_data msp2_platform_data = { | 151 | struct msp_i2s_platform_data msp2_platform_data = { |
163 | .id = MSP_I2S_2, | 152 | .id = MSP_I2S_2, |
164 | .msp_i2s_dma_rx = &msp2_dma_rx, | 153 | .msp_i2s_dma_rx = &msp2_dma_rx, |
@@ -186,10 +175,3 @@ void mop500_audio_init(struct device *parent) | |||
186 | db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1, | 175 | db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1, |
187 | &msp3_platform_data); | 176 | &msp3_platform_data); |
188 | } | 177 | } |
189 | |||
190 | /* Due for removal once the MSP driver has been fully DT:ed. */ | ||
191 | void mop500_of_audio_init(struct device *parent) | ||
192 | { | ||
193 | pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__); | ||
194 | platform_device_register(&ux500_pcm); | ||
195 | } | ||
diff --git a/arch/arm/mach-ux500/board-mop500-pins.c b/arch/arm/mach-ux500/board-mop500-pins.c index a267c6d30e37..0a3f30df1eb8 100644 --- a/arch/arm/mach-ux500/board-mop500-pins.c +++ b/arch/arm/mach-ux500/board-mop500-pins.c | |||
@@ -9,10 +9,9 @@ | |||
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/platform_data/pinctrl-nomadik.h> | ||
12 | 13 | ||
13 | #include <asm/mach-types.h> | 14 | #include <asm/mach-types.h> |
14 | #include <plat/pincfg.h> | ||
15 | #include <plat/gpio-nomadik.h> | ||
16 | 15 | ||
17 | #include <mach/hardware.h> | 16 | #include <mach/hardware.h> |
18 | 17 | ||
@@ -34,8 +33,6 @@ BIAS(in_nopull, PIN_INPUT_NOPULL); | |||
34 | BIAS(in_nopull_slpm_nowkup, PIN_INPUT_NOPULL|PIN_SLPM_WAKEUP_DISABLE); | 33 | BIAS(in_nopull_slpm_nowkup, PIN_INPUT_NOPULL|PIN_SLPM_WAKEUP_DISABLE); |
35 | BIAS(in_pu, PIN_INPUT_PULLUP); | 34 | BIAS(in_pu, PIN_INPUT_PULLUP); |
36 | BIAS(in_pd, PIN_INPUT_PULLDOWN); | 35 | BIAS(in_pd, PIN_INPUT_PULLDOWN); |
37 | BIAS(in_pd_slpm_in_pu, PIN_INPUT_PULLDOWN|PIN_SLPM_INPUT_PULLUP); | ||
38 | BIAS(in_pu_slpm_out_lo, PIN_INPUT_PULLUP|PIN_SLPM_OUTPUT_LOW); | ||
39 | BIAS(out_hi, PIN_OUTPUT_HIGH); | 36 | BIAS(out_hi, PIN_OUTPUT_HIGH); |
40 | BIAS(out_lo, PIN_OUTPUT_LOW); | 37 | BIAS(out_lo, PIN_OUTPUT_LOW); |
41 | BIAS(out_lo_slpm_nowkup, PIN_OUTPUT_LOW|PIN_SLPM_WAKEUP_DISABLE); | 38 | BIAS(out_lo_slpm_nowkup, PIN_OUTPUT_LOW|PIN_SLPM_WAKEUP_DISABLE); |
@@ -47,14 +44,34 @@ BIAS(gpio_in_pd_slpm_gpio_nopull, PIN_INPUT_PULLDOWN|PIN_GPIOMODE_ENABLED|PIN_SL | |||
47 | BIAS(gpio_out_hi, PIN_OUTPUT_HIGH|PIN_GPIOMODE_ENABLED); | 44 | BIAS(gpio_out_hi, PIN_OUTPUT_HIGH|PIN_GPIOMODE_ENABLED); |
48 | BIAS(gpio_out_lo, PIN_OUTPUT_LOW|PIN_GPIOMODE_ENABLED); | 45 | BIAS(gpio_out_lo, PIN_OUTPUT_LOW|PIN_GPIOMODE_ENABLED); |
49 | /* Sleep modes */ | 46 | /* Sleep modes */ |
50 | BIAS(slpm_in_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_DIR_INPUT|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); | 47 | BIAS(slpm_in_nopull_wkup, PIN_SLEEPMODE_ENABLED| |
51 | BIAS(slpm_in_nopull_wkup, PIN_SLEEPMODE_ENABLED|PIN_SLPM_DIR_INPUT|PIN_SLPM_PULL_NONE|PIN_SLPM_WAKEUP_ENABLE); | 48 | PIN_SLPM_DIR_INPUT|PIN_SLPM_PULL_NONE|PIN_SLPM_WAKEUP_ENABLE); |
52 | BIAS(slpm_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); | 49 | BIAS(slpm_in_wkup_pdis, PIN_SLEEPMODE_ENABLED| |
53 | BIAS(slpm_out_hi_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_OUTPUT_HIGH|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); | 50 | PIN_SLPM_DIR_INPUT|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); |
54 | BIAS(slpm_out_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); | 51 | BIAS(slpm_wkup_pdis, PIN_SLEEPMODE_ENABLED| |
55 | BIAS(slpm_out_lo_wkup, PIN_SLEEPMODE_ENABLED|PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_ENABLE); | 52 | PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); |
56 | BIAS(slpm_out_lo_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); | 53 | BIAS(slpm_out_lo_pdis, PIN_SLEEPMODE_ENABLED| |
57 | BIAS(slpm_in_nopull_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_INPUT_NOPULL|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); | 54 | PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_DISABLE|PIN_SLPM_PDIS_DISABLED); |
55 | BIAS(slpm_out_lo_wkup, PIN_SLEEPMODE_ENABLED| | ||
56 | PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_ENABLE); | ||
57 | BIAS(slpm_out_lo_wkup_pdis, PIN_SLEEPMODE_ENABLED| | ||
58 | PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); | ||
59 | BIAS(slpm_out_hi_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_OUTPUT_HIGH| | ||
60 | PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); | ||
61 | BIAS(slpm_in_nopull_wkup_pdis, PIN_SLEEPMODE_ENABLED| | ||
62 | PIN_SLPM_INPUT_NOPULL|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); | ||
63 | BIAS(slpm_in_pu_wkup_pdis_en, PIN_SLEEPMODE_ENABLED|PIN_SLPM_INPUT_PULLUP| | ||
64 | PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_ENABLED); | ||
65 | BIAS(slpm_out_wkup_pdis, PIN_SLEEPMODE_ENABLED| | ||
66 | PIN_SLPM_DIR_OUTPUT|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); | ||
67 | BIAS(out_lo_wkup_pdis, PIN_SLPM_OUTPUT_LOW| | ||
68 | PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED); | ||
69 | BIAS(in_wkup_pdis_en, PIN_SLPM_DIR_INPUT|PIN_SLPM_WAKEUP_ENABLE| | ||
70 | PIN_SLPM_PDIS_ENABLED); | ||
71 | BIAS(in_wkup_pdis, PIN_SLPM_DIR_INPUT|PIN_SLPM_WAKEUP_ENABLE| | ||
72 | PIN_SLPM_PDIS_DISABLED); | ||
73 | BIAS(out_wkup_pdis, PIN_SLPM_DIR_OUTPUT|PIN_SLPM_WAKEUP_ENABLE| | ||
74 | PIN_SLPM_PDIS_DISABLED); | ||
58 | 75 | ||
59 | /* We use these to define hog settings that are always done on boot */ | 76 | /* We use these to define hog settings that are always done on boot */ |
60 | #define DB8500_MUX_HOG(group,func) \ | 77 | #define DB8500_MUX_HOG(group,func) \ |
@@ -70,13 +87,16 @@ BIAS(slpm_in_nopull_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_INPUT_NOPULL|PIN_S | |||
70 | PIN_MAP_MUX_GROUP_DEFAULT(dev, "pinctrl-db8500", group, func) | 87 | PIN_MAP_MUX_GROUP_DEFAULT(dev, "pinctrl-db8500", group, func) |
71 | #define DB8500_PIN(pin,conf,dev) \ | 88 | #define DB8500_PIN(pin,conf,dev) \ |
72 | PIN_MAP_CONFIGS_PIN_DEFAULT(dev, "pinctrl-db8500", pin, conf) | 89 | PIN_MAP_CONFIGS_PIN_DEFAULT(dev, "pinctrl-db8500", pin, conf) |
73 | #define DB8500_PIN_SLEEP(pin, conf, dev) \ | 90 | #define DB8500_PIN_IDLE(pin, conf, dev) \ |
74 | PIN_MAP_CONFIGS_PIN(dev, PINCTRL_STATE_SLEEP, "pinctrl-db8500", \ | 91 | PIN_MAP_CONFIGS_PIN(dev, PINCTRL_STATE_IDLE, "pinctrl-db8500", \ |
75 | pin, conf) | 92 | pin, conf) |
76 | 93 | #define DB8500_PIN_SLEEP(pin, conf, dev) \ | |
77 | #define DB8500_PIN_SLEEP(pin,conf,dev) \ | ||
78 | PIN_MAP_CONFIGS_PIN(dev, PINCTRL_STATE_SLEEP, "pinctrl-db8500", \ | 94 | PIN_MAP_CONFIGS_PIN(dev, PINCTRL_STATE_SLEEP, "pinctrl-db8500", \ |
79 | pin, conf) | 95 | pin, conf) |
96 | #define DB8500_MUX_STATE(group, func, dev, state) \ | ||
97 | PIN_MAP_MUX_GROUP(dev, state, "pinctrl-db8500", group, func) | ||
98 | #define DB8500_PIN_STATE(pin, conf, dev, state) \ | ||
99 | PIN_MAP_CONFIGS_PIN(dev, state, "pinctrl-db8500", pin, conf) | ||
80 | 100 | ||
81 | /* Pin control settings */ | 101 | /* Pin control settings */ |
82 | static struct pinctrl_map __initdata mop500_family_pinmap[] = { | 102 | static struct pinctrl_map __initdata mop500_family_pinmap[] = { |
@@ -113,7 +133,7 @@ static struct pinctrl_map __initdata mop500_family_pinmap[] = { | |||
113 | * UART0, we do not mux in u0 here. | 133 | * UART0, we do not mux in u0 here. |
114 | * uart-0 pins gpio configuration should be kept intact to prevent | 134 | * uart-0 pins gpio configuration should be kept intact to prevent |
115 | * a glitch in tx line when the tty dev is opened. Later these pins | 135 | * a glitch in tx line when the tty dev is opened. Later these pins |
116 | * are configured to uart mop500_pins_uart0 | 136 | * are configured by uart driver |
117 | */ | 137 | */ |
118 | DB8500_PIN_HOG("GPIO0_AJ5", in_pu), /* CTS */ | 138 | DB8500_PIN_HOG("GPIO0_AJ5", in_pu), /* CTS */ |
119 | DB8500_PIN_HOG("GPIO1_AJ3", out_hi), /* RTS */ | 139 | DB8500_PIN_HOG("GPIO1_AJ3", out_hi), /* RTS */ |
@@ -124,12 +144,13 @@ static struct pinctrl_map __initdata mop500_family_pinmap[] = { | |||
124 | * TODO: is this used on U8500 variants and Snowball really? | 144 | * TODO: is this used on U8500 variants and Snowball really? |
125 | * The setting on GPIO31 conflicts with magnetometer use on hrefv60 | 145 | * The setting on GPIO31 conflicts with magnetometer use on hrefv60 |
126 | */ | 146 | */ |
127 | DB8500_MUX_HOG("u2rxtx_c_1", "u2"), | 147 | /* default state for UART2 */ |
128 | DB8500_MUX_HOG("u2ctsrts_c_1", "u2"), | 148 | DB8500_MUX("u2rxtx_c_1", "u2", "uart2"), |
129 | DB8500_PIN_HOG("GPIO29_W2", in_pu), /* RXD */ | 149 | DB8500_PIN("GPIO29_W2", in_pu, "uart2"), /* RXD */ |
130 | DB8500_PIN_HOG("GPIO30_W3", out_hi), /* TXD */ | 150 | DB8500_PIN("GPIO30_W3", out_hi, "uart2"), /* TXD */ |
131 | DB8500_PIN_HOG("GPIO31_V3", in_pu), /* CTS */ | 151 | /* Sleep state for UART2 */ |
132 | DB8500_PIN_HOG("GPIO32_V2", out_hi), /* RTS */ | 152 | DB8500_PIN_SLEEP("GPIO29_W2", in_wkup_pdis, "uart2"), |
153 | DB8500_PIN_SLEEP("GPIO30_W3", out_wkup_pdis, "uart2"), | ||
133 | /* | 154 | /* |
134 | * The following pin sets were known as "runtime pins" before being | 155 | * The following pin sets were known as "runtime pins" before being |
135 | * converted to the pinctrl model. Here we model them as "default" | 156 | * converted to the pinctrl model. Here we model them as "default" |
@@ -141,11 +162,18 @@ static struct pinctrl_map __initdata mop500_family_pinmap[] = { | |||
141 | DB8500_PIN("GPIO1_AJ3", out_hi, "uart0"), /* RTS */ | 162 | DB8500_PIN("GPIO1_AJ3", out_hi, "uart0"), /* RTS */ |
142 | DB8500_PIN("GPIO2_AH4", in_pu, "uart0"), /* RXD */ | 163 | DB8500_PIN("GPIO2_AH4", in_pu, "uart0"), /* RXD */ |
143 | DB8500_PIN("GPIO3_AH3", out_hi, "uart0"), /* TXD */ | 164 | DB8500_PIN("GPIO3_AH3", out_hi, "uart0"), /* TXD */ |
144 | /* UART0 sleep state */ | 165 | /* Sleep state for UART0 */ |
145 | DB8500_PIN_SLEEP("GPIO0_AJ5", slpm_in_wkup_pdis, "uart0"), | 166 | DB8500_PIN_SLEEP("GPIO0_AJ5", slpm_in_wkup_pdis, "uart0"), |
146 | DB8500_PIN_SLEEP("GPIO1_AJ3", slpm_out_hi_wkup_pdis, "uart0"), | 167 | DB8500_PIN_SLEEP("GPIO1_AJ3", slpm_out_hi_wkup_pdis, "uart0"), |
147 | DB8500_PIN_SLEEP("GPIO2_AH4", slpm_in_wkup_pdis, "uart0"), | 168 | DB8500_PIN_SLEEP("GPIO2_AH4", slpm_in_wkup_pdis, "uart0"), |
148 | DB8500_PIN_SLEEP("GPIO3_AH3", slpm_out_wkup_pdis, "uart0"), | 169 | DB8500_PIN_SLEEP("GPIO3_AH3", slpm_out_wkup_pdis, "uart0"), |
170 | /* Mux in UART1 after initialization */ | ||
171 | DB8500_MUX("u1rxtx_a_1", "u1", "uart1"), | ||
172 | DB8500_PIN("GPIO4_AH6", in_pu, "uart1"), /* RXD */ | ||
173 | DB8500_PIN("GPIO5_AG6", out_hi, "uart1"), /* TXD */ | ||
174 | /* Sleep state for UART1 */ | ||
175 | DB8500_PIN_SLEEP("GPIO4_AH6", slpm_in_wkup_pdis, "uart1"), | ||
176 | DB8500_PIN_SLEEP("GPIO5_AG6", slpm_out_wkup_pdis, "uart1"), | ||
149 | /* MSP1 for ALSA codec */ | 177 | /* MSP1 for ALSA codec */ |
150 | DB8500_MUX("msp1txrx_a_1", "msp1", "ux500-msp-i2s.1"), | 178 | DB8500_MUX("msp1txrx_a_1", "msp1", "ux500-msp-i2s.1"), |
151 | DB8500_MUX("msp1_a_1", "msp1", "ux500-msp-i2s.1"), | 179 | DB8500_MUX("msp1_a_1", "msp1", "ux500-msp-i2s.1"), |
@@ -162,7 +190,10 @@ static struct pinctrl_map __initdata mop500_family_pinmap[] = { | |||
162 | DB8500_MUX("lcd_d8_d11_a_1", "lcd", "mcde-tvout"), | 190 | DB8500_MUX("lcd_d8_d11_a_1", "lcd", "mcde-tvout"), |
163 | DB8500_MUX("lcdaclk_b_1", "lcda", "mcde-tvout"), | 191 | DB8500_MUX("lcdaclk_b_1", "lcda", "mcde-tvout"), |
164 | /* Mux in LCD VSI1 and pull it up for MCDE HDMI output */ | 192 | /* Mux in LCD VSI1 and pull it up for MCDE HDMI output */ |
165 | DB8500_MUX("lcdvsi1_a_1", "lcd", "av8100-hdmi"), | 193 | DB8500_MUX("lcdvsi1_a_1", "lcd", "0-0070"), |
194 | DB8500_PIN("GPIO69_E2", in_pu, "0-0070"), | ||
195 | /* LCD VSI1 sleep state */ | ||
196 | DB8500_PIN_SLEEP("GPIO69_E2", slpm_in_wkup_pdis, "0-0070"), | ||
166 | /* Mux in i2c0 block, default state */ | 197 | /* Mux in i2c0 block, default state */ |
167 | DB8500_MUX("i2c0_a_1", "i2c0", "nmk-i2c.0"), | 198 | DB8500_MUX("i2c0_a_1", "i2c0", "nmk-i2c.0"), |
168 | /* i2c0 sleep state */ | 199 | /* i2c0 sleep state */ |
@@ -195,6 +226,18 @@ static struct pinctrl_map __initdata mop500_family_pinmap[] = { | |||
195 | DB8500_PIN("GPIO26_Y2", in_pu, "sdi0"), /* DAT1 */ | 226 | DB8500_PIN("GPIO26_Y2", in_pu, "sdi0"), /* DAT1 */ |
196 | DB8500_PIN("GPIO27_AA2", in_pu, "sdi0"), /* DAT2 */ | 227 | DB8500_PIN("GPIO27_AA2", in_pu, "sdi0"), /* DAT2 */ |
197 | DB8500_PIN("GPIO28_AA1", in_pu, "sdi0"), /* DAT3 */ | 228 | DB8500_PIN("GPIO28_AA1", in_pu, "sdi0"), /* DAT3 */ |
229 | /* SDI0 sleep state */ | ||
230 | DB8500_PIN_SLEEP("GPIO18_AC2", slpm_out_hi_wkup_pdis, "sdi0"), | ||
231 | DB8500_PIN_SLEEP("GPIO19_AC1", slpm_out_hi_wkup_pdis, "sdi0"), | ||
232 | DB8500_PIN_SLEEP("GPIO20_AB4", slpm_out_hi_wkup_pdis, "sdi0"), | ||
233 | DB8500_PIN_SLEEP("GPIO22_AA3", slpm_in_wkup_pdis, "sdi0"), | ||
234 | DB8500_PIN_SLEEP("GPIO23_AA4", slpm_out_lo_wkup_pdis, "sdi0"), | ||
235 | DB8500_PIN_SLEEP("GPIO24_AB2", slpm_in_wkup_pdis, "sdi0"), | ||
236 | DB8500_PIN_SLEEP("GPIO25_Y4", slpm_in_wkup_pdis, "sdi0"), | ||
237 | DB8500_PIN_SLEEP("GPIO26_Y2", slpm_in_wkup_pdis, "sdi0"), | ||
238 | DB8500_PIN_SLEEP("GPIO27_AA2", slpm_in_wkup_pdis, "sdi0"), | ||
239 | DB8500_PIN_SLEEP("GPIO28_AA1", slpm_in_wkup_pdis, "sdi0"), | ||
240 | |||
198 | /* Mux in SDI1 (here called MC1) used for SDIO for CW1200 WLAN */ | 241 | /* Mux in SDI1 (here called MC1) used for SDIO for CW1200 WLAN */ |
199 | DB8500_MUX("mc1_a_1", "mc1", "sdi1"), | 242 | DB8500_MUX("mc1_a_1", "mc1", "sdi1"), |
200 | DB8500_PIN("GPIO208_AH16", out_lo, "sdi1"), /* CLK */ | 243 | DB8500_PIN("GPIO208_AH16", out_lo, "sdi1"), /* CLK */ |
@@ -204,6 +247,15 @@ static struct pinctrl_map __initdata mop500_family_pinmap[] = { | |||
204 | DB8500_PIN("GPIO212_AF13", in_pu, "sdi1"), /* DAT1 */ | 247 | DB8500_PIN("GPIO212_AF13", in_pu, "sdi1"), /* DAT1 */ |
205 | DB8500_PIN("GPIO213_AG13", in_pu, "sdi1"), /* DAT2 */ | 248 | DB8500_PIN("GPIO213_AG13", in_pu, "sdi1"), /* DAT2 */ |
206 | DB8500_PIN("GPIO214_AH15", in_pu, "sdi1"), /* DAT3 */ | 249 | DB8500_PIN("GPIO214_AH15", in_pu, "sdi1"), /* DAT3 */ |
250 | /* SDI1 sleep state */ | ||
251 | DB8500_PIN_SLEEP("GPIO208_AH16", slpm_out_lo_wkup_pdis, "sdi1"), /* CLK */ | ||
252 | DB8500_PIN_SLEEP("GPIO209_AG15", slpm_in_wkup_pdis, "sdi1"), /* FBCLK */ | ||
253 | DB8500_PIN_SLEEP("GPIO210_AJ15", slpm_in_wkup_pdis, "sdi1"), /* CMD */ | ||
254 | DB8500_PIN_SLEEP("GPIO211_AG14", slpm_in_wkup_pdis, "sdi1"), /* DAT0 */ | ||
255 | DB8500_PIN_SLEEP("GPIO212_AF13", slpm_in_wkup_pdis, "sdi1"), /* DAT1 */ | ||
256 | DB8500_PIN_SLEEP("GPIO213_AG13", slpm_in_wkup_pdis, "sdi1"), /* DAT2 */ | ||
257 | DB8500_PIN_SLEEP("GPIO214_AH15", slpm_in_wkup_pdis, "sdi1"), /* DAT3 */ | ||
258 | |||
207 | /* Mux in SDI2 (here called MC2) used for for PoP eMMC */ | 259 | /* Mux in SDI2 (here called MC2) used for for PoP eMMC */ |
208 | DB8500_MUX("mc2_a_1", "mc2", "sdi2"), | 260 | DB8500_MUX("mc2_a_1", "mc2", "sdi2"), |
209 | DB8500_PIN("GPIO128_A5", out_lo, "sdi2"), /* CLK */ | 261 | DB8500_PIN("GPIO128_A5", out_lo, "sdi2"), /* CLK */ |
@@ -217,6 +269,19 @@ static struct pinctrl_map __initdata mop500_family_pinmap[] = { | |||
217 | DB8500_PIN("GPIO136_C7", in_pu, "sdi2"), /* DAT5 */ | 269 | DB8500_PIN("GPIO136_C7", in_pu, "sdi2"), /* DAT5 */ |
218 | DB8500_PIN("GPIO137_A7", in_pu, "sdi2"), /* DAT6 */ | 270 | DB8500_PIN("GPIO137_A7", in_pu, "sdi2"), /* DAT6 */ |
219 | DB8500_PIN("GPIO138_C5", in_pu, "sdi2"), /* DAT7 */ | 271 | DB8500_PIN("GPIO138_C5", in_pu, "sdi2"), /* DAT7 */ |
272 | /* SDI2 sleep state */ | ||
273 | DB8500_PIN_SLEEP("GPIO128_A5", out_lo_wkup_pdis, "sdi2"), /* CLK */ | ||
274 | DB8500_PIN_SLEEP("GPIO129_B4", in_wkup_pdis_en, "sdi2"), /* CMD */ | ||
275 | DB8500_PIN_SLEEP("GPIO130_C8", in_wkup_pdis_en, "sdi2"), /* FBCLK */ | ||
276 | DB8500_PIN_SLEEP("GPIO131_A12", in_wkup_pdis, "sdi2"), /* DAT0 */ | ||
277 | DB8500_PIN_SLEEP("GPIO132_C10", in_wkup_pdis, "sdi2"), /* DAT1 */ | ||
278 | DB8500_PIN_SLEEP("GPIO133_B10", in_wkup_pdis, "sdi2"), /* DAT2 */ | ||
279 | DB8500_PIN_SLEEP("GPIO134_B9", in_wkup_pdis, "sdi2"), /* DAT3 */ | ||
280 | DB8500_PIN_SLEEP("GPIO135_A9", in_wkup_pdis, "sdi2"), /* DAT4 */ | ||
281 | DB8500_PIN_SLEEP("GPIO136_C7", in_wkup_pdis, "sdi2"), /* DAT5 */ | ||
282 | DB8500_PIN_SLEEP("GPIO137_A7", in_wkup_pdis, "sdi2"), /* DAT6 */ | ||
283 | DB8500_PIN_SLEEP("GPIO138_C5", in_wkup_pdis, "sdi2"), /* DAT7 */ | ||
284 | |||
220 | /* Mux in SDI4 (here called MC4) used for for PCB-mounted eMMC */ | 285 | /* Mux in SDI4 (here called MC4) used for for PCB-mounted eMMC */ |
221 | DB8500_MUX("mc4_a_1", "mc4", "sdi4"), | 286 | DB8500_MUX("mc4_a_1", "mc4", "sdi4"), |
222 | DB8500_PIN("GPIO197_AH24", in_pu, "sdi4"), /* DAT3 */ | 287 | DB8500_PIN("GPIO197_AH24", in_pu, "sdi4"), /* DAT3 */ |
@@ -230,6 +295,19 @@ static struct pinctrl_map __initdata mop500_family_pinmap[] = { | |||
230 | DB8500_PIN("GPIO205_AG23", in_pu, "sdi4"), /* DAT6 */ | 295 | DB8500_PIN("GPIO205_AG23", in_pu, "sdi4"), /* DAT6 */ |
231 | DB8500_PIN("GPIO206_AG24", in_pu, "sdi4"), /* DAT5 */ | 296 | DB8500_PIN("GPIO206_AG24", in_pu, "sdi4"), /* DAT5 */ |
232 | DB8500_PIN("GPIO207_AJ23", in_pu, "sdi4"), /* DAT4 */ | 297 | DB8500_PIN("GPIO207_AJ23", in_pu, "sdi4"), /* DAT4 */ |
298 | /*SDI4 sleep state */ | ||
299 | DB8500_PIN_SLEEP("GPIO197_AH24", slpm_in_wkup_pdis, "sdi4"), /* DAT3 */ | ||
300 | DB8500_PIN_SLEEP("GPIO198_AG25", slpm_in_wkup_pdis, "sdi4"), /* DAT2 */ | ||
301 | DB8500_PIN_SLEEP("GPIO199_AH23", slpm_in_wkup_pdis, "sdi4"), /* DAT1 */ | ||
302 | DB8500_PIN_SLEEP("GPIO200_AH26", slpm_in_wkup_pdis, "sdi4"), /* DAT0 */ | ||
303 | DB8500_PIN_SLEEP("GPIO201_AF24", slpm_in_wkup_pdis, "sdi4"), /* CMD */ | ||
304 | DB8500_PIN_SLEEP("GPIO202_AF25", slpm_in_wkup_pdis, "sdi4"), /* FBCLK */ | ||
305 | DB8500_PIN_SLEEP("GPIO203_AE23", slpm_out_lo_wkup_pdis, "sdi4"), /* CLK */ | ||
306 | DB8500_PIN_SLEEP("GPIO204_AF23", slpm_in_wkup_pdis, "sdi4"), /* DAT7 */ | ||
307 | DB8500_PIN_SLEEP("GPIO205_AG23", slpm_in_wkup_pdis, "sdi4"), /* DAT6 */ | ||
308 | DB8500_PIN_SLEEP("GPIO206_AG24", slpm_in_wkup_pdis, "sdi4"), /* DAT5 */ | ||
309 | DB8500_PIN_SLEEP("GPIO207_AJ23", slpm_in_wkup_pdis, "sdi4"), /* DAT4 */ | ||
310 | |||
233 | /* Mux in USB pins, drive STP high */ | 311 | /* Mux in USB pins, drive STP high */ |
234 | DB8500_MUX("usb_a_1", "usb", "musb-ux500.0"), | 312 | DB8500_MUX("usb_a_1", "usb", "musb-ux500.0"), |
235 | DB8500_PIN("GPIO257_AE29", out_hi, "musb-ux500.0"), /* STP */ | 313 | DB8500_PIN("GPIO257_AE29", out_hi, "musb-ux500.0"), /* STP */ |
@@ -239,10 +317,232 @@ static struct pinctrl_map __initdata mop500_family_pinmap[] = { | |||
239 | DB8500_PIN("GPIO218_AH11", in_pd, "spi2"), /* RXD */ | 317 | DB8500_PIN("GPIO218_AH11", in_pd, "spi2"), /* RXD */ |
240 | DB8500_PIN("GPIO215_AH13", out_lo, "spi2"), /* TXD */ | 318 | DB8500_PIN("GPIO215_AH13", out_lo, "spi2"), /* TXD */ |
241 | DB8500_PIN("GPIO217_AH12", out_lo, "spi2"), /* CLK */ | 319 | DB8500_PIN("GPIO217_AH12", out_lo, "spi2"), /* CLK */ |
320 | /* SPI2 idle state */ | ||
321 | DB8500_PIN_SLEEP("GPIO218_AH11", slpm_in_wkup_pdis, "spi2"), /* RXD */ | ||
322 | DB8500_PIN_SLEEP("GPIO215_AH13", slpm_out_lo_wkup_pdis, "spi2"), /* TXD */ | ||
323 | DB8500_PIN_SLEEP("GPIO217_AH12", slpm_wkup_pdis, "spi2"), /* CLK */ | ||
242 | /* SPI2 sleep state */ | 324 | /* SPI2 sleep state */ |
325 | DB8500_PIN_SLEEP("GPIO216_AG12", slpm_in_wkup_pdis, "spi2"), /* FRM */ | ||
243 | DB8500_PIN_SLEEP("GPIO218_AH11", slpm_in_wkup_pdis, "spi2"), /* RXD */ | 326 | DB8500_PIN_SLEEP("GPIO218_AH11", slpm_in_wkup_pdis, "spi2"), /* RXD */ |
244 | DB8500_PIN_SLEEP("GPIO215_AH13", slpm_out_lo_wkup_pdis, "spi2"), /* TXD */ | 327 | DB8500_PIN_SLEEP("GPIO215_AH13", slpm_out_lo_wkup_pdis, "spi2"), /* TXD */ |
245 | DB8500_PIN_SLEEP("GPIO217_AH12", slpm_wkup_pdis, "spi2"), /* CLK */ | 328 | DB8500_PIN_SLEEP("GPIO217_AH12", slpm_wkup_pdis, "spi2"), /* CLK */ |
329 | |||
330 | /* ske default state */ | ||
331 | DB8500_MUX("kp_a_2", "kp", "nmk-ske-keypad"), | ||
332 | DB8500_PIN("GPIO153_B17", in_pd, "nmk-ske-keypad"), /* I7 */ | ||
333 | DB8500_PIN("GPIO154_C16", in_pd, "nmk-ske-keypad"), /* I6 */ | ||
334 | DB8500_PIN("GPIO155_C19", in_pd, "nmk-ske-keypad"), /* I5 */ | ||
335 | DB8500_PIN("GPIO156_C17", in_pd, "nmk-ske-keypad"), /* I4 */ | ||
336 | DB8500_PIN("GPIO161_D21", in_pd, "nmk-ske-keypad"), /* I3 */ | ||
337 | DB8500_PIN("GPIO162_D20", in_pd, "nmk-ske-keypad"), /* I2 */ | ||
338 | DB8500_PIN("GPIO163_C20", in_pd, "nmk-ske-keypad"), /* I1 */ | ||
339 | DB8500_PIN("GPIO164_B21", in_pd, "nmk-ske-keypad"), /* I0 */ | ||
340 | DB8500_PIN("GPIO157_A18", out_lo, "nmk-ske-keypad"), /* O7 */ | ||
341 | DB8500_PIN("GPIO158_C18", out_lo, "nmk-ske-keypad"), /* O6 */ | ||
342 | DB8500_PIN("GPIO159_B19", out_lo, "nmk-ske-keypad"), /* O5 */ | ||
343 | DB8500_PIN("GPIO160_B20", out_lo, "nmk-ske-keypad"), /* O4 */ | ||
344 | DB8500_PIN("GPIO165_C21", out_lo, "nmk-ske-keypad"), /* O3 */ | ||
345 | DB8500_PIN("GPIO166_A22", out_lo, "nmk-ske-keypad"), /* O2 */ | ||
346 | DB8500_PIN("GPIO167_B24", out_lo, "nmk-ske-keypad"), /* O1 */ | ||
347 | DB8500_PIN("GPIO168_C22", out_lo, "nmk-ske-keypad"), /* O0 */ | ||
348 | /* ske sleep state */ | ||
349 | DB8500_PIN_SLEEP("GPIO153_B17", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I7 */ | ||
350 | DB8500_PIN_SLEEP("GPIO154_C16", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I6 */ | ||
351 | DB8500_PIN_SLEEP("GPIO155_C19", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I5 */ | ||
352 | DB8500_PIN_SLEEP("GPIO156_C17", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I4 */ | ||
353 | DB8500_PIN_SLEEP("GPIO161_D21", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I3 */ | ||
354 | DB8500_PIN_SLEEP("GPIO162_D20", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I2 */ | ||
355 | DB8500_PIN_SLEEP("GPIO163_C20", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I1 */ | ||
356 | DB8500_PIN_SLEEP("GPIO164_B21", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I0 */ | ||
357 | DB8500_PIN_SLEEP("GPIO157_A18", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O7 */ | ||
358 | DB8500_PIN_SLEEP("GPIO158_C18", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O6 */ | ||
359 | DB8500_PIN_SLEEP("GPIO159_B19", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O5 */ | ||
360 | DB8500_PIN_SLEEP("GPIO160_B20", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O4 */ | ||
361 | DB8500_PIN_SLEEP("GPIO165_C21", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O3 */ | ||
362 | DB8500_PIN_SLEEP("GPIO166_A22", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O2 */ | ||
363 | DB8500_PIN_SLEEP("GPIO167_B24", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O1 */ | ||
364 | DB8500_PIN_SLEEP("GPIO168_C22", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O0 */ | ||
365 | |||
366 | /* STM APE pins states */ | ||
367 | DB8500_MUX_STATE("stmape_c_1", "stmape", | ||
368 | "stm", "ape_mipi34"), | ||
369 | DB8500_PIN_STATE("GPIO70_G5", in_nopull, | ||
370 | "stm", "ape_mipi34"), /* clk */ | ||
371 | DB8500_PIN_STATE("GPIO71_G4", in_nopull, | ||
372 | "stm", "ape_mipi34"), /* dat3 */ | ||
373 | DB8500_PIN_STATE("GPIO72_H4", in_nopull, | ||
374 | "stm", "ape_mipi34"), /* dat2 */ | ||
375 | DB8500_PIN_STATE("GPIO73_H3", in_nopull, | ||
376 | "stm", "ape_mipi34"), /* dat1 */ | ||
377 | DB8500_PIN_STATE("GPIO74_J3", in_nopull, | ||
378 | "stm", "ape_mipi34"), /* dat0 */ | ||
379 | |||
380 | DB8500_PIN_STATE("GPIO70_G5", slpm_out_lo_pdis, | ||
381 | "stm", "ape_mipi34_sleep"), /* clk */ | ||
382 | DB8500_PIN_STATE("GPIO71_G4", slpm_out_lo_pdis, | ||
383 | "stm", "ape_mipi34_sleep"), /* dat3 */ | ||
384 | DB8500_PIN_STATE("GPIO72_H4", slpm_out_lo_pdis, | ||
385 | "stm", "ape_mipi34_sleep"), /* dat2 */ | ||
386 | DB8500_PIN_STATE("GPIO73_H3", slpm_out_lo_pdis, | ||
387 | "stm", "ape_mipi34_sleep"), /* dat1 */ | ||
388 | DB8500_PIN_STATE("GPIO74_J3", slpm_out_lo_pdis, | ||
389 | "stm", "ape_mipi34_sleep"), /* dat0 */ | ||
390 | |||
391 | DB8500_MUX_STATE("stmape_oc1_1", "stmape", | ||
392 | "stm", "ape_microsd"), | ||
393 | DB8500_PIN_STATE("GPIO23_AA4", in_nopull, | ||
394 | "stm", "ape_microsd"), /* clk */ | ||
395 | DB8500_PIN_STATE("GPIO25_Y4", in_nopull, | ||
396 | "stm", "ape_microsd"), /* dat0 */ | ||
397 | DB8500_PIN_STATE("GPIO26_Y2", in_nopull, | ||
398 | "stm", "ape_microsd"), /* dat1 */ | ||
399 | DB8500_PIN_STATE("GPIO27_AA2", in_nopull, | ||
400 | "stm", "ape_microsd"), /* dat2 */ | ||
401 | DB8500_PIN_STATE("GPIO28_AA1", in_nopull, | ||
402 | "stm", "ape_microsd"), /* dat3 */ | ||
403 | |||
404 | DB8500_PIN_STATE("GPIO23_AA4", slpm_out_lo_wkup_pdis, | ||
405 | "stm", "ape_microsd_sleep"), /* clk */ | ||
406 | DB8500_PIN_STATE("GPIO25_Y4", slpm_in_wkup_pdis, | ||
407 | "stm", "ape_microsd_sleep"), /* dat0 */ | ||
408 | DB8500_PIN_STATE("GPIO26_Y2", slpm_in_wkup_pdis, | ||
409 | "stm", "ape_microsd_sleep"), /* dat1 */ | ||
410 | DB8500_PIN_STATE("GPIO27_AA2", slpm_in_wkup_pdis, | ||
411 | "stm", "ape_microsd_sleep"), /* dat2 */ | ||
412 | DB8500_PIN_STATE("GPIO28_AA1", slpm_in_wkup_pdis, | ||
413 | "stm", "ape_microsd_sleep"), /* dat3 */ | ||
414 | |||
415 | /* STM Modem pins states */ | ||
416 | DB8500_MUX_STATE("stmmod_oc3_2", "stmmod", | ||
417 | "stm", "mod_mipi34"), | ||
418 | DB8500_MUX_STATE("uartmodrx_oc3_1", "uartmod", | ||
419 | "stm", "mod_mipi34"), | ||
420 | DB8500_MUX_STATE("uartmodtx_oc3_1", "uartmod", | ||
421 | "stm", "mod_mipi34"), | ||
422 | DB8500_PIN_STATE("GPIO70_G5", in_nopull, | ||
423 | "stm", "mod_mipi34"), /* clk */ | ||
424 | DB8500_PIN_STATE("GPIO71_G4", in_nopull, | ||
425 | "stm", "mod_mipi34"), /* dat3 */ | ||
426 | DB8500_PIN_STATE("GPIO72_H4", in_nopull, | ||
427 | "stm", "mod_mipi34"), /* dat2 */ | ||
428 | DB8500_PIN_STATE("GPIO73_H3", in_nopull, | ||
429 | "stm", "mod_mipi34"), /* dat1 */ | ||
430 | DB8500_PIN_STATE("GPIO74_J3", in_nopull, | ||
431 | "stm", "mod_mipi34"), /* dat0 */ | ||
432 | DB8500_PIN_STATE("GPIO75_H2", in_pu, | ||
433 | "stm", "mod_mipi34"), /* uartmod rx */ | ||
434 | DB8500_PIN_STATE("GPIO76_J2", out_lo, | ||
435 | "stm", "mod_mipi34"), /* uartmod tx */ | ||
436 | |||
437 | DB8500_PIN_STATE("GPIO70_G5", slpm_out_lo_pdis, | ||
438 | "stm", "mod_mipi34_sleep"), /* clk */ | ||
439 | DB8500_PIN_STATE("GPIO71_G4", slpm_out_lo_pdis, | ||
440 | "stm", "mod_mipi34_sleep"), /* dat3 */ | ||
441 | DB8500_PIN_STATE("GPIO72_H4", slpm_out_lo_pdis, | ||
442 | "stm", "mod_mipi34_sleep"), /* dat2 */ | ||
443 | DB8500_PIN_STATE("GPIO73_H3", slpm_out_lo_pdis, | ||
444 | "stm", "mod_mipi34_sleep"), /* dat1 */ | ||
445 | DB8500_PIN_STATE("GPIO74_J3", slpm_out_lo_pdis, | ||
446 | "stm", "mod_mipi34_sleep"), /* dat0 */ | ||
447 | DB8500_PIN_STATE("GPIO75_H2", slpm_in_wkup_pdis, | ||
448 | "stm", "mod_mipi34_sleep"), /* uartmod rx */ | ||
449 | DB8500_PIN_STATE("GPIO76_J2", slpm_out_lo_wkup_pdis, | ||
450 | "stm", "mod_mipi34_sleep"), /* uartmod tx */ | ||
451 | |||
452 | DB8500_MUX_STATE("stmmod_b_1", "stmmod", | ||
453 | "stm", "mod_microsd"), | ||
454 | DB8500_MUX_STATE("uartmodrx_oc3_1", "uartmod", | ||
455 | "stm", "mod_microsd"), | ||
456 | DB8500_MUX_STATE("uartmodtx_oc3_1", "uartmod", | ||
457 | "stm", "mod_microsd"), | ||
458 | DB8500_PIN_STATE("GPIO23_AA4", in_nopull, | ||
459 | "stm", "mod_microsd"), /* clk */ | ||
460 | DB8500_PIN_STATE("GPIO25_Y4", in_nopull, | ||
461 | "stm", "mod_microsd"), /* dat0 */ | ||
462 | DB8500_PIN_STATE("GPIO26_Y2", in_nopull, | ||
463 | "stm", "mod_microsd"), /* dat1 */ | ||
464 | DB8500_PIN_STATE("GPIO27_AA2", in_nopull, | ||
465 | "stm", "mod_microsd"), /* dat2 */ | ||
466 | DB8500_PIN_STATE("GPIO28_AA1", in_nopull, | ||
467 | "stm", "mod_microsd"), /* dat3 */ | ||
468 | DB8500_PIN_STATE("GPIO75_H2", in_pu, | ||
469 | "stm", "mod_microsd"), /* uartmod rx */ | ||
470 | DB8500_PIN_STATE("GPIO76_J2", out_lo, | ||
471 | "stm", "mod_microsd"), /* uartmod tx */ | ||
472 | |||
473 | DB8500_PIN_STATE("GPIO23_AA4", slpm_out_lo_wkup_pdis, | ||
474 | "stm", "mod_microsd_sleep"), /* clk */ | ||
475 | DB8500_PIN_STATE("GPIO25_Y4", slpm_in_wkup_pdis, | ||
476 | "stm", "mod_microsd_sleep"), /* dat0 */ | ||
477 | DB8500_PIN_STATE("GPIO26_Y2", slpm_in_wkup_pdis, | ||
478 | "stm", "mod_microsd_sleep"), /* dat1 */ | ||
479 | DB8500_PIN_STATE("GPIO27_AA2", slpm_in_wkup_pdis, | ||
480 | "stm", "mod_microsd_sleep"), /* dat2 */ | ||
481 | DB8500_PIN_STATE("GPIO28_AA1", slpm_in_wkup_pdis, | ||
482 | "stm", "mod_microsd_sleep"), /* dat3 */ | ||
483 | DB8500_PIN_STATE("GPIO75_H2", slpm_in_wkup_pdis, | ||
484 | "stm", "mod_microsd_sleep"), /* uartmod rx */ | ||
485 | DB8500_PIN_STATE("GPIO76_J2", slpm_out_lo_wkup_pdis, | ||
486 | "stm", "mod_microsd_sleep"), /* uartmod tx */ | ||
487 | |||
488 | /* STM dual Modem/APE pins state */ | ||
489 | DB8500_MUX_STATE("stmmod_oc3_2", "stmmod", | ||
490 | "stm", "mod_mipi34_ape_mipi60"), | ||
491 | DB8500_MUX_STATE("stmape_c_2", "stmape", | ||
492 | "stm", "mod_mipi34_ape_mipi60"), | ||
493 | DB8500_MUX_STATE("uartmodrx_oc3_1", "uartmod", | ||
494 | "stm", "mod_mipi34_ape_mipi60"), | ||
495 | DB8500_MUX_STATE("uartmodtx_oc3_1", "uartmod", | ||
496 | "stm", "mod_mipi34_ape_mipi60"), | ||
497 | DB8500_PIN_STATE("GPIO70_G5", in_nopull, | ||
498 | "stm", "mod_mipi34_ape_mipi60"), /* clk */ | ||
499 | DB8500_PIN_STATE("GPIO71_G4", in_nopull, | ||
500 | "stm", "mod_mipi34_ape_mipi60"), /* dat3 */ | ||
501 | DB8500_PIN_STATE("GPIO72_H4", in_nopull, | ||
502 | "stm", "mod_mipi34_ape_mipi60"), /* dat2 */ | ||
503 | DB8500_PIN_STATE("GPIO73_H3", in_nopull, | ||
504 | "stm", "mod_mipi34_ape_mipi60"), /* dat1 */ | ||
505 | DB8500_PIN_STATE("GPIO74_J3", in_nopull, | ||
506 | "stm", "mod_mipi34_ape_mipi60"), /* dat0 */ | ||
507 | DB8500_PIN_STATE("GPIO75_H2", in_pu, | ||
508 | "stm", "mod_mipi34_ape_mipi60"), /* uartmod rx */ | ||
509 | DB8500_PIN_STATE("GPIO76_J2", out_lo, | ||
510 | "stm", "mod_mipi34_ape_mipi60"), /* uartmod tx */ | ||
511 | DB8500_PIN_STATE("GPIO155_C19", in_nopull, | ||
512 | "stm", "mod_mipi34_ape_mipi60"), /* clk */ | ||
513 | DB8500_PIN_STATE("GPIO156_C17", in_nopull, | ||
514 | "stm", "mod_mipi34_ape_mipi60"), /* dat3 */ | ||
515 | DB8500_PIN_STATE("GPIO157_A18", in_nopull, | ||
516 | "stm", "mod_mipi34_ape_mipi60"), /* dat2 */ | ||
517 | DB8500_PIN_STATE("GPIO158_C18", in_nopull, | ||
518 | "stm", "mod_mipi34_ape_mipi60"), /* dat1 */ | ||
519 | DB8500_PIN_STATE("GPIO159_B19", in_nopull, | ||
520 | "stm", "mod_mipi34_ape_mipi60"), /* dat0 */ | ||
521 | |||
522 | DB8500_PIN_STATE("GPIO70_G5", slpm_out_lo_pdis, | ||
523 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* clk */ | ||
524 | DB8500_PIN_STATE("GPIO71_G4", slpm_out_lo_pdis, | ||
525 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat3 */ | ||
526 | DB8500_PIN_STATE("GPIO72_H4", slpm_out_lo_pdis, | ||
527 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat2 */ | ||
528 | DB8500_PIN_STATE("GPIO73_H3", slpm_out_lo_pdis, | ||
529 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat1 */ | ||
530 | DB8500_PIN_STATE("GPIO74_J3", slpm_out_lo_pdis, | ||
531 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat0 */ | ||
532 | DB8500_PIN_STATE("GPIO75_H2", slpm_in_wkup_pdis, | ||
533 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* uartmod rx */ | ||
534 | DB8500_PIN_STATE("GPIO76_J2", slpm_out_lo_wkup_pdis, | ||
535 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* uartmod tx */ | ||
536 | DB8500_PIN_STATE("GPIO155_C19", slpm_in_wkup_pdis, | ||
537 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* clk */ | ||
538 | DB8500_PIN_STATE("GPIO156_C17", slpm_in_wkup_pdis, | ||
539 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat3 */ | ||
540 | DB8500_PIN_STATE("GPIO157_A18", slpm_in_wkup_pdis, | ||
541 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat2 */ | ||
542 | DB8500_PIN_STATE("GPIO158_C18", slpm_in_wkup_pdis, | ||
543 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat1 */ | ||
544 | DB8500_PIN_STATE("GPIO159_B19", slpm_in_wkup_pdis, | ||
545 | "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat0 */ | ||
246 | }; | 546 | }; |
247 | 547 | ||
248 | /* | 548 | /* |
@@ -268,32 +568,48 @@ static struct pinctrl_map __initdata mop500_pinmap[] = { | |||
268 | DB8500_PIN_HOG("GPIO217_AH12", gpio_in_pu), | 568 | DB8500_PIN_HOG("GPIO217_AH12", gpio_in_pu), |
269 | /* Mux in UART1 and set the pull-ups */ | 569 | /* Mux in UART1 and set the pull-ups */ |
270 | DB8500_MUX_HOG("u1rxtx_a_1", "u1"), | 570 | DB8500_MUX_HOG("u1rxtx_a_1", "u1"), |
271 | DB8500_MUX_HOG("u1ctsrts_a_1", "u1"), | ||
272 | DB8500_PIN_HOG("GPIO4_AH6", in_pu), /* RXD */ | 571 | DB8500_PIN_HOG("GPIO4_AH6", in_pu), /* RXD */ |
273 | DB8500_PIN_HOG("GPIO5_AG6", out_hi), /* TXD */ | 572 | DB8500_PIN_HOG("GPIO5_AG6", out_hi), /* TXD */ |
274 | DB8500_PIN_HOG("GPIO6_AF6", in_pu), /* CTS */ | ||
275 | DB8500_PIN_HOG("GPIO7_AG5", out_hi), /* RTS */ | ||
276 | /* | 573 | /* |
277 | * Runtime stuff: make it possible to mux in the SKE keypad | 574 | * Runtime stuff: make it possible to mux in the SKE keypad |
278 | * and bias the pins | 575 | * and bias the pins |
279 | */ | 576 | */ |
280 | DB8500_MUX("kp_a_2", "kp", "ske"), | 577 | /* ske default state */ |
281 | DB8500_PIN("GPIO153_B17", in_pd_slpm_in_pu, "ske"), /* I7 */ | 578 | DB8500_MUX("kp_a_2", "kp", "nmk-ske-keypad"), |
282 | DB8500_PIN("GPIO154_C16", in_pd_slpm_in_pu, "ske"), /* I6 */ | 579 | DB8500_PIN("GPIO153_B17", in_pu, "nmk-ske-keypad"), /* I7 */ |
283 | DB8500_PIN("GPIO155_C19", in_pd_slpm_in_pu, "ske"), /* I5 */ | 580 | DB8500_PIN("GPIO154_C16", in_pu, "nmk-ske-keypad"), /* I6 */ |
284 | DB8500_PIN("GPIO156_C17", in_pd_slpm_in_pu, "ske"), /* I4 */ | 581 | DB8500_PIN("GPIO155_C19", in_pu, "nmk-ske-keypad"), /* I5 */ |
285 | DB8500_PIN("GPIO161_D21", in_pd_slpm_in_pu, "ske"), /* I3 */ | 582 | DB8500_PIN("GPIO156_C17", in_pu, "nmk-ske-keypad"), /* I4 */ |
286 | DB8500_PIN("GPIO162_D20", in_pd_slpm_in_pu, "ske"), /* I2 */ | 583 | DB8500_PIN("GPIO161_D21", in_pu, "nmk-ske-keypad"), /* I3 */ |
287 | DB8500_PIN("GPIO163_C20", in_pd_slpm_in_pu, "ske"), /* I1 */ | 584 | DB8500_PIN("GPIO162_D20", in_pu, "nmk-ske-keypad"), /* I2 */ |
288 | DB8500_PIN("GPIO164_B21", in_pd_slpm_in_pu, "ske"), /* I0 */ | 585 | DB8500_PIN("GPIO163_C20", in_pu, "nmk-ske-keypad"), /* I1 */ |
289 | DB8500_PIN("GPIO157_A18", in_pu_slpm_out_lo, "ske"), /* O7 */ | 586 | DB8500_PIN("GPIO164_B21", in_pu, "nmk-ske-keypad"), /* I0 */ |
290 | DB8500_PIN("GPIO158_C18", in_pu_slpm_out_lo, "ske"), /* O6 */ | 587 | DB8500_PIN("GPIO157_A18", out_lo, "nmk-ske-keypad"), /* O7 */ |
291 | DB8500_PIN("GPIO159_B19", in_pu_slpm_out_lo, "ske"), /* O5 */ | 588 | DB8500_PIN("GPIO158_C18", out_lo, "nmk-ske-keypad"), /* O6 */ |
292 | DB8500_PIN("GPIO160_B20", in_pu_slpm_out_lo, "ske"), /* O4 */ | 589 | DB8500_PIN("GPIO159_B19", out_lo, "nmk-ske-keypad"), /* O5 */ |
293 | DB8500_PIN("GPIO165_C21", in_pu_slpm_out_lo, "ske"), /* O3 */ | 590 | DB8500_PIN("GPIO160_B20", out_lo, "nmk-ske-keypad"), /* O4 */ |
294 | DB8500_PIN("GPIO166_A22", in_pu_slpm_out_lo, "ske"), /* O2 */ | 591 | DB8500_PIN("GPIO165_C21", out_lo, "nmk-ske-keypad"), /* O3 */ |
295 | DB8500_PIN("GPIO167_B24", in_pu_slpm_out_lo, "ske"), /* O1 */ | 592 | DB8500_PIN("GPIO166_A22", out_lo, "nmk-ske-keypad"), /* O2 */ |
296 | DB8500_PIN("GPIO168_C22", in_pu_slpm_out_lo, "ske"), /* O0 */ | 593 | DB8500_PIN("GPIO167_B24", out_lo, "nmk-ske-keypad"), /* O1 */ |
594 | DB8500_PIN("GPIO168_C22", out_lo, "nmk-ske-keypad"), /* O0 */ | ||
595 | /* ske sleep state */ | ||
596 | DB8500_PIN_SLEEP("GPIO153_B17", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I7 */ | ||
597 | DB8500_PIN_SLEEP("GPIO154_C16", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I6 */ | ||
598 | DB8500_PIN_SLEEP("GPIO155_C19", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I5 */ | ||
599 | DB8500_PIN_SLEEP("GPIO156_C17", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I4 */ | ||
600 | DB8500_PIN_SLEEP("GPIO161_D21", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I3 */ | ||
601 | DB8500_PIN_SLEEP("GPIO162_D20", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I2 */ | ||
602 | DB8500_PIN_SLEEP("GPIO163_C20", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I1 */ | ||
603 | DB8500_PIN_SLEEP("GPIO164_B21", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I0 */ | ||
604 | DB8500_PIN_SLEEP("GPIO157_A18", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O7 */ | ||
605 | DB8500_PIN_SLEEP("GPIO158_C18", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O6 */ | ||
606 | DB8500_PIN_SLEEP("GPIO159_B19", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O5 */ | ||
607 | DB8500_PIN_SLEEP("GPIO160_B20", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O4 */ | ||
608 | DB8500_PIN_SLEEP("GPIO165_C21", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O3 */ | ||
609 | DB8500_PIN_SLEEP("GPIO166_A22", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O2 */ | ||
610 | DB8500_PIN_SLEEP("GPIO167_B24", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O1 */ | ||
611 | DB8500_PIN_SLEEP("GPIO168_C22", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O0 */ | ||
612 | |||
297 | /* Mux in and drive the SDI0 DAT31DIR line high at runtime */ | 613 | /* Mux in and drive the SDI0 DAT31DIR line high at runtime */ |
298 | DB8500_MUX("mc0dat31dir_a_1", "mc0", "sdi0"), | 614 | DB8500_MUX("mc0dat31dir_a_1", "mc0", "sdi0"), |
299 | DB8500_PIN("GPIO21_AB3", out_hi, "sdi0"), | 615 | DB8500_PIN("GPIO21_AB3", out_hi, "sdi0"), |
@@ -396,28 +712,6 @@ static struct pinctrl_map __initdata hrefv60_pinmap[] = { | |||
396 | DB8500_PIN("GPIO217_AH12", gpio_in_pu_slpm_gpio_nopull, "gpio-keys.0"), | 712 | DB8500_PIN("GPIO217_AH12", gpio_in_pu_slpm_gpio_nopull, "gpio-keys.0"), |
397 | DB8500_PIN("GPIO145_C13", gpio_in_pd_slpm_gpio_nopull, "gpio-keys.0"), | 713 | DB8500_PIN("GPIO145_C13", gpio_in_pd_slpm_gpio_nopull, "gpio-keys.0"), |
398 | DB8500_PIN("GPIO139_C9", gpio_in_pu_slpm_gpio_nopull, "gpio-keys.0"), | 714 | DB8500_PIN("GPIO139_C9", gpio_in_pu_slpm_gpio_nopull, "gpio-keys.0"), |
399 | /* | ||
400 | * Make it possible to mux in the SKE keypad and bias the pins | ||
401 | * FIXME: what's the point with this on HREFv60? KP/SKE is already | ||
402 | * muxed in at another place! Enabling this will bork. | ||
403 | */ | ||
404 | DB8500_MUX("kp_a_2", "kp", "ske"), | ||
405 | DB8500_PIN("GPIO153_B17", in_pd_slpm_in_pu, "ske"), /* I7 */ | ||
406 | DB8500_PIN("GPIO154_C16", in_pd_slpm_in_pu, "ske"), /* I6 */ | ||
407 | DB8500_PIN("GPIO155_C19", in_pd_slpm_in_pu, "ske"), /* I5 */ | ||
408 | DB8500_PIN("GPIO156_C17", in_pd_slpm_in_pu, "ske"), /* I4 */ | ||
409 | DB8500_PIN("GPIO161_D21", in_pd_slpm_in_pu, "ske"), /* I3 */ | ||
410 | DB8500_PIN("GPIO162_D20", in_pd_slpm_in_pu, "ske"), /* I2 */ | ||
411 | DB8500_PIN("GPIO163_C20", in_pd_slpm_in_pu, "ske"), /* I1 */ | ||
412 | DB8500_PIN("GPIO164_B21", in_pd_slpm_in_pu, "ske"), /* I0 */ | ||
413 | DB8500_PIN("GPIO157_A18", in_pu_slpm_out_lo, "ske"), /* O7 */ | ||
414 | DB8500_PIN("GPIO158_C18", in_pu_slpm_out_lo, "ske"), /* O6 */ | ||
415 | DB8500_PIN("GPIO159_B19", in_pu_slpm_out_lo, "ske"), /* O5 */ | ||
416 | DB8500_PIN("GPIO160_B20", in_pu_slpm_out_lo, "ske"), /* O4 */ | ||
417 | DB8500_PIN("GPIO165_C21", in_pu_slpm_out_lo, "ske"), /* O3 */ | ||
418 | DB8500_PIN("GPIO166_A22", in_pu_slpm_out_lo, "ske"), /* O2 */ | ||
419 | DB8500_PIN("GPIO167_B24", in_pu_slpm_out_lo, "ske"), /* O1 */ | ||
420 | DB8500_PIN("GPIO168_C22", in_pu_slpm_out_lo, "ske"), /* O0 */ | ||
421 | }; | 715 | }; |
422 | 716 | ||
423 | static struct pinctrl_map __initdata u9500_pinmap[] = { | 717 | static struct pinctrl_map __initdata u9500_pinmap[] = { |
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c index 9c8e4a9e83ee..051b62c27102 100644 --- a/arch/arm/mach-ux500/board-mop500-sdi.c +++ b/arch/arm/mach-ux500/board-mop500-sdi.c | |||
@@ -11,9 +11,9 @@ | |||
11 | #include <linux/amba/mmci.h> | 11 | #include <linux/amba/mmci.h> |
12 | #include <linux/mmc/host.h> | 12 | #include <linux/mmc/host.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | #include <linux/platform_data/dma-ste-dma40.h> | ||
14 | 15 | ||
15 | #include <asm/mach-types.h> | 16 | #include <asm/mach-types.h> |
16 | #include <plat/ste_dma40.h> | ||
17 | #include <mach/devices.h> | 17 | #include <mach/devices.h> |
18 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
19 | 19 | ||
diff --git a/arch/arm/mach-ux500/board-mop500-stuib.c b/arch/arm/mach-ux500/board-mop500-stuib.c index 8c979770d872..7e1f294f0434 100644 --- a/arch/arm/mach-ux500/board-mop500-stuib.c +++ b/arch/arm/mach-ux500/board-mop500-stuib.c | |||
@@ -77,9 +77,6 @@ static struct i2c_board_info __initdata mop500_i2c0_devices_stuib[] = { | |||
77 | * BU21013 ROHM touchscreen interface on the STUIBs | 77 | * BU21013 ROHM touchscreen interface on the STUIBs |
78 | */ | 78 | */ |
79 | 79 | ||
80 | /* tracks number of bu21013 devices being enabled */ | ||
81 | static int bu21013_devices; | ||
82 | |||
83 | #define TOUCH_GPIO_PIN 84 | 80 | #define TOUCH_GPIO_PIN 84 |
84 | 81 | ||
85 | #define TOUCH_XMAX 384 | 82 | #define TOUCH_XMAX 384 |
@@ -88,85 +85,8 @@ static int bu21013_devices; | |||
88 | #define PRCMU_CLOCK_OCR 0x1CC | 85 | #define PRCMU_CLOCK_OCR 0x1CC |
89 | #define TSC_EXT_CLOCK_9_6MHZ 0x840000 | 86 | #define TSC_EXT_CLOCK_9_6MHZ 0x840000 |
90 | 87 | ||
91 | /** | ||
92 | * bu21013_gpio_board_init : configures the touch panel. | ||
93 | * @reset_pin: reset pin number | ||
94 | * This function can be used to configures | ||
95 | * the voltage and reset the touch panel controller. | ||
96 | */ | ||
97 | static int bu21013_gpio_board_init(int reset_pin) | ||
98 | { | ||
99 | int retval = 0; | ||
100 | |||
101 | bu21013_devices++; | ||
102 | if (bu21013_devices == 1) { | ||
103 | retval = gpio_request(reset_pin, "touchp_reset"); | ||
104 | if (retval) { | ||
105 | printk(KERN_ERR "Unable to request gpio reset_pin"); | ||
106 | return retval; | ||
107 | } | ||
108 | retval = gpio_direction_output(reset_pin, 1); | ||
109 | if (retval < 0) { | ||
110 | printk(KERN_ERR "%s: gpio direction failed\n", | ||
111 | __func__); | ||
112 | return retval; | ||
113 | } | ||
114 | } | ||
115 | |||
116 | return retval; | ||
117 | } | ||
118 | |||
119 | /** | ||
120 | * bu21013_gpio_board_exit : deconfigures the touch panel controller | ||
121 | * @reset_pin: reset pin number | ||
122 | * This function can be used to deconfigures the chip selection | ||
123 | * for touch panel controller. | ||
124 | */ | ||
125 | static int bu21013_gpio_board_exit(int reset_pin) | ||
126 | { | ||
127 | int retval = 0; | ||
128 | |||
129 | if (bu21013_devices == 1) { | ||
130 | retval = gpio_direction_output(reset_pin, 0); | ||
131 | if (retval < 0) { | ||
132 | printk(KERN_ERR "%s: gpio direction failed\n", | ||
133 | __func__); | ||
134 | return retval; | ||
135 | } | ||
136 | gpio_set_value(reset_pin, 0); | ||
137 | } | ||
138 | bu21013_devices--; | ||
139 | |||
140 | return retval; | ||
141 | } | ||
142 | |||
143 | /** | ||
144 | * bu21013_read_pin_val : get the interrupt pin value | ||
145 | * This function can be used to get the interrupt pin value for touch panel | ||
146 | * controller. | ||
147 | */ | ||
148 | static int bu21013_read_pin_val(void) | ||
149 | { | ||
150 | return gpio_get_value(TOUCH_GPIO_PIN); | ||
151 | } | ||
152 | |||
153 | static struct bu21013_platform_device tsc_plat_device = { | 88 | static struct bu21013_platform_device tsc_plat_device = { |
154 | .cs_en = bu21013_gpio_board_init, | 89 | .touch_pin = TOUCH_GPIO_PIN, |
155 | .cs_dis = bu21013_gpio_board_exit, | ||
156 | .irq_read_val = bu21013_read_pin_val, | ||
157 | .irq = NOMADIK_GPIO_TO_IRQ(TOUCH_GPIO_PIN), | ||
158 | .touch_x_max = TOUCH_XMAX, | ||
159 | .touch_y_max = TOUCH_YMAX, | ||
160 | .ext_clk = false, | ||
161 | .x_flip = false, | ||
162 | .y_flip = true, | ||
163 | }; | ||
164 | |||
165 | static struct bu21013_platform_device tsc_plat2_device = { | ||
166 | .cs_en = bu21013_gpio_board_init, | ||
167 | .cs_dis = bu21013_gpio_board_exit, | ||
168 | .irq_read_val = bu21013_read_pin_val, | ||
169 | .irq = NOMADIK_GPIO_TO_IRQ(TOUCH_GPIO_PIN), | ||
170 | .touch_x_max = TOUCH_XMAX, | 90 | .touch_x_max = TOUCH_XMAX, |
171 | .touch_y_max = TOUCH_YMAX, | 91 | .touch_y_max = TOUCH_YMAX, |
172 | .ext_clk = false, | 92 | .ext_clk = false, |
@@ -181,21 +101,16 @@ static struct i2c_board_info __initdata u8500_i2c3_devices_stuib[] = { | |||
181 | }, | 101 | }, |
182 | { | 102 | { |
183 | I2C_BOARD_INFO("bu21013_tp", 0x5D), | 103 | I2C_BOARD_INFO("bu21013_tp", 0x5D), |
184 | .platform_data = &tsc_plat2_device, | 104 | .platform_data = &tsc_plat_device, |
185 | }, | 105 | }, |
186 | |||
187 | }; | 106 | }; |
188 | 107 | ||
189 | void __init mop500_stuib_init(void) | 108 | void __init mop500_stuib_init(void) |
190 | { | 109 | { |
191 | if (machine_is_hrefv60()) { | 110 | if (machine_is_hrefv60()) |
192 | tsc_plat_device.cs_pin = HREFV60_TOUCH_RST_GPIO; | 111 | tsc_plat_device.cs_pin = HREFV60_TOUCH_RST_GPIO; |
193 | tsc_plat2_device.cs_pin = HREFV60_TOUCH_RST_GPIO; | 112 | else |
194 | } else { | ||
195 | tsc_plat_device.cs_pin = GPIO_BU21013_CS; | 113 | tsc_plat_device.cs_pin = GPIO_BU21013_CS; |
196 | tsc_plat2_device.cs_pin = GPIO_BU21013_CS; | ||
197 | |||
198 | } | ||
199 | 114 | ||
200 | mop500_uib_i2c_add(0, mop500_i2c0_devices_stuib, | 115 | mop500_uib_i2c_add(0, mop500_i2c0_devices_stuib, |
201 | ARRAY_SIZE(mop500_i2c0_devices_stuib)); | 116 | ARRAY_SIZE(mop500_i2c0_devices_stuib)); |
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index 416d436111f2..d453522edb0d 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -1,6 +1,5 @@ | |||
1 | |||
2 | /* | 1 | /* |
3 | * Copyright (C) 2008-2009 ST-Ericsson | 2 | * Copyright (C) 2008-2012 ST-Ericsson |
4 | * | 3 | * |
5 | * Author: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com> | 4 | * Author: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com> |
6 | * | 5 | * |
@@ -16,6 +15,7 @@ | |||
16 | #include <linux/io.h> | 15 | #include <linux/io.h> |
17 | #include <linux/i2c.h> | 16 | #include <linux/i2c.h> |
18 | #include <linux/platform_data/i2c-nomadik.h> | 17 | #include <linux/platform_data/i2c-nomadik.h> |
18 | #include <linux/platform_data/db8500_thermal.h> | ||
19 | #include <linux/gpio.h> | 19 | #include <linux/gpio.h> |
20 | #include <linux/amba/bus.h> | 20 | #include <linux/amba/bus.h> |
21 | #include <linux/amba/pl022.h> | 21 | #include <linux/amba/pl022.h> |
@@ -33,18 +33,15 @@ | |||
33 | #include <linux/smsc911x.h> | 33 | #include <linux/smsc911x.h> |
34 | #include <linux/gpio_keys.h> | 34 | #include <linux/gpio_keys.h> |
35 | #include <linux/delay.h> | 35 | #include <linux/delay.h> |
36 | #include <linux/of.h> | ||
37 | #include <linux/of_platform.h> | ||
38 | #include <linux/leds.h> | 36 | #include <linux/leds.h> |
39 | #include <linux/pinctrl/consumer.h> | 37 | #include <linux/pinctrl/consumer.h> |
38 | #include <linux/platform_data/pinctrl-nomadik.h> | ||
39 | #include <linux/platform_data/dma-ste-dma40.h> | ||
40 | 40 | ||
41 | #include <asm/mach-types.h> | 41 | #include <asm/mach-types.h> |
42 | #include <asm/mach/arch.h> | 42 | #include <asm/mach/arch.h> |
43 | #include <asm/hardware/gic.h> | 43 | #include <asm/hardware/gic.h> |
44 | 44 | ||
45 | #include <plat/ste_dma40.h> | ||
46 | #include <plat/gpio-nomadik.h> | ||
47 | |||
48 | #include <mach/hardware.h> | 45 | #include <mach/hardware.h> |
49 | #include <mach/setup.h> | 46 | #include <mach/setup.h> |
50 | #include <mach/devices.h> | 47 | #include <mach/devices.h> |
@@ -229,6 +226,67 @@ static struct ab8500_platform_data ab8500_platdata = { | |||
229 | }; | 226 | }; |
230 | 227 | ||
231 | /* | 228 | /* |
229 | * Thermal Sensor | ||
230 | */ | ||
231 | |||
232 | static struct resource db8500_thsens_resources[] = { | ||
233 | { | ||
234 | .name = "IRQ_HOTMON_LOW", | ||
235 | .start = IRQ_PRCMU_HOTMON_LOW, | ||
236 | .end = IRQ_PRCMU_HOTMON_LOW, | ||
237 | .flags = IORESOURCE_IRQ, | ||
238 | }, | ||
239 | { | ||
240 | .name = "IRQ_HOTMON_HIGH", | ||
241 | .start = IRQ_PRCMU_HOTMON_HIGH, | ||
242 | .end = IRQ_PRCMU_HOTMON_HIGH, | ||
243 | .flags = IORESOURCE_IRQ, | ||
244 | }, | ||
245 | }; | ||
246 | |||
247 | static struct db8500_thsens_platform_data db8500_thsens_data = { | ||
248 | .trip_points[0] = { | ||
249 | .temp = 70000, | ||
250 | .type = THERMAL_TRIP_ACTIVE, | ||
251 | .cdev_name = { | ||
252 | [0] = "thermal-cpufreq-0", | ||
253 | }, | ||
254 | }, | ||
255 | .trip_points[1] = { | ||
256 | .temp = 75000, | ||
257 | .type = THERMAL_TRIP_ACTIVE, | ||
258 | .cdev_name = { | ||
259 | [0] = "thermal-cpufreq-0", | ||
260 | }, | ||
261 | }, | ||
262 | .trip_points[2] = { | ||
263 | .temp = 80000, | ||
264 | .type = THERMAL_TRIP_ACTIVE, | ||
265 | .cdev_name = { | ||
266 | [0] = "thermal-cpufreq-0", | ||
267 | }, | ||
268 | }, | ||
269 | .trip_points[3] = { | ||
270 | .temp = 85000, | ||
271 | .type = THERMAL_TRIP_CRITICAL, | ||
272 | }, | ||
273 | .num_trips = 4, | ||
274 | }; | ||
275 | |||
276 | static struct platform_device u8500_thsens_device = { | ||
277 | .name = "db8500-thermal", | ||
278 | .resource = db8500_thsens_resources, | ||
279 | .num_resources = ARRAY_SIZE(db8500_thsens_resources), | ||
280 | .dev = { | ||
281 | .platform_data = &db8500_thsens_data, | ||
282 | }, | ||
283 | }; | ||
284 | |||
285 | static struct platform_device u8500_cpufreq_cooling_device = { | ||
286 | .name = "db8500-cpufreq-cooling", | ||
287 | }; | ||
288 | |||
289 | /* | ||
232 | * TPS61052 | 290 | * TPS61052 |
233 | */ | 291 | */ |
234 | 292 | ||
@@ -464,7 +522,7 @@ static struct stedma40_chan_cfg ssp0_dma_cfg_tx = { | |||
464 | }; | 522 | }; |
465 | #endif | 523 | #endif |
466 | 524 | ||
467 | static struct pl022_ssp_controller ssp0_plat = { | 525 | struct pl022_ssp_controller ssp0_plat = { |
468 | .bus_id = 0, | 526 | .bus_id = 0, |
469 | #ifdef CONFIG_STE_DMA40 | 527 | #ifdef CONFIG_STE_DMA40 |
470 | .enable_dma = 1, | 528 | .enable_dma = 1, |
@@ -541,7 +599,7 @@ static struct stedma40_chan_cfg uart2_dma_cfg_tx = { | |||
541 | }; | 599 | }; |
542 | #endif | 600 | #endif |
543 | 601 | ||
544 | static struct amba_pl011_data uart0_plat = { | 602 | struct amba_pl011_data uart0_plat = { |
545 | #ifdef CONFIG_STE_DMA40 | 603 | #ifdef CONFIG_STE_DMA40 |
546 | .dma_filter = stedma40_filter, | 604 | .dma_filter = stedma40_filter, |
547 | .dma_rx_param = &uart0_dma_cfg_rx, | 605 | .dma_rx_param = &uart0_dma_cfg_rx, |
@@ -549,7 +607,7 @@ static struct amba_pl011_data uart0_plat = { | |||
549 | #endif | 607 | #endif |
550 | }; | 608 | }; |
551 | 609 | ||
552 | static struct amba_pl011_data uart1_plat = { | 610 | struct amba_pl011_data uart1_plat = { |
553 | #ifdef CONFIG_STE_DMA40 | 611 | #ifdef CONFIG_STE_DMA40 |
554 | .dma_filter = stedma40_filter, | 612 | .dma_filter = stedma40_filter, |
555 | .dma_rx_param = &uart1_dma_cfg_rx, | 613 | .dma_rx_param = &uart1_dma_cfg_rx, |
@@ -557,7 +615,7 @@ static struct amba_pl011_data uart1_plat = { | |||
557 | #endif | 615 | #endif |
558 | }; | 616 | }; |
559 | 617 | ||
560 | static struct amba_pl011_data uart2_plat = { | 618 | struct amba_pl011_data uart2_plat = { |
561 | #ifdef CONFIG_STE_DMA40 | 619 | #ifdef CONFIG_STE_DMA40 |
562 | .dma_filter = stedma40_filter, | 620 | .dma_filter = stedma40_filter, |
563 | .dma_rx_param = &uart2_dma_cfg_rx, | 621 | .dma_rx_param = &uart2_dma_cfg_rx, |
@@ -583,6 +641,8 @@ static struct platform_device *snowball_platform_devs[] __initdata = { | |||
583 | &snowball_key_dev, | 641 | &snowball_key_dev, |
584 | &snowball_sbnet_dev, | 642 | &snowball_sbnet_dev, |
585 | &snowball_gpio_en_3v3_regulator_dev, | 643 | &snowball_gpio_en_3v3_regulator_dev, |
644 | &u8500_thsens_device, | ||
645 | &u8500_cpufreq_cooling_device, | ||
586 | }; | 646 | }; |
587 | 647 | ||
588 | static void __init mop500_init_machine(void) | 648 | static void __init mop500_init_machine(void) |
@@ -618,8 +678,6 @@ static void __init mop500_init_machine(void) | |||
618 | 678 | ||
619 | /* This board has full regulator constraints */ | 679 | /* This board has full regulator constraints */ |
620 | regulator_has_full_constraints(); | 680 | regulator_has_full_constraints(); |
621 | |||
622 | mop500_uib_init(); | ||
623 | } | 681 | } |
624 | 682 | ||
625 | static void __init snowball_init_machine(void) | 683 | static void __init snowball_init_machine(void) |
@@ -684,8 +742,6 @@ static void __init hrefv60_init_machine(void) | |||
684 | 742 | ||
685 | /* This board has full regulator constraints */ | 743 | /* This board has full regulator constraints */ |
686 | regulator_has_full_constraints(); | 744 | regulator_has_full_constraints(); |
687 | |||
688 | mop500_uib_init(); | ||
689 | } | 745 | } |
690 | 746 | ||
691 | MACHINE_START(U8500, "ST-Ericsson MOP500 platform") | 747 | MACHINE_START(U8500, "ST-Ericsson MOP500 platform") |
@@ -701,155 +757,35 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform") | |||
701 | .init_late = ux500_init_late, | 757 | .init_late = ux500_init_late, |
702 | MACHINE_END | 758 | MACHINE_END |
703 | 759 | ||
704 | MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") | 760 | MACHINE_START(U8520, "ST-Ericsson U8520 Platform HREFP520") |
705 | .atag_offset = 0x100, | 761 | .atag_offset = 0x100, |
706 | .smp = smp_ops(ux500_smp_ops), | ||
707 | .map_io = u8500_map_io, | 762 | .map_io = u8500_map_io, |
708 | .init_irq = ux500_init_irq, | 763 | .init_irq = ux500_init_irq, |
709 | .timer = &ux500_timer, | 764 | .timer = &ux500_timer, |
710 | .handle_irq = gic_handle_irq, | 765 | .handle_irq = gic_handle_irq, |
711 | .init_machine = hrefv60_init_machine, | 766 | .init_machine = mop500_init_machine, |
712 | .init_late = ux500_init_late, | 767 | .init_late = ux500_init_late, |
713 | MACHINE_END | 768 | MACHINE_END |
714 | 769 | ||
715 | MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") | 770 | MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+") |
716 | .atag_offset = 0x100, | 771 | .atag_offset = 0x100, |
717 | .smp = smp_ops(ux500_smp_ops), | 772 | .smp = smp_ops(ux500_smp_ops), |
718 | .map_io = u8500_map_io, | 773 | .map_io = u8500_map_io, |
719 | .init_irq = ux500_init_irq, | 774 | .init_irq = ux500_init_irq, |
720 | /* we re-use nomadik timer here */ | ||
721 | .timer = &ux500_timer, | 775 | .timer = &ux500_timer, |
722 | .handle_irq = gic_handle_irq, | 776 | .handle_irq = gic_handle_irq, |
723 | .init_machine = snowball_init_machine, | 777 | .init_machine = hrefv60_init_machine, |
724 | .init_late = ux500_init_late, | 778 | .init_late = ux500_init_late, |
725 | MACHINE_END | 779 | MACHINE_END |
726 | 780 | ||
727 | #ifdef CONFIG_MACH_UX500_DT | 781 | MACHINE_START(SNOWBALL, "Calao Systems Snowball platform") |
728 | 782 | .atag_offset = 0x100, | |
729 | struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { | ||
730 | /* Requires call-back bindings. */ | ||
731 | OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata), | ||
732 | /* Requires DMA and call-back bindings. */ | ||
733 | OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", &uart0_plat), | ||
734 | OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", &uart1_plat), | ||
735 | OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", &uart2_plat), | ||
736 | /* Requires DMA bindings. */ | ||
737 | OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0", &ssp0_plat), | ||
738 | OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0", &mop500_sdi0_data), | ||
739 | OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1", &mop500_sdi1_data), | ||
740 | OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2", &mop500_sdi2_data), | ||
741 | OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4", &mop500_sdi4_data), | ||
742 | /* Requires clock name bindings. */ | ||
743 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e000, "gpio.0", NULL), | ||
744 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e080, "gpio.1", NULL), | ||
745 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e000, "gpio.2", NULL), | ||
746 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e080, "gpio.3", NULL), | ||
747 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e100, "gpio.4", NULL), | ||
748 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e180, "gpio.5", NULL), | ||
749 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e000, "gpio.6", NULL), | ||
750 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e080, "gpio.7", NULL), | ||
751 | OF_DEV_AUXDATA("st,nomadik-gpio", 0xa03fe000, "gpio.8", NULL), | ||
752 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL), | ||
753 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL), | ||
754 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL), | ||
755 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL), | ||
756 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL), | ||
757 | /* Requires device name bindings. */ | ||
758 | OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL), | ||
759 | /* Requires clock name and DMA bindings. */ | ||
760 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000, | ||
761 | "ux500-msp-i2s.0", &msp0_platform_data), | ||
762 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000, | ||
763 | "ux500-msp-i2s.1", &msp1_platform_data), | ||
764 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000, | ||
765 | "ux500-msp-i2s.2", &msp2_platform_data), | ||
766 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000, | ||
767 | "ux500-msp-i2s.3", &msp3_platform_data), | ||
768 | {}, | ||
769 | }; | ||
770 | |||
771 | static const struct of_device_id u8500_local_bus_nodes[] = { | ||
772 | /* only create devices below soc node */ | ||
773 | { .compatible = "stericsson,db8500", }, | ||
774 | { .compatible = "stericsson,db8500-prcmu", }, | ||
775 | { .compatible = "simple-bus"}, | ||
776 | { }, | ||
777 | }; | ||
778 | |||
779 | static void __init u8500_init_machine(void) | ||
780 | { | ||
781 | struct device *parent = NULL; | ||
782 | int i2c0_devs; | ||
783 | int i; | ||
784 | |||
785 | /* Pinmaps must be in place before devices register */ | ||
786 | if (of_machine_is_compatible("st-ericsson,mop500")) | ||
787 | mop500_pinmaps_init(); | ||
788 | else if (of_machine_is_compatible("calaosystems,snowball-a9500")) | ||
789 | snowball_pinmaps_init(); | ||
790 | else if (of_machine_is_compatible("st-ericsson,hrefv60+")) | ||
791 | hrefv60_pinmaps_init(); | ||
792 | |||
793 | parent = u8500_of_init_devices(); | ||
794 | |||
795 | for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++) | ||
796 | mop500_platform_devs[i]->dev.parent = parent; | ||
797 | |||
798 | /* automatically probe child nodes of db8500 device */ | ||
799 | of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent); | ||
800 | |||
801 | if (of_machine_is_compatible("st-ericsson,mop500")) { | ||
802 | mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR; | ||
803 | |||
804 | platform_add_devices(mop500_platform_devs, | ||
805 | ARRAY_SIZE(mop500_platform_devs)); | ||
806 | |||
807 | mop500_sdi_init(parent); | ||
808 | mop500_audio_init(parent); | ||
809 | i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices); | ||
810 | i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs); | ||
811 | i2c_register_board_info(2, mop500_i2c2_devices, | ||
812 | ARRAY_SIZE(mop500_i2c2_devices)); | ||
813 | |||
814 | mop500_uib_init(); | ||
815 | |||
816 | } else if (of_machine_is_compatible("calaosystems,snowball-a9500")) { | ||
817 | mop500_of_audio_init(parent); | ||
818 | } else if (of_machine_is_compatible("st-ericsson,hrefv60+")) { | ||
819 | /* | ||
820 | * The HREFv60 board removed a GPIO expander and routed | ||
821 | * all these GPIO pins to the internal GPIO controller | ||
822 | * instead. | ||
823 | */ | ||
824 | mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO; | ||
825 | platform_add_devices(mop500_platform_devs, | ||
826 | ARRAY_SIZE(mop500_platform_devs)); | ||
827 | |||
828 | mop500_uib_init(); | ||
829 | } | ||
830 | |||
831 | /* This board has full regulator constraints */ | ||
832 | regulator_has_full_constraints(); | ||
833 | } | ||
834 | |||
835 | static const char * u8500_dt_board_compat[] = { | ||
836 | "calaosystems,snowball-a9500", | ||
837 | "st-ericsson,hrefv60+", | ||
838 | "st-ericsson,u8500", | ||
839 | "st-ericsson,mop500", | ||
840 | NULL, | ||
841 | }; | ||
842 | |||
843 | |||
844 | DT_MACHINE_START(U8500_DT, "ST-Ericsson U8500 platform (Device Tree Support)") | ||
845 | .smp = smp_ops(ux500_smp_ops), | 783 | .smp = smp_ops(ux500_smp_ops), |
846 | .map_io = u8500_map_io, | 784 | .map_io = u8500_map_io, |
847 | .init_irq = ux500_init_irq, | 785 | .init_irq = ux500_init_irq, |
848 | /* we re-use nomadik timer here */ | 786 | /* we re-use nomadik timer here */ |
849 | .timer = &ux500_timer, | 787 | .timer = &ux500_timer, |
850 | .handle_irq = gic_handle_irq, | 788 | .handle_irq = gic_handle_irq, |
851 | .init_machine = u8500_init_machine, | 789 | .init_machine = snowball_init_machine, |
852 | .init_late = ux500_init_late, | 790 | .init_late = NULL, |
853 | .dt_compat = u8500_dt_board_compat, | ||
854 | MACHINE_END | 791 | MACHINE_END |
855 | #endif | ||
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h index aca39a68712a..eaa605f5d90d 100644 --- a/arch/arm/mach-ux500/board-mop500.h +++ b/arch/arm/mach-ux500/board-mop500.h | |||
@@ -89,6 +89,10 @@ extern struct msp_i2s_platform_data msp1_platform_data; | |||
89 | extern struct msp_i2s_platform_data msp2_platform_data; | 89 | extern struct msp_i2s_platform_data msp2_platform_data; |
90 | extern struct msp_i2s_platform_data msp3_platform_data; | 90 | extern struct msp_i2s_platform_data msp3_platform_data; |
91 | extern struct arm_pmu_platdata db8500_pmu_platdata; | 91 | extern struct arm_pmu_platdata db8500_pmu_platdata; |
92 | extern struct amba_pl011_data uart0_plat; | ||
93 | extern struct amba_pl011_data uart1_plat; | ||
94 | extern struct amba_pl011_data uart2_plat; | ||
95 | extern struct pl022_ssp_controller ssp0_plat; | ||
92 | 96 | ||
93 | extern void mop500_sdi_init(struct device *parent); | 97 | extern void mop500_sdi_init(struct device *parent); |
94 | extern void snowball_sdi_init(struct device *parent); | 98 | extern void snowball_sdi_init(struct device *parent); |
@@ -100,14 +104,8 @@ void __init mop500_pinmaps_init(void); | |||
100 | void __init snowball_pinmaps_init(void); | 104 | void __init snowball_pinmaps_init(void); |
101 | void __init hrefv60_pinmaps_init(void); | 105 | void __init hrefv60_pinmaps_init(void); |
102 | void mop500_audio_init(struct device *parent); | 106 | void mop500_audio_init(struct device *parent); |
103 | /* Due for removal once the MSP driver has been fully DT:ed. */ | ||
104 | void mop500_of_audio_init(struct device *parent); | ||
105 | 107 | ||
106 | int __init mop500_uib_init(void); | 108 | int __init mop500_uib_init(void); |
107 | void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, | 109 | void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info, |
108 | unsigned n); | 110 | unsigned n); |
109 | |||
110 | /* TODO: Once all pieces are DT:ed, remove completely. */ | ||
111 | struct device * __init u8500_of_init_devices(void); | ||
112 | |||
113 | #endif | 111 | #endif |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index bcdfe6b1d453..db0bb75e2c76 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -17,18 +17,27 @@ | |||
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | #include <linux/mfd/abx500/ab8500.h> | 19 | #include <linux/mfd/abx500/ab8500.h> |
20 | #include <linux/mfd/dbx500-prcmu.h> | ||
21 | #include <linux/of.h> | ||
22 | #include <linux/of_platform.h> | ||
23 | #include <linux/regulator/machine.h> | ||
24 | #include <linux/platform_data/pinctrl-nomadik.h> | ||
25 | #include <linux/random.h> | ||
20 | 26 | ||
21 | #include <asm/pmu.h> | 27 | #include <asm/pmu.h> |
22 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
23 | #include <plat/gpio-nomadik.h> | 29 | #include <asm/mach/arch.h> |
30 | #include <asm/hardware/gic.h> | ||
31 | |||
24 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
25 | #include <mach/setup.h> | 33 | #include <mach/setup.h> |
26 | #include <mach/devices.h> | 34 | #include <mach/devices.h> |
27 | #include <linux/platform_data/usb-musb-ux500.h> | ||
28 | #include <mach/db8500-regs.h> | 35 | #include <mach/db8500-regs.h> |
36 | #include <mach/irqs.h> | ||
29 | 37 | ||
30 | #include "devices-db8500.h" | 38 | #include "devices-db8500.h" |
31 | #include "ste-dma40-db8500.h" | 39 | #include "ste-dma40-db8500.h" |
40 | #include "board-mop500.h" | ||
32 | 41 | ||
33 | /* minimum static i/o mapping required to boot U8500 platforms */ | 42 | /* minimum static i/o mapping required to boot U8500 platforms */ |
34 | static struct map_desc u8500_uart_io_desc[] __initdata = { | 43 | static struct map_desc u8500_uart_io_desc[] __initdata = { |
@@ -158,7 +167,7 @@ static void __init db8500_add_gpios(struct device *parent) | |||
158 | 167 | ||
159 | dbx500_add_gpios(parent, ARRAY_AND_SIZE(db8500_gpio_base), | 168 | dbx500_add_gpios(parent, ARRAY_AND_SIZE(db8500_gpio_base), |
160 | IRQ_DB8500_GPIO0, &pdata); | 169 | IRQ_DB8500_GPIO0, &pdata); |
161 | dbx500_add_pinctrl(parent, "pinctrl-db8500"); | 170 | dbx500_add_pinctrl(parent, "pinctrl-db8500", U8500_PRCMU_BASE); |
162 | } | 171 | } |
163 | 172 | ||
164 | static int usb_db8500_rx_dma_cfg[] = { | 173 | static int usb_db8500_rx_dma_cfg[] = { |
@@ -187,6 +196,8 @@ static const char *db8500_read_soc_id(void) | |||
187 | { | 196 | { |
188 | void __iomem *uid = __io_address(U8500_BB_UID_BASE); | 197 | void __iomem *uid = __io_address(U8500_BB_UID_BASE); |
189 | 198 | ||
199 | /* Throw these device-specific numbers into the entropy pool */ | ||
200 | add_device_randomness(uid, 0x14); | ||
190 | return kasprintf(GFP_KERNEL, "%08x%08x%08x%08x%08x", | 201 | return kasprintf(GFP_KERNEL, "%08x%08x%08x%08x%08x", |
191 | readl((u32 *)uid+1), | 202 | readl((u32 *)uid+1), |
192 | readl((u32 *)uid+1), readl((u32 *)uid+2), | 203 | readl((u32 *)uid+1), readl((u32 *)uid+2), |
@@ -214,9 +225,6 @@ struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500) | |||
214 | db8500_add_gpios(parent); | 225 | db8500_add_gpios(parent); |
215 | db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); | 226 | db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); |
216 | 227 | ||
217 | platform_device_register_data(parent, | ||
218 | "cpufreq-u8500", -1, NULL, 0); | ||
219 | |||
220 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) | 228 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) |
221 | platform_devs[i]->dev.parent = parent; | 229 | platform_devs[i]->dev.parent = parent; |
222 | 230 | ||
@@ -227,18 +235,15 @@ struct device * __init u8500_init_devices(struct ab8500_platform_data *ab8500) | |||
227 | return parent; | 235 | return parent; |
228 | } | 236 | } |
229 | 237 | ||
238 | #ifdef CONFIG_MACH_UX500_DT | ||
239 | |||
230 | /* TODO: Once all pieces are DT:ed, remove completely. */ | 240 | /* TODO: Once all pieces are DT:ed, remove completely. */ |
231 | struct device * __init u8500_of_init_devices(void) | 241 | static struct device * __init u8500_of_init_devices(void) |
232 | { | 242 | { |
233 | struct device *parent; | 243 | struct device *parent = db8500_soc_device_init(); |
234 | |||
235 | parent = db8500_soc_device_init(); | ||
236 | 244 | ||
237 | db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); | 245 | db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); |
238 | 246 | ||
239 | platform_device_register_data(parent, | ||
240 | "cpufreq-u8500", -1, NULL, 0); | ||
241 | |||
242 | u8500_dma40_device.dev.parent = parent; | 247 | u8500_dma40_device.dev.parent = parent; |
243 | 248 | ||
244 | /* | 249 | /* |
@@ -251,3 +256,95 @@ struct device * __init u8500_of_init_devices(void) | |||
251 | 256 | ||
252 | return parent; | 257 | return parent; |
253 | } | 258 | } |
259 | |||
260 | static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { | ||
261 | /* Requires call-back bindings. */ | ||
262 | OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata), | ||
263 | /* Requires DMA bindings. */ | ||
264 | OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", &uart0_plat), | ||
265 | OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", &uart1_plat), | ||
266 | OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", &uart2_plat), | ||
267 | OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0", &ssp0_plat), | ||
268 | OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0", &mop500_sdi0_data), | ||
269 | OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1", &mop500_sdi1_data), | ||
270 | OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2", &mop500_sdi2_data), | ||
271 | OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4", &mop500_sdi4_data), | ||
272 | /* Requires clock name bindings. */ | ||
273 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e000, "gpio.0", NULL), | ||
274 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e080, "gpio.1", NULL), | ||
275 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e000, "gpio.2", NULL), | ||
276 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e080, "gpio.3", NULL), | ||
277 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e100, "gpio.4", NULL), | ||
278 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e180, "gpio.5", NULL), | ||
279 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e000, "gpio.6", NULL), | ||
280 | OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e080, "gpio.7", NULL), | ||
281 | OF_DEV_AUXDATA("st,nomadik-gpio", 0xa03fe000, "gpio.8", NULL), | ||
282 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL), | ||
283 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL), | ||
284 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL), | ||
285 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL), | ||
286 | OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL), | ||
287 | /* Requires device name bindings. */ | ||
288 | OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL), | ||
289 | /* Requires clock name and DMA bindings. */ | ||
290 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000, | ||
291 | "ux500-msp-i2s.0", &msp0_platform_data), | ||
292 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000, | ||
293 | "ux500-msp-i2s.1", &msp1_platform_data), | ||
294 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000, | ||
295 | "ux500-msp-i2s.2", &msp2_platform_data), | ||
296 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000, | ||
297 | "ux500-msp-i2s.3", &msp3_platform_data), | ||
298 | {}, | ||
299 | }; | ||
300 | |||
301 | static const struct of_device_id u8500_local_bus_nodes[] = { | ||
302 | /* only create devices below soc node */ | ||
303 | { .compatible = "stericsson,db8500", }, | ||
304 | { .compatible = "stericsson,db8500-prcmu", }, | ||
305 | { .compatible = "simple-bus"}, | ||
306 | { }, | ||
307 | }; | ||
308 | |||
309 | static void __init u8500_init_machine(void) | ||
310 | { | ||
311 | struct device *parent = NULL; | ||
312 | |||
313 | /* Pinmaps must be in place before devices register */ | ||
314 | if (of_machine_is_compatible("st-ericsson,mop500")) | ||
315 | mop500_pinmaps_init(); | ||
316 | else if (of_machine_is_compatible("calaosystems,snowball-a9500")) | ||
317 | snowball_pinmaps_init(); | ||
318 | else if (of_machine_is_compatible("st-ericsson,hrefv60+")) | ||
319 | hrefv60_pinmaps_init(); | ||
320 | else if (of_machine_is_compatible("st-ericsson,ccu9540")) {} | ||
321 | /* TODO: Add pinmaps for ccu9540 board. */ | ||
322 | |||
323 | /* TODO: Export SoC, USB, cpu-freq and DMA40 */ | ||
324 | parent = u8500_of_init_devices(); | ||
325 | |||
326 | /* automatically probe child nodes of db8500 device */ | ||
327 | of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent); | ||
328 | } | ||
329 | |||
330 | static const char * stericsson_dt_platform_compat[] = { | ||
331 | "st-ericsson,u8500", | ||
332 | "st-ericsson,u8540", | ||
333 | "st-ericsson,u9500", | ||
334 | "st-ericsson,u9540", | ||
335 | NULL, | ||
336 | }; | ||
337 | |||
338 | DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)") | ||
339 | .smp = smp_ops(ux500_smp_ops), | ||
340 | .map_io = u8500_map_io, | ||
341 | .init_irq = ux500_init_irq, | ||
342 | /* we re-use nomadik timer here */ | ||
343 | .timer = &ux500_timer, | ||
344 | .handle_irq = gic_handle_irq, | ||
345 | .init_machine = u8500_init_machine, | ||
346 | .init_late = NULL, | ||
347 | .dt_compat = stericsson_dt_platform_compat, | ||
348 | MACHINE_END | ||
349 | |||
350 | #endif | ||
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c index 1f3fbc2bb776..721e7b4275f3 100644 --- a/arch/arm/mach-ux500/cpu.c +++ b/arch/arm/mach-ux500/cpu.c | |||
@@ -26,6 +26,8 @@ | |||
26 | #include <mach/setup.h> | 26 | #include <mach/setup.h> |
27 | #include <mach/devices.h> | 27 | #include <mach/devices.h> |
28 | 28 | ||
29 | #include "board-mop500.h" | ||
30 | |||
29 | void __iomem *_PRCMU_BASE; | 31 | void __iomem *_PRCMU_BASE; |
30 | 32 | ||
31 | /* | 33 | /* |
@@ -82,6 +84,7 @@ void __init ux500_init_irq(void) | |||
82 | 84 | ||
83 | void __init ux500_init_late(void) | 85 | void __init ux500_init_late(void) |
84 | { | 86 | { |
87 | mop500_uib_init(); | ||
85 | } | 88 | } |
86 | 89 | ||
87 | static const char * __init ux500_get_machine(void) | 90 | static const char * __init ux500_get_machine(void) |
diff --git a/arch/arm/mach-ux500/devices-common.c b/arch/arm/mach-ux500/devices-common.c index dfdd4a54668d..16b5f71e6974 100644 --- a/arch/arm/mach-ux500/devices-common.c +++ b/arch/arm/mach-ux500/devices-common.c | |||
@@ -11,10 +11,10 @@ | |||
11 | #include <linux/irq.h> | 11 | #include <linux/irq.h> |
12 | #include <linux/slab.h> | 12 | #include <linux/slab.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | 14 | #include <linux/platform_data/pinctrl-nomadik.h> | |
15 | #include <plat/gpio-nomadik.h> | ||
16 | 15 | ||
17 | #include <mach/hardware.h> | 16 | #include <mach/hardware.h> |
17 | #include <mach/irqs.h> | ||
18 | 18 | ||
19 | #include "devices-common.h" | 19 | #include "devices-common.h" |
20 | 20 | ||
diff --git a/arch/arm/mach-ux500/devices-common.h b/arch/arm/mach-ux500/devices-common.h index 7fbf0ba336e1..96fa4ac89e2e 100644 --- a/arch/arm/mach-ux500/devices-common.h +++ b/arch/arm/mach-ux500/devices-common.h | |||
@@ -129,12 +129,18 @@ void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num, | |||
129 | int irq, struct nmk_gpio_platform_data *pdata); | 129 | int irq, struct nmk_gpio_platform_data *pdata); |
130 | 130 | ||
131 | static inline void | 131 | static inline void |
132 | dbx500_add_pinctrl(struct device *parent, const char *name) | 132 | dbx500_add_pinctrl(struct device *parent, const char *name, |
133 | resource_size_t base) | ||
133 | { | 134 | { |
135 | struct resource res[] = { | ||
136 | DEFINE_RES_MEM(base, SZ_8K), | ||
137 | }; | ||
134 | struct platform_device_info pdevinfo = { | 138 | struct platform_device_info pdevinfo = { |
135 | .parent = parent, | 139 | .parent = parent, |
136 | .name = name, | 140 | .name = name, |
137 | .id = -1, | 141 | .id = -1, |
142 | .res = res, | ||
143 | .num_res = ARRAY_SIZE(res), | ||
138 | }; | 144 | }; |
139 | 145 | ||
140 | platform_device_register_full(&pdevinfo); | 146 | platform_device_register_full(&pdevinfo); |
diff --git a/arch/arm/mach-ux500/devices-db8500.c b/arch/arm/mach-ux500/devices-db8500.c index 91754a8a0d49..318d49020894 100644 --- a/arch/arm/mach-ux500/devices-db8500.c +++ b/arch/arm/mach-ux500/devices-db8500.c | |||
@@ -12,11 +12,11 @@ | |||
12 | #include <linux/gpio.h> | 12 | #include <linux/gpio.h> |
13 | #include <linux/amba/bus.h> | 13 | #include <linux/amba/bus.h> |
14 | #include <linux/amba/pl022.h> | 14 | #include <linux/amba/pl022.h> |
15 | 15 | #include <linux/platform_data/dma-ste-dma40.h> | |
16 | #include <plat/ste_dma40.h> | ||
17 | 16 | ||
18 | #include <mach/hardware.h> | 17 | #include <mach/hardware.h> |
19 | #include <mach/setup.h> | 18 | #include <mach/setup.h> |
19 | #include <mach/irqs.h> | ||
20 | 20 | ||
21 | #include "ste-dma40-db8500.h" | 21 | #include "ste-dma40-db8500.h" |
22 | 22 | ||
diff --git a/arch/arm/mach-ux500/devices-db8500.h b/arch/arm/mach-ux500/devices-db8500.h index 3c8010f4fb3f..a5e05f6e256f 100644 --- a/arch/arm/mach-ux500/devices-db8500.h +++ b/arch/arm/mach-ux500/devices-db8500.h | |||
@@ -8,6 +8,8 @@ | |||
8 | #ifndef __DEVICES_DB8500_H | 8 | #ifndef __DEVICES_DB8500_H |
9 | #define __DEVICES_DB8500_H | 9 | #define __DEVICES_DB8500_H |
10 | 10 | ||
11 | #include <linux/platform_data/usb-musb-ux500.h> | ||
12 | #include <mach/irqs.h> | ||
11 | #include "devices-common.h" | 13 | #include "devices-common.h" |
12 | 14 | ||
13 | struct ske_keypad_platform_data; | 15 | struct ske_keypad_platform_data; |
diff --git a/arch/arm/mach-ux500/include/mach/irqs.h b/arch/arm/mach-ux500/include/mach/irqs.h index e8928548b6a3..fc77b4274c8d 100644 --- a/arch/arm/mach-ux500/include/mach/irqs.h +++ b/arch/arm/mach-ux500/include/mach/irqs.h | |||
@@ -46,6 +46,6 @@ | |||
46 | #include <mach/irqs-board-mop500.h> | 46 | #include <mach/irqs-board-mop500.h> |
47 | #endif | 47 | #endif |
48 | 48 | ||
49 | #define NR_IRQS IRQ_BOARD_END | 49 | #define UX500_NR_IRQS IRQ_BOARD_END |
50 | 50 | ||
51 | #endif /* ASM_ARCH_IRQS_H */ | 51 | #endif /* ASM_ARCH_IRQS_H */ |
diff --git a/arch/arm/mach-ux500/include/mach/msp.h b/arch/arm/mach-ux500/include/mach/msp.h index 3cc7142eee02..9991aea3d577 100644 --- a/arch/arm/mach-ux500/include/mach/msp.h +++ b/arch/arm/mach-ux500/include/mach/msp.h | |||
@@ -8,7 +8,7 @@ | |||
8 | #ifndef __MSP_H | 8 | #ifndef __MSP_H |
9 | #define __MSP_H | 9 | #define __MSP_H |
10 | 10 | ||
11 | #include <plat/ste_dma40.h> | 11 | #include <linux/platform_data/dma-ste-dma40.h> |
12 | 12 | ||
13 | enum msp_i2s_id { | 13 | enum msp_i2s_id { |
14 | MSP_I2S_0 = 0, | 14 | MSP_I2S_0 = 0, |
diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c index 6f39731951b0..875309acb022 100644 --- a/arch/arm/mach-ux500/timer.c +++ b/arch/arm/mach-ux500/timer.c | |||
@@ -9,11 +9,10 @@ | |||
9 | #include <linux/clksrc-dbx500-prcmu.h> | 9 | #include <linux/clksrc-dbx500-prcmu.h> |
10 | #include <linux/of.h> | 10 | #include <linux/of.h> |
11 | #include <linux/of_address.h> | 11 | #include <linux/of_address.h> |
12 | #include <linux/platform_data/clocksource-nomadik-mtu.h> | ||
12 | 13 | ||
13 | #include <asm/smp_twd.h> | 14 | #include <asm/smp_twd.h> |
14 | 15 | ||
15 | #include <plat/mtu.h> | ||
16 | |||
17 | #include <mach/setup.h> | 16 | #include <mach/setup.h> |
18 | #include <mach/hardware.h> | 17 | #include <mach/hardware.h> |
19 | #include <mach/irqs.h> | 18 | #include <mach/irqs.h> |
@@ -96,7 +95,7 @@ dt_fail: | |||
96 | * | 95 | * |
97 | */ | 96 | */ |
98 | 97 | ||
99 | nmdk_timer_init(mtu_timer_base); | 98 | nmdk_timer_init(mtu_timer_base, IRQ_MTU0); |
100 | clksrc_dbx500_prcmu_init(prcmu_timer_base); | 99 | clksrc_dbx500_prcmu_init(prcmu_timer_base); |
101 | ux500_twd_init(); | 100 | ux500_twd_init(); |
102 | } | 101 | } |
diff --git a/arch/arm/mach-ux500/usb.c b/arch/arm/mach-ux500/usb.c index 145482e74418..78ac65f62e87 100644 --- a/arch/arm/mach-ux500/usb.c +++ b/arch/arm/mach-ux500/usb.c | |||
@@ -7,10 +7,10 @@ | |||
7 | #include <linux/platform_device.h> | 7 | #include <linux/platform_device.h> |
8 | #include <linux/usb/musb.h> | 8 | #include <linux/usb/musb.h> |
9 | #include <linux/dma-mapping.h> | 9 | #include <linux/dma-mapping.h> |
10 | #include <linux/platform_data/usb-musb-ux500.h> | ||
11 | #include <linux/platform_data/dma-ste-dma40.h> | ||
10 | 12 | ||
11 | #include <plat/ste_dma40.h> | ||
12 | #include <mach/hardware.h> | 13 | #include <mach/hardware.h> |
13 | #include <linux/platform_data/usb-musb-ux500.h> | ||
14 | 14 | ||
15 | #define MUSB_DMA40_RX_CH { \ | 15 | #define MUSB_DMA40_RX_CH { \ |
16 | .mode = STEDMA40_MODE_LOGICAL, \ | 16 | .mode = STEDMA40_MODE_LOGICAL, \ |