static struct omap_board_config_kernel sdp3430_config[] = {
        { OMAP_TAG_UART,        &sdp3430_uart_config },
 };
+static int __init omap3430_i2c_init(void)
+{
+       omap_register_i2c_bus(1, 2600, NULL, 0);
+       omap_register_i2c_bus(2, 400, NULL, 0);
+       omap_register_i2c_bus(3, 400, NULL, 0);
+       return 0;
+}
 
 static void __init omap_3430sdp_init(void)
 {
 {
        omap2_map_common_io();
 }
+arch_initcall(omap3430_i2c_init);
 
 MACHINE_START(OMAP_3430SDP, "OMAP3430 3430SDP board")
        /* Maintainer: Syed Khasim - Texas Instruments Inc */
 
                if (cpu_class_is_omap1()) {
                        omap_cfg_reg(I2C_SCL);
                        omap_cfg_reg(I2C_SDA);
-               } else if (cpu_class_is_omap2()) {
+               } else if (cpu_is_omap24xx()) {
                        omap_cfg_reg(M19_24XX_I2C1_SCL);
                        omap_cfg_reg(L15_24XX_I2C1_SDA);
                }
 
 
 static int omap_i2c_get_clocks(struct omap_i2c_dev *dev)
 {
-       if (cpu_is_omap16xx() || cpu_is_omap24xx()) {
+       if (cpu_is_omap16xx() || cpu_class_is_omap2()) {
                dev->iclk = clk_get(dev->dev, "i2c_ick");
                if (IS_ERR(dev->iclk)) {
                        dev->iclk = NULL;
                        psc = fclk_rate / 12000000;
        }
 
-       if (cpu_is_omap2430()) {
+       if (cpu_is_omap2430() || cpu_is_omap34xx()) {
 
                /* HSI2C controller internal clk rate should be 19.2 Mhz */
                internal_clk = 19200;
                                if (dev->buf_len) {
                                        *dev->buf++ = w;
                                        dev->buf_len--;
-                                       /*
-                                        * Data reg in 2430 is 8 bit wide,
-                                        */
-                                       if (!cpu_is_omap2430()) {
+                                       /* Data reg from 2430 is 8 bit wide */
+                                       if (!cpu_is_omap2430() &&
+                                                       !cpu_is_omap34xx()) {
                                                if (dev->buf_len) {
                                                        *dev->buf++ = w >> 8;
                                                        dev->buf_len--;
                                if (dev->buf_len) {
                                        w = *dev->buf++;
                                        dev->buf_len--;
-                                       /*
-                                        * Data reg in 2430 is 8 bit wide,
-                                        */
-                                       if (!cpu_is_omap2430()) {
+                                       /* Data reg from  2430 is 8 bit wide */
+                                       if (!cpu_is_omap2430() &&
+                                                       !cpu_is_omap34xx()) {
                                                if (dev->buf_len) {
                                                        w |= *dev->buf++ << 8;
                                                        dev->buf_len--;
        if (cpu_is_omap15xx())
                dev->rev1 = omap_i2c_read_reg(dev, OMAP_I2C_REV_REG) < 0x20;
 
-       if (cpu_is_omap2430()) {
+       if (cpu_is_omap2430() || cpu_is_omap34xx()) {
                /* Set up the fifo size - Get total size */
                dev->fifo_size = 0x8 <<
                        ((omap_i2c_read_reg(dev, OMAP_I2C_BUFSTAT_REG) >> 14) & 0x3);