Commit e77c6276 authored by Russell King's avatar Russell King

[MMC] Use a consistent naming to refer to mmc_request,

      mmc_blk_request and request structures to avoid confusion.
parent fa4f257c
...@@ -62,26 +62,25 @@ static const unsigned int tacc_mant[] = { ...@@ -62,26 +62,25 @@ static const unsigned int tacc_mant[] = {
/** /**
* mmc_request_done - finish processing an MMC command * mmc_request_done - finish processing an MMC command
* @host: MMC host which completed command * @host: MMC host which completed command
* @cmd: MMC command which completed * @mrq: MMC request which completed
* @err: MMC error code
* *
* MMC drivers should call this function when they have completed * MMC drivers should call this function when they have completed
* their processing of a command. This should be called before the * their processing of a command. This should be called before the
* data part of the command has completed. * data part of the command has completed.
*/ */
void mmc_request_done(struct mmc_host *host, struct mmc_request *req) void mmc_request_done(struct mmc_host *host, struct mmc_request *mrq)
{ {
struct mmc_command *cmd = req->cmd; struct mmc_command *cmd = mrq->cmd;
int err = req->cmd->error; int err = mrq->cmd->error;
DBG("MMC: req done (%02x): %d: %08x %08x %08x %08x\n", cmd->opcode, DBG("MMC: req done (%02x): %d: %08x %08x %08x %08x\n", cmd->opcode,
err, cmd->resp[0], cmd->resp[1], cmd->resp[2], cmd->resp[3]); err, cmd->resp[0], cmd->resp[1], cmd->resp[2], cmd->resp[3]);
if (err && cmd->retries) { if (err && cmd->retries) {
cmd->retries--; cmd->retries--;
cmd->error = 0; cmd->error = 0;
host->ops->request(host, req); host->ops->request(host, mrq);
} else if (req->done) { } else if (mrq->done) {
req->done(req); mrq->done(mrq);
} }
} }
...@@ -90,49 +89,49 @@ EXPORT_SYMBOL(mmc_request_done); ...@@ -90,49 +89,49 @@ EXPORT_SYMBOL(mmc_request_done);
/** /**
* mmc_start_request - start a command on a host * mmc_start_request - start a command on a host
* @host: MMC host to start command on * @host: MMC host to start command on
* @cmd: MMC command to start * @mrq: MMC request to start
* *
* Queue a command on the specified host. We expect the * Queue a command on the specified host. We expect the
* caller to be holding the host lock with interrupts disabled. * caller to be holding the host lock with interrupts disabled.
*/ */
void void
mmc_start_request(struct mmc_host *host, struct mmc_request *req) mmc_start_request(struct mmc_host *host, struct mmc_request *mrq)
{ {
DBG("MMC: starting cmd %02x arg %08x flags %08x\n", DBG("MMC: starting cmd %02x arg %08x flags %08x\n",
req->cmd->opcode, req->cmd->arg, req->cmd->flags); mrq->cmd->opcode, mrq->cmd->arg, mrq->cmd->flags);
WARN_ON(host->card_busy == NULL); WARN_ON(host->card_busy == NULL);
req->cmd->error = 0; mrq->cmd->error = 0;
req->cmd->req = req; mrq->cmd->mrq = mrq;
if (req->data) { if (mrq->data) {
req->cmd->data = req->data; mrq->cmd->data = mrq->data;
req->data->error = 0; mrq->data->error = 0;
req->data->req = req; mrq->data->mrq = mrq;
if (req->stop) { if (mrq->stop) {
req->data->stop = req->stop; mrq->data->stop = mrq->stop;
req->stop->error = 0; mrq->stop->error = 0;
req->stop->req = req; mrq->stop->mrq = mrq;
} }
} }
host->ops->request(host, req); host->ops->request(host, mrq);
} }
EXPORT_SYMBOL(mmc_start_request); EXPORT_SYMBOL(mmc_start_request);
static void mmc_wait_done(struct mmc_request *req) static void mmc_wait_done(struct mmc_request *mrq)
{ {
complete(req->done_data); complete(mrq->done_data);
} }
int mmc_wait_for_req(struct mmc_host *host, struct mmc_request *req) int mmc_wait_for_req(struct mmc_host *host, struct mmc_request *mrq)
{ {
DECLARE_COMPLETION(complete); DECLARE_COMPLETION(complete);
req->done_data = &complete; mrq->done_data = &complete;
req->done = mmc_wait_done; mrq->done = mmc_wait_done;
mmc_start_request(host, req); mmc_start_request(host, mrq);
wait_for_completion(&complete); wait_for_completion(&complete);
...@@ -153,19 +152,19 @@ EXPORT_SYMBOL(mmc_wait_for_req); ...@@ -153,19 +152,19 @@ EXPORT_SYMBOL(mmc_wait_for_req);
*/ */
int mmc_wait_for_cmd(struct mmc_host *host, struct mmc_command *cmd, int retries) int mmc_wait_for_cmd(struct mmc_host *host, struct mmc_command *cmd, int retries)
{ {
struct mmc_request req; struct mmc_request mrq;
BUG_ON(host->card_busy == NULL); BUG_ON(host->card_busy == NULL);
memset(&req, 0, sizeof(struct mmc_request)); memset(&mrq, 0, sizeof(struct mmc_request));
memset(cmd->resp, 0, sizeof(cmd->resp)); memset(cmd->resp, 0, sizeof(cmd->resp));
cmd->retries = retries; cmd->retries = retries;
req.cmd = cmd; mrq.cmd = cmd;
cmd->data = NULL; cmd->data = NULL;
mmc_wait_for_req(host, &req); mmc_wait_for_req(host, &mrq);
return cmd->error; return cmd->error;
} }
......
...@@ -139,7 +139,7 @@ static struct block_device_operations mmc_bdops = { ...@@ -139,7 +139,7 @@ static struct block_device_operations mmc_bdops = {
}; };
struct mmc_blk_request { struct mmc_blk_request {
struct mmc_request req; struct mmc_request mrq;
struct mmc_command cmd; struct mmc_command cmd;
struct mmc_command stop; struct mmc_command stop;
struct mmc_data data; struct mmc_data data;
...@@ -173,58 +173,58 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req) ...@@ -173,58 +173,58 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
goto cmd_err; goto cmd_err;
do { do {
struct mmc_blk_request rq; struct mmc_blk_request brq;
struct mmc_command cmd; struct mmc_command cmd;
memset(&rq, 0, sizeof(struct mmc_blk_request)); memset(&brq, 0, sizeof(struct mmc_blk_request));
rq.req.cmd = &rq.cmd; brq.mrq.cmd = &brq.cmd;
rq.req.data = &rq.data; brq.mrq.data = &brq.data;
rq.cmd.arg = req->sector << 9; brq.cmd.arg = req->sector << 9;
rq.cmd.flags = MMC_RSP_SHORT | MMC_RSP_CRC; brq.cmd.flags = MMC_RSP_SHORT | MMC_RSP_CRC;
rq.data.rq = req; brq.data.req = req;
rq.data.timeout_ns = card->csd.tacc_ns * 10; brq.data.timeout_ns = card->csd.tacc_ns * 10;
rq.data.timeout_clks = card->csd.tacc_clks * 10; brq.data.timeout_clks = card->csd.tacc_clks * 10;
rq.data.blksz_bits = md->block_bits; brq.data.blksz_bits = md->block_bits;
rq.data.blocks = req->current_nr_sectors >> (md->block_bits - 9); brq.data.blocks = req->current_nr_sectors >> (md->block_bits - 9);
rq.stop.opcode = MMC_STOP_TRANSMISSION; brq.stop.opcode = MMC_STOP_TRANSMISSION;
rq.stop.arg = 0; brq.stop.arg = 0;
rq.stop.flags = MMC_RSP_SHORT | MMC_RSP_CRC | MMC_RSP_BUSY; brq.stop.flags = MMC_RSP_SHORT | MMC_RSP_CRC | MMC_RSP_BUSY;
if (rq_data_dir(req) == READ) { if (rq_data_dir(req) == READ) {
rq.cmd.opcode = rq.data.blocks > 1 ? MMC_READ_MULTIPLE_BLOCK : MMC_READ_SINGLE_BLOCK; brq.cmd.opcode = brq.data.blocks > 1 ? MMC_READ_MULTIPLE_BLOCK : MMC_READ_SINGLE_BLOCK;
rq.data.flags |= MMC_DATA_READ; brq.data.flags |= MMC_DATA_READ;
} else { } else {
rq.cmd.opcode = MMC_WRITE_BLOCK; brq.cmd.opcode = MMC_WRITE_BLOCK;
rq.cmd.flags |= MMC_RSP_BUSY; brq.cmd.flags |= MMC_RSP_BUSY;
rq.data.flags |= MMC_DATA_WRITE; brq.data.flags |= MMC_DATA_WRITE;
rq.data.blocks = 1; brq.data.blocks = 1;
} }
rq.req.stop = rq.data.blocks > 1 ? &rq.stop : NULL; brq.mrq.stop = brq.data.blocks > 1 ? &brq.stop : NULL;
mmc_wait_for_req(card->host, &rq.req); mmc_wait_for_req(card->host, &brq.mrq);
if (rq.cmd.error) { if (brq.cmd.error) {
err = rq.cmd.error; err = brq.cmd.error;
printk(KERN_ERR "%s: error %d sending read/write command\n", printk(KERN_ERR "%s: error %d sending read/write command\n",
req->rq_disk->disk_name, err); req->rq_disk->disk_name, err);
goto cmd_err; goto cmd_err;
} }
if (rq_data_dir(req) == READ) { if (rq_data_dir(req) == READ) {
sz = rq.data.bytes_xfered; sz = brq.data.bytes_xfered;
} else { } else {
sz = 0; sz = 0;
} }
if (rq.data.error) { if (brq.data.error) {
err = rq.data.error; err = brq.data.error;
printk(KERN_ERR "%s: error %d transferring data\n", printk(KERN_ERR "%s: error %d transferring data\n",
req->rq_disk->disk_name, err); req->rq_disk->disk_name, err);
goto cmd_err; goto cmd_err;
} }
if (rq.stop.error) { if (brq.stop.error) {
err = rq.stop.error; err = brq.stop.error;
printk(KERN_ERR "%s: error %d sending stop command\n", printk(KERN_ERR "%s: error %d sending stop command\n",
req->rq_disk->disk_name, err); req->rq_disk->disk_name, err);
goto cmd_err; goto cmd_err;
...@@ -251,7 +251,7 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req) ...@@ -251,7 +251,7 @@ static int mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)
goto cmd_err; goto cmd_err;
#endif #endif
sz = rq.data.bytes_xfered; sz = brq.data.bytes_xfered;
} while (end_that_request_chunk(req, 1, sz)); } while (end_that_request_chunk(req, 1, sz));
mmc_card_release_host(card); mmc_card_release_host(card);
......
...@@ -39,23 +39,23 @@ ...@@ -39,23 +39,23 @@
static unsigned int fmax = 515633; static unsigned int fmax = 515633;
static void static void
mmci_request_end(struct mmci_host *host, struct mmc_request *req) mmci_request_end(struct mmci_host *host, struct mmc_request *mrq)
{ {
writel(0, host->base + MMCICOMMAND); writel(0, host->base + MMCICOMMAND);
host->req = NULL; host->mrq = NULL;
host->cmd = NULL; host->cmd = NULL;
host->data = NULL; host->data = NULL;
host->buffer = NULL; host->buffer = NULL;
if (req->data) if (mrq->data)
req->data->bytes_xfered = host->data_xfered; mrq->data->bytes_xfered = host->data_xfered;
/* /*
* Need to drop the host lock here; mmc_request_done may call * Need to drop the host lock here; mmc_request_done may call
* back into the driver... * back into the driver...
*/ */
spin_unlock(&host->lock); spin_unlock(&host->lock);
mmc_request_done(host->mmc, req); mmc_request_done(host->mmc, mrq);
spin_lock(&host->lock); spin_lock(&host->lock);
} }
...@@ -73,7 +73,7 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data) ...@@ -73,7 +73,7 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
datactrl |= MCI_DPSM_DIRECTION; datactrl |= MCI_DPSM_DIRECTION;
host->data = data; host->data = data;
host->buffer = data->rq->buffer; host->buffer = data->req->buffer;
host->size = data->blocks << data->blksz_bits; host->size = data->blocks << data->blksz_bits;
host->data_xfered = 0; host->data_xfered = 0;
...@@ -136,7 +136,7 @@ mmci_data_irq(struct mmci_host *host, struct mmc_data *data, ...@@ -136,7 +136,7 @@ mmci_data_irq(struct mmci_host *host, struct mmc_data *data,
if (status & MCI_DATAEND) { if (status & MCI_DATAEND) {
host->data = NULL; host->data = NULL;
if (!data->stop) { if (!data->stop) {
mmci_request_end(host, data->req); mmci_request_end(host, data->mrq);
} else /*if (readl(host->base + MMCIDATACNT) > 6)*/ { } else /*if (readl(host->base + MMCIDATACNT) > 6)*/ {
mmci_start_command(host, data->stop, 0); mmci_start_command(host, data->stop, 0);
} }
...@@ -161,7 +161,7 @@ mmci_cmd_irq(struct mmci_host *host, struct mmc_command *cmd, ...@@ -161,7 +161,7 @@ mmci_cmd_irq(struct mmci_host *host, struct mmc_command *cmd,
} }
if (!cmd->data || cmd->error != MMC_ERR_NONE) { if (!cmd->data || cmd->error != MMC_ERR_NONE) {
mmci_request_end(host, cmd->req); mmci_request_end(host, cmd->mrq);
} else if (!(cmd->data->flags & MMC_DATA_READ)) { } else if (!(cmd->data->flags & MMC_DATA_READ)) {
mmci_start_data(host, cmd->data); mmci_start_data(host, cmd->data);
} }
...@@ -262,20 +262,20 @@ static irqreturn_t mmci_irq(int irq, void *dev_id, struct pt_regs *regs) ...@@ -262,20 +262,20 @@ static irqreturn_t mmci_irq(int irq, void *dev_id, struct pt_regs *regs)
return IRQ_RETVAL(ret); return IRQ_RETVAL(ret);
} }
static void mmci_request(struct mmc_host *mmc, struct mmc_request *req) static void mmci_request(struct mmc_host *mmc, struct mmc_request *mrq)
{ {
struct mmci_host *host = mmc_priv(mmc); struct mmci_host *host = mmc_priv(mmc);
WARN_ON(host->req != NULL); WARN_ON(host->mrq != NULL);
spin_lock_irq(&host->lock); spin_lock_irq(&host->lock);
host->req = req; host->mrq = mrq;
if (req->data && req->data->flags & MMC_DATA_READ) if (mrq->data && mrq->data->flags & MMC_DATA_READ)
mmci_start_data(host, req->data); mmci_start_data(host, mrq->data);
mmci_start_command(host, req->cmd, 0); mmci_start_command(host, mrq->cmd, 0);
spin_unlock_irq(&host->lock); spin_unlock_irq(&host->lock);
} }
......
...@@ -122,7 +122,7 @@ struct clk; ...@@ -122,7 +122,7 @@ struct clk;
struct mmci_host { struct mmci_host {
void *base; void *base;
struct mmc_request *req; struct mmc_request *mrq;
struct mmc_command *cmd; struct mmc_command *cmd;
struct mmc_data *data; struct mmc_data *data;
struct mmc_host *mmc; struct mmc_host *mmc;
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/delay.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/blkdev.h> #include <linux/blkdev.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
...@@ -52,7 +53,7 @@ struct pxamci_host { ...@@ -52,7 +53,7 @@ struct pxamci_host {
unsigned int imask; unsigned int imask;
unsigned int power_mode; unsigned int power_mode;
struct mmc_request *req; struct mmc_request *mrq;
struct mmc_command *cmd; struct mmc_command *cmd;
struct mmc_data *data; struct mmc_data *data;
...@@ -148,7 +149,7 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data) ...@@ -148,7 +149,7 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
dcmd |= DCMD_BURST32 | DCMD_WIDTH1; dcmd |= DCMD_BURST32 | DCMD_WIDTH1;
host->dma_size = data->blocks << data->blksz_bits; host->dma_size = data->blocks << data->blksz_bits;
host->dma_buf = dma_map_single(mmc_dev(host->mmc), data->rq->buffer, host->dma_buf = dma_map_single(mmc_dev(host->mmc), data->req->buffer,
host->dma_size, host->dma_dir); host->dma_size, host->dma_dir);
for (i = 0, size = host->dma_size, dma = host->dma_buf; size; i++) { for (i = 0, size = host->dma_size, dma = host->dma_buf; size; i++) {
...@@ -215,13 +216,13 @@ static void pxamci_start_cmd(struct pxamci_host *host, struct mmc_command *cmd, ...@@ -215,13 +216,13 @@ static void pxamci_start_cmd(struct pxamci_host *host, struct mmc_command *cmd,
pxamci_enable_irq(host, END_CMD_RES); pxamci_enable_irq(host, END_CMD_RES);
} }
static void pxamci_finish_request(struct pxamci_host *host, struct mmc_request *req) static void pxamci_finish_request(struct pxamci_host *host, struct mmc_request *mrq)
{ {
DBG("PXAMCI: request done\n"); DBG("PXAMCI: request done\n");
host->req = NULL; host->mrq = NULL;
host->cmd = NULL; host->cmd = NULL;
host->data = NULL; host->data = NULL;
mmc_request_done(host->mmc, req); mmc_request_done(host->mmc, mrq);
} }
static int pxamci_cmd_done(struct pxamci_host *host, unsigned int stat) static int pxamci_cmd_done(struct pxamci_host *host, unsigned int stat)
...@@ -257,7 +258,7 @@ static int pxamci_cmd_done(struct pxamci_host *host, unsigned int stat) ...@@ -257,7 +258,7 @@ static int pxamci_cmd_done(struct pxamci_host *host, unsigned int stat)
if (host->data && cmd->error == MMC_ERR_NONE) { if (host->data && cmd->error == MMC_ERR_NONE) {
pxamci_enable_irq(host, DATA_TRAN_DONE); pxamci_enable_irq(host, DATA_TRAN_DONE);
} else { } else {
pxamci_finish_request(host, host->req); pxamci_finish_request(host, host->mrq);
} }
return 1; return 1;
...@@ -290,11 +291,11 @@ static int pxamci_data_done(struct pxamci_host *host, unsigned int stat) ...@@ -290,11 +291,11 @@ static int pxamci_data_done(struct pxamci_host *host, unsigned int stat)
pxamci_disable_irq(host, DATA_TRAN_DONE); pxamci_disable_irq(host, DATA_TRAN_DONE);
host->data = NULL; host->data = NULL;
if (host->req->stop && data->error == MMC_ERR_NONE) { if (host->mrq->stop && data->error == MMC_ERR_NONE) {
pxamci_stop_clock(host); pxamci_stop_clock(host);
pxamci_start_cmd(host, host->req->stop, 0); pxamci_start_cmd(host, host->mrq->stop, 0);
} else { } else {
pxamci_finish_request(host, host->req); pxamci_finish_request(host, host->mrq);
} }
return 1; return 1;
...@@ -324,33 +325,33 @@ static irqreturn_t pxamci_irq(int irq, void *devid, struct pt_regs *regs) ...@@ -324,33 +325,33 @@ static irqreturn_t pxamci_irq(int irq, void *devid, struct pt_regs *regs)
return IRQ_RETVAL(handled); return IRQ_RETVAL(handled);
} }
static void pxamci_request(struct mmc_host *mmc, struct mmc_request *req) static void pxamci_request(struct mmc_host *mmc, struct mmc_request *mrq)
{ {
struct pxamci_host *host = mmc_priv(mmc); struct pxamci_host *host = mmc_priv(mmc);
unsigned int cmdat; unsigned int cmdat;
WARN_ON(host->req != NULL); WARN_ON(host->mrq != NULL);
host->req = req; host->mrq = mrq;
pxamci_stop_clock(host); pxamci_stop_clock(host);
cmdat = host->cmdat; cmdat = host->cmdat;
host->cmdat &= ~CMDAT_INIT; host->cmdat &= ~CMDAT_INIT;
if (req->data) { if (mrq->data) {
pxamci_setup_data(host, req->data); pxamci_setup_data(host, mrq->data);
cmdat &= ~CMDAT_BUSY; cmdat &= ~CMDAT_BUSY;
cmdat |= CMDAT_DATAEN | CMDAT_DMAEN; cmdat |= CMDAT_DATAEN | CMDAT_DMAEN;
if (req->data->flags & MMC_DATA_WRITE) if (mrq->data->flags & MMC_DATA_WRITE)
cmdat |= CMDAT_WRITE; cmdat |= CMDAT_WRITE;
if (req->data->flags & MMC_DATA_STREAM) if (mrq->data->flags & MMC_DATA_STREAM)
cmdat |= CMDAT_STREAM; cmdat |= CMDAT_STREAM;
} }
pxamci_start_cmd(host, req->cmd, cmdat); pxamci_start_cmd(host, mrq->cmd, cmdat);
} }
static void pxamci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) static void pxamci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
......
...@@ -39,7 +39,7 @@ struct mmc_command { ...@@ -39,7 +39,7 @@ struct mmc_command {
#define MMC_ERR_INVALID 5 #define MMC_ERR_INVALID 5
struct mmc_data *data; /* data segment associated with cmd */ struct mmc_data *data; /* data segment associated with cmd */
struct mmc_request *req; /* assoicated request */ struct mmc_request *mrq; /* assoicated request */
}; };
struct mmc_data { struct mmc_data {
...@@ -47,7 +47,7 @@ struct mmc_data { ...@@ -47,7 +47,7 @@ struct mmc_data {
unsigned int timeout_clks; /* data timeout (in clocks) */ unsigned int timeout_clks; /* data timeout (in clocks) */
unsigned int blksz_bits; /* data block size */ unsigned int blksz_bits; /* data block size */
unsigned int blocks; /* number of blocks */ unsigned int blocks; /* number of blocks */
struct request *rq; /* request structure */ struct request *req; /* request structure */
unsigned int error; /* data error */ unsigned int error; /* data error */
unsigned int flags; unsigned int flags;
...@@ -58,7 +58,7 @@ struct mmc_data { ...@@ -58,7 +58,7 @@ struct mmc_data {
unsigned int bytes_xfered; unsigned int bytes_xfered;
struct mmc_command *stop; /* stop command */ struct mmc_command *stop; /* stop command */
struct mmc_request *req; /* assoicated request */ struct mmc_request *mrq; /* assoicated request */
}; };
struct mmc_request { struct mmc_request {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment