diff options
Diffstat (limited to 'arch/arm/mach-shmobile/board-kota2.c')
-rw-r--r-- | arch/arm/mach-shmobile/board-kota2.c | 169 |
1 files changed, 83 insertions, 86 deletions
diff --git a/arch/arm/mach-shmobile/board-kota2.c b/arch/arm/mach-shmobile/board-kota2.c index ef5ca0ef0cb5..6af20d909bdb 100644 --- a/arch/arm/mach-shmobile/board-kota2.c +++ b/arch/arm/mach-shmobile/board-kota2.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/irq.h> | 26 | #include <linux/irq.h> |
27 | #include <linux/pinctrl/machine.h> | 27 | #include <linux/pinctrl/machine.h> |
28 | #include <linux/pinctrl/pinconf-generic.h> | 28 | #include <linux/pinctrl/pinconf-generic.h> |
29 | #include <linux/platform_data/pwm-renesas-tpu.h> | ||
29 | #include <linux/platform_device.h> | 30 | #include <linux/platform_device.h> |
30 | #include <linux/delay.h> | 31 | #include <linux/delay.h> |
31 | #include <linux/io.h> | 32 | #include <linux/io.h> |
@@ -37,8 +38,8 @@ | |||
37 | #include <linux/input/sh_keysc.h> | 38 | #include <linux/input/sh_keysc.h> |
38 | #include <linux/gpio_keys.h> | 39 | #include <linux/gpio_keys.h> |
39 | #include <linux/leds.h> | 40 | #include <linux/leds.h> |
41 | #include <linux/leds_pwm.h> | ||
40 | #include <linux/irqchip/arm-gic.h> | 42 | #include <linux/irqchip/arm-gic.h> |
41 | #include <linux/platform_data/leds-renesas-tpu.h> | ||
42 | #include <linux/mmc/host.h> | 43 | #include <linux/mmc/host.h> |
43 | #include <linux/mmc/sh_mmcif.h> | 44 | #include <linux/mmc/sh_mmcif.h> |
44 | #include <linux/mfd/tmio.h> | 45 | #include <linux/mfd/tmio.h> |
@@ -186,116 +187,100 @@ static struct platform_device gpio_leds_device = { | |||
186 | }; | 187 | }; |
187 | 188 | ||
188 | /* TPU LED */ | 189 | /* TPU LED */ |
189 | static struct led_renesas_tpu_config led_renesas_tpu12_pdata = { | 190 | static struct resource tpu1_pwm_resources[] = { |
190 | .name = "V2513", | ||
191 | .pin_gpio_fn = GPIO_FN_TPU1TO2, | ||
192 | .pin_gpio = 153, | ||
193 | .channel_offset = 0x90, | ||
194 | .timer_bit = 2, | ||
195 | .max_brightness = 1000, | ||
196 | }; | ||
197 | |||
198 | static struct resource tpu12_resources[] = { | ||
199 | [0] = { | 191 | [0] = { |
200 | .name = "TPU12", | 192 | .start = 0xe6610000, |
201 | .start = 0xe6610090, | 193 | .end = 0xe66100ff, |
202 | .end = 0xe66100b5, | ||
203 | .flags = IORESOURCE_MEM, | 194 | .flags = IORESOURCE_MEM, |
204 | }, | 195 | }, |
205 | }; | 196 | }; |
206 | 197 | ||
207 | static struct platform_device leds_tpu12_device = { | 198 | static struct platform_device tpu1_pwm_device = { |
208 | .name = "leds-renesas-tpu", | 199 | .name = "renesas-tpu-pwm", |
209 | .id = 12, | 200 | .id = 1, |
210 | .dev = { | 201 | .num_resources = ARRAY_SIZE(tpu1_pwm_resources), |
211 | .platform_data = &led_renesas_tpu12_pdata, | 202 | .resource = tpu1_pwm_resources, |
212 | }, | ||
213 | .num_resources = ARRAY_SIZE(tpu12_resources), | ||
214 | .resource = tpu12_resources, | ||
215 | }; | 203 | }; |
216 | 204 | ||
217 | static struct led_renesas_tpu_config led_renesas_tpu41_pdata = { | 205 | static struct resource tpu2_pwm_resources[] = { |
218 | .name = "V2514", | ||
219 | .pin_gpio_fn = GPIO_FN_TPU4TO1, | ||
220 | .pin_gpio = 199, | ||
221 | .channel_offset = 0x50, | ||
222 | .timer_bit = 1, | ||
223 | .max_brightness = 1000, | ||
224 | }; | ||
225 | |||
226 | static struct resource tpu41_resources[] = { | ||
227 | [0] = { | 206 | [0] = { |
228 | .name = "TPU41", | 207 | .start = 0xe6620000, |
229 | .start = 0xe6640050, | 208 | .end = 0xe66200ff, |
230 | .end = 0xe6640075, | ||
231 | .flags = IORESOURCE_MEM, | 209 | .flags = IORESOURCE_MEM, |
232 | }, | 210 | }, |
233 | }; | 211 | }; |
234 | 212 | ||
235 | static struct platform_device leds_tpu41_device = { | 213 | static struct platform_device tpu2_pwm_device = { |
236 | .name = "leds-renesas-tpu", | 214 | .name = "renesas-tpu-pwm", |
237 | .id = 41, | 215 | .id = 2, |
238 | .dev = { | 216 | .num_resources = ARRAY_SIZE(tpu2_pwm_resources), |
239 | .platform_data = &led_renesas_tpu41_pdata, | 217 | .resource = tpu2_pwm_resources, |
218 | }; | ||
219 | |||
220 | static struct resource tpu3_pwm_resources[] = { | ||
221 | [0] = { | ||
222 | .start = 0xe6630000, | ||
223 | .end = 0xe66300ff, | ||
224 | .flags = IORESOURCE_MEM, | ||
240 | }, | 225 | }, |
241 | .num_resources = ARRAY_SIZE(tpu41_resources), | ||
242 | .resource = tpu41_resources, | ||
243 | }; | 226 | }; |
244 | 227 | ||
245 | static struct led_renesas_tpu_config led_renesas_tpu21_pdata = { | 228 | static struct platform_device tpu3_pwm_device = { |
246 | .name = "V2515", | 229 | .name = "renesas-tpu-pwm", |
247 | .pin_gpio_fn = GPIO_FN_TPU2TO1, | 230 | .id = 3, |
248 | .pin_gpio = 197, | 231 | .num_resources = ARRAY_SIZE(tpu3_pwm_resources), |
249 | .channel_offset = 0x50, | 232 | .resource = tpu3_pwm_resources, |
250 | .timer_bit = 1, | ||
251 | .max_brightness = 1000, | ||
252 | }; | 233 | }; |
253 | 234 | ||
254 | static struct resource tpu21_resources[] = { | 235 | static struct resource tpu4_pwm_resources[] = { |
255 | [0] = { | 236 | [0] = { |
256 | .name = "TPU21", | 237 | .start = 0xe6640000, |
257 | .start = 0xe6620050, | 238 | .end = 0xe66400ff, |
258 | .end = 0xe6620075, | ||
259 | .flags = IORESOURCE_MEM, | 239 | .flags = IORESOURCE_MEM, |
260 | }, | 240 | }, |
261 | }; | 241 | }; |
262 | 242 | ||
263 | static struct platform_device leds_tpu21_device = { | 243 | static struct platform_device tpu4_pwm_device = { |
264 | .name = "leds-renesas-tpu", | 244 | .name = "renesas-tpu-pwm", |
265 | .id = 21, | 245 | .id = 4, |
266 | .dev = { | 246 | .num_resources = ARRAY_SIZE(tpu4_pwm_resources), |
267 | .platform_data = &led_renesas_tpu21_pdata, | 247 | .resource = tpu4_pwm_resources, |
248 | }; | ||
249 | |||
250 | static struct pwm_lookup pwm_lookup[] = { | ||
251 | PWM_LOOKUP("renesas-tpu-pwm.1", 2, "leds-pwm.0", "V2513"), | ||
252 | PWM_LOOKUP("renesas-tpu-pwm.2", 1, "leds-pwm.0", "V2515"), | ||
253 | PWM_LOOKUP("renesas-tpu-pwm.3", 0, "leds-pwm.0", "KEYLED"), | ||
254 | PWM_LOOKUP("renesas-tpu-pwm.4", 1, "leds-pwm.0", "V2514"), | ||
255 | }; | ||
256 | |||
257 | static struct led_pwm tpu_pwm_leds[] = { | ||
258 | { | ||
259 | .name = "V2513", | ||
260 | .max_brightness = 1000, | ||
261 | }, { | ||
262 | .name = "V2515", | ||
263 | .max_brightness = 1000, | ||
264 | }, { | ||
265 | .name = "KEYLED", | ||
266 | .max_brightness = 1000, | ||
267 | }, { | ||
268 | .name = "V2514", | ||
269 | .max_brightness = 1000, | ||
268 | }, | 270 | }, |
269 | .num_resources = ARRAY_SIZE(tpu21_resources), | ||
270 | .resource = tpu21_resources, | ||
271 | }; | 271 | }; |
272 | 272 | ||
273 | static struct led_renesas_tpu_config led_renesas_tpu30_pdata = { | 273 | static struct led_pwm_platform_data leds_pwm_pdata = { |
274 | .name = "KEYLED", | 274 | .num_leds = ARRAY_SIZE(tpu_pwm_leds), |
275 | .pin_gpio_fn = GPIO_FN_TPU3TO0, | 275 | .leds = tpu_pwm_leds, |
276 | .pin_gpio = 163, | ||
277 | .channel_offset = 0x10, | ||
278 | .timer_bit = 0, | ||
279 | .max_brightness = 1000, | ||
280 | }; | 276 | }; |
281 | 277 | ||
282 | static struct resource tpu30_resources[] = { | 278 | static struct platform_device leds_pwm_device = { |
283 | [0] = { | 279 | .name = "leds-pwm", |
284 | .name = "TPU30", | 280 | .id = 0, |
285 | .start = 0xe6630010, | ||
286 | .end = 0xe6630035, | ||
287 | .flags = IORESOURCE_MEM, | ||
288 | }, | ||
289 | }; | ||
290 | |||
291 | static struct platform_device leds_tpu30_device = { | ||
292 | .name = "leds-renesas-tpu", | ||
293 | .id = 30, | ||
294 | .dev = { | 281 | .dev = { |
295 | .platform_data = &led_renesas_tpu30_pdata, | 282 | .platform_data = &leds_pwm_pdata, |
296 | }, | 283 | }, |
297 | .num_resources = ARRAY_SIZE(tpu30_resources), | ||
298 | .resource = tpu30_resources, | ||
299 | }; | 284 | }; |
300 | 285 | ||
301 | /* Fixed 1.8V regulator to be used by MMCIF */ | 286 | /* Fixed 1.8V regulator to be used by MMCIF */ |
@@ -426,10 +411,11 @@ static struct platform_device *kota2_devices[] __initdata = { | |||
426 | &keysc_device, | 411 | &keysc_device, |
427 | &gpio_keys_device, | 412 | &gpio_keys_device, |
428 | &gpio_leds_device, | 413 | &gpio_leds_device, |
429 | &leds_tpu12_device, | 414 | &tpu1_pwm_device, |
430 | &leds_tpu41_device, | 415 | &tpu2_pwm_device, |
431 | &leds_tpu21_device, | 416 | &tpu3_pwm_device, |
432 | &leds_tpu30_device, | 417 | &tpu4_pwm_device, |
418 | &leds_pwm_device, | ||
433 | &mmcif_device, | 419 | &mmcif_device, |
434 | &sdhi0_device, | 420 | &sdhi0_device, |
435 | &sdhi1_device, | 421 | &sdhi1_device, |
@@ -512,6 +498,15 @@ static const struct pinctrl_map kota2_pinctrl_map[] = { | |||
512 | "bsc_cs5_a", "bsc"), | 498 | "bsc_cs5_a", "bsc"), |
513 | PIN_MAP_MUX_GROUP_DEFAULT("smsc911x.0", "pfc-sh73a0", | 499 | PIN_MAP_MUX_GROUP_DEFAULT("smsc911x.0", "pfc-sh73a0", |
514 | "bsc_we0", "bsc"), | 500 | "bsc_we0", "bsc"), |
501 | /* TPU */ | ||
502 | PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.1", "pfc-sh73a0", | ||
503 | "tpu1_to2", "tpu1"), | ||
504 | PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.2", "pfc-sh73a0", | ||
505 | "tpu2_to1", "tpu2"), | ||
506 | PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.3", "pfc-sh73a0", | ||
507 | "tpu3_to0", "tpu3"), | ||
508 | PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.4", "pfc-sh73a0", | ||
509 | "tpu4_to1", "tpu4"), | ||
515 | }; | 510 | }; |
516 | 511 | ||
517 | static void __init kota2_init(void) | 512 | static void __init kota2_init(void) |
@@ -524,6 +519,8 @@ static void __init kota2_init(void) | |||
524 | 519 | ||
525 | pinctrl_register_mappings(kota2_pinctrl_map, | 520 | pinctrl_register_mappings(kota2_pinctrl_map, |
526 | ARRAY_SIZE(kota2_pinctrl_map)); | 521 | ARRAY_SIZE(kota2_pinctrl_map)); |
522 | pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup)); | ||
523 | |||
527 | sh73a0_pinmux_init(); | 524 | sh73a0_pinmux_init(); |
528 | 525 | ||
529 | /* SMSC911X */ | 526 | /* SMSC911X */ |