- 论坛徽章:
- 0
|
回复 18# BENNYSNAKE
static irqreturn_t mxcmci_gpio_irq(int irq, void *devid)
{
struct mxcmci_host *host = devid;
int card_gpio_status = host->plat_data->status(host->mmc->parent);
pr_debug("%s: MMC%d status=%d %s\n", DRIVER_NAME, host->id,
card_gpio_status, card_gpio_status ? "removed" : "inserted");
if (card_gpio_status == host->plat_data->card_inserted_state) {
mmc_detect_change(host->mmc, msecs_to_jiffies(100));
} else {
mxcmci_cmd_done(host, STATUS_TIME_OUT_RESP);
mmc_detect_change(host->mmc, msecs_to_jiffies(50));
}
do {
card_gpio_status = host->plat_data->status(host->mmc->parent);
if (card_gpio_status) {
set_irq_type(host->detect_irq, IRQT_FALLING);
} else {
set_irq_type(host->detect_irq, IRQT_RISING);
}
} while (card_gpio_status !=
host->plat_data->status(host->mmc->parent));
return IRQ_HANDLED;
}
我源代码没有改过,写进去内容之后,一段时间会打错一些信息,然后就可以正常插拔了. |
|