diff options
Diffstat (limited to 'arch/arm/mach-omap2/board-rx51-peripherals.c')
-rw-r--r-- | arch/arm/mach-omap2/board-rx51-peripherals.c | 92 |
1 files changed, 80 insertions, 12 deletions
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index 4377a4cf36eb..966f5f84f2bd 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c | |||
@@ -277,7 +277,7 @@ static struct regulator_consumer_supply rx51_vmmc1_supply = { | |||
277 | .dev_name = "mmci-omap-hs.0", | 277 | .dev_name = "mmci-omap-hs.0", |
278 | }; | 278 | }; |
279 | 279 | ||
280 | static struct regulator_consumer_supply rx51_vmmc2_supply = { | 280 | static struct regulator_consumer_supply rx51_vaux3_supply = { |
281 | .supply = "vmmc", | 281 | .supply = "vmmc", |
282 | .dev_name = "mmci-omap-hs.1", | 282 | .dev_name = "mmci-omap-hs.1", |
283 | }; | 283 | }; |
@@ -287,6 +287,48 @@ static struct regulator_consumer_supply rx51_vsim_supply = { | |||
287 | .dev_name = "mmci-omap-hs.1", | 287 | .dev_name = "mmci-omap-hs.1", |
288 | }; | 288 | }; |
289 | 289 | ||
290 | static struct regulator_consumer_supply rx51_vmmc2_supplies[] = { | ||
291 | /* tlv320aic3x analog supplies */ | ||
292 | { | ||
293 | .supply = "AVDD", | ||
294 | .dev_name = "2-0018", | ||
295 | }, | ||
296 | { | ||
297 | .supply = "DRVDD", | ||
298 | .dev_name = "2-0018", | ||
299 | }, | ||
300 | /* Keep vmmc as last item. It is not iterated for newer boards */ | ||
301 | { | ||
302 | .supply = "vmmc", | ||
303 | .dev_name = "mmci-omap-hs.1", | ||
304 | }, | ||
305 | }; | ||
306 | |||
307 | static struct regulator_consumer_supply rx51_vio_supplies[] = { | ||
308 | /* tlv320aic3x digital supplies */ | ||
309 | { | ||
310 | .supply = "IOVDD", | ||
311 | .dev_name = "2-0018" | ||
312 | }, | ||
313 | { | ||
314 | .supply = "DVDD", | ||
315 | .dev_name = "2-0018" | ||
316 | }, | ||
317 | }; | ||
318 | |||
319 | #if defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE) | ||
320 | extern struct platform_device rx51_display_device; | ||
321 | #endif | ||
322 | |||
323 | static struct regulator_consumer_supply rx51_vaux1_consumers[] = { | ||
324 | #if defined(CONFIG_FB_OMAP2) || defined(CONFIG_FB_OMAP2_MODULE) | ||
325 | { | ||
326 | .supply = "vdds_sdi", | ||
327 | .dev = &rx51_display_device.dev, | ||
328 | }, | ||
329 | #endif | ||
330 | }; | ||
331 | |||
290 | static struct regulator_init_data rx51_vaux1 = { | 332 | static struct regulator_init_data rx51_vaux1 = { |
291 | .constraints = { | 333 | .constraints = { |
292 | .name = "V28", | 334 | .name = "V28", |
@@ -297,6 +339,8 @@ static struct regulator_init_data rx51_vaux1 = { | |||
297 | .valid_ops_mask = REGULATOR_CHANGE_MODE | 339 | .valid_ops_mask = REGULATOR_CHANGE_MODE |
298 | | REGULATOR_CHANGE_STATUS, | 340 | | REGULATOR_CHANGE_STATUS, |
299 | }, | 341 | }, |
342 | .num_consumer_supplies = ARRAY_SIZE(rx51_vaux1_consumers), | ||
343 | .consumer_supplies = rx51_vaux1_consumers, | ||
300 | }; | 344 | }; |
301 | 345 | ||
302 | static struct regulator_init_data rx51_vaux2 = { | 346 | static struct regulator_init_data rx51_vaux2 = { |
@@ -338,7 +382,7 @@ static struct regulator_init_data rx51_vaux3_mmc = { | |||
338 | | REGULATOR_CHANGE_STATUS, | 382 | | REGULATOR_CHANGE_STATUS, |
339 | }, | 383 | }, |
340 | .num_consumer_supplies = 1, | 384 | .num_consumer_supplies = 1, |
341 | .consumer_supplies = &rx51_vmmc2_supply, | 385 | .consumer_supplies = &rx51_vaux3_supply, |
342 | }; | 386 | }; |
343 | 387 | ||
344 | static struct regulator_init_data rx51_vaux4 = { | 388 | static struct regulator_init_data rx51_vaux4 = { |
@@ -370,9 +414,9 @@ static struct regulator_init_data rx51_vmmc1 = { | |||
370 | 414 | ||
371 | static struct regulator_init_data rx51_vmmc2 = { | 415 | static struct regulator_init_data rx51_vmmc2 = { |
372 | .constraints = { | 416 | .constraints = { |
373 | .name = "VMMC2_30", | 417 | .name = "V28_A", |
374 | .min_uV = 1850000, | 418 | .min_uV = 2800000, |
375 | .max_uV = 3150000, | 419 | .max_uV = 3000000, |
376 | .apply_uV = true, | 420 | .apply_uV = true, |
377 | .valid_modes_mask = REGULATOR_MODE_NORMAL | 421 | .valid_modes_mask = REGULATOR_MODE_NORMAL |
378 | | REGULATOR_MODE_STANDBY, | 422 | | REGULATOR_MODE_STANDBY, |
@@ -380,8 +424,8 @@ static struct regulator_init_data rx51_vmmc2 = { | |||
380 | | REGULATOR_CHANGE_MODE | 424 | | REGULATOR_CHANGE_MODE |
381 | | REGULATOR_CHANGE_STATUS, | 425 | | REGULATOR_CHANGE_STATUS, |
382 | }, | 426 | }, |
383 | .num_consumer_supplies = 1, | 427 | .num_consumer_supplies = ARRAY_SIZE(rx51_vmmc2_supplies), |
384 | .consumer_supplies = &rx51_vmmc2_supply, | 428 | .consumer_supplies = rx51_vmmc2_supplies, |
385 | }; | 429 | }; |
386 | 430 | ||
387 | static struct regulator_init_data rx51_vsim = { | 431 | static struct regulator_init_data rx51_vsim = { |
@@ -411,6 +455,20 @@ static struct regulator_init_data rx51_vdac = { | |||
411 | }, | 455 | }, |
412 | }; | 456 | }; |
413 | 457 | ||
458 | static struct regulator_init_data rx51_vio = { | ||
459 | .constraints = { | ||
460 | .min_uV = 1800000, | ||
461 | .max_uV = 1800000, | ||
462 | .valid_modes_mask = REGULATOR_MODE_NORMAL | ||
463 | | REGULATOR_MODE_STANDBY, | ||
464 | .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | ||
465 | | REGULATOR_CHANGE_MODE | ||
466 | | REGULATOR_CHANGE_STATUS, | ||
467 | }, | ||
468 | .num_consumer_supplies = ARRAY_SIZE(rx51_vio_supplies), | ||
469 | .consumer_supplies = rx51_vio_supplies, | ||
470 | }; | ||
471 | |||
414 | static int rx51_twlgpio_setup(struct device *dev, unsigned gpio, unsigned n) | 472 | static int rx51_twlgpio_setup(struct device *dev, unsigned gpio, unsigned n) |
415 | { | 473 | { |
416 | /* FIXME this gpio setup is just a placeholder for now */ | 474 | /* FIXME this gpio setup is just a placeholder for now */ |
@@ -618,6 +676,7 @@ static struct twl4030_platform_data rx51_twldata __initdata = { | |||
618 | .vmmc1 = &rx51_vmmc1, | 676 | .vmmc1 = &rx51_vmmc1, |
619 | .vsim = &rx51_vsim, | 677 | .vsim = &rx51_vsim, |
620 | .vdac = &rx51_vdac, | 678 | .vdac = &rx51_vdac, |
679 | .vio = &rx51_vio, | ||
621 | }; | 680 | }; |
622 | 681 | ||
623 | static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_1[] = { | 682 | static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_1[] = { |
@@ -629,18 +688,27 @@ static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_1[] = { | |||
629 | }, | 688 | }, |
630 | }; | 689 | }; |
631 | 690 | ||
691 | static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_2[] = { | ||
692 | { | ||
693 | I2C_BOARD_INFO("tlv320aic3x", 0x18), | ||
694 | }, | ||
695 | }; | ||
696 | |||
632 | static int __init rx51_i2c_init(void) | 697 | static int __init rx51_i2c_init(void) |
633 | { | 698 | { |
634 | if ((system_rev >= SYSTEM_REV_S_USES_VAUX3 && system_rev < 0x100) || | 699 | if ((system_rev >= SYSTEM_REV_S_USES_VAUX3 && system_rev < 0x100) || |
635 | system_rev >= SYSTEM_REV_B_USES_VAUX3) | 700 | system_rev >= SYSTEM_REV_B_USES_VAUX3) { |
636 | rx51_twldata.vaux3 = &rx51_vaux3_mmc; | 701 | rx51_twldata.vaux3 = &rx51_vaux3_mmc; |
637 | else { | 702 | /* Only older boards use VMMC2 for internal MMC */ |
703 | rx51_vmmc2.num_consumer_supplies--; | ||
704 | } else { | ||
638 | rx51_twldata.vaux3 = &rx51_vaux3_cam; | 705 | rx51_twldata.vaux3 = &rx51_vaux3_cam; |
639 | rx51_twldata.vmmc2 = &rx51_vmmc2; | ||
640 | } | 706 | } |
707 | rx51_twldata.vmmc2 = &rx51_vmmc2; | ||
641 | omap_register_i2c_bus(1, 2200, rx51_peripherals_i2c_board_info_1, | 708 | omap_register_i2c_bus(1, 2200, rx51_peripherals_i2c_board_info_1, |
642 | ARRAY_SIZE(rx51_peripherals_i2c_board_info_1)); | 709 | ARRAY_SIZE(rx51_peripherals_i2c_board_info_1)); |
643 | omap_register_i2c_bus(2, 100, NULL, 0); | 710 | omap_register_i2c_bus(2, 100, rx51_peripherals_i2c_board_info_2, |
711 | ARRAY_SIZE(rx51_peripherals_i2c_board_info_2)); | ||
644 | omap_register_i2c_bus(3, 400, NULL, 0); | 712 | omap_register_i2c_bus(3, 400, NULL, 0); |
645 | return 0; | 713 | return 0; |
646 | } | 714 | } |