Lines Matching defs:epf_test

90 	struct pci_epf_test *epf_test = param;
93 epf_test->transfer_status =
94 dmaengine_tx_status(epf_test->transfer_chan,
95 epf_test->transfer_cookie, &state);
96 if (epf_test->transfer_status == DMA_COMPLETE ||
97 epf_test->transfer_status == DMA_ERROR)
98 complete(&epf_test->transfer_complete);
104 * @epf_test: the EPF test device that performs the data transfer operation
119 static int pci_epf_test_data_transfer(struct pci_epf_test *epf_test,
125 epf_test->dma_chan_tx : epf_test->dma_chan_rx;
128 struct pci_epf *epf = epf_test->epf;
139 if (epf_test->dma_private) {
162 reinit_completion(&epf_test->transfer_complete);
163 epf_test->transfer_chan = chan;
165 tx->callback_param = epf_test;
166 epf_test->transfer_cookie = dmaengine_submit(tx);
168 ret = dma_submit_error(epf_test->transfer_cookie);
175 ret = wait_for_completion_interruptible(&epf_test->transfer_complete);
181 if (epf_test->transfer_status == DMA_ERROR) {
211 * @epf_test: the EPF test device that performs data transfer operation
215 static int pci_epf_test_init_dma_chan(struct pci_epf_test *epf_test)
217 struct pci_epf *epf = epf_test->epf;
235 epf_test->dma_chan_rx = dma_chan;
245 epf_test->dma_chan_tx = dma_chan;
246 epf_test->dma_private = true;
248 init_completion(&epf_test->transfer_complete);
253 dma_release_channel(epf_test->dma_chan_rx);
254 epf_test->dma_chan_tx = NULL;
267 init_completion(&epf_test->transfer_complete);
269 epf_test->dma_chan_tx = epf_test->dma_chan_rx = dma_chan;
276 * @epf_test: the EPF test device that performs data transfer operation
280 static void pci_epf_test_clean_dma_chan(struct pci_epf_test *epf_test)
282 if (!epf_test->dma_supported)
285 dma_release_channel(epf_test->dma_chan_tx);
286 if (epf_test->dma_chan_tx == epf_test->dma_chan_rx) {
287 epf_test->dma_chan_tx = NULL;
288 epf_test->dma_chan_rx = NULL;
292 dma_release_channel(epf_test->dma_chan_rx);
293 epf_test->dma_chan_rx = NULL;
298 static void pci_epf_test_print_rate(struct pci_epf_test *epf_test,
311 dev_info(&epf_test->epf->dev,
317 static void pci_epf_test_copy(struct pci_epf_test *epf_test,
326 struct pci_epf *epf = epf_test->epf;
364 if (epf_test->dma_private) {
370 ret = pci_epf_test_data_transfer(epf_test, dst_phys_addr,
389 pci_epf_test_print_rate(epf_test, "COPY", reg->size, &start, &end,
411 static void pci_epf_test_read(struct pci_epf_test *epf_test,
421 struct pci_epf *epf = epf_test->epf;
458 ret = pci_epf_test_data_transfer(epf_test, dst_phys_addr,
473 pci_epf_test_print_rate(epf_test, "READ", reg->size, &start, &end,
496 static void pci_epf_test_write(struct pci_epf_test *epf_test,
505 struct pci_epf *epf = epf_test->epf;
546 ret = pci_epf_test_data_transfer(epf_test, phys_addr,
562 pci_epf_test_print_rate(epf_test, "WRITE", reg->size, &start, &end,
587 static void pci_epf_test_raise_irq(struct pci_epf_test *epf_test,
590 struct pci_epf *epf = epf_test->epf;
636 struct pci_epf_test *epf_test = container_of(work, struct pci_epf_test,
638 struct pci_epf *epf = epf_test->epf;
640 enum pci_barno test_reg_bar = epf_test->test_reg_bar;
641 struct pci_epf_test_reg *reg = epf_test->reg[test_reg_bar];
651 !epf_test->dma_supported) {
665 pci_epf_test_raise_irq(epf_test, reg);
668 pci_epf_test_write(epf_test, reg);
669 pci_epf_test_raise_irq(epf_test, reg);
672 pci_epf_test_read(epf_test, reg);
673 pci_epf_test_raise_irq(epf_test, reg);
676 pci_epf_test_copy(epf_test, reg);
677 pci_epf_test_raise_irq(epf_test, reg);
685 queue_delayed_work(kpcitest_workqueue, &epf_test->cmd_handler,
691 struct pci_epf_test *epf_test = epf_get_drvdata(epf);
696 cancel_delayed_work(&epf_test->cmd_handler);
697 pci_epf_test_clean_dma_chan(epf_test);
701 if (epf_test->reg[bar]) {
704 pci_epf_free_space(epf, epf_test->reg[bar], bar,
717 struct pci_epf_test *epf_test = epf_get_drvdata(epf);
718 enum pci_barno test_reg_bar = epf_test->test_reg_bar;
721 epc_features = epf_test->epc_features;
738 pci_epf_free_space(epf, epf_test->reg[bar], bar,
751 struct pci_epf_test *epf_test = epf_get_drvdata(epf);
790 epf_test->test_reg_bar,
791 epf_test->msix_table_offset);
803 struct pci_epf_test *epf_test = epf_get_drvdata(epf);
805 queue_delayed_work(kpcitest_workqueue, &epf_test->cmd_handler,
818 struct pci_epf_test *epf_test = epf_get_drvdata(epf);
827 enum pci_barno test_reg_bar = epf_test->test_reg_bar;
831 epc_features = epf_test->epc_features;
838 epf_test->msix_table_offset = test_reg_bar_size;
856 epf_test->reg[test_reg_bar] = base;
874 epf_test->reg[bar] = base;
900 struct pci_epf_test *epf_test = epf_get_drvdata(epf);
923 epf_test->test_reg_bar = test_reg_bar;
924 epf_test->epc_features = epc_features;
936 epf_test->dma_supported = true;
938 ret = pci_epf_test_init_dma_chan(epf_test);
940 epf_test->dma_supported = false;
943 queue_work(kpcitest_workqueue, &epf_test->cmd_handler.work);
958 struct pci_epf_test *epf_test;
961 epf_test = devm_kzalloc(dev, sizeof(*epf_test), GFP_KERNEL);
962 if (!epf_test)
966 epf_test->epf = epf;
968 INIT_DELAYED_WORK(&epf_test->cmd_handler, pci_epf_test_cmd_handler);
972 epf_set_drvdata(epf, epf_test);