Lines Matching defs:shdev
69 struct sh_dmae_device *shdev = to_sh_dev(sh_dc);
70 const struct sh_dmae_channel *chan_pdata = shdev->pdata->channel +
72 u32 val = shdev->pdata->chclr_bitwise ? 1 << chan_pdata->chclr_bit : 0;
74 __raw_writel(val, shdev->chan_reg + chan_pdata->chclr_offset);
87 static u16 dmaor_read(struct sh_dmae_device *shdev)
89 void __iomem *addr = shdev->chan_reg + DMAOR;
91 if (shdev->pdata->dmaor_is_32bit)
97 static void dmaor_write(struct sh_dmae_device *shdev, u16 data)
99 void __iomem *addr = shdev->chan_reg + DMAOR;
101 if (shdev->pdata->dmaor_is_32bit)
109 struct sh_dmae_device *shdev = to_sh_dev(sh_dc);
111 __raw_writel(data, sh_dc->base + shdev->chcr_offset);
116 struct sh_dmae_device *shdev = to_sh_dev(sh_dc);
118 return __raw_readl(sh_dc->base + shdev->chcr_offset);
126 static void sh_dmae_ctl_stop(struct sh_dmae_device *shdev)
133 dmaor = dmaor_read(shdev);
134 dmaor_write(shdev, dmaor & ~(DMAOR_NMIF | DMAOR_AE | DMAOR_DME));
139 static int sh_dmae_rst(struct sh_dmae_device *shdev)
146 dmaor = dmaor_read(shdev) & ~(DMAOR_NMIF | DMAOR_AE | DMAOR_DME);
148 if (shdev->pdata->chclr_present) {
150 for (i = 0; i < shdev->pdata->channel_num; i++) {
151 struct sh_dmae_chan *sh_chan = shdev->chan[i];
157 dmaor_write(shdev, dmaor | shdev->pdata->dmaor_init);
159 dmaor = dmaor_read(shdev);
164 dev_warn(shdev->shdma_dev.dma_dev.dev, "Can't initialize DMAOR.\n");
167 if (shdev->pdata->dmaor_init & ~dmaor)
168 dev_warn(shdev->shdma_dev.dma_dev.dev,
170 dmaor, shdev->pdata->dmaor_init);
186 struct sh_dmae_device *shdev = to_sh_dev(sh_chan);
187 const struct sh_dmae_pdata *pdata = shdev->pdata;
199 struct sh_dmae_device *shdev = to_sh_dev(sh_chan);
200 const struct sh_dmae_pdata *pdata = shdev->pdata;
223 struct sh_dmae_device *shdev = to_sh_dev(sh_chan);
226 if (shdev->pdata->needs_tend_set)
229 chcr |= CHCR_DE | shdev->chcr_ie_bit;
258 struct sh_dmae_device *shdev = to_sh_dev(sh_chan);
259 const struct sh_dmae_pdata *pdata = shdev->pdata;
261 void __iomem *addr = shdev->dmars;
272 addr = shdev->chan_reg;
327 struct sh_dmae_device *shdev = to_sh_dev(sh_chan);
328 const struct sh_dmae_pdata *pdata = shdev->pdata;
369 struct sh_dmae_device *shdev = to_sh_dev(sh_chan);
372 chcr &= ~(CHCR_DE | CHCR_TE | shdev->chcr_ie_bit);
426 static bool sh_dmae_reset(struct sh_dmae_device *shdev)
431 sh_dmae_ctl_stop(shdev);
434 ret = shdma_reset(&shdev->shdma_dev);
436 sh_dmae_rst(shdev);
443 struct sh_dmae_device *shdev = data;
445 if (!(dmaor_read(shdev) & DMAOR_AE))
448 sh_dmae_reset(shdev);
468 static bool sh_dmae_nmi_notify(struct sh_dmae_device *shdev)
471 if ((dmaor_read(shdev) & DMAOR_NMIF) == 0)
474 return sh_dmae_reset(shdev);
480 struct sh_dmae_device *shdev;
494 list_for_each_entry_rcu(shdev, &sh_dmae_devices, node) {
500 triggered = sh_dmae_nmi_notify(shdev);
516 static int sh_dmae_chan_probe(struct sh_dmae_device *shdev, int id,
519 const struct sh_dmae_channel *chan_pdata = &shdev->pdata->channel[id];
520 struct shdma_dev *sdev = &shdev->shdma_dev;
536 sh_chan->base = shdev->chan_reg + chan_pdata->offset;
554 shdev->chan[id] = sh_chan;
563 static void sh_dmae_chan_remove(struct sh_dmae_device *shdev)
568 shdma_for_each_chan(schan, &shdev->shdma_dev, i) {
578 struct sh_dmae_device *shdev = dev_get_drvdata(dev);
580 sh_dmae_ctl_stop(shdev);
586 struct sh_dmae_device *shdev = dev_get_drvdata(dev);
588 return sh_dmae_rst(shdev);
595 struct sh_dmae_device *shdev = dev_get_drvdata(dev);
597 sh_dmae_ctl_stop(shdev);
603 struct sh_dmae_device *shdev = dev_get_drvdata(dev);
606 ret = sh_dmae_rst(shdev);
610 for (i = 0; i < shdev->pdata->channel_num; i++) {
611 struct sh_dmae_chan *sh_chan = shdev->chan[i];
678 struct sh_dmae_device *shdev;
713 shdev = devm_kzalloc(&pdev->dev, sizeof(struct sh_dmae_device),
715 if (!shdev)
718 dma_dev = &shdev->shdma_dev.dma_dev;
720 shdev->chan_reg = devm_platform_ioremap_resource(pdev, 0);
721 if (IS_ERR(shdev->chan_reg))
722 return PTR_ERR(shdev->chan_reg);
724 shdev->dmars = devm_ioremap_resource(&pdev->dev, dmars);
725 if (IS_ERR(shdev->dmars))
726 return PTR_ERR(shdev->dmars);
742 shdev->shdma_dev.ops = &sh_dmae_shdma_ops;
743 shdev->shdma_dev.desc_size = sizeof(struct sh_dmae_desc);
744 err = shdma_init(&pdev->dev, &shdev->shdma_dev,
750 shdev->pdata = pdata;
753 shdev->chcr_offset = pdata->chcr_offset;
755 shdev->chcr_offset = CHCR;
758 shdev->chcr_ie_bit = pdata->chcr_ie_bit;
760 shdev->chcr_ie_bit = CHCR_IE;
762 platform_set_drvdata(pdev, shdev);
770 list_add_tail_rcu(&shdev->node, &sh_dmae_devices);
774 err = sh_dmae_rst(shdev);
793 irqflags, "DMAC Address Error", shdev);
845 err = sh_dmae_chan_probe(shdev, i, chan_irq[i], chan_flag[i]);
857 err = dma_async_device_register(&shdev->shdma_dev.dma_dev);
867 sh_dmae_chan_remove(shdev);
872 list_del_rcu(&shdev->node);
878 shdma_cleanup(&shdev->shdma_dev);
887 struct sh_dmae_device *shdev = platform_get_drvdata(pdev);
888 struct dma_device *dma_dev = &shdev->shdma_dev.dma_dev;
893 list_del_rcu(&shdev->node);
898 sh_dmae_chan_remove(shdev);
899 shdma_cleanup(&shdev->shdma_dev);