fsl_edma          151 drivers/dma/fsl-edma-common.h 					     struct fsl_edma_engine *fsl_edma);
fsl_edma           32 drivers/dma/fsl-edma.c 	struct fsl_edma_engine *fsl_edma = dev_id;
fsl_edma           34 drivers/dma/fsl-edma.c 	struct edma_regs *regs = &fsl_edma->regs;
fsl_edma           37 drivers/dma/fsl-edma.c 	intr = edma_readl(fsl_edma, regs->intl);
fsl_edma           41 drivers/dma/fsl-edma.c 	for (ch = 0; ch < fsl_edma->n_chans; ch++) {
fsl_edma           43 drivers/dma/fsl-edma.c 			edma_writeb(fsl_edma, EDMA_CINT_CINT(ch), regs->cint);
fsl_edma           45 drivers/dma/fsl-edma.c 			fsl_chan = &fsl_edma->chans[ch];
fsl_edma           69 drivers/dma/fsl-edma.c 	struct fsl_edma_engine *fsl_edma = dev_id;
fsl_edma           71 drivers/dma/fsl-edma.c 	struct edma_regs *regs = &fsl_edma->regs;
fsl_edma           73 drivers/dma/fsl-edma.c 	err = edma_readl(fsl_edma, regs->errl);
fsl_edma           77 drivers/dma/fsl-edma.c 	for (ch = 0; ch < fsl_edma->n_chans; ch++) {
fsl_edma           79 drivers/dma/fsl-edma.c 			fsl_edma_disable_request(&fsl_edma->chans[ch]);
fsl_edma           80 drivers/dma/fsl-edma.c 			edma_writeb(fsl_edma, EDMA_CERR_CERR(ch), regs->cerr);
fsl_edma           81 drivers/dma/fsl-edma.c 			fsl_edma->chans[ch].status = DMA_ERROR;
fsl_edma           82 drivers/dma/fsl-edma.c 			fsl_edma->chans[ch].idle = true;
fsl_edma           99 drivers/dma/fsl-edma.c 	struct fsl_edma_engine *fsl_edma = ofdma->of_dma_data;
fsl_edma          102 drivers/dma/fsl-edma.c 	u32 dmamux_nr = fsl_edma->drvdata->dmamuxs;
fsl_edma          103 drivers/dma/fsl-edma.c 	unsigned long chans_per_mux = fsl_edma->n_chans / dmamux_nr;
fsl_edma          108 drivers/dma/fsl-edma.c 	mutex_lock(&fsl_edma->fsl_edma_mutex);
fsl_edma          109 drivers/dma/fsl-edma.c 	list_for_each_entry_safe(chan, _chan, &fsl_edma->dma_dev.channels, device_node) {
fsl_edma          120 drivers/dma/fsl-edma.c 				mutex_unlock(&fsl_edma->fsl_edma_mutex);
fsl_edma          125 drivers/dma/fsl-edma.c 	mutex_unlock(&fsl_edma->fsl_edma_mutex);
fsl_edma          130 drivers/dma/fsl-edma.c fsl_edma_irq_init(struct platform_device *pdev, struct fsl_edma_engine *fsl_edma)
fsl_edma          134 drivers/dma/fsl-edma.c 	fsl_edma->txirq = platform_get_irq_byname(pdev, "edma-tx");
fsl_edma          135 drivers/dma/fsl-edma.c 	if (fsl_edma->txirq < 0)
fsl_edma          136 drivers/dma/fsl-edma.c 		return fsl_edma->txirq;
fsl_edma          138 drivers/dma/fsl-edma.c 	fsl_edma->errirq = platform_get_irq_byname(pdev, "edma-err");
fsl_edma          139 drivers/dma/fsl-edma.c 	if (fsl_edma->errirq < 0)
fsl_edma          140 drivers/dma/fsl-edma.c 		return fsl_edma->errirq;
fsl_edma          142 drivers/dma/fsl-edma.c 	if (fsl_edma->txirq == fsl_edma->errirq) {
fsl_edma          143 drivers/dma/fsl-edma.c 		ret = devm_request_irq(&pdev->dev, fsl_edma->txirq,
fsl_edma          144 drivers/dma/fsl-edma.c 				fsl_edma_irq_handler, 0, "eDMA", fsl_edma);
fsl_edma          150 drivers/dma/fsl-edma.c 		ret = devm_request_irq(&pdev->dev, fsl_edma->txirq,
fsl_edma          151 drivers/dma/fsl-edma.c 				fsl_edma_tx_handler, 0, "eDMA tx", fsl_edma);
fsl_edma          157 drivers/dma/fsl-edma.c 		ret = devm_request_irq(&pdev->dev, fsl_edma->errirq,
fsl_edma          158 drivers/dma/fsl-edma.c 				fsl_edma_err_handler, 0, "eDMA err", fsl_edma);
fsl_edma          170 drivers/dma/fsl-edma.c 		   struct fsl_edma_engine *fsl_edma)
fsl_edma          192 drivers/dma/fsl-edma.c 		sprintf(fsl_edma->chans[i].chan_name, "eDMA2-CH%02d", i);
fsl_edma          198 drivers/dma/fsl-edma.c 						0, "eDMA2-ERR", fsl_edma);
fsl_edma          202 drivers/dma/fsl-edma.c 						fsl_edma->chans[i].chan_name,
fsl_edma          203 drivers/dma/fsl-edma.c 						fsl_edma);
fsl_edma          212 drivers/dma/fsl-edma.c 		struct platform_device *pdev, struct fsl_edma_engine *fsl_edma)
fsl_edma          214 drivers/dma/fsl-edma.c 	if (fsl_edma->txirq == fsl_edma->errirq) {
fsl_edma          215 drivers/dma/fsl-edma.c 		devm_free_irq(&pdev->dev, fsl_edma->txirq, fsl_edma);
fsl_edma          217 drivers/dma/fsl-edma.c 		devm_free_irq(&pdev->dev, fsl_edma->txirq, fsl_edma);
fsl_edma          218 drivers/dma/fsl-edma.c 		devm_free_irq(&pdev->dev, fsl_edma->errirq, fsl_edma);
fsl_edma          222 drivers/dma/fsl-edma.c static void fsl_disable_clocks(struct fsl_edma_engine *fsl_edma, int nr_clocks)
fsl_edma          227 drivers/dma/fsl-edma.c 		clk_disable_unprepare(fsl_edma->muxclk[i]);
fsl_edma          255 drivers/dma/fsl-edma.c 	struct fsl_edma_engine *fsl_edma;
fsl_edma          276 drivers/dma/fsl-edma.c 	len = sizeof(*fsl_edma) + sizeof(*fsl_chan) * chans;
fsl_edma          277 drivers/dma/fsl-edma.c 	fsl_edma = devm_kzalloc(&pdev->dev, len, GFP_KERNEL);
fsl_edma          278 drivers/dma/fsl-edma.c 	if (!fsl_edma)
fsl_edma          281 drivers/dma/fsl-edma.c 	fsl_edma->drvdata = drvdata;
fsl_edma          282 drivers/dma/fsl-edma.c 	fsl_edma->n_chans = chans;
fsl_edma          283 drivers/dma/fsl-edma.c 	mutex_init(&fsl_edma->fsl_edma_mutex);
fsl_edma          286 drivers/dma/fsl-edma.c 	fsl_edma->membase = devm_ioremap_resource(&pdev->dev, res);
fsl_edma          287 drivers/dma/fsl-edma.c 	if (IS_ERR(fsl_edma->membase))
fsl_edma          288 drivers/dma/fsl-edma.c 		return PTR_ERR(fsl_edma->membase);
fsl_edma          290 drivers/dma/fsl-edma.c 	fsl_edma_setup_regs(fsl_edma);
fsl_edma          291 drivers/dma/fsl-edma.c 	regs = &fsl_edma->regs;
fsl_edma          294 drivers/dma/fsl-edma.c 		fsl_edma->dmaclk = devm_clk_get(&pdev->dev, "dma");
fsl_edma          295 drivers/dma/fsl-edma.c 		if (IS_ERR(fsl_edma->dmaclk)) {
fsl_edma          297 drivers/dma/fsl-edma.c 			return PTR_ERR(fsl_edma->dmaclk);
fsl_edma          300 drivers/dma/fsl-edma.c 		ret = clk_prepare_enable(fsl_edma->dmaclk);
fsl_edma          307 drivers/dma/fsl-edma.c 	for (i = 0; i < fsl_edma->drvdata->dmamuxs; i++) {
fsl_edma          311 drivers/dma/fsl-edma.c 		fsl_edma->muxbase[i] = devm_ioremap_resource(&pdev->dev, res);
fsl_edma          312 drivers/dma/fsl-edma.c 		if (IS_ERR(fsl_edma->muxbase[i])) {
fsl_edma          314 drivers/dma/fsl-edma.c 			fsl_disable_clocks(fsl_edma, i);
fsl_edma          315 drivers/dma/fsl-edma.c 			return PTR_ERR(fsl_edma->muxbase[i]);
fsl_edma          319 drivers/dma/fsl-edma.c 		fsl_edma->muxclk[i] = devm_clk_get(&pdev->dev, clkname);
fsl_edma          320 drivers/dma/fsl-edma.c 		if (IS_ERR(fsl_edma->muxclk[i])) {
fsl_edma          323 drivers/dma/fsl-edma.c 			fsl_disable_clocks(fsl_edma, i);
fsl_edma          324 drivers/dma/fsl-edma.c 			return PTR_ERR(fsl_edma->muxclk[i]);
fsl_edma          327 drivers/dma/fsl-edma.c 		ret = clk_prepare_enable(fsl_edma->muxclk[i]);
fsl_edma          330 drivers/dma/fsl-edma.c 			fsl_disable_clocks(fsl_edma, i);
fsl_edma          334 drivers/dma/fsl-edma.c 	fsl_edma->big_endian = of_property_read_bool(np, "big-endian");
fsl_edma          336 drivers/dma/fsl-edma.c 	INIT_LIST_HEAD(&fsl_edma->dma_dev.channels);
fsl_edma          337 drivers/dma/fsl-edma.c 	for (i = 0; i < fsl_edma->n_chans; i++) {
fsl_edma          338 drivers/dma/fsl-edma.c 		struct fsl_edma_chan *fsl_chan = &fsl_edma->chans[i];
fsl_edma          340 drivers/dma/fsl-edma.c 		fsl_chan->edma = fsl_edma;
fsl_edma          346 drivers/dma/fsl-edma.c 		vchan_init(&fsl_chan->vchan, &fsl_edma->dma_dev);
fsl_edma          348 drivers/dma/fsl-edma.c 		edma_writew(fsl_edma, 0x0, &regs->tcd[i].csr);
fsl_edma          352 drivers/dma/fsl-edma.c 	edma_writel(fsl_edma, ~0, regs->intl);
fsl_edma          353 drivers/dma/fsl-edma.c 	ret = fsl_edma->drvdata->setup_irq(pdev, fsl_edma);
fsl_edma          357 drivers/dma/fsl-edma.c 	dma_cap_set(DMA_PRIVATE, fsl_edma->dma_dev.cap_mask);
fsl_edma          358 drivers/dma/fsl-edma.c 	dma_cap_set(DMA_SLAVE, fsl_edma->dma_dev.cap_mask);
fsl_edma          359 drivers/dma/fsl-edma.c 	dma_cap_set(DMA_CYCLIC, fsl_edma->dma_dev.cap_mask);
fsl_edma          361 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.dev = &pdev->dev;
fsl_edma          362 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.device_alloc_chan_resources
fsl_edma          364 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.device_free_chan_resources
fsl_edma          366 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.device_tx_status = fsl_edma_tx_status;
fsl_edma          367 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.device_prep_slave_sg = fsl_edma_prep_slave_sg;
fsl_edma          368 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.device_prep_dma_cyclic = fsl_edma_prep_dma_cyclic;
fsl_edma          369 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.device_config = fsl_edma_slave_config;
fsl_edma          370 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.device_pause = fsl_edma_pause;
fsl_edma          371 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.device_resume = fsl_edma_resume;
fsl_edma          372 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.device_terminate_all = fsl_edma_terminate_all;
fsl_edma          373 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.device_synchronize = fsl_edma_synchronize;
fsl_edma          374 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.device_issue_pending = fsl_edma_issue_pending;
fsl_edma          376 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.src_addr_widths = FSL_EDMA_BUSWIDTHS;
fsl_edma          377 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.dst_addr_widths = FSL_EDMA_BUSWIDTHS;
fsl_edma          378 drivers/dma/fsl-edma.c 	fsl_edma->dma_dev.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV);
fsl_edma          380 drivers/dma/fsl-edma.c 	platform_set_drvdata(pdev, fsl_edma);
fsl_edma          382 drivers/dma/fsl-edma.c 	ret = dma_async_device_register(&fsl_edma->dma_dev);
fsl_edma          386 drivers/dma/fsl-edma.c 		fsl_disable_clocks(fsl_edma, fsl_edma->drvdata->dmamuxs);
fsl_edma          390 drivers/dma/fsl-edma.c 	ret = of_dma_controller_register(np, fsl_edma_xlate, fsl_edma);
fsl_edma          394 drivers/dma/fsl-edma.c 		dma_async_device_unregister(&fsl_edma->dma_dev);
fsl_edma          395 drivers/dma/fsl-edma.c 		fsl_disable_clocks(fsl_edma, fsl_edma->drvdata->dmamuxs);
fsl_edma          400 drivers/dma/fsl-edma.c 	edma_writel(fsl_edma, EDMA_CR_ERGA | EDMA_CR_ERCA, regs->cr);
fsl_edma          408 drivers/dma/fsl-edma.c 	struct fsl_edma_engine *fsl_edma = platform_get_drvdata(pdev);
fsl_edma          410 drivers/dma/fsl-edma.c 	fsl_edma_irq_exit(pdev, fsl_edma);
fsl_edma          411 drivers/dma/fsl-edma.c 	fsl_edma_cleanup_vchan(&fsl_edma->dma_dev);
fsl_edma          413 drivers/dma/fsl-edma.c 	dma_async_device_unregister(&fsl_edma->dma_dev);
fsl_edma          414 drivers/dma/fsl-edma.c 	fsl_disable_clocks(fsl_edma, fsl_edma->drvdata->dmamuxs);
fsl_edma          421 drivers/dma/fsl-edma.c 	struct fsl_edma_engine *fsl_edma = dev_get_drvdata(dev);
fsl_edma          426 drivers/dma/fsl-edma.c 	for (i = 0; i < fsl_edma->n_chans; i++) {
fsl_edma          427 drivers/dma/fsl-edma.c 		fsl_chan = &fsl_edma->chans[i];
fsl_edma          445 drivers/dma/fsl-edma.c 	struct fsl_edma_engine *fsl_edma = dev_get_drvdata(dev);
fsl_edma          447 drivers/dma/fsl-edma.c 	struct edma_regs *regs = &fsl_edma->regs;
fsl_edma          450 drivers/dma/fsl-edma.c 	for (i = 0; i < fsl_edma->n_chans; i++) {
fsl_edma          451 drivers/dma/fsl-edma.c 		fsl_chan = &fsl_edma->chans[i];
fsl_edma          453 drivers/dma/fsl-edma.c 		edma_writew(fsl_edma, 0x0, &regs->tcd[i].csr);
fsl_edma          458 drivers/dma/fsl-edma.c 	edma_writel(fsl_edma, EDMA_CR_ERGA | EDMA_CR_ERCA, regs->cr);