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()
580 hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_isr()
599 hsdevp->dma_interrupt_count++; in sata_dwc_isr()
600 if (hsdevp->dma_pending[tag] == \ in sata_dwc_isr()
605 hsdevp->dma_pending[tag]); in sata_dwc_isr()
608 if ((hsdevp->dma_interrupt_count % 2) == 0) in sata_dwc_isr()
664 hsdevp->cmd_issued[tag] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_isr()
679 hsdevp->dma_interrupt_count++; in sata_dwc_isr()
680 if (hsdevp->dma_pending[tag] == \ in sata_dwc_isr()
684 if ((hsdevp->dma_interrupt_count % 2) == 0) in sata_dwc_isr()
718 static void sata_dwc_clear_dmacr(struct sata_dwc_device_port *hsdevp, u8 tag) in sata_dwc_clear_dmacr() argument
720 struct sata_dwc_device *hsdev = HSDEV_FROM_HSDEVP(hsdevp); in sata_dwc_clear_dmacr()
723 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_RX) { in sata_dwc_clear_dmacr()
726 } else if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_TX) { in sata_dwc_clear_dmacr()
736 __func__, tag, hsdevp->dma_pending[tag], dmacr); in sata_dwc_clear_dmacr()
745 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_dma_xfer_complete() local
768 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_NONE) { in sata_dwc_dma_xfer_complete()
775 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_NONE; in sata_dwc_dma_xfer_complete()
790 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_complete() local
794 if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_TX) in sata_dwc_qc_complete()
796 else if (hsdevp->dma_pending[tag] == SATA_DWC_DMA_PENDING_RX) in sata_dwc_qc_complete()
851 static int sata_dwc_dma_get_channel(struct sata_dwc_device_port *hsdevp) in sata_dwc_dma_get_channel() argument
853 struct sata_dwc_device *hsdev = hsdevp->hsdev; in sata_dwc_dma_get_channel()
858 return sata_dwc_dma_get_channel_old(hsdevp); in sata_dwc_dma_get_channel()
861 hsdevp->chan = dma_request_chan(dev, "sata-dma"); in sata_dwc_dma_get_channel()
862 if (IS_ERR(hsdevp->chan)) { in sata_dwc_dma_get_channel()
864 PTR_ERR(hsdevp->chan)); in sata_dwc_dma_get_channel()
865 return PTR_ERR(hsdevp->chan); in sata_dwc_dma_get_channel()
881 struct sata_dwc_device_port *hsdevp = NULL; in sata_dwc_port_start() local
898 hsdevp = kzalloc(sizeof(*hsdevp), GFP_KERNEL); in sata_dwc_port_start()
899 if (!hsdevp) { in sata_dwc_port_start()
903 hsdevp->hsdev = hsdev; in sata_dwc_port_start()
905 err = sata_dwc_dma_get_channel(hsdevp); in sata_dwc_port_start()
914 hsdevp->cmd_issued[i] = SATA_DWC_CMD_ISSUED_NOT; in sata_dwc_port_start()
934 ap->private_data = hsdevp; in sata_dwc_port_start()
939 kfree(hsdevp); in sata_dwc_port_start()
947 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_port_stop() local
952 dmaengine_terminate_sync(hsdevp->chan); in sata_dwc_port_stop()
953 dma_release_channel(hsdevp->chan); in sata_dwc_port_stop()
956 kfree(hsdevp); in sata_dwc_port_stop()
971 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_exec_command_by_tag() local
976 hsdevp->cmd_issued[tag] = cmd_issued; in sata_dwc_exec_command_by_tag()
1013 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_bmdma_start_by_tag() local
1014 struct dma_async_tx_descriptor *desc = hsdevp->desc[tag]; in sata_dwc_bmdma_start_by_tag()
1017 if (hsdevp->cmd_issued[tag] != SATA_DWC_CMD_ISSUED_NOT) { in sata_dwc_bmdma_start_by_tag()
1020 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_TX; in sata_dwc_bmdma_start_by_tag()
1022 hsdevp->dma_pending[tag] = SATA_DWC_DMA_PENDING_RX; in sata_dwc_bmdma_start_by_tag()
1026 __func__, hsdevp->cmd_issued[tag], tag); in sata_dwc_bmdma_start_by_tag()
1052 dma_async_issue_pending(hsdevp->chan); in sata_dwc_bmdma_start_by_tag()
1075 struct sata_dwc_device_port *hsdevp = HSDEVP_FROM_AP(ap); in sata_dwc_qc_issue() local
1091 hsdevp->desc[tag] = dma_dwc_xfer_setup(qc); in sata_dwc_qc_issue()
1092 if (!hsdevp->desc[tag]) in sata_dwc_qc_issue()
1095 hsdevp->desc[tag] = NULL; in sata_dwc_qc_issue()