Lines Matching refs:hsdev
155 struct sata_dwc_device *hsdev;
172 #define HSDEV_FROM_HSDEVP(p) ((struct sata_dwc_device *)(p)->hsdev)
220 struct sata_dwc_device *hsdev = hsdevp->hsdev;
224 dws->dma_dev = hsdev->dev;
232 dev_err(hsdev->dev, "%s: dma channel unavailable\n",
241 struct sata_dwc_device *hsdev)
246 hsdev->dma = devm_kzalloc(&pdev->dev, sizeof(*hsdev->dma), GFP_KERNEL);
247 if (!hsdev->dma)
250 hsdev->dma->dev = &pdev->dev;
251 hsdev->dma->id = pdev->id;
254 hsdev->dma->irq = irq_of_parse_and_map(np, 1);
255 if (hsdev->dma->irq == NO_IRQ) {
262 hsdev->dma->regs = devm_ioremap_resource(&pdev->dev, res);
263 if (IS_ERR(hsdev->dma->regs))
264 return PTR_ERR(hsdev->dma->regs);
267 return dw_dma_probe(hsdev->dma);
270 static void sata_dwc_dma_exit_old(struct sata_dwc_device *hsdev)
272 if (!hsdev->dma)
275 dw_dma_remove(hsdev->dma);
336 struct sata_dwc_device *hsdev = hsdev_instance;
337 struct ata_host *host = (struct ata_host *)hsdev->host;
371 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap);
376 sconf.src_addr = hsdev->dmadr;
379 sconf.dst_addr = hsdev->dmadr;
400 desc->callback_param = hsdev;
402 dev_dbg(hsdev->dev, "%s sg: 0x%p, count: %d addr: %pa\n", __func__,
403 qc->sg, qc->n_elem, &hsdev->dmadr);
444 static void clear_interrupt_bit(struct sata_dwc_device *hsdev, u32 bit)
446 sata_dwc_writel(&hsdev->sata_dwc_regs->intpr,
447 sata_dwc_readl(&hsdev->sata_dwc_regs->intpr));
457 struct sata_dwc_device *hsdev, uint intpr)
480 clear_interrupt_bit(hsdev, SATA_DWC_INTPR_ERR);
510 struct sata_dwc_device *hsdev = HSDEV_FROM_HOST(host);
518 hsdev->sactive_issued = 0;
523 intpr = sata_dwc_readl(&hsdev->sata_dwc_regs->intpr);
533 sata_dwc_error_intr(ap, hsdev, intpr);
540 clear_interrupt_bit(hsdev, SATA_DWC_INTPR_NEWFP);
542 tag = (u8)(sata_dwc_readl(&hsdev->sata_dwc_regs->fptagr));
547 hsdev->sactive_issued |= qcmd_tag_to_mask(tag);
562 tag_mask = (hsdev->sactive_issued | sactive) ^ sactive;
565 if (hsdev->sactive_issued == 0 && tag_mask == 0) {
636 tag_mask = (hsdev->sactive_issued | sactive) ^ sactive;
638 if (sactive != 0 || hsdev->sactive_issued > 1 || tag_mask > 1) {
641 __func__, sactive, hsdev->sactive_issued, tag_mask);
644 if ((tag_mask | hsdev->sactive_issued) != hsdev->sactive_issued) {
647 sactive, hsdev->sactive_issued, tag_mask);
724 struct sata_dwc_device *hsdev = HSDEV_FROM_HSDEVP(hsdevp);
725 u32 dmacr = sata_dwc_readl(&hsdev->sata_dwc_regs->dmacr);
729 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, dmacr);
732 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, dmacr);
738 dev_err(hsdev->dev,
741 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr,
750 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap);
767 sata_dwc_readl(&hsdev->sata_dwc_regs->dmacr));
776 sata_dwc_readl(&hsdev->sata_dwc_regs->dmacr));
793 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap);
795 hsdev->sactive_queued = 0;
808 hsdev->sactive_queued = hsdev->sactive_queued & mask;
809 hsdev->sactive_issued = hsdev->sactive_issued & mask;
814 static void sata_dwc_enable_interrupts(struct sata_dwc_device *hsdev)
817 sata_dwc_writel(&hsdev->sata_dwc_regs->intmr,
826 sata_dwc_writel(&hsdev->sata_dwc_regs->errmr, SATA_DWC_SERROR_ERR_BITS);
828 dev_dbg(hsdev->dev, "%s: INTMR = 0x%08x, ERRMR = 0x%08x\n",
829 __func__, sata_dwc_readl(&hsdev->sata_dwc_regs->intmr),
830 sata_dwc_readl(&hsdev->sata_dwc_regs->errmr));
857 struct sata_dwc_device *hsdev = hsdevp->hsdev;
858 struct device *dev = hsdev->dev;
884 struct sata_dwc_device *hsdev;
889 hsdev = HSDEV_FROM_AP(ap);
893 hsdev->host = ap->host;
907 hsdevp->hsdev = hsdev;
913 err = phy_power_on(hsdev->phy);
926 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr,
931 sata_dwc_writel(&hsdev->sata_dwc_regs->dbtsr,
952 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap);
958 phy_power_off(hsdev->phy);
1015 struct sata_dwc_device *hsdev = HSDEV_FROM_QC(qc);
1048 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr,
1051 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr,
1128 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(link->ap);
1133 sata_dwc_enable_interrupts(hsdev);
1136 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr,
1140 sata_dwc_writel(&hsdev->sata_dwc_regs->dbtsr,
1204 struct sata_dwc_device *hsdev;
1218 hsdev = devm_kzalloc(&ofdev->dev, sizeof(*hsdev), GFP_KERNEL);
1219 if (!host || !hsdev)
1222 host->private_data = hsdev;
1232 hsdev->sata_dwc_regs = base + SATA_DWC_REG_OFFSET;
1233 hsdev->dmadr = res->start + SATA_DWC_REG_OFFSET + offsetof(struct sata_dwc_regs, dmadr);
1241 idr = sata_dwc_readl(&hsdev->sata_dwc_regs->idr);
1242 versionr = sata_dwc_readl(&hsdev->sata_dwc_regs->versionr);
1247 hsdev->dev = &ofdev->dev;
1250 sata_dwc_enable_interrupts(hsdev);
1261 err = sata_dwc_dma_init_old(ofdev, hsdev);
1267 hsdev->phy = devm_phy_optional_get(hsdev->dev, "sata-phy");
1268 if (IS_ERR(hsdev->phy))
1269 return PTR_ERR(hsdev->phy);
1271 err = phy_init(hsdev->phy);
1287 phy_exit(hsdev->phy);
1295 struct sata_dwc_device *hsdev = host->private_data;
1299 phy_exit(hsdev->phy);
1303 sata_dwc_dma_exit_old(hsdev);