]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/mach-omap1/board-h2.c
Merge branch 'linus' into tracing/mmiotrace
[linux-2.6-omap-h63xx.git] / arch / arm / mach-omap1 / board-h2.c
index bfa04fa25524c23b5a0ede5a41313fe1a529f5bd..4b444fdaafea04b430234f61574471168931155f 100644 (file)
 #include <asm/mach/flash.h>
 #include <asm/mach/map.h>
 
+#include <asm/arch/gpio-switch.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/tc.h>
+#include <asm/arch/nand.h>
 #include <asm/arch/irda.h>
 #include <asm/arch/usb.h>
 #include <asm/arch/keypad.h>
@@ -46,8 +48,6 @@
 #include <asm/arch/mcbsp.h>
 #include <asm/arch/omap-alsa.h>
 
-extern int omap_gpio_init(void);
-
 static int h2_keymap[] = {
        KEY(0, 0, KEY_LEFT),
        KEY(0, 1, KEY_RIGHT),
@@ -140,8 +140,6 @@ static struct platform_device h2_nor_device = {
        .resource       = &h2_nor_resource,
 };
 
-#if 0  /* REVISIT: Enable when nand_platform_data is applied */
-
 static struct mtd_partition h2_nand_partitions[] = {
 #if 0
        /* REVISIT:  enable these partitions if you make NAND BOOT
@@ -179,7 +177,7 @@ static struct mtd_partition h2_nand_partitions[] = {
 };
 
 /* dip switches control NAND chip access:  8 bit, 16 bit, or neither */
-static struct nand_platform_data h2_nand_data = {
+static struct omap_nand_platform_data h2_nand_data = {
        .options        = NAND_SAMSUNG_LP_OPTIONS,
        .parts          = h2_nand_partitions,
        .nr_parts       = ARRAY_SIZE(h2_nand_partitions),
@@ -198,7 +196,6 @@ static struct platform_device h2_nand_device = {
        .num_resources  = 1,
        .resource       = &h2_nand_resource,
 };
-#endif
 
 static struct resource h2_smc91x_resources[] = {
        [0] = {
@@ -311,18 +308,18 @@ static struct omap_mcbsp_reg_cfg mcbsp_regs = {
        .srgr2 = GSYNC | CLKSP | FSGM | FPER(31),
 
        .pcr0  = CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP,
-       //.pcr0 = CLKXP | CLKRP,        /* mcbsp: slave */
+       /*.pcr0 = CLKXP | CLKRP,*/        /* mcbsp: slave */
 };
 
 static struct omap_alsa_codec_config alsa_config = {
        .name                   = "H2 TSC2101",
        .mcbsp_regs_alsa        = &mcbsp_regs,
-       .codec_configure_dev    = NULL, // tsc2101_configure,
-       .codec_set_samplerate   = NULL, // tsc2101_set_samplerate,
-       .codec_clock_setup      = NULL, // tsc2101_clock_setup,
-       .codec_clock_on         = NULL, // tsc2101_clock_on,
-       .codec_clock_off        = NULL, // tsc2101_clock_off,
-       .get_default_samplerate = NULL, // tsc2101_get_default_samplerate,
+       .codec_configure_dev    = NULL, /* tsc2101_configure, */
+       .codec_set_samplerate   = NULL, /* tsc2101_set_samplerate, */
+       .codec_clock_setup      = NULL, /* tsc2101_clock_setup, */
+       .codec_clock_on         = NULL, /* tsc2101_clock_on, */
+       .codec_clock_off        = NULL, /* tsc2101_clock_off, */
+       .get_default_samplerate = NULL, /* tsc2101_get_default_samplerate, */
 };
 
 static struct platform_device h2_mcbsp1_device = {
@@ -335,7 +332,7 @@ static struct platform_device h2_mcbsp1_device = {
 
 static struct platform_device *h2_devices[] __initdata = {
        &h2_nor_device,
-       //&h2_nand_device,
+       &h2_nand_device,
        &h2_smc91x_device,
        &h2_irda_device,
        &h2_kp_device,
@@ -343,22 +340,6 @@ static struct platform_device *h2_devices[] __initdata = {
        &h2_mcbsp1_device,
 };
 
-#ifdef CONFIG_I2C_BOARDINFO
-static struct i2c_board_info __initdata h2_i2c_board_info[] = {
-       {
-               I2C_BOARD_INFO("tps65010", 0x48),
-               .type           = "tps65010",
-               .irq            = OMAP_GPIO_IRQ(58),
-       },
-       /* TODO when driver support is ready:
-        *  - isp1301 OTG transceiver
-        *  - optional ov9640 camera sensor at 0x30
-        *  - pcf9754 for aGPS control
-        *  - ... etc
-        */
-};
-#endif
-
 static void __init h2_init_smc91x(void)
 {
        if ((omap_request_gpio(0)) < 0) {
@@ -367,6 +348,16 @@ static void __init h2_init_smc91x(void)
        }
 }
 
+static struct i2c_board_info __initdata h2_i2c_board_info[] = {
+       {
+               I2C_BOARD_INFO("tps65010", 0x48),
+               .irq            = OMAP_GPIO_IRQ(58),
+       }, {
+               I2C_BOARD_INFO("isp1301_omap", 0x2d),
+               .irq            = OMAP_GPIO_IRQ(2),
+       },
+};
+
 static void __init h2_init_irq(void)
 {
        omap1_init_common_hw();
@@ -380,26 +371,25 @@ static struct omap_usb_config h2_usb_config __initdata = {
        .otg            = 2,
 
 #ifdef CONFIG_USB_GADGET_OMAP
-       .hmc_mode       = 19,   // 0:host(off) 1:dev|otg 2:disabled
-       // .hmc_mode    = 21,   // 0:host(off) 1:dev(loopback) 2:host(loopback)
+       .hmc_mode       = 19,   /* 0:host(off) 1:dev|otg 2:disabled */
+       /* .hmc_mode    = 21,*/ /* 0:host(off) 1:dev(loopback) 2:host(loopback) */
 #elif  defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
        /* needs OTG cable, or NONSTANDARD (B-to-MiniB) */
-       .hmc_mode       = 20,   // 1:dev|otg(off) 1:host 2:disabled
+       .hmc_mode       = 20,   /* 1:dev|otg(off) 1:host 2:disabled */
 #endif
 
        .pins[1]        = 3,
 };
 
 static struct omap_mmc_config h2_mmc_config __initdata = {
-       .mmc [0] = {
-               .enabled        = 1,
+       .mmc[0] = {
+               .enabled        = 1,
                .wire4          = 1,
-               .wp_pin         = OMAP_MPUIO(3),
-               .power_pin      = -1,   /* tps65010 gpio3 */
-               .switch_pin     = OMAP_MPUIO(1),
        },
 };
 
+extern struct omap_mmc_platform_data h2_mmc_data;
+
 static struct omap_uart_config h2_uart_config __initdata = {
        .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
 };
@@ -409,15 +399,15 @@ static struct omap_lcd_config h2_lcd_config __initdata = {
 };
 
 static struct omap_board_config_kernel h2_config[] __initdata = {
-       { OMAP_TAG_USB,           &h2_usb_config },
-       { OMAP_TAG_MMC,           &h2_mmc_config },
+       { OMAP_TAG_USB,         &h2_usb_config },
+       { OMAP_TAG_MMC,         &h2_mmc_config },
        { OMAP_TAG_UART,        &h2_uart_config },
        { OMAP_TAG_LCD,         &h2_lcd_config },
 };
 
 #define H2_NAND_RB_GPIO_PIN    62
 
-static int h2_nand_dev_ready(struct nand_platform_data *data)
+static int h2_nand_dev_ready(struct omap_nand_platform_data *data)
 {
        return omap_get_gpio_datain(H2_NAND_RB_GPIO_PIN);
 }
@@ -436,18 +426,16 @@ static void __init h2_init(void)
        h2_nor_resource.end = h2_nor_resource.start = omap_cs3_phys();
        h2_nor_resource.end += SZ_32M - 1;
 
-#if 0  /* REVISIT: Enable when nand_platform_data is applied */
        h2_nand_resource.end = h2_nand_resource.start = OMAP_CS2B_PHYS;
        h2_nand_resource.end += SZ_4K - 1;
        if (!(omap_request_gpio(H2_NAND_RB_GPIO_PIN)))
                h2_nand_data.dev_ready = h2_nand_dev_ready;
-#endif
 
        omap_cfg_reg(L3_1610_FLASH_CS2B_OE);
        omap_cfg_reg(M8_1610_FLASH_CS2B_WE);
 
        /* MMC:  card detect and WP */
-       // omap_cfg_reg(U19_ARMIO1);            /* CD */
+       /* omap_cfg_reg(U19_ARMIO1); */         /* CD */
        omap_cfg_reg(BALLOUT_V8_ARMIO3);        /* WP */
 
        /* Irda */
@@ -463,16 +451,9 @@ static void __init h2_init(void)
        omap_board_config = h2_config;
        omap_board_config_size = ARRAY_SIZE(h2_config);
        omap_serial_init();
-
-       /* irq for tps65010 chip */
-       omap_cfg_reg(W4_GPIO58);
-       if (gpio_request(58, "tps65010") == 0)
-               gpio_direction_input(58);
-
-#ifdef CONFIG_I2C_BOARDINFO
-       i2c_register_board_info(1, h2_i2c_board_info,
-                       ARRAY_SIZE(h2_i2c_board_info));
-#endif
+       omap_register_i2c_bus(1, 100, h2_i2c_board_info,
+                             ARRAY_SIZE(h2_i2c_board_info));
+       h2_mmc_init();
 }
 
 static void __init h2_map_io(void)
@@ -480,22 +461,6 @@ static void __init h2_map_io(void)
        omap1_map_common_io();
 }
 
-#ifdef CONFIG_TPS65010
-static int __init h2_tps_init(void)
-{
-       if (!machine_is_omap_h2())
-               return 0;
-
-       /* gpio3 for SD, gpio4 for VDD_DSP */
-       /* FIXME send power to DSP iff it's configured */
-
-       /* Enable LOW_PWR */
-       tps65010_set_low_pwr(ON);
-       return 0;
-}
-fs_initcall(h2_tps_init);
-#endif
-
 MACHINE_START(OMAP_H2, "TI-H2")
        /* Maintainer: Imre Deak <imre.deak@nokia.com> */
        .phys_io        = 0xfff00000,