Lines Matching refs:hsdevp

178 static void sata_dwc_clear_dmacr(struct sata_dwc_device_port *hsdevp, u8 tag);
203 static int sata_dwc_dma_get_channel_old(struct sata_dwc_device_port *hsdevp) in sata_dwc_dma_get_channel_old() argument
205 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel_old()
216 hsdevp->chan = dma_request_channel(mask, sata_dwc_dma_filter, hsdevp); in sata_dwc_dma_get_channel_old()
217 if (!hsdevp->chan) { in sata_dwc_dma_get_channel_old()
294 struct sata_dwc_device_port *hsdevp; in dma_dwc_xfer_done() local
300 hsdevp = HSDEVP_FROM_AP(ap); in dma_dwc_xfer_done()
308 hsdevp->dma_interrupt_count++; in dma_dwc_xfer_done()
309 sata_dwc_clear_dmacr(hsdevp, tag); in dma_dwc_xfer_done()
311 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_NONE) { in dma_dwc_xfer_done()
313 tag, hsdevp->dma_pending[tag]); in dma_dwc_xfer_done()
316 if ((hsdevp->dma_interrupt_count % 2) == 0) in dma_dwc_xfer_done()
325 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in dma_dwc_xfer_setup() local
344 dmaengine_slave_config(hsdevp->chan, &sconf); in dma_dwc_xfer_setup()
347 desc = dmaengine_prep_slave_sg(hsdevp->chan, qc->sg, qc->n_elem, in dma_dwc_xfer_setup()
414 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_error_intr() local
430 __func__, serror, intpr, status, hsdevp->dma_interrupt_count, in sata_dwc_error_intr()
431 hsdevp->dma_pending[tag], hsdevp->cmd_issued[tag]); in sata_dwc_error_intr()
472 struct sata_dwc_device_port *hsdevp; in sata_dwc_isr() local
481 hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_isr()
499 if (hsdevp->cmd_issued[tag] != SATA_DWC_CMD_ISSUED_PEND) in sata_dwc_isr()
545 hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_isr()
564 hsdevp->dma_interrupt_count++; in sata_dwc_isr()
565 if (hsdevp->dma_pending[tag] == \ in sata_dwc_isr()
570 hsdevp->dma_pending[tag]); in sata_dwc_isr()
573 if ((hsdevp->dma_interrupt_count % 2) == 0) in sata_dwc_isr()
632 hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_isr()
647 hsdevp->dma_interrupt_count++; in sata_dwc_isr()
648 if (hsdevp->dma_pending[tag] == \ in sata_dwc_isr()
652 if ((hsdevp->dma_interrupt_count % 2) == 0) in sata_dwc_isr()
686 static void sata_dwc_clear_dmacr(struct sata_dwc_device_port *hsdevp, u8 tag) in sata_dwc_clear_dmacr() argument
688 struct sata_dwc_device *hsdev = HSDEV_FROM_HSDEVP(hsdevp); in sata_dwc_clear_dmacr()
691 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_RX) { in sata_dwc_clear_dmacr()
694 } else if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_TX) { in sata_dwc_clear_dmacr()
704 __func__, tag, hsdevp->dma_pending[tag], dmacr); in sata_dwc_clear_dmacr()
713 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_dma_xfer_complete() local
725 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_NONE) { in sata_dwc_dma_xfer_complete()
732 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_NONE; in sata_dwc_dma_xfer_complete()
746 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_complete() local
749 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_TX) in sata_dwc_qc_complete()
751 else if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_RX) in sata_dwc_qc_complete()
806 static int sata_dwc_dma_get_channel(struct sata_dwc_device_port *hsdevp) in sata_dwc_dma_get_channel() argument
808 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel()
813 return sata_dwc_dma_get_channel_old(hsdevp); in sata_dwc_dma_get_channel()
816 hsdevp->chan = dma_request_chan(dev, "sata-dma"); in sata_dwc_dma_get_channel()
817 if (IS_ERR(hsdevp->chan)) { in sata_dwc_dma_get_channel()
819 PTR_ERR(hsdevp->chan)); in sata_dwc_dma_get_channel()
820 return PTR_ERR(hsdevp->chan); in sata_dwc_dma_get_channel()
836 struct sata_dwc_device_port *hsdevp = NULL; in sata_dwc_port_start() local
853 hsdevp = kzalloc(sizeof(*hsdevp), GFP_KERNEL); in sata_dwc_port_start()
854 if (!hsdevp) { in sata_dwc_port_start()
858 hsdevp->hsdev = hsdev; in sata_dwc_port_start()
860 err = sata_dwc_dma_get_channel(hsdevp); in sata_dwc_port_start()
869 hsdevp->cmd_issued[i] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_port_start()
889 ap->private_data = hsdevp; in sata_dwc_port_start()
894 kfree(hsdevp); in sata_dwc_port_start()
902 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_port_stop() local
907 dmaengine_terminate_sync(hsdevp->chan); in sata_dwc_port_stop()
908 dma_release_channel(hsdevp->chan); in sata_dwc_port_stop()
911 kfree(hsdevp); in sata_dwc_port_stop()
926 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_exec_command_by_tag() local
928 hsdevp->cmd_issued[tag] = cmd_issued; in sata_dwc_exec_command_by_tag()
962 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_bmdma_start_by_tag() local
963 struct dma_async_tx_descriptor *desc = hsdevp->desc[tag]; in sata_dwc_bmdma_start_by_tag()
966 if (hsdevp->cmd_issued[tag] != SATA_DWC_CMD_ISSUED_NOT) { in sata_dwc_bmdma_start_by_tag()
969 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_TX; in sata_dwc_bmdma_start_by_tag()
971 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_RX; in sata_dwc_bmdma_start_by_tag()
975 __func__, hsdevp->cmd_issued[tag], tag); in sata_dwc_bmdma_start_by_tag()
995 dma_async_issue_pending(hsdevp->chan); in sata_dwc_bmdma_start_by_tag()
1014 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_issue() local
1020 hsdevp->desc[tag] = dma_dwc_xfer_setup(qc); in sata_dwc_qc_issue()
1021 if (!hsdevp->desc[tag]) in sata_dwc_qc_issue()
1024 hsdevp->desc[tag] = NULL; in sata_dwc_qc_issue()