Lines Matching refs:su_dev
238 static int sudmac_chan_probe(struct sudmac_device *su_dev, int id, int irq, in sudmac_chan_probe() argument
241 struct shdma_dev *sdev = &su_dev->shdma_dev; in sudmac_chan_probe()
256 sc->base = su_dev->chan_reg; in sudmac_chan_probe()
259 sc->offset = su_dev->pdata->channel->offset; in sudmac_chan_probe()
260 if (su_dev->pdata->channel->config & SUDMAC_TX_BUFFER_MODE) in sudmac_chan_probe()
262 if (su_dev->pdata->channel->config & SUDMAC_RX_END_MODE) in sudmac_chan_probe()
264 sc->cfg |= (su_dev->pdata->channel->wait << 4) & SUDMAC_LBA_WAIT; in sudmac_chan_probe()
266 if (su_dev->pdata->channel->dint_end_bit & SUDMAC_DMA_BIT_CH0) in sudmac_chan_probe()
268 if (su_dev->pdata->channel->dint_end_bit & SUDMAC_DMA_BIT_CH1) in sudmac_chan_probe()
293 static void sudmac_chan_remove(struct sudmac_device *su_dev) in sudmac_chan_remove() argument
298 shdma_for_each_chan(schan, &su_dev->shdma_dev, i) { in sudmac_chan_remove()
334 struct sudmac_device *su_dev; in sudmac_probe() local
347 su_dev = devm_kzalloc(&pdev->dev, sizeof(struct sudmac_device), in sudmac_probe()
349 if (!su_dev) in sudmac_probe()
352 dma_dev = &su_dev->shdma_dev.dma_dev; in sudmac_probe()
355 su_dev->chan_reg = devm_ioremap_resource(&pdev->dev, chan); in sudmac_probe()
356 if (IS_ERR(su_dev->chan_reg)) in sudmac_probe()
357 return PTR_ERR(su_dev->chan_reg); in sudmac_probe()
361 su_dev->shdma_dev.ops = &sudmac_shdma_ops; in sudmac_probe()
362 su_dev->shdma_dev.desc_size = sizeof(struct sudmac_desc); in sudmac_probe()
363 err = shdma_init(&pdev->dev, &su_dev->shdma_dev, pdata->channel_num); in sudmac_probe()
368 su_dev->pdata = dev_get_platdata(&pdev->dev); in sudmac_probe()
370 platform_set_drvdata(pdev, su_dev); in sudmac_probe()
374 err = sudmac_chan_probe(su_dev, i, irq_res->start, IRQF_SHARED); in sudmac_probe()
379 err = dma_async_device_register(&su_dev->shdma_dev.dma_dev); in sudmac_probe()
386 sudmac_chan_remove(su_dev); in sudmac_probe()
388 shdma_cleanup(&su_dev->shdma_dev); in sudmac_probe()
395 struct sudmac_device *su_dev = platform_get_drvdata(pdev); in sudmac_remove() local
396 struct dma_device *dma_dev = &su_dev->shdma_dev.dma_dev; in sudmac_remove()
399 sudmac_chan_remove(su_dev); in sudmac_remove()
400 shdma_cleanup(&su_dev->shdma_dev); in sudmac_remove()