Lines Matching refs:hsdevp

193 static void sata_dwc_clear_dmacr(struct sata_dwc_device_port *hsdevp, u8 tag);
218 static int sata_dwc_dma_get_channel_old(struct sata_dwc_device_port *hsdevp) in sata_dwc_dma_get_channel_old() argument
220 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel_old()
230 hsdevp->chan = dma_request_channel(mask, sata_dwc_dma_filter, hsdevp); in sata_dwc_dma_get_channel_old()
231 if (!hsdevp->chan) { in sata_dwc_dma_get_channel_old()
339 struct sata_dwc_device_port *hsdevp; in dma_dwc_xfer_done() local
345 hsdevp = HSDEVP_FROM_AP(ap); in dma_dwc_xfer_done()
353 hsdevp->dma_interrupt_count++; in dma_dwc_xfer_done()
354 sata_dwc_clear_dmacr(hsdevp, tag); in dma_dwc_xfer_done()
356 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_NONE) { in dma_dwc_xfer_done()
358 tag, hsdevp->dma_pending[tag]); in dma_dwc_xfer_done()
361 if ((hsdevp->dma_interrupt_count % 2) == 0) in dma_dwc_xfer_done()
370 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in dma_dwc_xfer_setup() local
389 dmaengine_slave_config(hsdevp->chan, &sconf); in dma_dwc_xfer_setup()
392 desc = dmaengine_prep_slave_sg(hsdevp->chan, qc->sg, qc->n_elem, in dma_dwc_xfer_setup()
459 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_error_intr() local
475 __func__, serror, intpr, status, hsdevp->dma_interrupt_count, in sata_dwc_error_intr()
476 hsdevp->dma_pending[tag], hsdevp->cmd_issued[tag]); in sata_dwc_error_intr()
517 struct sata_dwc_device_port *hsdevp; in sata_dwc_isr() local
526 hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_isr()
544 if (hsdevp->cmd_issued[tag] != SATA_DWC_CMD_ISSUED_PEND) in sata_dwc_isr()
584 hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_isr()
603 hsdevp->dma_interrupt_count++; in sata_dwc_isr()
604 if (hsdevp->dma_pending[tag] == \ in sata_dwc_isr()
609 hsdevp->dma_pending[tag]); in sata_dwc_isr()
612 if ((hsdevp->dma_interrupt_count % 2) == 0) in sata_dwc_isr()
668 hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_isr()
683 hsdevp->dma_interrupt_count++; in sata_dwc_isr()
684 if (hsdevp->dma_pending[tag] == \ in sata_dwc_isr()
688 if ((hsdevp->dma_interrupt_count % 2) == 0) in sata_dwc_isr()
722 static void sata_dwc_clear_dmacr(struct sata_dwc_device_port *hsdevp, u8 tag) in sata_dwc_clear_dmacr() argument
724 struct sata_dwc_device *hsdev = HSDEV_FROM_HSDEVP(hsdevp); in sata_dwc_clear_dmacr()
727 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_RX) { in sata_dwc_clear_dmacr()
730 } else if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_TX) { in sata_dwc_clear_dmacr()
740 __func__, tag, hsdevp->dma_pending[tag], dmacr); in sata_dwc_clear_dmacr()
749 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_dma_xfer_complete() local
772 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_NONE) { in sata_dwc_dma_xfer_complete()
779 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_NONE; in sata_dwc_dma_xfer_complete()
794 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_complete() local
798 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_TX) in sata_dwc_qc_complete()
800 else if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_RX) in sata_dwc_qc_complete()
855 static int sata_dwc_dma_get_channel(struct sata_dwc_device_port *hsdevp) in sata_dwc_dma_get_channel() argument
857 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel()
862 return sata_dwc_dma_get_channel_old(hsdevp); in sata_dwc_dma_get_channel()
865 hsdevp->chan = dma_request_chan(dev, "sata-dma"); in sata_dwc_dma_get_channel()
866 if (IS_ERR(hsdevp->chan)) { in sata_dwc_dma_get_channel()
868 PTR_ERR(hsdevp->chan)); in sata_dwc_dma_get_channel()
869 return PTR_ERR(hsdevp->chan); in sata_dwc_dma_get_channel()
885 struct sata_dwc_device_port *hsdevp = NULL; in sata_dwc_port_start() local
902 hsdevp = kzalloc(sizeof(*hsdevp), GFP_KERNEL); in sata_dwc_port_start()
903 if (!hsdevp) { in sata_dwc_port_start()
907 hsdevp->hsdev = hsdev; in sata_dwc_port_start()
909 err = sata_dwc_dma_get_channel(hsdevp); in sata_dwc_port_start()
918 hsdevp->cmd_issued[i] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_port_start()
938 ap->private_data = hsdevp; in sata_dwc_port_start()
943 kfree(hsdevp); in sata_dwc_port_start()
951 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_port_stop() local
956 dmaengine_terminate_sync(hsdevp->chan); in sata_dwc_port_stop()
957 dma_release_channel(hsdevp->chan); in sata_dwc_port_stop()
960 kfree(hsdevp); in sata_dwc_port_stop()
975 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_exec_command_by_tag() local
980 hsdevp->cmd_issued[tag] = cmd_issued; in sata_dwc_exec_command_by_tag()
1017 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_bmdma_start_by_tag() local
1018 struct dma_async_tx_descriptor *desc = hsdevp->desc[tag]; in sata_dwc_bmdma_start_by_tag()
1021 if (hsdevp->cmd_issued[tag] != SATA_DWC_CMD_ISSUED_NOT) { in sata_dwc_bmdma_start_by_tag()
1024 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_TX; in sata_dwc_bmdma_start_by_tag()
1026 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_RX; in sata_dwc_bmdma_start_by_tag()
1030 __func__, hsdevp->cmd_issued[tag], tag); in sata_dwc_bmdma_start_by_tag()
1056 dma_async_issue_pending(hsdevp->chan); in sata_dwc_bmdma_start_by_tag()
1079 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_issue() local
1095 hsdevp->desc[tag] = dma_dwc_xfer_setup(qc); in sata_dwc_qc_issue()
1096 if (!hsdevp->desc[tag]) in sata_dwc_qc_issue()
1099 hsdevp->desc[tag] = NULL; in sata_dwc_qc_issue()