.hmc_mode       = 16,
        .pins[0]        = 6,
 };
-
-static struct omap_mmc_config generic_mmc_config __initdata = {
-       .mmc [0] = {
-               .enabled        = 0,
-               .wire4          = 0,
-               .wp_pin         = -1,
-               .power_pin      = -1,
-               .switch_pin     = -1,
-       },
-       .mmc [1] = {
-               .enabled        = 0,
-               .wire4          = 0,
-               .wp_pin         = -1,
-               .power_pin      = -1,
-               .switch_pin     = -1,
-       },
-};
-
 #endif
 
 static struct omap_uart_config generic_uart_config __initdata = {
        .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
 };
 
-static struct omap_board_config_kernel generic_config[] = {
-       { OMAP_TAG_USB,           NULL },
-       { OMAP_TAG_MMC,           &generic_mmc_config },
+static struct omap_board_config_kernel generic_config[] __initdata = {
+       { OMAP_TAG_USB,         NULL },
        { OMAP_TAG_UART,        &generic_uart_config },
 };
 
 
 #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/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),
        &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) {
        }
 }
 
+static struct i2c_board_info __initdata h2_i2c_board_info[] = {
+       {
+               I2C_BOARD_INFO("isp1301_omap", 0x2d),
+               .type           = "isp1301_omap",
+               .irq            = OMAP_GPIO_IRQ(2),
+       },
+};
+
 static void __init h2_init_irq(void)
 {
        omap1_init_common_hw();
        omap_register_i2c_bus(1, 100, h2_i2c_board_info,
                              ARRAY_SIZE(h2_i2c_board_info));
        h2_mmc_init();
-
-       /* irq for tps65010 chip */
-       omap_cfg_reg(W4_GPIO58);
-       if (gpio_request(58, "tps65010") == 0)
-               gpio_direction_input(58);
 }
 
 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,
 
 #include <asm/arch/mcbsp.h>
 #include <asm/arch/omap-alsa.h>
 
-extern int omap_gpio_init(void);
-
 static int h3_keymap[] = {
        KEY(0, 0, KEY_LEFT),
        KEY(0, 1, KEY_RIGHT),
        .ctrl_name      = "internal",
 };
 
-static struct omap_board_config_kernel h3_config[] = {
+static struct omap_board_config_kernel h3_config[] __initdata = {
        { OMAP_TAG_USB,         &h3_usb_config },
        { OMAP_TAG_MMC,         &h3_mmc_config },
        { OMAP_TAG_UART,        &h3_uart_config },
        { OMAP_TAG_LCD,         &h3_lcd_config },
 };
 
-static struct i2c_board_info __initdata h3_i2c_board_info[] = {
-       {
-               I2C_BOARD_INFO("tps65010", 0x48),
-               .type           = "tps65013",
-               /* .irq         = OMAP_GPIO_IRQ(??), */
-       },
-       /* TODO when driver support is ready:
-        *  - isp1301 OTG transceiver
-        *  - optional ov9640 camera sensor at 0x30
-        *  - ...
-        */
-};
-
 static struct omap_gpio_switch h3_gpio_switches[] __initdata = {
        {
                .name                   = "mmc_slot",
        omap_cfg_reg(V2_1710_GPIO10);
 
        platform_add_devices(devices, ARRAY_SIZE(devices));
+       spi_register_board_info(h3_spi_board_info,
+                               ARRAY_SIZE(h3_spi_board_info));
        omap_board_config = h3_config;
        omap_board_config_size = ARRAY_SIZE(h3_config);
        omap_serial_init();
        omap1_map_common_io();
 }
 
-#ifdef CONFIG_TPS65010
-static int __init h3_tps_init(void)
-{
-       if (!machine_is_omap_h3())
-               return 0;
-
-       /* gpio4 for SD, gpio3 for VDD_DSP */
-       /* FIXME send power to DSP iff it's configured */
-
-       /* Enable LOW_PWR */
-       tps65013_set_low_pwr(ON);
-
-       return 0;
-}
-fs_initcall(h3_tps_init);
-#endif
-
 MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
        /* Maintainer: Texas Instruments, Inc. */
        .phys_io        = 0xfff00000,
 
        },
 };
 
-static struct omap_board_config_kernel nokia770_config[] = {
+static struct omap_board_config_kernel nokia770_config[] __initdata = {
        { OMAP_TAG_USB,         NULL },
        { OMAP_TAG_MMC,         &nokia770_mmc_config },
 };
 
 };
 #endif
 
-static struct omap_board_config_kernel osk_config[] = {
+static struct omap_board_config_kernel osk_config[] __initdata = {
        { OMAP_TAG_USB,           &osk_usb_config },
        { OMAP_TAG_UART,                &osk_uart_config },
 #ifdef CONFIG_OMAP_OSK_MISTRAL
 
        .enabled_uarts = (1 << 0) | (1 << 1) | (0 << 2),
 };
 
-static struct omap_board_config_kernel palmtt_config[] = {
+static struct omap_board_config_kernel palmtt_config[] __initdata = {
        { OMAP_TAG_USB,         &palmtt_usb_config      },
        { OMAP_TAG_LCD,         &palmtt_lcd_config      },
        { OMAP_TAG_UART,        &palmtt_uart_config     },
 
        .enabled_uarts = (1 << 0) | (1 << 1) | (0 << 2),
 };
 
-static struct omap_board_config_kernel palmz71_config[] = {
+static struct omap_board_config_kernel palmz71_config[] __initdata = {
        {OMAP_TAG_USB,  &palmz71_usb_config},
        {OMAP_TAG_MMC,  &palmz71_mmc_config},
        {OMAP_TAG_LCD,  &palmz71_lcd_config},
 
        .ctrl_name      = "internal",
 };
 
-static struct omap_board_config_kernel perseus2_config[] = {
+static struct omap_board_config_kernel perseus2_config[] __initdata = {
        { OMAP_TAG_UART,        &perseus2_uart_config },
        { OMAP_TAG_LCD,         &perseus2_lcd_config },
 };
 
                                                /* PCR0 =0f0f */
 };
 
-/* TODO: PCM interface - McBSP2 */
-static struct omap_mcbsp_reg_cfg mcbsp2_regs = {
-       .spcr2  = FRST | GRST | XRST | XINTM(3),        /* SPCR2=F1 */
-       .spcr1  = RINTM(3) | RRST,      /* SPCR1=30 */
-       .rcr2   = 0,    /* RCR2 =00 */
-       .rcr1   = RFRLEN1(1) | RWDLEN1(OMAP_MCBSP_WORD_16), /* RCR1 = 140 */
-       .xcr2   = 0,    /* XCR2 = 0 */
-       .xcr1   = XFRLEN1(1) | XWDLEN1(OMAP_MCBSP_WORD_16), /* XCR1 = 140 */
-       .srgr1  = FWID(15) | CLKGDV(12),        /* SRGR1=0f0c */
-       .srgr2  = FSGM | FPER(31),      /* SRGR2=101f */
-       .pcr0   = FSXM | FSRM | CLKXM | CLKRM | FSXP | FSRP | CLKXP | CLKRP,
-                                               /* PCR0=0f0f */
-       /* mcbsp: slave */
-};
-
 static struct omap_alsa_codec_config sx1_alsa_config = {
        .name                   = "SX1 EGold",
        .mcbsp_regs_alsa        = &mcbsp1_regs,
 
 static struct omap_mmc_config sx1_mmc_config __initdata = {
        .mmc [0] = {
-               .enabled        = 1,
+               .enabled        = 1,
                .wire4          = 0,
-               .wp_pin         = -1,
-               .power_pin      = -1, /* power is in Sofia */
-               .switch_pin     = OMAP_MPUIO(3),
        },
 };
 
        .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
 };
 
-static struct omap_board_config_kernel sx1_config[] = {
+static struct omap_board_config_kernel sx1_config[] __initdata = {
        { OMAP_TAG_USB, &sx1_usb_config },
        { OMAP_TAG_MMC, &sx1_mmc_config },
        { OMAP_TAG_LCD, &sx1_lcd_config },
        { OMAP_TAG_UART,        &sx1_uart_config },
 };
+
 /*-----------------------------------------*/
+
 static void __init omap_sx1_init(void)
 {
        platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices));
 
 #include <asm/arch/tc.h>
 #include <asm/arch/usb.h>
 
-extern void omap_init_time(void);
-extern int omap_gpio_init(void);
-
 static struct plat_serial8250_port voiceblue_ports[] = {
        {
                .mapbase        = (unsigned long)(OMAP_CS1_PHYS + 0x40000),
 
 }
 
 /* msg */
-static inline mbox_msg_t omap1_mbox_fifo_read(struct omap_mbox *mbox)
+static mbox_msg_t omap1_mbox_fifo_read(struct omap_mbox *mbox)
 {
        struct omap_mbox1_fifo *fifo =
                &((struct omap_mbox1_priv *)mbox->priv)->rx_fifo;
        return msg;
 }
 
-static inline void
+static void
 omap1_mbox_fifo_write(struct omap_mbox *mbox, mbox_msg_t msg)
 {
        struct omap_mbox1_fifo *fifo =
        mbox_write_reg(msg >> 16, fifo->cmd);
 }
 
-static inline int omap1_mbox_fifo_empty(struct omap_mbox *mbox)
+static int omap1_mbox_fifo_empty(struct omap_mbox *mbox)
 {
        return 0;
 }
 
-static inline int omap1_mbox_fifo_full(struct omap_mbox *mbox)
+static int omap1_mbox_fifo_full(struct omap_mbox *mbox)
 {
        struct omap_mbox1_fifo *fifo =
                &((struct omap_mbox1_priv *)mbox->priv)->rx_fifo;
 }
 
 /* irq */
-static inline void
+static void
 omap1_mbox_enable_irq(struct omap_mbox *mbox, omap_mbox_type_t irq)
 {
        if (irq == IRQ_RX)
                enable_irq(mbox->irq);
 }
 
-static inline void
+static void
 omap1_mbox_disable_irq(struct omap_mbox *mbox, omap_mbox_type_t irq)
 {
        if (irq == IRQ_RX)
                disable_irq(mbox->irq);
 }
 
-static inline int
+static int
 omap1_mbox_is_irq(struct omap_mbox *mbox, omap_mbox_type_t irq)
 {
        if (irq == IRQ_TX)
 
 #include <asm/arch/pm.h>
 #include <asm/arch/mux.h>
 #include <asm/arch/dma.h>
-#include <asm/arch/dsp_common.h>
 #include <asm/arch/dmtimer.h>
 
 static unsigned int arm_sleep_save[ARM_SLEEP_SAVE_SIZE];