Lines Matching refs:fdev
1121 struct fsldma_device *fdev = data; in fsldma_ctrl_irq() local
1127 gsr = (fdev->feature & FSL_DMA_BIG_ENDIAN) ? in_be32(fdev->regs) in fsldma_ctrl_irq()
1128 : in_le32(fdev->regs); in fsldma_ctrl_irq()
1130 dev_dbg(fdev->dev, "IRQ: gsr 0x%.8x\n", gsr); in fsldma_ctrl_irq()
1133 chan = fdev->chan[i]; in fsldma_ctrl_irq()
1138 dev_dbg(fdev->dev, "IRQ: chan %d\n", chan->id); in fsldma_ctrl_irq()
1150 static void fsldma_free_irqs(struct fsldma_device *fdev) in fsldma_free_irqs() argument
1155 if (fdev->irq != NO_IRQ) { in fsldma_free_irqs()
1156 dev_dbg(fdev->dev, "free per-controller IRQ\n"); in fsldma_free_irqs()
1157 free_irq(fdev->irq, fdev); in fsldma_free_irqs()
1162 chan = fdev->chan[i]; in fsldma_free_irqs()
1170 static int fsldma_request_irqs(struct fsldma_device *fdev) in fsldma_request_irqs() argument
1177 if (fdev->irq != NO_IRQ) { in fsldma_request_irqs()
1178 dev_dbg(fdev->dev, "request per-controller IRQ\n"); in fsldma_request_irqs()
1179 ret = request_irq(fdev->irq, fsldma_ctrl_irq, IRQF_SHARED, in fsldma_request_irqs()
1180 "fsldma-controller", fdev); in fsldma_request_irqs()
1186 chan = fdev->chan[i]; in fsldma_request_irqs()
1209 chan = fdev->chan[i]; in fsldma_request_irqs()
1226 static int fsl_dma_chan_probe(struct fsldma_device *fdev, in fsl_dma_chan_probe() argument
1236 dev_err(fdev->dev, "no free memory for DMA channels!\n"); in fsl_dma_chan_probe()
1244 dev_err(fdev->dev, "unable to ioremap registers\n"); in fsl_dma_chan_probe()
1251 dev_err(fdev->dev, "unable to find 'reg' property\n"); in fsl_dma_chan_probe()
1256 if (!fdev->feature) in fsl_dma_chan_probe()
1257 fdev->feature = chan->feature; in fsl_dma_chan_probe()
1263 WARN_ON(fdev->feature != chan->feature); in fsl_dma_chan_probe()
1265 chan->dev = fdev->dev; in fsl_dma_chan_probe()
1270 dev_err(fdev->dev, "too many channels for device\n"); in fsl_dma_chan_probe()
1275 fdev->chan[chan->id] = chan; in fsl_dma_chan_probe()
1304 chan->common.device = &fdev->common; in fsl_dma_chan_probe()
1311 list_add_tail(&chan->common.device_node, &fdev->common.channels); in fsl_dma_chan_probe()
1313 dev_info(fdev->dev, "#%d (%s), irq %d\n", chan->id, compatible, in fsl_dma_chan_probe()
1314 chan->irq != NO_IRQ ? chan->irq : fdev->irq); in fsl_dma_chan_probe()
1336 struct fsldma_device *fdev; in fsldma_of_probe() local
1340 fdev = kzalloc(sizeof(*fdev), GFP_KERNEL); in fsldma_of_probe()
1341 if (!fdev) { in fsldma_of_probe()
1347 fdev->dev = &op->dev; in fsldma_of_probe()
1348 INIT_LIST_HEAD(&fdev->common.channels); in fsldma_of_probe()
1351 fdev->regs = of_iomap(op->dev.of_node, 0); in fsldma_of_probe()
1352 if (!fdev->regs) { in fsldma_of_probe()
1359 fdev->irq = irq_of_parse_and_map(op->dev.of_node, 0); in fsldma_of_probe()
1361 dma_cap_set(DMA_MEMCPY, fdev->common.cap_mask); in fsldma_of_probe()
1362 dma_cap_set(DMA_SG, fdev->common.cap_mask); in fsldma_of_probe()
1363 dma_cap_set(DMA_SLAVE, fdev->common.cap_mask); in fsldma_of_probe()
1364 fdev->common.device_alloc_chan_resources = fsl_dma_alloc_chan_resources; in fsldma_of_probe()
1365 fdev->common.device_free_chan_resources = fsl_dma_free_chan_resources; in fsldma_of_probe()
1366 fdev->common.device_prep_dma_memcpy = fsl_dma_prep_memcpy; in fsldma_of_probe()
1367 fdev->common.device_prep_dma_sg = fsl_dma_prep_sg; in fsldma_of_probe()
1368 fdev->common.device_tx_status = fsl_tx_status; in fsldma_of_probe()
1369 fdev->common.device_issue_pending = fsl_dma_memcpy_issue_pending; in fsldma_of_probe()
1370 fdev->common.device_config = fsl_dma_device_config; in fsldma_of_probe()
1371 fdev->common.device_terminate_all = fsl_dma_device_terminate_all; in fsldma_of_probe()
1372 fdev->common.dev = &op->dev; in fsldma_of_probe()
1374 fdev->common.src_addr_widths = FSL_DMA_BUSWIDTHS; in fsldma_of_probe()
1375 fdev->common.dst_addr_widths = FSL_DMA_BUSWIDTHS; in fsldma_of_probe()
1376 fdev->common.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); in fsldma_of_probe()
1377 fdev->common.residue_granularity = DMA_RESIDUE_GRANULARITY_DESCRIPTOR; in fsldma_of_probe()
1381 platform_set_drvdata(op, fdev); in fsldma_of_probe()
1390 fsl_dma_chan_probe(fdev, child, in fsldma_of_probe()
1396 fsl_dma_chan_probe(fdev, child, in fsldma_of_probe()
1409 err = fsldma_request_irqs(fdev); in fsldma_of_probe()
1411 dev_err(fdev->dev, "unable to request IRQs\n"); in fsldma_of_probe()
1415 dma_async_device_register(&fdev->common); in fsldma_of_probe()
1419 irq_dispose_mapping(fdev->irq); in fsldma_of_probe()
1420 kfree(fdev); in fsldma_of_probe()
1427 struct fsldma_device *fdev; in fsldma_of_remove() local
1430 fdev = platform_get_drvdata(op); in fsldma_of_remove()
1431 dma_async_device_unregister(&fdev->common); in fsldma_of_remove()
1433 fsldma_free_irqs(fdev); in fsldma_of_remove()
1436 if (fdev->chan[i]) in fsldma_of_remove()
1437 fsl_dma_chan_remove(fdev->chan[i]); in fsldma_of_remove()
1440 iounmap(fdev->regs); in fsldma_of_remove()
1441 kfree(fdev); in fsldma_of_remove()
1450 struct fsldma_device *fdev = platform_get_drvdata(pdev); in fsldma_suspend_late() local
1455 chan = fdev->chan[i]; in fsldma_suspend_late()
1470 chan = fdev->chan[i]; in fsldma_suspend_late()
1482 struct fsldma_device *fdev = platform_get_drvdata(pdev); in fsldma_resume_early() local
1488 chan = fdev->chan[i]; in fsldma_resume_early()