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()
259 sc->base = su_dev->chan_reg; in sudmac_chan_probe()
262 sc->offset = su_dev->pdata->channel->offset; in sudmac_chan_probe()
263 if (su_dev->pdata->channel->config & SUDMAC_TX_BUFFER_MODE) in sudmac_chan_probe()
265 if (su_dev->pdata->channel->config & SUDMAC_RX_END_MODE) in sudmac_chan_probe()
267 sc->cfg |= (su_dev->pdata->channel->wait << 4) & SUDMAC_LBA_WAIT; in sudmac_chan_probe()
269 if (su_dev->pdata->channel->dint_end_bit & SUDMAC_DMA_BIT_CH0) in sudmac_chan_probe()
271 if (su_dev->pdata->channel->dint_end_bit & SUDMAC_DMA_BIT_CH1) in sudmac_chan_probe()
296 static void sudmac_chan_remove(struct sudmac_device *su_dev) in sudmac_chan_remove() argument
301 shdma_for_each_chan(schan, &su_dev->shdma_dev, i) { in sudmac_chan_remove()
337 struct sudmac_device *su_dev; in sudmac_probe() local
350 su_dev = devm_kzalloc(&pdev->dev, sizeof(struct sudmac_device), in sudmac_probe()
352 if (!su_dev) { in sudmac_probe()
357 dma_dev = &su_dev->shdma_dev.dma_dev; in sudmac_probe()
360 su_dev->chan_reg = devm_ioremap_resource(&pdev->dev, chan); in sudmac_probe()
361 if (IS_ERR(su_dev->chan_reg)) in sudmac_probe()
362 return PTR_ERR(su_dev->chan_reg); in sudmac_probe()
366 su_dev->shdma_dev.ops = &sudmac_shdma_ops; in sudmac_probe()
367 su_dev->shdma_dev.desc_size = sizeof(struct sudmac_desc); in sudmac_probe()
368 err = shdma_init(&pdev->dev, &su_dev->shdma_dev, pdata->channel_num); in sudmac_probe()
373 su_dev->pdata = dev_get_platdata(&pdev->dev); in sudmac_probe()
375 platform_set_drvdata(pdev, su_dev); in sudmac_probe()
379 err = sudmac_chan_probe(su_dev, i, irq_res->start, IRQF_SHARED); in sudmac_probe()
384 err = dma_async_device_register(&su_dev->shdma_dev.dma_dev); in sudmac_probe()
391 sudmac_chan_remove(su_dev); in sudmac_probe()
393 shdma_cleanup(&su_dev->shdma_dev); in sudmac_probe()
400 struct sudmac_device *su_dev = platform_get_drvdata(pdev); in sudmac_remove() local
401 struct dma_device *dma_dev = &su_dev->shdma_dev.dma_dev; in sudmac_remove()
404 sudmac_chan_remove(su_dev); in sudmac_remove()
405 shdma_cleanup(&su_dev->shdma_dev); in sudmac_remove()