modify some files according to A22 hardware
authorluowei <lw@rock-chips.com>
Sat, 9 Apr 2011 02:50:46 +0000 (10:50 +0800)
committerluowei <lw@rock-chips.com>
Sat, 9 Apr 2011 02:50:46 +0000 (10:50 +0800)
arch/arm/mach-rk29/board-rk29-a22.c
arch/arm/mach-rk29/ddr.c
drivers/i2c/busses/i2c-rk29.c
drivers/mmc/host/rk29_sdmmc.c

index 4c5b9e215a5df5a7b13b52d4dedf0838d99b794c..99af0b2991a2d914fb6fa4a6796d72ccd1cee6d1 100755 (executable)
@@ -3009,10 +3009,10 @@ static void __init machine_rk29_fixup(struct machine_desc *desc, struct tag *tag
 
 static void __init machine_rk29_mapio(void)
 {
-       rk29_map_common_io(periph_pll_288mhz);
+       rk29_map_common_io();
        rk29_setup_early_printk();
        rk29_sram_init();
-       rk29_clock_init();
+       rk29_clock_init(periph_pll_288mhz);
        rk29_iomux_init();
 }
 
index 0e96f042e7eda31c18b4802293eade51bf98c6af..41cbb8a50cf5b2c1c63ba640b6359346631547f2 100755 (executable)
@@ -1226,8 +1226,10 @@ static int __init ddr_probe(void)
 
     Hz = clk_get_rate(clk_get(NULL,"ddr"));
     MHz = Hz/1000000;
-    
-    value = ddr_change_freq(MHz);
+#if defined(CONFIG_MACH_RK29_A22)      //a22 should not change freq
+#else
+   value = ddr_change_freq(MHz);
+#endif
     ddr_print("init success!!! freq=%dMHz\n", value);
     return 0;
 }
index efc129f0e0fa1102167bd5b4dd0f90cb07408e85..b0733cecbcce2bfe182ce389c727b1c2afa8d41f 100755 (executable)
@@ -427,6 +427,9 @@ static int rk29_i2c_send_msg(struct rk29_i2c_data *i2c, struct i2c_msg *msg)
                lsr = readl(i2c->regs + I2C_LSR);
                if((lsr & I2C_LSR_RCV_NAK) && (i != msg->len -1) && !(msg->flags & I2C_M_IGNORE_NAK))
                        return -EINVAL;
+               
+               if(msg->addr == 0x41)   //delay for tp
+               udelay(50);
 
        }
        return ret;
@@ -455,6 +458,9 @@ static int rk29_i2c_recv_msg(struct rk29_i2c_data *i2c, struct i2c_msg *msg)
                else
                        rk29_set_ack(i2c);
                i2c_dbg(i2c->dev, "i2c recv >>>>>>>>>>>> buf[%d]: %x\n", i, msg->buf[i]);
+               
+               if(msg->addr == 0x41)   //delay for tp
+               udelay(50);
        }
        return ret;
 }
index 7947a60cc34fbb157bd1db7b18e20683efe79071..80b070c11c15989f390f6b4e6307ca5debfb3640 100755 (executable)
@@ -706,9 +706,13 @@ static int rk29_sdmmc_get_ro(struct mmc_host *mmc)
 
 static int rk29_sdmmc_get_cd(struct mmc_host *mmc)
 {
+#if defined(CONFIG_MACH_RK29_A22)      //A22's sdcard do not support detect pin
+return 1;
+#else
        struct rk29_sdmmc *host = mmc_priv(mmc);
        u32 cdetect = rk29_sdmmc_read(host->regs, SDMMC_CDETECT);
        return (cdetect & SDMMC_CARD_DETECT_N)?0:1;
+#endif
 }
 
 static void rk29_sdmmc_enable_sdio_irq(struct mmc_host *mmc, int enable)