From ff59b4ed4f5022ca2a4ec2ccdf0d2f33d432c60b Mon Sep 17 00:00:00 2001 From: luowei Date: Sat, 9 Apr 2011 10:50:46 +0800 Subject: [PATCH] modify some files according to A22 hardware --- arch/arm/mach-rk29/board-rk29-a22.c | 4 ++-- arch/arm/mach-rk29/ddr.c | 6 ++++-- drivers/i2c/busses/i2c-rk29.c | 6 ++++++ drivers/mmc/host/rk29_sdmmc.c | 4 ++++ 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-rk29/board-rk29-a22.c b/arch/arm/mach-rk29/board-rk29-a22.c index 4c5b9e215a5d..99af0b2991a2 100755 --- a/arch/arm/mach-rk29/board-rk29-a22.c +++ b/arch/arm/mach-rk29/board-rk29-a22.c @@ -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(); } diff --git a/arch/arm/mach-rk29/ddr.c b/arch/arm/mach-rk29/ddr.c index 0e96f042e7ed..41cbb8a50cf5 100755 --- a/arch/arm/mach-rk29/ddr.c +++ b/arch/arm/mach-rk29/ddr.c @@ -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; } diff --git a/drivers/i2c/busses/i2c-rk29.c b/drivers/i2c/busses/i2c-rk29.c index efc129f0e0fa..b0733cecbcce 100755 --- a/drivers/i2c/busses/i2c-rk29.c +++ b/drivers/i2c/busses/i2c-rk29.c @@ -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; } diff --git a/drivers/mmc/host/rk29_sdmmc.c b/drivers/mmc/host/rk29_sdmmc.c index 7947a60cc34f..80b070c11c15 100755 --- a/drivers/mmc/host/rk29_sdmmc.c +++ b/drivers/mmc/host/rk29_sdmmc.c @@ -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) -- 2.34.1