Lines Matching refs:hsdev

151 	struct sata_dwc_device	*hsdev;  member
168 #define HSDEV_FROM_HSDEVP(p) ((struct sata_dwc_device *)(p)->hsdev)
216 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel_old() local
220 dws->dma_dev = hsdev->dev; in sata_dwc_dma_get_channel_old()
228 dev_err(hsdev->dev, "%s: dma channel unavailable\n", in sata_dwc_dma_get_channel_old()
237 struct sata_dwc_device *hsdev) in sata_dwc_dma_init_old() argument
242 hsdev->dma = devm_kzalloc(&pdev->dev, sizeof(*hsdev->dma), GFP_KERNEL); in sata_dwc_dma_init_old()
243 if (!hsdev->dma) in sata_dwc_dma_init_old()
246 hsdev->dma->dev = &pdev->dev; in sata_dwc_dma_init_old()
247 hsdev->dma->id = pdev->id; in sata_dwc_dma_init_old()
250 hsdev->dma->irq = irq_of_parse_and_map(np, 1); in sata_dwc_dma_init_old()
251 if (hsdev->dma->irq == NO_IRQ) { in sata_dwc_dma_init_old()
258 hsdev->dma->regs = devm_ioremap_resource(&pdev->dev, res); in sata_dwc_dma_init_old()
259 if (IS_ERR(hsdev->dma->regs)) in sata_dwc_dma_init_old()
260 return PTR_ERR(hsdev->dma->regs); in sata_dwc_dma_init_old()
263 return dw_dma_probe(hsdev->dma); in sata_dwc_dma_init_old()
266 static void sata_dwc_dma_exit_old(struct sata_dwc_device *hsdev) in sata_dwc_dma_exit_old() argument
268 if (!hsdev->dma) in sata_dwc_dma_exit_old()
271 dw_dma_remove(hsdev->dma); in sata_dwc_dma_exit_old()
332 struct sata_dwc_device *hsdev = hsdev_instance; in dma_dwc_xfer_done() local
333 struct ata_host *host = (struct ata_host *)hsdev->host; in dma_dwc_xfer_done()
367 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in dma_dwc_xfer_setup() local
372 sconf.src_addr = hsdev->dmadr; in dma_dwc_xfer_setup()
375 sconf.dst_addr = hsdev->dmadr; in dma_dwc_xfer_setup()
396 desc->callback_param = hsdev; in dma_dwc_xfer_setup()
398 dev_dbg(hsdev->dev, "%s sg: 0x%p, count: %d addr: %pa\n", __func__, in dma_dwc_xfer_setup()
399 qc->sg, qc->n_elem, &hsdev->dmadr); in dma_dwc_xfer_setup()
440 static void clear_interrupt_bit(struct sata_dwc_device *hsdev, u32 bit) in clear_interrupt_bit() argument
442 sata_dwc_writel(&hsdev->sata_dwc_regs->intpr, in clear_interrupt_bit()
443 sata_dwc_readl(&hsdev->sata_dwc_regs->intpr)); in clear_interrupt_bit()
453 struct sata_dwc_device *hsdev, uint intpr) in sata_dwc_error_intr() argument
476 clear_interrupt_bit(hsdev, SATA_DWC_INTPR_ERR); in sata_dwc_error_intr()
506 struct sata_dwc_device *hsdev = HSDEV_FROM_HOST(host); in sata_dwc_isr() local
514 hsdev->sactive_issued = 0; in sata_dwc_isr()
519 intpr = sata_dwc_readl(&hsdev->sata_dwc_regs->intpr); in sata_dwc_isr()
529 sata_dwc_error_intr(ap, hsdev, intpr); in sata_dwc_isr()
536 clear_interrupt_bit(hsdev, SATA_DWC_INTPR_NEWFP); in sata_dwc_isr()
538 tag = (u8)(sata_dwc_readl(&hsdev->sata_dwc_regs->fptagr)); in sata_dwc_isr()
543 hsdev->sactive_issued |= qcmd_tag_to_mask(tag); in sata_dwc_isr()
563 tag_mask = (hsdev->sactive_issued | sactive) ^ sactive; in sata_dwc_isr()
566 if (hsdev->sactive_issued == 0 && tag_mask == 0) { in sata_dwc_isr()
637 tag_mask = (hsdev->sactive_issued | sactive) ^ sactive; in sata_dwc_isr()
639 if (sactive != 0 || hsdev->sactive_issued > 1 || tag_mask > 1) { in sata_dwc_isr()
642 __func__, sactive, hsdev->sactive_issued, tag_mask); in sata_dwc_isr()
645 if ((tag_mask | hsdev->sactive_issued) != hsdev->sactive_issued) { in sata_dwc_isr()
648 sactive, hsdev->sactive_issued, tag_mask); in sata_dwc_isr()
730 struct sata_dwc_device *hsdev = HSDEV_FROM_HSDEVP(hsdevp); in sata_dwc_clear_dmacr() local
731 u32 dmacr = sata_dwc_readl(&hsdev->sata_dwc_regs->dmacr); in sata_dwc_clear_dmacr()
735 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, dmacr); in sata_dwc_clear_dmacr()
738 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, dmacr); in sata_dwc_clear_dmacr()
744 dev_err(hsdev->dev, in sata_dwc_clear_dmacr()
747 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_clear_dmacr()
756 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_dma_xfer_complete() local
773 sata_dwc_readl(&hsdev->sata_dwc_regs->dmacr)); in sata_dwc_dma_xfer_complete()
782 sata_dwc_readl(&hsdev->sata_dwc_regs->dmacr)); in sata_dwc_dma_xfer_complete()
799 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_qc_complete() local
801 hsdev->sactive_queued = 0; in sata_dwc_qc_complete()
814 hsdev->sactive_queued = hsdev->sactive_queued & mask; in sata_dwc_qc_complete()
815 hsdev->sactive_issued = hsdev->sactive_issued & mask; in sata_dwc_qc_complete()
820 static void sata_dwc_enable_interrupts(struct sata_dwc_device *hsdev) in sata_dwc_enable_interrupts() argument
823 sata_dwc_writel(&hsdev->sata_dwc_regs->intmr, in sata_dwc_enable_interrupts()
832 sata_dwc_writel(&hsdev->sata_dwc_regs->errmr, SATA_DWC_SERROR_ERR_BITS); in sata_dwc_enable_interrupts()
834 dev_dbg(hsdev->dev, "%s: INTMR = 0x%08x, ERRMR = 0x%08x\n", in sata_dwc_enable_interrupts()
835 __func__, sata_dwc_readl(&hsdev->sata_dwc_regs->intmr), in sata_dwc_enable_interrupts()
836 sata_dwc_readl(&hsdev->sata_dwc_regs->errmr)); in sata_dwc_enable_interrupts()
863 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel() local
864 struct device *dev = hsdev->dev; in sata_dwc_dma_get_channel()
890 struct sata_dwc_device *hsdev; in sata_dwc_port_start() local
895 hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_start()
899 hsdev->host = ap->host; in sata_dwc_port_start()
913 hsdevp->hsdev = hsdev; in sata_dwc_port_start()
919 err = phy_power_on(hsdev->phy); in sata_dwc_port_start()
932 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_port_start()
937 sata_dwc_writel(&hsdev->sata_dwc_regs->dbtsr, in sata_dwc_port_start()
958 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(ap); in sata_dwc_port_stop() local
964 phy_power_off(hsdev->phy); in sata_dwc_port_stop()
1021 struct sata_dwc_device *hsdev = HSDEV_FROM_QC(qc); in sata_dwc_bmdma_start_by_tag() local
1054 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_bmdma_start_by_tag()
1057 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_bmdma_start_by_tag()
1134 struct sata_dwc_device *hsdev = HSDEV_FROM_AP(link->ap); in sata_dwc_hardreset() local
1139 sata_dwc_enable_interrupts(hsdev); in sata_dwc_hardreset()
1142 sata_dwc_writel(&hsdev->sata_dwc_regs->dmacr, in sata_dwc_hardreset()
1146 sata_dwc_writel(&hsdev->sata_dwc_regs->dbtsr, in sata_dwc_hardreset()
1210 struct sata_dwc_device *hsdev; in sata_dwc_probe() local
1224 hsdev = devm_kzalloc(&ofdev->dev, sizeof(*hsdev), GFP_KERNEL); in sata_dwc_probe()
1225 if (!host || !hsdev) in sata_dwc_probe()
1228 host->private_data = hsdev; in sata_dwc_probe()
1238 hsdev->sata_dwc_regs = base + SATA_DWC_REG_OFFSET; in sata_dwc_probe()
1239 hsdev->dmadr = res->start + SATA_DWC_REG_OFFSET + offsetof(struct sata_dwc_regs, dmadr); in sata_dwc_probe()
1247 idr = sata_dwc_readl(&hsdev->sata_dwc_regs->idr); in sata_dwc_probe()
1248 versionr = sata_dwc_readl(&hsdev->sata_dwc_regs->versionr); in sata_dwc_probe()
1253 hsdev->dev = &ofdev->dev; in sata_dwc_probe()
1256 sata_dwc_enable_interrupts(hsdev); in sata_dwc_probe()
1267 err = sata_dwc_dma_init_old(ofdev, hsdev); in sata_dwc_probe()
1273 hsdev->phy = devm_phy_optional_get(hsdev->dev, "sata-phy"); in sata_dwc_probe()
1274 if (IS_ERR(hsdev->phy)) in sata_dwc_probe()
1275 return PTR_ERR(hsdev->phy); in sata_dwc_probe()
1277 err = phy_init(hsdev->phy); in sata_dwc_probe()
1293 phy_exit(hsdev->phy); in sata_dwc_probe()
1301 struct sata_dwc_device *hsdev = host->private_data; in sata_dwc_remove() local
1305 phy_exit(hsdev->phy); in sata_dwc_remove()
1309 sata_dwc_dma_exit_old(hsdev); in sata_dwc_remove()