Lines Matching defs:data

488 			      struct mmc_data *data)
492 if (!data)
494 if (!is_power_of_2(data->blksz) && !variant->datactrl_any_blocksz) {
496 "unsupported block size (%d bytes)\n", data->blksz);
501 return host->ops->validate_data(host, data);
506 static int mmci_prep_data(struct mmci_host *host, struct mmc_data *data, bool next)
513 err = host->ops->prep_data(host, data, next);
516 data->host_cookie = ++host->next_cookie < 0 ?
522 static void mmci_unprep_data(struct mmci_host *host, struct mmc_data *data,
526 host->ops->unprep_data(host, data, err);
528 data->host_cookie = 0;
531 static void mmci_get_next_data(struct mmci_host *host, struct mmc_data *data)
533 WARN_ON(data->host_cookie && data->host_cookie != host->next_cookie);
536 host->ops->get_next_data(host, data);
541 struct mmc_data *data = host->data;
547 ret = mmci_prep_data(host, data, false);
557 data->sg_len, data->blksz, data->blocks, data->flags);
567 * Let the MMCI say when the data is ended and it's time
576 static void mmci_dma_finalize(struct mmci_host *host, struct mmc_data *data)
582 host->ops->dma_finalize(host, data);
599 BUG_ON(host->data);
631 host->data = NULL;
634 static void mmci_init_sg(struct mmci_host *host, struct mmc_data *data)
638 if (data->flags & MMC_DATA_READ)
643 sg_miter_start(&host->sg_miter, data->sg, data->sg_len, flags);
653 return MCI_DPSM_ENABLE | (host->data->blksz << 16);
825 static void mmci_dma_unmap(struct mmci_host *host, struct mmc_data *data)
830 if (data->flags & MMC_DATA_READ)
835 dma_unmap_sg(chan->device->dev, data->sg, data->sg_len,
836 mmc_get_dma_dir(data));
851 host->data->host_cookie = 0;
853 mmci_dma_unmap(host, host->data);
856 void mmci_dmae_finalize(struct mmci_host *host, struct mmc_data *data)
874 * Check to see whether we still have some data left in the FIFO -
881 if (!data->error)
882 data->error = -EIO;
883 } else if (!data->host_cookie) {
884 mmci_dma_unmap(host, data);
902 static int _mmci_dmae_prep_data(struct mmci_host *host, struct mmc_data *data,
923 if (data->flags & MMC_DATA_READ) {
936 if (data->blksz * data->blocks <= variant->fifosize)
948 if (host->variant->dma_power_of_2 && !is_power_of_2(data->blksz))
952 nr_sg = dma_map_sg(device->dev, data->sg, data->sg_len,
953 mmc_get_dma_dir(data));
961 desc = dmaengine_prep_slave_sg(chan, data->sg, nr_sg,
972 dma_unmap_sg(device->dev, data->sg, data->sg_len,
973 mmc_get_dma_dir(data));
978 struct mmc_data *data,
988 return _mmci_dmae_prep_data(host, data, &nd->chan, &nd->desc);
994 return _mmci_dmae_prep_data(host, data, &dmae->cur,
1016 void mmci_dmae_get_next_data(struct mmci_host *host, struct mmc_data *data)
1024 WARN_ON(!data->host_cookie && (next->desc || next->chan));
1033 struct mmc_data *data, int err)
1041 mmci_dma_unmap(host, data);
1046 if (data->flags & MMC_DATA_READ)
1103 struct mmc_data *data = mrq->data;
1105 if (!data)
1108 WARN_ON(data->host_cookie);
1110 if (mmci_validate_data(host, data))
1113 mmci_prep_data(host, data, true);
1120 struct mmc_data *data = mrq->data;
1122 if (!data || !data->host_cookie)
1125 mmci_unprep_data(host, data, err);
1128 static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
1136 data->blksz, data->blocks, data->flags);
1138 host->data = data;
1139 host->size = data->blksz * data->blocks;
1140 data->bytes_xfered = 0;
1142 clks = (unsigned long long)data->timeout_ns * host->cclk;
1145 timeout = data->timeout_clks + (unsigned int)clks;
1152 datactrl |= host->data->flags & MMC_DATA_READ ? MCI_DPSM_DIRECTION : 0;
1165 if (variant->st_sdio && data->flags & MMC_DATA_WRITE &&
1187 mmci_init_sg(host, data);
1189 if (data->flags & MMC_DATA_READ) {
1194 * transfer, trigger a PIO interrupt as soon as any data
1275 mmci_data_irq(struct mmci_host *host, struct mmc_data *data,
1280 /* Make sure we have data to handle */
1281 if (!data)
1297 * the data counter gives the number of bytes transferred
1299 * can be as much as a FIFO-worth of data ahead. This
1304 success = data->blksz * data->blocks - remain;
1314 data->error = -EILSEQ;
1316 data->error = -ETIMEDOUT;
1318 data->error = -ECOMM;
1320 data->error = -EIO;
1326 data->error = -EIO;
1328 data->bytes_xfered = round_down(success, data->blksz);
1334 if (status & MCI_DATAEND || data->error) {
1335 mmci_dma_finalize(host, data);
1339 if (!data->error)
1341 data->bytes_xfered = data->blksz * data->blocks;
1343 if (!data->stop) {
1344 if (host->variant->cmdreg_stop && data->error)
1347 mmci_request_end(host, data->mrq);
1348 } else if (host->mrq->sbc && !data->error) {
1349 mmci_request_end(host, data->mrq);
1351 mmci_start_command(host, data->stop, 0);
1404 if ((!sbc && !cmd->data) || cmd->error) {
1405 if (host->data) {
1422 !(cmd->data->flags & MMC_DATA_READ)) {
1423 mmci_start_data(host, cmd->data);
1530 * PIO data transfer IRQ handler.
1553 * For read, check for data available.
1585 * trigger a PIO interrupt as soon as any data is available.
1591 * If we run out of data, disable the data IRQs; this
1593 * the chip itself has disabled the data path, and
1594 * stops us racing with our data end IRQ.
1605 * Handle completion of command and data transfers.
1636 dev_dbg(mmc_dev(host->mmc), "irq0 (data+cmd) %08x\n", status);
1639 mmci_data_irq(host, host->data, status);
1643 mmci_data_irq(host, host->data, status);
1697 mrq->cmd->error = mmci_validate_data(host, mrq->data);
1707 if (mrq->data)
1708 mmci_get_next_data(host, mrq->data);
1710 if (mrq->data &&
1711 (host->variant->datactrl_first || mrq->data->flags & MMC_DATA_READ))
1712 mmci_start_data(host, mrq->data);
1767 * configured in the variant data.
1936 struct variant_data *variant = id->data;
1941 /* Must have platform data or Device Tree. */
1943 dev_err(&dev->dev, "No plat data or DT found\n");
2117 * Since only a certain number of bits are valid in the data length
2125 * (yet) we are only limited by the data length register.
2316 .data = &variant_arm,
2321 .data = &variant_arm_extended_fifo,
2326 .data = &variant_arm_extended_fifo_hwfc,
2331 .data = &variant_arm,
2337 .data = &variant_u300,
2342 .data = &variant_nomadik,
2347 .data = &variant_nomadik,
2352 .data = &variant_ux500,
2357 .data = &variant_ux500v2,
2362 .data = &variant_stm32,
2367 .data = &variant_stm32_sdmmc,
2372 .data = &variant_stm32_sdmmcv2,
2378 .data = &variant_qcom,