Lines Matching refs:hsdev

147 	struct sata_dwc_device	*hsdev;  member
164 #define HSDEV_FROM_HSDEVP(p) ((struct sata_dwc_device *)(p)->hsdev)
210 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel_old() local
212 struct device *dev = hsdev->dev; in sata_dwc_dma_get_channel_old()
231 struct sata_dwc_device *hsdev) in sata_dwc_dma_init_old() argument
236 hsdev->dma = devm_kzalloc(dev, sizeof(*hsdev->dma), GFP_KERNEL); in sata_dwc_dma_init_old()
237 if (!hsdev->dma) in sata_dwc_dma_init_old()
240 hsdev->dma->dev = dev; in sata_dwc_dma_init_old()
241 hsdev->dma->id = pdev->id; in sata_dwc_dma_init_old()
244 hsdev->dma->irq = irq_of_parse_and_map(np, 1); in sata_dwc_dma_init_old()
245 if (hsdev->dma->irq == NO_IRQ) { in sata_dwc_dma_init_old()
251 hsdev->dma->regs = devm_platform_ioremap_resource(pdev, 1); in sata_dwc_dma_init_old()
252 if (IS_ERR(hsdev->dma->regs)) in sata_dwc_dma_init_old()
253 return PTR_ERR(hsdev->dma->regs); in sata_dwc_dma_init_old()
256 return dw_dma_probe(hsdev->dma); in sata_dwc_dma_init_old()
259 static void sata_dwc_dma_exit_old(struct sata_dwc_device *hsdev) in sata_dwc_dma_exit_old() argument
261 if (!hsdev->dma) in sata_dwc_dma_exit_old()
264 dw_dma_remove(hsdev->dma); in sata_dwc_dma_exit_old()
296 struct sata_dwc_device *hsdev = hsdev_instance; in dma_dwc_xfer_done() local
297 struct ata_host *host = (struct ata_host *)hsdev->host; in dma_dwc_xfer_done()
331 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in dma_dwc_xfer_setup() local
336 sconf.src_addr = hsdev->dmadr; in dma_dwc_xfer_setup()
339 sconf.dst_addr = hsdev->dmadr; in dma_dwc_xfer_setup()
360 desc->callback_param = hsdev; in dma_dwc_xfer_setup()
362 dev_dbg(hsdev->dev, "%s sg: 0x%p, count: %d addr: %pa\n", __func__, in dma_dwc_xfer_setup()
363 qc->sg, qc->n_elem, &hsdev->dmadr); in dma_dwc_xfer_setup()
404 static void clear_interrupt_bit(struct sata_dwc_device *hsdev, u32 bit) in clear_interrupt_bit() argument
406 sata_dwc_writel(&hsdev->sata_dwc_regs->intpr, in clear_interrupt_bit()
407 sata_dwc_readl(&hsdev->sata_dwc_regs->intpr)); in clear_interrupt_bit()
417 struct sata_dwc_device *hsdev, uint intpr) in sata_dwc_error_intr() argument
440 clear_interrupt_bit(hsdev, SATA_DWC_INTPR_ERR); in sata_dwc_error_intr()
470 struct sata_dwc_device *hsdev = HSDEV_FROM_HOST(host); in sata_dwc_isr() local
478 hsdev->sactive_issued = 0; in sata_dwc_isr()
483 intpr = sata_dwc_readl(&hsdev->sata_dwc_regs->intpr); in sata_dwc_isr()
493 sata_dwc_error_intr(ap, hsdev, intpr); in sata_dwc_isr()
500 clear_interrupt_bit(hsdev, SATA_DWC_INTPR_NEWFP); in sata_dwc_isr()
502 tag = (u8)(sata_dwc_readl(&hsdev->sata_dwc_regs->fptagr)); in sata_dwc_isr()
507 hsdev->sactive_issued |= qcmd_tag_to_mask(tag); in sata_dwc_isr()
528 tag_mask = (hsdev->sactive_issued | sactive) ^ sactive; in sata_dwc_isr()
531 if (hsdev->sactive_issued == 0 && tag_mask == 0) { in sata_dwc_isr()
602 tag_mask = (hsdev->sactive_issued | sactive) ^ sactive; in sata_dwc_isr()
604 if (sactive != 0 || hsdev->sactive_issued > 1 || tag_mask > 1) { in sata_dwc_isr()
607 __func__, sactive, hsdev->sactive_issued, tag_mask); in sata_dwc_isr()
610 if ((tag_mask | hsdev->sactive_issued) != hsdev->sactive_issued) { in sata_dwc_isr()
613 sactive, hsdev->sactive_issued, tag_mask); in sata_dwc_isr()
695 struct sata_dwc_device *hsdev = HSDEV_FROM_HSDEVP(hsdevp); in sata_dwc_clear_dmacr() local
696 u32 dmacr = sata_dwc_readl(&hsdev->sata_dwc_regs->dmacr); in sata_dwc_clear_dmacr()
700 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, dmacr); in sata_dwc_clear_dmacr()
703 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, dmacr); in sata_dwc_clear_dmacr()
709 dev_err(hsdev->dev, in sata_dwc_clear_dmacr()
712 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_clear_dmacr()
721 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_dma_xfer_complete() local
736 sata_dwc_readl(&hsdev->sata_dwc_regs->dmacr)); in sata_dwc_dma_xfer_complete()
752 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_qc_complete() local
754 hsdev->sactive_queued = 0; in sata_dwc_qc_complete()
766 hsdev->sactive_queued = hsdev->sactive_queued & mask; in sata_dwc_qc_complete()
767 hsdev->sactive_issued = hsdev->sactive_issued & mask; in sata_dwc_qc_complete()
772 static void sata_dwc_enable_interrupts(struct sata_dwc_device *hsdev) in sata_dwc_enable_interrupts() argument
775 sata_dwc_writel(&hsdev->sata_dwc_regs->intmr, in sata_dwc_enable_interrupts()
784 sata_dwc_writel(&hsdev->sata_dwc_regs->errmr, SATA_DWC_SERROR_ERR_BITS); in sata_dwc_enable_interrupts()
786 dev_dbg(hsdev->dev, "%s: INTMR = 0x%08x, ERRMR = 0x%08x\n", in sata_dwc_enable_interrupts()
787 __func__, sata_dwc_readl(&hsdev->sata_dwc_regs->intmr), in sata_dwc_enable_interrupts()
788 sata_dwc_readl(&hsdev->sata_dwc_regs->errmr)); in sata_dwc_enable_interrupts()
815 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel() local
816 struct device *dev = hsdev->dev; in sata_dwc_dma_get_channel()
842 struct sata_dwc_device *hsdev; in sata_dwc_port_start() local
847 hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_start()
851 hsdev->host = ap->host; in sata_dwc_port_start()
865 hsdevp->hsdev = hsdev; in sata_dwc_port_start()
871 err = phy_power_on(hsdev->phy); in sata_dwc_port_start()
884 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_port_start()
889 sata_dwc_writel(&hsdev->sata_dwc_regs->dbtsr, in sata_dwc_port_start()
910 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_stop() local
916 phy_power_off(hsdev->phy); in sata_dwc_port_stop()
967 struct sata_dwc_device *hsdev = HSDEV_FROM_QC(qc); in sata_dwc_bmdma_start_by_tag() local
994 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_bmdma_start_by_tag()
997 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_bmdma_start_by_tag()
1058 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(link->ap); in sata_dwc_hardreset() local
1063 sata_dwc_enable_interrupts(hsdev); in sata_dwc_hardreset()
1066 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_hardreset()
1070 sata_dwc_writel(&hsdev->sata_dwc_regs->dbtsr, in sata_dwc_hardreset()
1136 struct sata_dwc_device *hsdev; in sata_dwc_probe() local
1149 hsdev = devm_kzalloc(dev, sizeof(*hsdev), GFP_KERNEL); in sata_dwc_probe()
1150 if (!host || !hsdev) in sata_dwc_probe()
1153 host->private_data = hsdev; in sata_dwc_probe()
1162 hsdev->sata_dwc_regs = base + SATA_DWC_REG_OFFSET; in sata_dwc_probe()
1163 hsdev->dmadr = res->start + SATA_DWC_REG_OFFSET + offsetof(struct sata_dwc_regs, dmadr); in sata_dwc_probe()
1171 idr = sata_dwc_readl(&hsdev->sata_dwc_regs->idr); in sata_dwc_probe()
1172 versionr = sata_dwc_readl(&hsdev->sata_dwc_regs->versionr); in sata_dwc_probe()
1176 hsdev->dev = dev; in sata_dwc_probe()
1179 sata_dwc_enable_interrupts(hsdev); in sata_dwc_probe()
1190 err = sata_dwc_dma_init_old(ofdev, hsdev); in sata_dwc_probe()
1196 hsdev->phy = devm_phy_optional_get(dev, "sata-phy"); in sata_dwc_probe()
1197 if (IS_ERR(hsdev->phy)) in sata_dwc_probe()
1198 return PTR_ERR(hsdev->phy); in sata_dwc_probe()
1200 err = phy_init(hsdev->phy); in sata_dwc_probe()
1216 phy_exit(hsdev->phy); in sata_dwc_probe()
1224 struct sata_dwc_device *hsdev = host->private_data; in sata_dwc_remove() local
1228 phy_exit(hsdev->phy); in sata_dwc_remove()
1232 sata_dwc_dma_exit_old(hsdev); in sata_dwc_remove()