Lines Matching refs:data

56 static int mvsd_setup_data(struct mvsd_host *host, struct mmc_data *data)
65 * "unusual" data block sizes are used (such as with the SWITCH
67 * was raised. And if another data transfer starts before
88 tmout = DIV_ROUND_UP(data->timeout_ns, host->ns_per_clk);
89 tmout += data->timeout_clks;
96 dev_dbg(host->dev, "data %s at 0x%08x: blocks=%d blksz=%d tmout=%u (%d)\n",
97 (data->flags & MMC_DATA_READ) ? "read" : "write",
98 (u32)sg_virt(data->sg), data->blocks, data->blksz,
104 mvsd_write(MVSD_BLK_COUNT, data->blocks);
105 mvsd_write(MVSD_BLK_SIZE, data->blksz);
107 if (nodma || (data->blksz | data->sg->offset) & 3 ||
108 ((!(data->flags & MMC_DATA_READ) && data->sg->offset & 0x3f))) {
114 * data when the buffer is not aligned on a 64 byte
117 host->pio_size = data->blocks * data->blksz;
118 host->pio_ptr = sg_virt(data->sg);
120 dev_dbg(host->dev, "fallback to PIO for data at 0x%p size %d\n",
127 data->sg, data->sg_len,
128 mmc_get_dma_dir(data));
129 phys_addr = sg_dma_address(data->sg);
173 if (mrq->data) {
174 struct mmc_data *data = mrq->data;
179 if (data->flags & MMC_DATA_READ)
182 pio = mvsd_setup_data(host, data);
186 if (data->flags & MMC_DATA_WRITE)
194 if (data->stop) {
195 struct mmc_command *stop = data->stop;
286 static u32 mvsd_finish_data(struct mvsd_host *host, struct mmc_data *data,
295 dma_unmap_sg(mmc_dev(host->mmc), data->sg, host->sg_frags,
296 mmc_get_dma_dir(data));
300 data->error = -ETIMEDOUT;
302 data->error = -EILSEQ;
304 data->error = -EBADE;
308 dev_dbg(host->dev, "data done: blocks_left=%d, bytes_left=%d\n",
310 data->bytes_xfered =
311 (data->blocks - mvsd_read(MVSD_CURR_BLK_LEFT)) * data->blksz;
313 if (data->bytes_xfered && data->error)
314 data->bytes_xfered -= data->blksz;
317 if (data->stop) {
321 data->stop->resp[0] = ((response[2] & 0x003f) << (8 - 8)) |
324 data->stop->resp[1] = ((response[0] & 0xfc00) >> 10);
325 data->stop->resp[2] = 0;
326 data->stop->resp[3] = 0;
332 data->stop->error = -ENOEXEC;
334 data->stop->error = -ETIMEDOUT;
336 data->stop->error = -EILSEQ;
426 * 16 halfwords all at once in the FIFO drops data. Actually
484 if (mrq->data)
485 err_status = mvsd_finish_data(host, mrq->data, err_status);
540 if (mrq->data) {
541 mrq->data->error = -ETIMEDOUT;
542 mvsd_finish_data(host, mrq->data, 0);