static void ak98_mci_request(struct mmc_host *mmc, struct mmc_request *mrq) { struct ak98_mci_host *host = mmc_priv(mmc); PK1("%s: CMD%i\n", __func__, mrq->cmd->opcode); host->mrq = mrq; if (mrq->data && !is_power_of_2(mrq->data->blksz)) { printk(KERN_ERR "%s: Unsupported block size (%d bytes)\n", mmc_hostname(mmc), mrq->data->blksz); mrq->cmd->error = -EINVAL; mmc_request_done(mmc, mrq); return; } if (ak98_mci_get_cd(mmc) == 0) { printk("%s: no medium present\n", __func__); host->mrq->cmd->error = -ENOMEDIUM; mmc_request_done(mmc, mrq); } else { ak98_mci_send_request(mmc); } }
static void ak98_mci_check_status(unsigned long data) { struct ak98_mci_host *host = (struct ak98_mci_host *)data; unsigned int status = ak98_mci_get_cd(host->mmc); if (status ^ host->oldstat) mmc_detect_change(host->mmc, 0); host->oldstat = status; mod_timer(&host->timer, jiffies + HZ); }