Lines Matching refs:swdma_dev

128 	struct switchtec_dma_dev *swdma_dev;  member
271 pdev = rcu_dereference(swdma_chan->swdma_dev->pdev); in halt_channel()
295 pdev = rcu_dereference(swdma_chan->swdma_dev->pdev); in unhalt_channel()
324 pdev = rcu_dereference(swdma_chan->swdma_dev->pdev); in reset_channel()
351 pdev = rcu_dereference(swdma_chan->swdma_dev->pdev); in pause_reset_channel()
378 pdev = rcu_dereference(swdma_chan->swdma_dev->pdev); in channel_op()
471 if (!rcu_dereference(swdma_chan->swdma_dev->pdev)) { in switchtec_dma_cleanup_completed()
555 if (!rcu_dereference(swdma_chan->swdma_dev->pdev)) { in switchtec_dma_chan_stop()
752 struct switchtec_dma_dev *swdma_dev = swdma_chan->swdma_dev; in switchtec_dma_issue_pending() local
761 if (!rcu_dereference(swdma_dev->pdev)) { in switchtec_dma_issue_pending()
782 pdev = rcu_dereference(swdma_chan->swdma_dev->pdev); in switchtec_dma_pause()
807 pdev = rcu_dereference(swdma_chan->swdma_dev->pdev); in switchtec_dma_resume()
842 struct switchtec_dma_dev *swdma_dev = dma; in switchtec_dma_chan_status_isr() local
843 struct dma_device *dma_dev = &swdma_dev->dma_dev; in switchtec_dma_chan_status_isr()
858 if (!rcu_dereference(swdma_dev->pdev)) { in switchtec_dma_chan_status_isr()
881 struct switchtec_dma_dev *swdma_dev = swdma_chan->swdma_dev; in switchtec_dma_free_desc() local
887 dma_free_coherent(swdma_dev->dma_dev.dev, size, in switchtec_dma_free_desc()
892 dma_free_coherent(swdma_dev->dma_dev.dev, size, in switchtec_dma_free_desc()
901 struct switchtec_dma_dev *swdma_dev = swdma_chan->swdma_dev; in switchtec_dma_alloc_desc() local
913 swdma_chan->hw_sq = dma_alloc_coherent(swdma_dev->dma_dev.dev, size, in switchtec_dma_alloc_desc()
922 swdma_chan->hw_cq = dma_alloc_coherent(swdma_dev->dma_dev.dev, size, in switchtec_dma_alloc_desc()
949 pdev = rcu_dereference(swdma_dev->pdev); in switchtec_dma_alloc_desc()
977 struct switchtec_dma_dev *swdma_dev = swdma_chan->swdma_dev; in switchtec_dma_alloc_chan_resources() local
1004 if (!rcu_dereference(swdma_dev->pdev)) { in switchtec_dma_alloc_chan_resources()
1050 static int switchtec_dma_chan_init(struct switchtec_dma_dev *swdma_dev, in switchtec_dma_chan_init() argument
1053 struct dma_device *dma = &swdma_dev->dma_dev; in switchtec_dma_chan_init()
1065 swdma_chan->swdma_dev = swdma_dev; in switchtec_dma_chan_init()
1074 swdma_dev->bar + SWITCHTEC_DMAC_CHAN_CFG_STS_OFFSET + in switchtec_dma_chan_init()
1077 swdma_dev->bar + SWITCHTEC_DMAC_CHAN_CTRL_OFFSET + in switchtec_dma_chan_init()
1080 swdma_dev->swdma_chans[i] = swdma_chan; in switchtec_dma_chan_init()
1149 struct switchtec_dma_dev *swdma_dev) in switchtec_dma_chans_release() argument
1153 for (i = 0; i < swdma_dev->chan_cnt; i++) in switchtec_dma_chans_release()
1154 switchtec_dma_chan_free(pdev, swdma_dev->swdma_chans[i]); in switchtec_dma_chans_release()
1159 static int switchtec_dma_chans_enumerate(struct switchtec_dma_dev *swdma_dev, in switchtec_dma_chans_enumerate() argument
1162 struct dma_device *dma = &swdma_dev->dma_dev; in switchtec_dma_chans_enumerate()
1165 swdma_dev->swdma_chans = kzalloc_objs(*swdma_dev->swdma_chans, chan_cnt); in switchtec_dma_chans_enumerate()
1167 if (!swdma_dev->swdma_chans) in switchtec_dma_chans_enumerate()
1170 base = readw(swdma_dev->bar + SWITCHTEC_REG_SE_BUF_BASE); in switchtec_dma_chans_enumerate()
1171 cnt = readw(swdma_dev->bar + SWITCHTEC_REG_SE_BUF_CNT); in switchtec_dma_chans_enumerate()
1179 rc = switchtec_dma_chan_init(swdma_dev, pdev, i); in switchtec_dma_chans_enumerate()
1192 switchtec_dma_chan_free(pdev, swdma_dev->swdma_chans[i]); in switchtec_dma_chans_enumerate()
1194 kfree(swdma_dev->swdma_chans); in switchtec_dma_chans_enumerate()
1201 struct switchtec_dma_dev *swdma_dev = in switchtec_dma_release() local
1205 for (i = 0; i < swdma_dev->chan_cnt; i++) in switchtec_dma_release()
1206 kfree(swdma_dev->swdma_chans[i]); in switchtec_dma_release()
1208 kfree(swdma_dev->swdma_chans); in switchtec_dma_release()
1211 kfree(swdma_dev); in switchtec_dma_release()
1216 struct switchtec_dma_dev *swdma_dev; in switchtec_dma_create() local
1224 swdma_dev = kzalloc_obj(*swdma_dev); in switchtec_dma_create()
1225 if (!swdma_dev) in switchtec_dma_create()
1228 swdma_dev->bar = ioremap(pci_resource_start(pdev, 0), in switchtec_dma_create()
1231 RCU_INIT_POINTER(swdma_dev->pdev, pdev); in switchtec_dma_create()
1238 irq = readw(swdma_dev->bar + SWITCHTEC_REG_CHAN_STS_VEC); in switchtec_dma_create()
1242 swdma_dev, KBUILD_MODNAME); in switchtec_dma_create()
1246 swdma_dev->chan_status_irq = irq; in switchtec_dma_create()
1248 chan_cnt = readl(swdma_dev->bar + SWITCHTEC_REG_CHAN_CNT); in switchtec_dma_create()
1255 chan_cnt = switchtec_dma_chans_enumerate(swdma_dev, pdev, chan_cnt); in switchtec_dma_create()
1263 swdma_dev->chan_cnt = chan_cnt; in switchtec_dma_create()
1265 dma = &swdma_dev->dma_dev; in switchtec_dma_create()
1293 pci_set_drvdata(pdev, swdma_dev); in switchtec_dma_create()
1298 switchtec_dma_chans_release(pdev, swdma_dev); in switchtec_dma_create()
1301 if (swdma_dev->chan_status_irq) in switchtec_dma_create()
1302 free_irq(swdma_dev->chan_status_irq, swdma_dev); in switchtec_dma_create()
1304 iounmap(swdma_dev->bar); in switchtec_dma_create()
1305 kfree(swdma_dev); in switchtec_dma_create()
1344 struct switchtec_dma_dev *swdma_dev = pci_get_drvdata(pdev); in switchtec_dma_remove() local
1346 switchtec_dma_chans_release(pdev, swdma_dev); in switchtec_dma_remove()
1348 rcu_assign_pointer(swdma_dev->pdev, NULL); in switchtec_dma_remove()
1351 pci_free_irq(pdev, swdma_dev->chan_status_irq, swdma_dev); in switchtec_dma_remove()
1355 dma_async_device_unregister(&swdma_dev->dma_dev); in switchtec_dma_remove()
1357 iounmap(swdma_dev->bar); in switchtec_dma_remove()