aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/board-overo.c
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-05-28 17:04:03 -0400
committerTony Lindgren <tony@atomide.com>2009-05-28 17:04:03 -0400
commitbb3b9d8eb97624956e7e3a9eba2c64576808b1dc (patch)
treeb62b08c1a12b9fc71e1b01ad849f8486ab6cd420 /arch/arm/mach-omap2/board-overo.c
parentb583f26d510ee1aef7348f38f1d959212f66b5e5 (diff)
ARM: OMAP3: Initialize regulators for Beagle and Overo
Initialize regulators for Beagle and Overo. Patch is based on earlier patches posted to linux-omap mailing list. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/board-overo.c')
-rw-r--r--arch/arm/mach-omap2/board-overo.c76
1 files changed, 57 insertions, 19 deletions
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index c7443ff98ee2..dff5528fbfb5 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -27,6 +27,7 @@
27#include <linux/kernel.h> 27#include <linux/kernel.h>
28#include <linux/platform_device.h> 28#include <linux/platform_device.h>
29#include <linux/i2c/twl4030.h> 29#include <linux/i2c/twl4030.h>
30#include <linux/regulator/machine.h>
30 31
31#include <linux/mtd/mtd.h> 32#include <linux/mtd/mtd.h>
32#include <linux/mtd/nand.h> 33#include <linux/mtd/nand.h>
@@ -272,21 +273,76 @@ static struct omap_uart_config overo_uart_config __initdata = {
272 .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)), 273 .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
273}; 274};
274 275
276static struct twl4030_hsmmc_info mmc[] = {
277 {
278 .mmc = 1,
279 .wires = 4,
280 .gpio_cd = -EINVAL,
281 .gpio_wp = -EINVAL,
282 },
283 {
284 .mmc = 2,
285 .wires = 4,
286 .gpio_cd = -EINVAL,
287 .gpio_wp = -EINVAL,
288 .transceiver = true,
289 .ocr_mask = 0x00100000, /* 3.3V */
290 },
291 {} /* Terminator */
292};
293
294static struct regulator_consumer_supply overo_vmmc1_supply = {
295 .supply = "vmmc",
296};
297
298static int overo_twl_gpio_setup(struct device *dev,
299 unsigned gpio, unsigned ngpio)
300{
301 twl4030_mmc_init(mmc);
302
303 overo_vmmc1_supply.dev = mmc[0].dev;
304
305 return 0;
306}
307
275static struct twl4030_gpio_platform_data overo_gpio_data = { 308static struct twl4030_gpio_platform_data overo_gpio_data = {
276 .gpio_base = OMAP_MAX_GPIO_LINES, 309 .gpio_base = OMAP_MAX_GPIO_LINES,
277 .irq_base = TWL4030_GPIO_IRQ_BASE, 310 .irq_base = TWL4030_GPIO_IRQ_BASE,
278 .irq_end = TWL4030_GPIO_IRQ_END, 311 .irq_end = TWL4030_GPIO_IRQ_END,
312 .setup = overo_twl_gpio_setup,
313};
314
315static struct twl4030_usb_data overo_usb_data = {
316 .usb_mode = T2_USB_MODE_ULPI,
317};
318
319static struct regulator_init_data overo_vmmc1 = {
320 .constraints = {
321 .min_uV = 1850000,
322 .max_uV = 3150000,
323 .valid_modes_mask = REGULATOR_MODE_NORMAL
324 | REGULATOR_MODE_STANDBY,
325 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
326 | REGULATOR_CHANGE_MODE
327 | REGULATOR_CHANGE_STATUS,
328 },
329 .num_consumer_supplies = 1,
330 .consumer_supplies = &overo_vmmc1_supply,
279}; 331};
280 332
333/* mmc2 (WLAN) and Bluetooth don't use twl4030 regulators */
334
281static struct twl4030_platform_data overo_twldata = { 335static struct twl4030_platform_data overo_twldata = {
282 .irq_base = TWL4030_IRQ_BASE, 336 .irq_base = TWL4030_IRQ_BASE,
283 .irq_end = TWL4030_IRQ_END, 337 .irq_end = TWL4030_IRQ_END,
284 .gpio = &overo_gpio_data, 338 .gpio = &overo_gpio_data,
339 .usb = &overo_usb_data,
340 .vmmc1 = &overo_vmmc1,
285}; 341};
286 342
287static struct i2c_board_info __initdata overo_i2c_boardinfo[] = { 343static struct i2c_board_info __initdata overo_i2c_boardinfo[] = {
288 { 344 {
289 I2C_BOARD_INFO("twl4030", 0x48), 345 I2C_BOARD_INFO("tps65950", 0x48),
290 .flags = I2C_CLIENT_WAKE, 346 .flags = I2C_CLIENT_WAKE,
291 .irq = INT_34XX_SYS_NIRQ, 347 .irq = INT_34XX_SYS_NIRQ,
292 .platform_data = &overo_twldata, 348 .platform_data = &overo_twldata,
@@ -327,23 +383,6 @@ static struct platform_device *overo_devices[] __initdata = {
327 &overo_lcd_device, 383 &overo_lcd_device,
328}; 384};
329 385
330static struct twl4030_hsmmc_info mmc[] __initdata = {
331 {
332 .mmc = 1,
333 .wires = 4,
334 .gpio_cd = -EINVAL,
335 .gpio_wp = -EINVAL,
336 },
337 {
338 .mmc = 2,
339 .wires = 4,
340 .gpio_cd = -EINVAL,
341 .gpio_wp = -EINVAL,
342 .transceiver = true,
343 },
344 {} /* Terminator */
345};
346
347static void __init overo_init(void) 386static void __init overo_init(void)
348{ 387{
349 overo_i2c_init(); 388 overo_i2c_init();
@@ -351,7 +390,6 @@ static void __init overo_init(void)
351 omap_board_config = overo_config; 390 omap_board_config = overo_config;
352 omap_board_config_size = ARRAY_SIZE(overo_config); 391 omap_board_config_size = ARRAY_SIZE(overo_config);
353 omap_serial_init(); 392 omap_serial_init();
354 twl4030_mmc_init(mmc);
355 overo_flash_init(); 393 overo_flash_init();
356 usb_musb_init(); 394 usb_musb_init();
357 overo_ads7846_init(); 395 overo_ads7846_init();