Lines Matching refs:hsdev
142 struct sata_dwc_device *hsdev; member
159 #define HSDEV_FROM_HSDEVP(p) ((struct sata_dwc_device *)(p)->hsdev)
205 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel_old() local
207 struct device *dev = hsdev->dev; in sata_dwc_dma_get_channel_old()
226 struct sata_dwc_device *hsdev) in sata_dwc_dma_init_old() argument
231 hsdev->dma = devm_kzalloc(dev, sizeof(*hsdev->dma), GFP_KERNEL); in sata_dwc_dma_init_old()
232 if (!hsdev->dma) in sata_dwc_dma_init_old()
235 hsdev->dma->dev = dev; in sata_dwc_dma_init_old()
236 hsdev->dma->id = pdev->id; in sata_dwc_dma_init_old()
239 hsdev->dma->irq = irq_of_parse_and_map(np, 1); in sata_dwc_dma_init_old()
240 if (!hsdev->dma->irq) { in sata_dwc_dma_init_old()
246 hsdev->dma->regs = devm_platform_ioremap_resource(pdev, 1); in sata_dwc_dma_init_old()
247 if (IS_ERR(hsdev->dma->regs)) in sata_dwc_dma_init_old()
248 return PTR_ERR(hsdev->dma->regs); in sata_dwc_dma_init_old()
251 return dw_dma_probe(hsdev->dma); in sata_dwc_dma_init_old()
254 static void sata_dwc_dma_exit_old(struct sata_dwc_device *hsdev) in sata_dwc_dma_exit_old() argument
256 if (!hsdev->dma) in sata_dwc_dma_exit_old()
259 dw_dma_remove(hsdev->dma); in sata_dwc_dma_exit_old()
291 struct sata_dwc_device *hsdev = hsdev_instance; in dma_dwc_xfer_done() local
292 struct ata_host *host = (struct ata_host *)hsdev->host; in dma_dwc_xfer_done()
326 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in dma_dwc_xfer_setup() local
331 sconf.src_addr = hsdev->dmadr; in dma_dwc_xfer_setup()
334 sconf.dst_addr = hsdev->dmadr; in dma_dwc_xfer_setup()
355 desc->callback_param = hsdev; in dma_dwc_xfer_setup()
357 dev_dbg(hsdev->dev, "%s sg: 0x%p, count: %d addr: %pa\n", __func__, in dma_dwc_xfer_setup()
358 qc->sg, qc->n_elem, &hsdev->dmadr); in dma_dwc_xfer_setup()
399 static void clear_interrupt_bit(struct sata_dwc_device *hsdev, u32 bit) in clear_interrupt_bit() argument
401 sata_dwc_writel(&hsdev->sata_dwc_regs->intpr, in clear_interrupt_bit()
402 sata_dwc_readl(&hsdev->sata_dwc_regs->intpr)); in clear_interrupt_bit()
412 struct sata_dwc_device *hsdev, uint intpr) in sata_dwc_error_intr() argument
435 clear_interrupt_bit(hsdev, SATA_DWC_INTPR_ERR); in sata_dwc_error_intr()
465 struct sata_dwc_device *hsdev = HSDEV_FROM_HOST(host); in sata_dwc_isr() local
473 hsdev->sactive_issued = 0; in sata_dwc_isr()
478 intpr = sata_dwc_readl(&hsdev->sata_dwc_regs->intpr); in sata_dwc_isr()
488 sata_dwc_error_intr(ap, hsdev, intpr); in sata_dwc_isr()
495 clear_interrupt_bit(hsdev, SATA_DWC_INTPR_NEWFP); in sata_dwc_isr()
497 tag = (u8)(sata_dwc_readl(&hsdev->sata_dwc_regs->fptagr)); in sata_dwc_isr()
502 hsdev->sactive_issued |= qcmd_tag_to_mask(tag); in sata_dwc_isr()
523 tag_mask = (hsdev->sactive_issued | sactive) ^ sactive; in sata_dwc_isr()
526 if (hsdev->sactive_issued == 0 && tag_mask == 0) { in sata_dwc_isr()
597 tag_mask = (hsdev->sactive_issued | sactive) ^ sactive; in sata_dwc_isr()
599 if (sactive != 0 || hsdev->sactive_issued > 1 || tag_mask > 1) { in sata_dwc_isr()
602 __func__, sactive, hsdev->sactive_issued, tag_mask); in sata_dwc_isr()
605 if ((tag_mask | hsdev->sactive_issued) != hsdev->sactive_issued) { in sata_dwc_isr()
608 sactive, hsdev->sactive_issued, tag_mask); in sata_dwc_isr()
688 struct sata_dwc_device *hsdev = HSDEV_FROM_HSDEVP(hsdevp); in sata_dwc_clear_dmacr() local
689 u32 dmacr = sata_dwc_readl(&hsdev->sata_dwc_regs->dmacr); in sata_dwc_clear_dmacr()
693 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, dmacr); in sata_dwc_clear_dmacr()
696 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, dmacr); in sata_dwc_clear_dmacr()
702 dev_err(hsdev->dev, in sata_dwc_clear_dmacr()
705 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_clear_dmacr()
714 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_dma_xfer_complete() local
729 sata_dwc_readl(&hsdev->sata_dwc_regs->dmacr)); in sata_dwc_dma_xfer_complete()
745 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_qc_complete() local
747 hsdev->sactive_queued = 0; in sata_dwc_qc_complete()
759 hsdev->sactive_queued = hsdev->sactive_queued & mask; in sata_dwc_qc_complete()
760 hsdev->sactive_issued = hsdev->sactive_issued & mask; in sata_dwc_qc_complete()
765 static void sata_dwc_enable_interrupts(struct sata_dwc_device *hsdev) in sata_dwc_enable_interrupts() argument
768 sata_dwc_writel(&hsdev->sata_dwc_regs->intmr, in sata_dwc_enable_interrupts()
777 sata_dwc_writel(&hsdev->sata_dwc_regs->errmr, SATA_DWC_SERROR_ERR_BITS); in sata_dwc_enable_interrupts()
779 dev_dbg(hsdev->dev, "%s: INTMR = 0x%08x, ERRMR = 0x%08x\n", in sata_dwc_enable_interrupts()
780 __func__, sata_dwc_readl(&hsdev->sata_dwc_regs->intmr), in sata_dwc_enable_interrupts()
781 sata_dwc_readl(&hsdev->sata_dwc_regs->errmr)); in sata_dwc_enable_interrupts()
808 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel() local
809 struct device *dev = hsdev->dev; in sata_dwc_dma_get_channel()
835 struct sata_dwc_device *hsdev; in sata_dwc_port_start() local
840 hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_start()
844 hsdev->host = ap->host; in sata_dwc_port_start()
858 hsdevp->hsdev = hsdev; in sata_dwc_port_start()
864 err = phy_power_on(hsdev->phy); in sata_dwc_port_start()
877 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_port_start()
882 sata_dwc_writel(&hsdev->sata_dwc_regs->dbtsr, in sata_dwc_port_start()
903 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_stop() local
909 phy_power_off(hsdev->phy); in sata_dwc_port_stop()
960 struct sata_dwc_device *hsdev = HSDEV_FROM_QC(qc); in sata_dwc_bmdma_start_by_tag() local
987 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_bmdma_start_by_tag()
990 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_bmdma_start_by_tag()
1051 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(link->ap); in sata_dwc_hardreset() local
1056 sata_dwc_enable_interrupts(hsdev); in sata_dwc_hardreset()
1059 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_hardreset()
1063 sata_dwc_writel(&hsdev->sata_dwc_regs->dbtsr, in sata_dwc_hardreset()
1129 struct sata_dwc_device *hsdev; in sata_dwc_probe() local
1142 hsdev = devm_kzalloc(dev, sizeof(*hsdev), GFP_KERNEL); in sata_dwc_probe()
1143 if (!host || !hsdev) in sata_dwc_probe()
1146 host->private_data = hsdev; in sata_dwc_probe()
1155 hsdev->sata_dwc_regs = base + SATA_DWC_REG_OFFSET; in sata_dwc_probe()
1156 hsdev->dmadr = res->start + SATA_DWC_REG_OFFSET + offsetof(struct sata_dwc_regs, dmadr); in sata_dwc_probe()
1164 idr = sata_dwc_readl(&hsdev->sata_dwc_regs->idr); in sata_dwc_probe()
1165 versionr = sata_dwc_readl(&hsdev->sata_dwc_regs->versionr); in sata_dwc_probe()
1169 hsdev->dev = dev; in sata_dwc_probe()
1172 sata_dwc_enable_interrupts(hsdev); in sata_dwc_probe()
1183 err = sata_dwc_dma_init_old(ofdev, hsdev); in sata_dwc_probe()
1189 hsdev->phy = devm_phy_optional_get(dev, "sata-phy"); in sata_dwc_probe()
1190 if (IS_ERR(hsdev->phy)) in sata_dwc_probe()
1191 return PTR_ERR(hsdev->phy); in sata_dwc_probe()
1193 err = phy_init(hsdev->phy); in sata_dwc_probe()
1209 phy_exit(hsdev->phy); in sata_dwc_probe()
1217 struct sata_dwc_device *hsdev = host->private_data; in sata_dwc_remove() local
1221 phy_exit(hsdev->phy); in sata_dwc_remove()
1225 sata_dwc_dma_exit_old(hsdev); in sata_dwc_remove()