fsl_qdma          296 drivers/dma/fsl-qdma.c 	struct fsl_qdma_engine *fsl_qdma = fsl_chan->qdma;
fsl_qdma          337 drivers/dma/fsl-qdma.c 	fsl_qdma->desc_allocated--;
fsl_qdma          471 drivers/dma/fsl-qdma.c 				struct fsl_qdma_engine *fsl_qdma)
fsl_qdma          478 drivers/dma/fsl-qdma.c 	queue_num = fsl_qdma->n_queues;
fsl_qdma          479 drivers/dma/fsl-qdma.c 	block_number = fsl_qdma->block_number;
fsl_qdma          512 drivers/dma/fsl-qdma.c 			queue_temp->block_base = fsl_qdma->block_base +
fsl_qdma          513 drivers/dma/fsl-qdma.c 				FSL_QDMA_BLOCK_BASE_OFFSET(fsl_qdma, j);
fsl_qdma          571 drivers/dma/fsl-qdma.c static int fsl_qdma_halt(struct fsl_qdma_engine *fsl_qdma)
fsl_qdma          575 drivers/dma/fsl-qdma.c 	void __iomem *block, *ctrl = fsl_qdma->ctrl_base;
fsl_qdma          578 drivers/dma/fsl-qdma.c 	reg = qdma_readl(fsl_qdma, ctrl + FSL_QDMA_DMR);
fsl_qdma          580 drivers/dma/fsl-qdma.c 	qdma_writel(fsl_qdma, reg, ctrl + FSL_QDMA_DMR);
fsl_qdma          581 drivers/dma/fsl-qdma.c 	for (j = 0; j < fsl_qdma->block_number; j++) {
fsl_qdma          582 drivers/dma/fsl-qdma.c 		block = fsl_qdma->block_base +
fsl_qdma          583 drivers/dma/fsl-qdma.c 			FSL_QDMA_BLOCK_BASE_OFFSET(fsl_qdma, j);
fsl_qdma          585 drivers/dma/fsl-qdma.c 			qdma_writel(fsl_qdma, 0, block + FSL_QDMA_BCQMR(i));
fsl_qdma          588 drivers/dma/fsl-qdma.c 		reg = qdma_readl(fsl_qdma, ctrl + FSL_QDMA_DSR);
fsl_qdma          596 drivers/dma/fsl-qdma.c 	for (j = 0; j < fsl_qdma->block_number; j++) {
fsl_qdma          597 drivers/dma/fsl-qdma.c 		block = fsl_qdma->block_base +
fsl_qdma          598 drivers/dma/fsl-qdma.c 			FSL_QDMA_BLOCK_BASE_OFFSET(fsl_qdma, j);
fsl_qdma          601 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, 0, block + FSL_QDMA_BSQMR);
fsl_qdma          607 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, FSL_QDMA_BCQIDR_CLEAR,
fsl_qdma          615 drivers/dma/fsl-qdma.c fsl_qdma_queue_transfer_complete(struct fsl_qdma_engine *fsl_qdma,
fsl_qdma          624 drivers/dma/fsl-qdma.c 	struct fsl_qdma_queue *fsl_queue = fsl_qdma->queue;
fsl_qdma          625 drivers/dma/fsl-qdma.c 	struct fsl_qdma_queue *fsl_status = fsl_qdma->status[id];
fsl_qdma          631 drivers/dma/fsl-qdma.c 		reg = qdma_readl(fsl_qdma, block + FSL_QDMA_BSQSR);
fsl_qdma          643 drivers/dma/fsl-qdma.c 			id * fsl_qdma->n_queues;
fsl_qdma          667 drivers/dma/fsl-qdma.c 			reg = qdma_readl(fsl_qdma, block + FSL_QDMA_BSQMR);
fsl_qdma          674 drivers/dma/fsl-qdma.c 			qdma_writel(fsl_qdma, reg, block + FSL_QDMA_BSQMR);
fsl_qdma          680 drivers/dma/fsl-qdma.c 		reg = qdma_readl(fsl_qdma, block + FSL_QDMA_BSQMR);
fsl_qdma          686 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, reg, block + FSL_QDMA_BSQMR);
fsl_qdma          701 drivers/dma/fsl-qdma.c 	struct fsl_qdma_engine *fsl_qdma = dev_id;
fsl_qdma          702 drivers/dma/fsl-qdma.c 	void __iomem *status = fsl_qdma->status_base;
fsl_qdma          704 drivers/dma/fsl-qdma.c 	intr = qdma_readl(fsl_qdma, status + FSL_QDMA_DEDR);
fsl_qdma          707 drivers/dma/fsl-qdma.c 		dev_err(fsl_qdma->dma_dev.dev, "DMA transaction error!\n");
fsl_qdma          709 drivers/dma/fsl-qdma.c 	qdma_writel(fsl_qdma, FSL_QDMA_DEDR_CLEAR, status + FSL_QDMA_DEDR);
fsl_qdma          717 drivers/dma/fsl-qdma.c 	struct fsl_qdma_engine *fsl_qdma = dev_id;
fsl_qdma          718 drivers/dma/fsl-qdma.c 	void __iomem *block, *ctrl = fsl_qdma->ctrl_base;
fsl_qdma          720 drivers/dma/fsl-qdma.c 	id = irq - fsl_qdma->irq_base;
fsl_qdma          721 drivers/dma/fsl-qdma.c 	if (id < 0 && id > fsl_qdma->block_number) {
fsl_qdma          722 drivers/dma/fsl-qdma.c 		dev_err(fsl_qdma->dma_dev.dev,
fsl_qdma          724 drivers/dma/fsl-qdma.c 			irq, fsl_qdma->irq_base);
fsl_qdma          727 drivers/dma/fsl-qdma.c 	block = fsl_qdma->block_base +
fsl_qdma          728 drivers/dma/fsl-qdma.c 		FSL_QDMA_BLOCK_BASE_OFFSET(fsl_qdma, id);
fsl_qdma          730 drivers/dma/fsl-qdma.c 	intr = qdma_readl(fsl_qdma, block + FSL_QDMA_BCQIDR(0));
fsl_qdma          733 drivers/dma/fsl-qdma.c 		intr = fsl_qdma_queue_transfer_complete(fsl_qdma, block, id);
fsl_qdma          736 drivers/dma/fsl-qdma.c 		reg = qdma_readl(fsl_qdma, ctrl + FSL_QDMA_DMR);
fsl_qdma          738 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, reg, ctrl + FSL_QDMA_DMR);
fsl_qdma          739 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, 0, block + FSL_QDMA_BCQIER(0));
fsl_qdma          740 drivers/dma/fsl-qdma.c 		dev_err(fsl_qdma->dma_dev.dev, "QDMA: status err!\n");
fsl_qdma          744 drivers/dma/fsl-qdma.c 	qdma_writel(fsl_qdma, FSL_QDMA_BCQIDR_CLEAR,
fsl_qdma          752 drivers/dma/fsl-qdma.c 		  struct fsl_qdma_engine *fsl_qdma)
fsl_qdma          759 drivers/dma/fsl-qdma.c 	fsl_qdma->error_irq =
fsl_qdma          761 drivers/dma/fsl-qdma.c 	if (fsl_qdma->error_irq < 0)
fsl_qdma          762 drivers/dma/fsl-qdma.c 		return fsl_qdma->error_irq;
fsl_qdma          764 drivers/dma/fsl-qdma.c 	ret = devm_request_irq(&pdev->dev, fsl_qdma->error_irq,
fsl_qdma          766 drivers/dma/fsl-qdma.c 			       "qDMA error", fsl_qdma);
fsl_qdma          772 drivers/dma/fsl-qdma.c 	for (i = 0; i < fsl_qdma->block_number; i++) {
fsl_qdma          774 drivers/dma/fsl-qdma.c 		fsl_qdma->queue_irq[i] =
fsl_qdma          777 drivers/dma/fsl-qdma.c 		if (fsl_qdma->queue_irq[i] < 0)
fsl_qdma          778 drivers/dma/fsl-qdma.c 			return fsl_qdma->queue_irq[i];
fsl_qdma          781 drivers/dma/fsl-qdma.c 				       fsl_qdma->queue_irq[i],
fsl_qdma          785 drivers/dma/fsl-qdma.c 				       fsl_qdma);
fsl_qdma          793 drivers/dma/fsl-qdma.c 		ret = irq_set_affinity_hint(fsl_qdma->queue_irq[i],
fsl_qdma          799 drivers/dma/fsl-qdma.c 				fsl_qdma->queue_irq[i]);
fsl_qdma          808 drivers/dma/fsl-qdma.c 			      struct fsl_qdma_engine *fsl_qdma)
fsl_qdma          812 drivers/dma/fsl-qdma.c 	devm_free_irq(&pdev->dev, fsl_qdma->error_irq, fsl_qdma);
fsl_qdma          813 drivers/dma/fsl-qdma.c 	for (i = 0; i < fsl_qdma->block_number; i++)
fsl_qdma          814 drivers/dma/fsl-qdma.c 		devm_free_irq(&pdev->dev, fsl_qdma->queue_irq[i], fsl_qdma);
fsl_qdma          817 drivers/dma/fsl-qdma.c static int fsl_qdma_reg_init(struct fsl_qdma_engine *fsl_qdma)
fsl_qdma          822 drivers/dma/fsl-qdma.c 	void __iomem *status = fsl_qdma->status_base;
fsl_qdma          823 drivers/dma/fsl-qdma.c 	void __iomem *block, *ctrl = fsl_qdma->ctrl_base;
fsl_qdma          824 drivers/dma/fsl-qdma.c 	struct fsl_qdma_queue *fsl_queue = fsl_qdma->queue;
fsl_qdma          827 drivers/dma/fsl-qdma.c 	ret = fsl_qdma_halt(fsl_qdma);
fsl_qdma          829 drivers/dma/fsl-qdma.c 		dev_err(fsl_qdma->dma_dev.dev, "DMA halt failed!");
fsl_qdma          833 drivers/dma/fsl-qdma.c 	for (i = 0; i < fsl_qdma->block_number; i++) {
fsl_qdma          839 drivers/dma/fsl-qdma.c 		block = fsl_qdma->block_base +
fsl_qdma          840 drivers/dma/fsl-qdma.c 			FSL_QDMA_BLOCK_BASE_OFFSET(fsl_qdma, i);
fsl_qdma          841 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, FSL_QDMA_BCQIDR_CLEAR,
fsl_qdma          845 drivers/dma/fsl-qdma.c 	for (j = 0; j < fsl_qdma->block_number; j++) {
fsl_qdma          846 drivers/dma/fsl-qdma.c 		block = fsl_qdma->block_base +
fsl_qdma          847 drivers/dma/fsl-qdma.c 			FSL_QDMA_BLOCK_BASE_OFFSET(fsl_qdma, j);
fsl_qdma          848 drivers/dma/fsl-qdma.c 		for (i = 0; i < fsl_qdma->n_queues; i++) {
fsl_qdma          849 drivers/dma/fsl-qdma.c 			temp = fsl_queue + i + (j * fsl_qdma->n_queues);
fsl_qdma          858 drivers/dma/fsl-qdma.c 			qdma_writel(fsl_qdma, temp->bus_addr,
fsl_qdma          860 drivers/dma/fsl-qdma.c 			qdma_writel(fsl_qdma, temp->bus_addr,
fsl_qdma          867 drivers/dma/fsl-qdma.c 			qdma_writel(fsl_qdma, reg, block + FSL_QDMA_BCQMR(i));
fsl_qdma          876 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, FSL_QDMA_SQCCMR_ENTER_WM,
fsl_qdma          886 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, fsl_qdma->status[j]->bus_addr,
fsl_qdma          888 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, fsl_qdma->status[j]->bus_addr,
fsl_qdma          891 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, FSL_QDMA_BCQIER_CQTIE,
fsl_qdma          893 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, FSL_QDMA_BSQICR_ICEN |
fsl_qdma          896 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, FSL_QDMA_CQIER_MEIE |
fsl_qdma          903 drivers/dma/fsl-qdma.c 			(fsl_qdma->status[j]->n_cq) - 6);
fsl_qdma          905 drivers/dma/fsl-qdma.c 		qdma_writel(fsl_qdma, reg, block + FSL_QDMA_BSQMR);
fsl_qdma          906 drivers/dma/fsl-qdma.c 		reg = qdma_readl(fsl_qdma, block + FSL_QDMA_BSQMR);
fsl_qdma          910 drivers/dma/fsl-qdma.c 	qdma_writel(fsl_qdma, FSL_QDMA_DEDR_CLEAR, status + FSL_QDMA_DEDR);
fsl_qdma          911 drivers/dma/fsl-qdma.c 	qdma_writel(fsl_qdma, FSL_QDMA_DEIER_CLEAR, status + FSL_QDMA_DEIER);
fsl_qdma          913 drivers/dma/fsl-qdma.c 	reg = qdma_readl(fsl_qdma, ctrl + FSL_QDMA_DMR);
fsl_qdma          915 drivers/dma/fsl-qdma.c 	qdma_writel(fsl_qdma, reg, ctrl + FSL_QDMA_DMR);
fsl_qdma         1019 drivers/dma/fsl-qdma.c 	struct fsl_qdma_engine *fsl_qdma = fsl_chan->qdma;
fsl_qdma         1023 drivers/dma/fsl-qdma.c 		return fsl_qdma->desc_allocated;
fsl_qdma         1056 drivers/dma/fsl-qdma.c 	fsl_qdma->desc_allocated++;
fsl_qdma         1057 drivers/dma/fsl-qdma.c 	return fsl_qdma->desc_allocated;
fsl_qdma         1073 drivers/dma/fsl-qdma.c 	struct fsl_qdma_engine *fsl_qdma;
fsl_qdma         1096 drivers/dma/fsl-qdma.c 	len = sizeof(*fsl_qdma);
fsl_qdma         1097 drivers/dma/fsl-qdma.c 	fsl_qdma = devm_kzalloc(&pdev->dev, len, GFP_KERNEL);
fsl_qdma         1098 drivers/dma/fsl-qdma.c 	if (!fsl_qdma)
fsl_qdma         1102 drivers/dma/fsl-qdma.c 	fsl_qdma->chans = devm_kzalloc(&pdev->dev, len, GFP_KERNEL);
fsl_qdma         1103 drivers/dma/fsl-qdma.c 	if (!fsl_qdma->chans)
fsl_qdma         1107 drivers/dma/fsl-qdma.c 	fsl_qdma->status = devm_kzalloc(&pdev->dev, len, GFP_KERNEL);
fsl_qdma         1108 drivers/dma/fsl-qdma.c 	if (!fsl_qdma->status)
fsl_qdma         1112 drivers/dma/fsl-qdma.c 	fsl_qdma->queue_irq = devm_kzalloc(&pdev->dev, len, GFP_KERNEL);
fsl_qdma         1113 drivers/dma/fsl-qdma.c 	if (!fsl_qdma->queue_irq)
fsl_qdma         1122 drivers/dma/fsl-qdma.c 	fsl_qdma->desc_allocated = 0;
fsl_qdma         1123 drivers/dma/fsl-qdma.c 	fsl_qdma->n_chans = chans;
fsl_qdma         1124 drivers/dma/fsl-qdma.c 	fsl_qdma->n_queues = queues;
fsl_qdma         1125 drivers/dma/fsl-qdma.c 	fsl_qdma->block_number = blk_num;
fsl_qdma         1126 drivers/dma/fsl-qdma.c 	fsl_qdma->block_offset = blk_off;
fsl_qdma         1128 drivers/dma/fsl-qdma.c 	mutex_init(&fsl_qdma->fsl_qdma_mutex);
fsl_qdma         1130 drivers/dma/fsl-qdma.c 	for (i = 0; i < fsl_qdma->block_number; i++) {
fsl_qdma         1131 drivers/dma/fsl-qdma.c 		fsl_qdma->status[i] = fsl_qdma_prep_status_queue(pdev);
fsl_qdma         1132 drivers/dma/fsl-qdma.c 		if (!fsl_qdma->status[i])
fsl_qdma         1136 drivers/dma/fsl-qdma.c 	fsl_qdma->ctrl_base = devm_ioremap_resource(&pdev->dev, res);
fsl_qdma         1137 drivers/dma/fsl-qdma.c 	if (IS_ERR(fsl_qdma->ctrl_base))
fsl_qdma         1138 drivers/dma/fsl-qdma.c 		return PTR_ERR(fsl_qdma->ctrl_base);
fsl_qdma         1141 drivers/dma/fsl-qdma.c 	fsl_qdma->status_base = devm_ioremap_resource(&pdev->dev, res);
fsl_qdma         1142 drivers/dma/fsl-qdma.c 	if (IS_ERR(fsl_qdma->status_base))
fsl_qdma         1143 drivers/dma/fsl-qdma.c 		return PTR_ERR(fsl_qdma->status_base);
fsl_qdma         1146 drivers/dma/fsl-qdma.c 	fsl_qdma->block_base = devm_ioremap_resource(&pdev->dev, res);
fsl_qdma         1147 drivers/dma/fsl-qdma.c 	if (IS_ERR(fsl_qdma->block_base))
fsl_qdma         1148 drivers/dma/fsl-qdma.c 		return PTR_ERR(fsl_qdma->block_base);
fsl_qdma         1149 drivers/dma/fsl-qdma.c 	fsl_qdma->queue = fsl_qdma_alloc_queue_resources(pdev, fsl_qdma);
fsl_qdma         1150 drivers/dma/fsl-qdma.c 	if (!fsl_qdma->queue)
fsl_qdma         1153 drivers/dma/fsl-qdma.c 	ret = fsl_qdma_irq_init(pdev, fsl_qdma);
fsl_qdma         1157 drivers/dma/fsl-qdma.c 	fsl_qdma->irq_base = platform_get_irq_byname(pdev, "qdma-queue0");
fsl_qdma         1158 drivers/dma/fsl-qdma.c 	if (fsl_qdma->irq_base < 0)
fsl_qdma         1159 drivers/dma/fsl-qdma.c 		return fsl_qdma->irq_base;
fsl_qdma         1161 drivers/dma/fsl-qdma.c 	fsl_qdma->feature = of_property_read_bool(np, "big-endian");
fsl_qdma         1162 drivers/dma/fsl-qdma.c 	INIT_LIST_HEAD(&fsl_qdma->dma_dev.channels);
fsl_qdma         1164 drivers/dma/fsl-qdma.c 	for (i = 0; i < fsl_qdma->n_chans; i++) {
fsl_qdma         1165 drivers/dma/fsl-qdma.c 		struct fsl_qdma_chan *fsl_chan = &fsl_qdma->chans[i];
fsl_qdma         1167 drivers/dma/fsl-qdma.c 		fsl_chan->qdma = fsl_qdma;
fsl_qdma         1168 drivers/dma/fsl-qdma.c 		fsl_chan->queue = fsl_qdma->queue + i % (fsl_qdma->n_queues *
fsl_qdma         1169 drivers/dma/fsl-qdma.c 							fsl_qdma->block_number);
fsl_qdma         1171 drivers/dma/fsl-qdma.c 		vchan_init(&fsl_chan->vchan, &fsl_qdma->dma_dev);
fsl_qdma         1174 drivers/dma/fsl-qdma.c 	dma_cap_set(DMA_MEMCPY, fsl_qdma->dma_dev.cap_mask);
fsl_qdma         1176 drivers/dma/fsl-qdma.c 	fsl_qdma->dma_dev.dev = &pdev->dev;
fsl_qdma         1177 drivers/dma/fsl-qdma.c 	fsl_qdma->dma_dev.device_free_chan_resources =
fsl_qdma         1179 drivers/dma/fsl-qdma.c 	fsl_qdma->dma_dev.device_alloc_chan_resources =
fsl_qdma         1181 drivers/dma/fsl-qdma.c 	fsl_qdma->dma_dev.device_tx_status = dma_cookie_status;
fsl_qdma         1182 drivers/dma/fsl-qdma.c 	fsl_qdma->dma_dev.device_prep_dma_memcpy = fsl_qdma_prep_memcpy;
fsl_qdma         1183 drivers/dma/fsl-qdma.c 	fsl_qdma->dma_dev.device_issue_pending = fsl_qdma_issue_pending;
fsl_qdma         1184 drivers/dma/fsl-qdma.c 	fsl_qdma->dma_dev.device_synchronize = fsl_qdma_synchronize;
fsl_qdma         1185 drivers/dma/fsl-qdma.c 	fsl_qdma->dma_dev.device_terminate_all = fsl_qdma_terminate_all;
fsl_qdma         1189 drivers/dma/fsl-qdma.c 	platform_set_drvdata(pdev, fsl_qdma);
fsl_qdma         1191 drivers/dma/fsl-qdma.c 	ret = dma_async_device_register(&fsl_qdma->dma_dev);
fsl_qdma         1198 drivers/dma/fsl-qdma.c 	ret = fsl_qdma_reg_init(fsl_qdma);
fsl_qdma         1223 drivers/dma/fsl-qdma.c 	struct fsl_qdma_engine *fsl_qdma = platform_get_drvdata(pdev);
fsl_qdma         1225 drivers/dma/fsl-qdma.c 	fsl_qdma_irq_exit(pdev, fsl_qdma);
fsl_qdma         1226 drivers/dma/fsl-qdma.c 	fsl_qdma_cleanup_vchan(&fsl_qdma->dma_dev);
fsl_qdma         1228 drivers/dma/fsl-qdma.c 	dma_async_device_unregister(&fsl_qdma->dma_dev);
fsl_qdma         1230 drivers/dma/fsl-qdma.c 	for (i = 0; i < fsl_qdma->block_number; i++) {
fsl_qdma         1231 drivers/dma/fsl-qdma.c 		status = fsl_qdma->status[i];