Lines Matching refs:d
255 struct sa11x0_dma_dev *d = p->dev; in sa11x0_dma_irq() local
267 dev_dbg(d->slave.dev, "pchan %u: irq: DCSR:%02x\n", p->num, dcsr); in sa11x0_dma_irq()
270 …dev_err(d->slave.dev, "pchan %u: error. DCSR:%02x DDAR:%08x DBSA:%08x DBTA:%08x DBSB:%08x DBTB:%08… in sa11x0_dma_irq()
332 struct sa11x0_dma_dev *d = (struct sa11x0_dma_dev *)arg; in sa11x0_dma_tasklet() local
337 dev_dbg(d->slave.dev, "tasklet enter\n"); in sa11x0_dma_tasklet()
339 list_for_each_entry(c, &d->slave.channels, vc.chan.device_node) { in sa11x0_dma_tasklet()
346 dev_dbg(d->slave.dev, "pchan %u: free\n", p->num); in sa11x0_dma_tasklet()
356 spin_lock_irq(&d->lock); in sa11x0_dma_tasklet()
358 p = &d->phy[pch]; in sa11x0_dma_tasklet()
360 if (p->vchan == NULL && !list_empty(&d->chan_pending)) { in sa11x0_dma_tasklet()
361 c = list_first_entry(&d->chan_pending, in sa11x0_dma_tasklet()
370 dev_dbg(d->slave.dev, "pchan %u: alloc vchan %p\n", pch, &c->vc); in sa11x0_dma_tasklet()
373 spin_unlock_irq(&d->lock); in sa11x0_dma_tasklet()
377 p = &d->phy[pch]; in sa11x0_dma_tasklet()
388 dev_dbg(d->slave.dev, "tasklet exit\n"); in sa11x0_dma_tasklet()
395 struct sa11x0_dma_dev *d = to_sa11x0_dma(chan->device); in sa11x0_dma_free_chan_resources() local
398 spin_lock_irqsave(&d->lock, flags); in sa11x0_dma_free_chan_resources()
400 spin_unlock_irqrestore(&d->lock, flags); in sa11x0_dma_free_chan_resources()
425 struct sa11x0_dma_dev *d = to_sa11x0_dma(chan->device); in sa11x0_dma_tx_status() local
466 dev_vdbg(d->slave.dev, "tx_status: addr:%x\n", addr); in sa11x0_dma_tx_status()
469 dev_vdbg(d->slave.dev, "tx_status: [%u] %x+%x\n", in sa11x0_dma_tx_status()
477 dev_vdbg(d->slave.dev, "tx_status: [%u] +%x\n", in sa11x0_dma_tx_status()
485 dev_vdbg(d->slave.dev, "tx_status: [%u] %x+%x ++\n", in sa11x0_dma_tx_status()
494 dev_vdbg(d->slave.dev, "tx_status: bytes 0x%zx\n", state->residue); in sa11x0_dma_tx_status()
507 struct sa11x0_dma_dev *d = to_sa11x0_dma(chan->device); in sa11x0_dma_issue_pending() local
513 spin_lock(&d->lock); in sa11x0_dma_issue_pending()
515 list_add_tail(&c->node, &d->chan_pending); in sa11x0_dma_issue_pending()
516 tasklet_schedule(&d->task); in sa11x0_dma_issue_pending()
517 dev_dbg(d->slave.dev, "vchan %p: issued\n", &c->vc); in sa11x0_dma_issue_pending()
519 spin_unlock(&d->lock); in sa11x0_dma_issue_pending()
522 dev_dbg(d->slave.dev, "vchan %p: nothing to issue\n", &c->vc); in sa11x0_dma_issue_pending()
707 struct sa11x0_dma_dev *d = to_sa11x0_dma(chan->device); in sa11x0_dma_device_pause() local
712 dev_dbg(d->slave.dev, "vchan %p: pause\n", &c->vc); in sa11x0_dma_device_pause()
721 spin_lock(&d->lock); in sa11x0_dma_device_pause()
723 spin_unlock(&d->lock); in sa11x0_dma_device_pause()
734 struct sa11x0_dma_dev *d = to_sa11x0_dma(chan->device); in sa11x0_dma_device_resume() local
739 dev_dbg(d->slave.dev, "vchan %p: resume\n", &c->vc); in sa11x0_dma_device_resume()
748 spin_lock(&d->lock); in sa11x0_dma_device_resume()
749 list_add_tail(&c->node, &d->chan_pending); in sa11x0_dma_device_resume()
750 spin_unlock(&d->lock); in sa11x0_dma_device_resume()
761 struct sa11x0_dma_dev *d = to_sa11x0_dma(chan->device); in sa11x0_dma_device_terminate_all() local
766 dev_dbg(d->slave.dev, "vchan %p: terminate all\n", &c->vc); in sa11x0_dma_device_terminate_all()
773 dev_dbg(d->slave.dev, "pchan %u: terminating\n", p->num); in sa11x0_dma_device_terminate_all()
790 spin_lock(&d->lock); in sa11x0_dma_device_terminate_all()
792 spin_unlock(&d->lock); in sa11x0_dma_device_terminate_all()
793 tasklet_schedule(&d->task); in sa11x0_dma_device_terminate_all()
894 struct sa11x0_dma_dev *d; in sa11x0_dma_probe() local
903 d = kzalloc(sizeof(*d), GFP_KERNEL); in sa11x0_dma_probe()
904 if (!d) { in sa11x0_dma_probe()
909 spin_lock_init(&d->lock); in sa11x0_dma_probe()
910 INIT_LIST_HEAD(&d->chan_pending); in sa11x0_dma_probe()
912 d->base = ioremap(res->start, resource_size(res)); in sa11x0_dma_probe()
913 if (!d->base) { in sa11x0_dma_probe()
918 tasklet_init(&d->task, sa11x0_dma_tasklet, (unsigned long)d); in sa11x0_dma_probe()
921 struct sa11x0_dma_phy *p = &d->phy[i]; in sa11x0_dma_probe()
923 p->dev = d; in sa11x0_dma_probe()
925 p->base = d->base + i * DMA_SIZE; in sa11x0_dma_probe()
935 sa11x0_dma_free_irq(pdev, i, &d->phy[i]); in sa11x0_dma_probe()
941 dma_cap_set(DMA_SLAVE, d->slave.cap_mask); in sa11x0_dma_probe()
942 dma_cap_set(DMA_CYCLIC, d->slave.cap_mask); in sa11x0_dma_probe()
943 d->slave.device_prep_slave_sg = sa11x0_dma_prep_slave_sg; in sa11x0_dma_probe()
944 d->slave.device_prep_dma_cyclic = sa11x0_dma_prep_dma_cyclic; in sa11x0_dma_probe()
945 d->slave.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); in sa11x0_dma_probe()
946 d->slave.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; in sa11x0_dma_probe()
947 d->slave.src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | in sa11x0_dma_probe()
949 d->slave.dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | in sa11x0_dma_probe()
951 ret = sa11x0_dma_init_dmadev(&d->slave, &pdev->dev); in sa11x0_dma_probe()
953 dev_warn(d->slave.dev, "failed to register slave async device: %d\n", in sa11x0_dma_probe()
958 platform_set_drvdata(pdev, d); in sa11x0_dma_probe()
962 sa11x0_dma_free_channels(&d->slave); in sa11x0_dma_probe()
964 sa11x0_dma_free_irq(pdev, i, &d->phy[i]); in sa11x0_dma_probe()
966 tasklet_kill(&d->task); in sa11x0_dma_probe()
967 iounmap(d->base); in sa11x0_dma_probe()
969 kfree(d); in sa11x0_dma_probe()
976 struct sa11x0_dma_dev *d = platform_get_drvdata(pdev); in sa11x0_dma_remove() local
979 dma_async_device_unregister(&d->slave); in sa11x0_dma_remove()
981 sa11x0_dma_free_channels(&d->slave); in sa11x0_dma_remove()
983 sa11x0_dma_free_irq(pdev, pch, &d->phy[pch]); in sa11x0_dma_remove()
984 tasklet_kill(&d->task); in sa11x0_dma_remove()
985 iounmap(d->base); in sa11x0_dma_remove()
986 kfree(d); in sa11x0_dma_remove()
993 struct sa11x0_dma_dev *d = dev_get_drvdata(dev); in sa11x0_dma_suspend() local
997 struct sa11x0_dma_phy *p = &d->phy[pch]; in sa11x0_dma_suspend()
1031 struct sa11x0_dma_dev *d = dev_get_drvdata(dev); in sa11x0_dma_resume() local
1035 struct sa11x0_dma_phy *p = &d->phy[pch]; in sa11x0_dma_resume()