Hi..

I didn't understand this point..
Plz let me explain this code..
why need this function (dw_mci_queue_request(host, slot, mrq)?


static void dw_mci_queue_request(struct dw_mci *host, struct dw_mci_slot *slot,
                                 struct mmc_request *mrq)
{
        dev_vdbg(&slot->mmc->class_dev, "queue request: state=%d\n",
                 host->state);

        spin_lock_bh(&host->lock);
        slot->mrq = mrq;

        if (host->state == STATE_IDLE) {
                host->state = STATE_SENDING_CMD;
                dw_mci_start_request(host, slot);
        } else {
                list_add_tail(&slot->queue_node, &host->queue);
        }

        spin_unlock_bh(&host->lock);
}

static void dw_mci_request(struct mmc_host *mmc, struct mmc_request *mrq)
{
        struct dw_mci_slot *slot = mmc_priv(mmc);
        struct dw_mci *host = slot->host;

        WARN_ON(slot->mrq);

        if (!test_bit(DW_MMC_CARD_PRESENT, &slot->flags)) {
                mrq->cmd->error = -ENOMEDIUM;
                mmc_request_done(mmc, mrq);
                return;
        }

        /* We don't support multiple blocks of weird lengths. */
        dw_mci_queue_request(host, slot, mrq);
}
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to