コード例 #1
0
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); 
    }	
	
}
コード例 #2
0
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);
}