Lines Matching refs:hsdevp
189 static void sata_dwc_clear_dmacr(struct sata_dwc_device_port *hsdevp, u8 tag);
214 static int sata_dwc_dma_get_channel_old(struct sata_dwc_device_port *hsdevp) in sata_dwc_dma_get_channel_old() argument
216 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel_old()
226 hsdevp->chan = dma_request_channel(mask, sata_dwc_dma_filter, hsdevp); in sata_dwc_dma_get_channel_old()
227 if (!hsdevp->chan) { in sata_dwc_dma_get_channel_old()
335 struct sata_dwc_device_port *hsdevp; in dma_dwc_xfer_done() local
341 hsdevp = HSDEVP_FROM_AP(ap); in dma_dwc_xfer_done()
349 hsdevp->dma_interrupt_count++; in dma_dwc_xfer_done()
350 sata_dwc_clear_dmacr(hsdevp, tag); in dma_dwc_xfer_done()
352 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_NONE) { in dma_dwc_xfer_done()
354 tag, hsdevp->dma_pending[tag]); in dma_dwc_xfer_done()
357 if ((hsdevp->dma_interrupt_count % 2) == 0) in dma_dwc_xfer_done()
366 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in dma_dwc_xfer_setup() local
385 dmaengine_slave_config(hsdevp->chan, &sconf); in dma_dwc_xfer_setup()
388 desc = dmaengine_prep_slave_sg(hsdevp->chan, qc->sg, qc->n_elem, in dma_dwc_xfer_setup()
455 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_error_intr() local
471 __func__, serror, intpr, status, hsdevp->dma_interrupt_count, in sata_dwc_error_intr()
472 hsdevp->dma_pending[tag], hsdevp->cmd_issued[tag]); in sata_dwc_error_intr()
513 struct sata_dwc_device_port *hsdevp; in sata_dwc_isr() local
522 hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_isr()
540 if (hsdevp->cmd_issued[tag] != SATA_DWC_CMD_ISSUED_PEND) in sata_dwc_isr()
585 hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_isr()
604 hsdevp->dma_interrupt_count++; in sata_dwc_isr()
605 if (hsdevp->dma_pending[tag] == \ in sata_dwc_isr()
610 hsdevp->dma_pending[tag]); in sata_dwc_isr()
613 if ((hsdevp->dma_interrupt_count % 2) == 0) in sata_dwc_isr()
674 hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_isr()
689 hsdevp->dma_interrupt_count++; in sata_dwc_isr()
690 if (hsdevp->dma_pending[tag] == \ in sata_dwc_isr()
694 if ((hsdevp->dma_interrupt_count % 2) == 0) in sata_dwc_isr()
728 static void sata_dwc_clear_dmacr(struct sata_dwc_device_port *hsdevp, u8 tag) in sata_dwc_clear_dmacr() argument
730 struct sata_dwc_device *hsdev = HSDEV_FROM_HSDEVP(hsdevp); in sata_dwc_clear_dmacr()
733 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_RX) { in sata_dwc_clear_dmacr()
736 } else if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_TX) { in sata_dwc_clear_dmacr()
746 __func__, tag, hsdevp->dma_pending[tag], dmacr); in sata_dwc_clear_dmacr()
755 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_dma_xfer_complete() local
778 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_NONE) { in sata_dwc_dma_xfer_complete()
785 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_NONE; in sata_dwc_dma_xfer_complete()
800 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_complete() local
804 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_TX) in sata_dwc_qc_complete()
806 else if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_RX) in sata_dwc_qc_complete()
861 static int sata_dwc_dma_get_channel(struct sata_dwc_device_port *hsdevp) in sata_dwc_dma_get_channel() argument
863 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel()
868 return sata_dwc_dma_get_channel_old(hsdevp); in sata_dwc_dma_get_channel()
871 hsdevp->chan = dma_request_chan(dev, "sata-dma"); in sata_dwc_dma_get_channel()
872 if (IS_ERR(hsdevp->chan)) { in sata_dwc_dma_get_channel()
874 PTR_ERR(hsdevp->chan)); in sata_dwc_dma_get_channel()
875 return PTR_ERR(hsdevp->chan); in sata_dwc_dma_get_channel()
891 struct sata_dwc_device_port *hsdevp = NULL; in sata_dwc_port_start() local
908 hsdevp = kzalloc(sizeof(*hsdevp), GFP_KERNEL); in sata_dwc_port_start()
909 if (!hsdevp) { in sata_dwc_port_start()
913 hsdevp->hsdev = hsdev; in sata_dwc_port_start()
915 err = sata_dwc_dma_get_channel(hsdevp); in sata_dwc_port_start()
924 hsdevp->cmd_issued[i] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_port_start()
944 ap->private_data = hsdevp; in sata_dwc_port_start()
949 kfree(hsdevp); in sata_dwc_port_start()
957 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_port_stop() local
962 dmaengine_terminate_sync(hsdevp->chan); in sata_dwc_port_stop()
963 dma_release_channel(hsdevp->chan); in sata_dwc_port_stop()
966 kfree(hsdevp); in sata_dwc_port_stop()
981 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_exec_command_by_tag() local
986 hsdevp->cmd_issued[tag] = cmd_issued; in sata_dwc_exec_command_by_tag()
1023 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_bmdma_start_by_tag() local
1024 struct dma_async_tx_descriptor *desc = hsdevp->desc[tag]; in sata_dwc_bmdma_start_by_tag()
1027 if (hsdevp->cmd_issued[tag] != SATA_DWC_CMD_ISSUED_NOT) { in sata_dwc_bmdma_start_by_tag()
1030 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_TX; in sata_dwc_bmdma_start_by_tag()
1032 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_RX; in sata_dwc_bmdma_start_by_tag()
1036 __func__, hsdevp->cmd_issued[tag], tag); in sata_dwc_bmdma_start_by_tag()
1062 dma_async_issue_pending(hsdevp->chan); in sata_dwc_bmdma_start_by_tag()
1085 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_issue() local
1101 hsdevp->desc[tag] = dma_dwc_xfer_setup(qc); in sata_dwc_qc_issue()
1102 if (!hsdevp->desc[tag]) in sata_dwc_qc_issue()
1105 hsdevp->desc[tag] = NULL; in sata_dwc_qc_issue()