Lines Matching defs:sdev
241 static void sprd_dma_glb_update(struct sprd_dma_dev *sdev, u32 reg,
244 u32 orig = readl(sdev->glb_base + reg);
248 writel(tmp, sdev->glb_base + reg);
261 static int sprd_dma_enable(struct sprd_dma_dev *sdev)
265 ret = clk_prepare_enable(sdev->clk);
273 if (!IS_ERR(sdev->ashb_clk))
274 ret = clk_prepare_enable(sdev->ashb_clk);
279 static void sprd_dma_disable(struct sprd_dma_dev *sdev)
281 clk_disable_unprepare(sdev->clk);
286 if (!IS_ERR(sdev->ashb_clk))
287 clk_disable_unprepare(sdev->ashb_clk);
292 struct sprd_dma_dev *sdev = to_sprd_dma_dev(&schan->vc.chan);
299 writel(schan->chn_num + 1, sdev->glb_base + uid_offset);
305 struct sprd_dma_dev *sdev = to_sprd_dma_dev(&schan->vc.chan);
312 writel(0, sdev->glb_base + uid_offset);
342 struct sprd_dma_dev *sdev = to_sprd_dma_dev(&schan->vc.chan);
358 dev_warn(sdev->dma_dev.dev,
401 struct sprd_dma_dev *sdev = to_sprd_dma_dev(&schan->vc.chan);
422 dev_warn(sdev->dma_dev.dev, "incorrect dma interrupt type\n");
436 struct sprd_dma_dev *sdev = to_sprd_dma_dev(&schan->vc.chan);
447 sprd_dma_glb_update(sdev, SPRD_DMA_GLB_2STAGE_GRP1, val, val);
457 sprd_dma_glb_update(sdev, SPRD_DMA_GLB_2STAGE_GRP2, val, val);
467 sprd_dma_glb_update(sdev, SPRD_DMA_GLB_2STAGE_GRP1, val, val);
477 sprd_dma_glb_update(sdev, SPRD_DMA_GLB_2STAGE_GRP2, val, val);
481 dev_err(sdev->dma_dev.dev, "invalid channel mode setting %d\n",
491 struct sprd_dma_dev *sdev = to_sprd_dma_dev(&schan->vc.chan);
508 sprd_dma_glb_update(sdev, reg, val, enable ? val : 0);
590 struct sprd_dma_dev *sdev = (struct sprd_dma_dev *)dev_id;
591 u32 irq_status = readl(sdev->glb_base + SPRD_DMA_GLB_INT_MSK_STS);
602 schan = &sdev->channels[i];
752 struct sprd_dma_dev *sdev = to_sprd_dma_dev(chan);
764 dev_err(sdev->dma_dev.dev, "invalid source step\n");
780 dev_err(sdev->dma_dev.dev, "invalid destination step\n");
788 dev_err(sdev->dma_dev.dev, "invalid source datawidth\n");
794 dev_err(sdev->dma_dev.dev, "invalid destination datawidth\n");
1115 struct sprd_dma_dev *sdev;
1130 sdev = devm_kzalloc(&pdev->dev,
1131 struct_size(sdev, channels, chn_count),
1133 if (!sdev)
1136 sdev->clk = devm_clk_get(&pdev->dev, "enable");
1137 if (IS_ERR(sdev->clk)) {
1139 return PTR_ERR(sdev->clk);
1143 sdev->ashb_clk = devm_clk_get(&pdev->dev, "ashb_eb");
1144 if (IS_ERR(sdev->ashb_clk))
1154 sdev->irq = platform_get_irq(pdev, 0);
1155 if (sdev->irq > 0) {
1156 ret = devm_request_irq(&pdev->dev, sdev->irq, dma_irq_handle,
1157 0, "sprd_dma", (void *)sdev);
1166 sdev->glb_base = devm_platform_ioremap_resource(pdev, 0);
1167 if (IS_ERR(sdev->glb_base))
1168 return PTR_ERR(sdev->glb_base);
1170 dma_cap_set(DMA_MEMCPY, sdev->dma_dev.cap_mask);
1171 sdev->total_chns = chn_count;
1172 INIT_LIST_HEAD(&sdev->dma_dev.channels);
1173 INIT_LIST_HEAD(&sdev->dma_dev.global_node);
1174 sdev->dma_dev.dev = &pdev->dev;
1175 sdev->dma_dev.device_alloc_chan_resources = sprd_dma_alloc_chan_resources;
1176 sdev->dma_dev.device_free_chan_resources = sprd_dma_free_chan_resources;
1177 sdev->dma_dev.device_tx_status = sprd_dma_tx_status;
1178 sdev->dma_dev.device_issue_pending = sprd_dma_issue_pending;
1179 sdev->dma_dev.device_prep_dma_memcpy = sprd_dma_prep_dma_memcpy;
1180 sdev->dma_dev.device_prep_slave_sg = sprd_dma_prep_slave_sg;
1181 sdev->dma_dev.device_config = sprd_dma_slave_config;
1182 sdev->dma_dev.device_pause = sprd_dma_pause;
1183 sdev->dma_dev.device_resume = sprd_dma_resume;
1184 sdev->dma_dev.device_terminate_all = sprd_dma_terminate_all;
1187 dma_chn = &sdev->channels[i];
1191 dma_chn->chn_base = sdev->glb_base + SPRD_DMA_CHN_REG_OFFSET +
1195 vchan_init(&dma_chn->vc, &sdev->dma_dev);
1198 platform_set_drvdata(pdev, sdev);
1199 ret = sprd_dma_enable(sdev);
1210 ret = dma_async_device_register(&sdev->dma_dev);
1216 sprd_dma_info.dma_cap = sdev->dma_dev.cap_mask;
1226 dma_async_device_unregister(&sdev->dma_dev);
1231 sprd_dma_disable(sdev);
1237 struct sprd_dma_dev *sdev = platform_get_drvdata(pdev);
1243 if (sdev->irq > 0)
1244 devm_free_irq(&pdev->dev, sdev->irq, sdev);
1246 list_for_each_entry_safe(c, cn, &sdev->dma_dev.channels,
1253 dma_async_device_unregister(&sdev->dma_dev);
1254 sprd_dma_disable(sdev);
1269 struct sprd_dma_dev *sdev = dev_get_drvdata(dev);
1271 sprd_dma_disable(sdev);
1277 struct sprd_dma_dev *sdev = dev_get_drvdata(dev);
1280 ret = sprd_dma_enable(sdev);
1282 dev_err(sdev->dma_dev.dev, "enable dma failed\n");