update i2c-dev driver and sdmmc driver
authorkfx <kfx@rock-chips.com>
Mon, 18 Apr 2011 08:18:10 +0000 (16:18 +0800)
committerkfx <kfx@rock-chips.com>
Mon, 18 Apr 2011 08:18:10 +0000 (16:18 +0800)
drivers/i2c/busses/i2c-dev-rk29.c
drivers/mmc/core/bus.c
drivers/mmc/host/rk29_sdmmc.c

index d5b29612e2cc632859ec8fc9ab08979e03387782..c56114bea5edbaa0fb585369f10309cd91e64469 100755 (executable)
@@ -19,7 +19,9 @@
 
 #define I2C_DEV_SCL_RATE       100 * 1000
 
-struct completion              i2c_dev_complete;
+struct completion              i2c_dev_complete = {
+       .done = -1;
+};
 struct i2c_dump_info   g_dump;
 
 static void i2c_dev_get_list(struct i2c_list_info *list)
@@ -99,7 +101,8 @@ void i2c_dev_dump_stop(struct i2c_adapter *adap, struct i2c_msg *msgs, int num,
                                g_dump.get_value[j] = msgs[i].buf[j];
                }
        }
-       complete(&i2c_dev_complete);
+       if(i2c_dev_complete.done == 0)
+               complete(&i2c_dev_complete);
        return;
 }
 EXPORT_SYMBOL(i2c_dev_dump_stop);
index bdb165f93046f9cdce780a614ddafcc41f3cab91..812b22035626e27ada163564a701d029f09c70a6 100755 (executable)
@@ -279,6 +279,7 @@ void mmc_remove_card(struct mmc_card *card)
 #endif
 
        if (mmc_card_present(card)) {
+               mmc_card_clr_present(card);
                if (mmc_host_is_spi(card->host)) {
                        printk(KERN_INFO "%s: SPI card removed\n",
                                mmc_hostname(card->host));
index 620a2323e22f25c31f0c7ad2ef660bbab4ab7032..bdb8c98825f8d151f1ca45c9d456ba4a0d5f599d 100755 (executable)
@@ -1392,6 +1392,7 @@ static int rk29_sdmmc_resume(struct platform_device *pdev)
                                  host);
                if(ret < 0)
                dev_err(host->dev, "gpio request_irq error\n");
+               mmc_detect_change(host->mmc, 0);
                ret = mmc_resume_host(host->mmc);
        }
 #endif