aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/board-overo.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-omap2/board-overo.c')
-rw-r--r--arch/arm/mach-omap2/board-overo.c77
1 files changed, 53 insertions, 24 deletions
diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c
index 9917d2fddc2f..8848c7c5ce48 100644
--- a/arch/arm/mach-omap2/board-overo.c
+++ b/arch/arm/mach-omap2/board-overo.c
@@ -26,7 +26,7 @@
26#include <linux/io.h> 26#include <linux/io.h>
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/twl.h>
30#include <linux/regulator/machine.h> 30#include <linux/regulator/machine.h>
31 31
32#include <linux/mtd/mtd.h> 32#include <linux/mtd/mtd.h>
@@ -38,17 +38,17 @@
38#include <asm/mach/flash.h> 38#include <asm/mach/flash.h>
39#include <asm/mach/map.h> 39#include <asm/mach/map.h>
40 40
41#include <mach/board.h> 41#include <plat/board.h>
42#include <mach/common.h> 42#include <plat/common.h>
43#include <mach/gpio.h> 43#include <mach/gpio.h>
44#include <mach/gpmc.h> 44#include <plat/gpmc.h>
45#include <mach/hardware.h> 45#include <mach/hardware.h>
46#include <mach/nand.h> 46#include <plat/nand.h>
47#include <mach/mux.h> 47#include <plat/usb.h>
48#include <mach/usb.h>
49 48
49#include "mux.h"
50#include "sdram-micron-mt46h32m32lf-6.h" 50#include "sdram-micron-mt46h32m32lf-6.h"
51#include "mmc-twl4030.h" 51#include "hsmmc.h"
52 52
53#define OVERO_GPIO_BT_XGATE 15 53#define OVERO_GPIO_BT_XGATE 15
54#define OVERO_GPIO_W2W_NRESET 16 54#define OVERO_GPIO_W2W_NRESET 16
@@ -67,7 +67,7 @@
67#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \ 67#if defined(CONFIG_TOUCHSCREEN_ADS7846) || \
68 defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE) 68 defined(CONFIG_TOUCHSCREEN_ADS7846_MODULE)
69 69
70#include <mach/mcspi.h> 70#include <plat/mcspi.h>
71#include <linux/spi/spi.h> 71#include <linux/spi/spi.h>
72#include <linux/spi/ads7846.h> 72#include <linux/spi/ads7846.h>
73 73
@@ -272,7 +272,7 @@ static void __init overo_flash_init(void)
272 } 272 }
273} 273}
274 274
275static struct twl4030_hsmmc_info mmc[] = { 275static struct omap2_hsmmc_info mmc[] = {
276 { 276 {
277 .mmc = 1, 277 .mmc = 1,
278 .wires = 4, 278 .wires = 4,
@@ -297,7 +297,7 @@ static struct regulator_consumer_supply overo_vmmc1_supply = {
297static int overo_twl_gpio_setup(struct device *dev, 297static int overo_twl_gpio_setup(struct device *dev,
298 unsigned gpio, unsigned ngpio) 298 unsigned gpio, unsigned ngpio)
299{ 299{
300 twl4030_mmc_init(mmc); 300 omap2_hsmmc_init(mmc);
301 301
302 overo_vmmc1_supply.dev = mmc[0].dev; 302 overo_vmmc1_supply.dev = mmc[0].dev;
303 303
@@ -329,6 +329,15 @@ static struct regulator_init_data overo_vmmc1 = {
329 .consumer_supplies = &overo_vmmc1_supply, 329 .consumer_supplies = &overo_vmmc1_supply,
330}; 330};
331 331
332static struct twl4030_codec_audio_data overo_audio_data = {
333 .audio_mclk = 26000000,
334};
335
336static struct twl4030_codec_data overo_codec_data = {
337 .audio_mclk = 26000000,
338 .audio = &overo_audio_data,
339};
340
332/* mmc2 (WLAN) and Bluetooth don't use twl4030 regulators */ 341/* mmc2 (WLAN) and Bluetooth don't use twl4030 regulators */
333 342
334static struct twl4030_platform_data overo_twldata = { 343static struct twl4030_platform_data overo_twldata = {
@@ -336,6 +345,7 @@ static struct twl4030_platform_data overo_twldata = {
336 .irq_end = TWL4030_IRQ_END, 345 .irq_end = TWL4030_IRQ_END,
337 .gpio = &overo_gpio_data, 346 .gpio = &overo_gpio_data,
338 .usb = &overo_usb_data, 347 .usb = &overo_usb_data,
348 .codec = &overo_codec_data,
339 .vmmc1 = &overo_vmmc1, 349 .vmmc1 = &overo_vmmc1,
340}; 350};
341 351
@@ -384,19 +394,46 @@ static struct platform_device *overo_devices[] __initdata = {
384 &overo_lcd_device, 394 &overo_lcd_device,
385}; 395};
386 396
397static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
398 .port_mode[0] = EHCI_HCD_OMAP_MODE_UNKNOWN,
399 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
400 .port_mode[2] = EHCI_HCD_OMAP_MODE_UNKNOWN,
401
402 .phy_reset = true,
403 .reset_gpio_port[0] = -EINVAL,
404 .reset_gpio_port[1] = OVERO_GPIO_USBH_NRESET,
405 .reset_gpio_port[2] = -EINVAL
406};
407
408#ifdef CONFIG_OMAP_MUX
409static struct omap_board_mux board_mux[] __initdata = {
410 { .reg_offset = OMAP_MUX_TERMINATOR },
411};
412#else
413#define board_mux NULL
414#endif
415
416static struct omap_musb_board_data musb_board_data = {
417 .interface_type = MUSB_INTERFACE_ULPI,
418 .mode = MUSB_OTG,
419 .power = 100,
420};
421
387static void __init overo_init(void) 422static void __init overo_init(void)
388{ 423{
424 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
389 overo_i2c_init(); 425 overo_i2c_init();
390 platform_add_devices(overo_devices, ARRAY_SIZE(overo_devices)); 426 platform_add_devices(overo_devices, ARRAY_SIZE(overo_devices));
391 omap_serial_init(); 427 omap_serial_init();
392 overo_flash_init(); 428 overo_flash_init();
393 usb_musb_init(); 429 usb_musb_init(&musb_board_data);
430 usb_ehci_init(&ehci_pdata);
394 overo_ads7846_init(); 431 overo_ads7846_init();
395 overo_init_smsc911x(); 432 overo_init_smsc911x();
396 433
397 /* Ensure SDRC pins are mux'd for self-refresh */ 434 /* Ensure SDRC pins are mux'd for self-refresh */
398 omap_cfg_reg(H16_34XX_SDRC_CKE0); 435 omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
399 omap_cfg_reg(H17_34XX_SDRC_CKE1); 436 omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
400 437
401 if ((gpio_request(OVERO_GPIO_W2W_NRESET, 438 if ((gpio_request(OVERO_GPIO_W2W_NRESET,
402 "OVERO_GPIO_W2W_NRESET") == 0) && 439 "OVERO_GPIO_W2W_NRESET") == 0) &&
@@ -433,25 +470,17 @@ static void __init overo_init(void)
433 else 470 else
434 printk(KERN_ERR "could not obtain gpio for " 471 printk(KERN_ERR "could not obtain gpio for "
435 "OVERO_GPIO_USBH_CPEN\n"); 472 "OVERO_GPIO_USBH_CPEN\n");
436
437 if ((gpio_request(OVERO_GPIO_USBH_NRESET,
438 "OVERO_GPIO_USBH_NRESET") == 0) &&
439 (gpio_direction_output(OVERO_GPIO_USBH_NRESET, 1) == 0))
440 gpio_export(OVERO_GPIO_USBH_NRESET, 0);
441 else
442 printk(KERN_ERR "could not obtain gpio for "
443 "OVERO_GPIO_USBH_NRESET\n");
444} 473}
445 474
446static void __init overo_map_io(void) 475static void __init overo_map_io(void)
447{ 476{
448 omap2_set_globals_343x(); 477 omap2_set_globals_343x();
449 omap2_map_common_io(); 478 omap34xx_map_common_io();
450} 479}
451 480
452MACHINE_START(OVERO, "Gumstix Overo") 481MACHINE_START(OVERO, "Gumstix Overo")
453 .phys_io = 0x48000000, 482 .phys_io = 0x48000000,
454 .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc, 483 .io_pg_offst = ((0xfa000000) >> 18) & 0xfffc,
455 .boot_params = 0x80000100, 484 .boot_params = 0x80000100,
456 .map_io = overo_map_io, 485 .map_io = overo_map_io,
457 .init_irq = overo_init_irq, 486 .init_irq = overo_init_irq,