Lines Matching refs:hsdev

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