aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2018-06-06 17:10:30 -0400
committerBjorn Helgaas <bhelgaas@google.com>2018-06-06 17:10:30 -0400
commitbf79d7d0997abfab40b421a0360adcc4fdbda0a4 (patch)
treef39ecbe0dbb13048a9d8e088fa5858e596bfdc03
parentd792b32688c65841aef256e5870f0e25ed69ed9c (diff)
parentef1433f717a2c63747a519d86965d73ff9bd08b3 (diff)
Merge branch 'lorenzo/pci/endpoint'
- use usleep() instead of mdelay() in endpoint test (Jia-Ju Bai) - add configfs entries for pci_epf_driver device IDs (Kishon Vijay Abraham I) - clean up pci_endpoint_test driver (Gustavo Pimentel) * lorenzo/pci/endpoint: PCI: endpoint: Create configfs entry for each pci_epf_device_id table entry misc: pci_endpoint_test: Use pci_irq_vector function PCI: endpoint: functions/pci-epf-test: Replace lower into upper case characters misc: pci_endpoint_test: Replace lower into upper case characters PCI: endpoint: Replace mdelay with usleep_range() in pci_epf_test_write()
-rw-r--r--drivers/misc/pci_endpoint_test.c28
-rw-r--r--drivers/pci/endpoint/functions/pci-epf-test.c28
-rw-r--r--drivers/pci/endpoint/pci-epf-core.c23
-rw-r--r--include/linux/pci-epf.h4
4 files changed, 51 insertions, 32 deletions
diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_test.c
index 58a88ba71e2a..7b370466a227 100644
--- a/drivers/misc/pci_endpoint_test.c
+++ b/drivers/misc/pci_endpoint_test.c
@@ -203,7 +203,7 @@ static bool pci_endpoint_test_msi_irq(struct pci_endpoint_test *test,
203 if (!val) 203 if (!val)
204 return false; 204 return false;
205 205
206 if (test->last_irq - pdev->irq == msi_num - 1) 206 if (pci_irq_vector(pdev, msi_num - 1) == test->last_irq)
207 return true; 207 return true;
208 208
209 return false; 209 return false;
@@ -233,7 +233,7 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_test *test, size_t size)
233 orig_src_addr = dma_alloc_coherent(dev, size + alignment, 233 orig_src_addr = dma_alloc_coherent(dev, size + alignment,
234 &orig_src_phys_addr, GFP_KERNEL); 234 &orig_src_phys_addr, GFP_KERNEL);
235 if (!orig_src_addr) { 235 if (!orig_src_addr) {
236 dev_err(dev, "failed to allocate source buffer\n"); 236 dev_err(dev, "Failed to allocate source buffer\n");
237 ret = false; 237 ret = false;
238 goto err; 238 goto err;
239 } 239 }
@@ -259,7 +259,7 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_test *test, size_t size)
259 orig_dst_addr = dma_alloc_coherent(dev, size + alignment, 259 orig_dst_addr = dma_alloc_coherent(dev, size + alignment,
260 &orig_dst_phys_addr, GFP_KERNEL); 260 &orig_dst_phys_addr, GFP_KERNEL);
261 if (!orig_dst_addr) { 261 if (!orig_dst_addr) {
262 dev_err(dev, "failed to allocate destination address\n"); 262 dev_err(dev, "Failed to allocate destination address\n");
263 ret = false; 263 ret = false;
264 goto err_orig_src_addr; 264 goto err_orig_src_addr;
265 } 265 }
@@ -321,7 +321,7 @@ static bool pci_endpoint_test_write(struct pci_endpoint_test *test, size_t size)
321 orig_addr = dma_alloc_coherent(dev, size + alignment, &orig_phys_addr, 321 orig_addr = dma_alloc_coherent(dev, size + alignment, &orig_phys_addr,
322 GFP_KERNEL); 322 GFP_KERNEL);
323 if (!orig_addr) { 323 if (!orig_addr) {
324 dev_err(dev, "failed to allocate address\n"); 324 dev_err(dev, "Failed to allocate address\n");
325 ret = false; 325 ret = false;
326 goto err; 326 goto err;
327 } 327 }
@@ -382,7 +382,7 @@ static bool pci_endpoint_test_read(struct pci_endpoint_test *test, size_t size)
382 orig_addr = dma_alloc_coherent(dev, size + alignment, &orig_phys_addr, 382 orig_addr = dma_alloc_coherent(dev, size + alignment, &orig_phys_addr,
383 GFP_KERNEL); 383 GFP_KERNEL);
384 if (!orig_addr) { 384 if (!orig_addr) {
385 dev_err(dev, "failed to allocate destination address\n"); 385 dev_err(dev, "Failed to allocate destination address\n");
386 ret = false; 386 ret = false;
387 goto err; 387 goto err;
388 } 388 }
@@ -513,31 +513,31 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev,
513 if (!no_msi) { 513 if (!no_msi) {
514 irq = pci_alloc_irq_vectors(pdev, 1, 32, PCI_IRQ_MSI); 514 irq = pci_alloc_irq_vectors(pdev, 1, 32, PCI_IRQ_MSI);
515 if (irq < 0) 515 if (irq < 0)
516 dev_err(dev, "failed to get MSI interrupts\n"); 516 dev_err(dev, "Failed to get MSI interrupts\n");
517 test->num_irqs = irq; 517 test->num_irqs = irq;
518 } 518 }
519 519
520 err = devm_request_irq(dev, pdev->irq, pci_endpoint_test_irqhandler, 520 err = devm_request_irq(dev, pdev->irq, pci_endpoint_test_irqhandler,
521 IRQF_SHARED, DRV_MODULE_NAME, test); 521 IRQF_SHARED, DRV_MODULE_NAME, test);
522 if (err) { 522 if (err) {
523 dev_err(dev, "failed to request IRQ %d\n", pdev->irq); 523 dev_err(dev, "Failed to request IRQ %d\n", pdev->irq);
524 goto err_disable_msi; 524 goto err_disable_msi;
525 } 525 }
526 526
527 for (i = 1; i < irq; i++) { 527 for (i = 1; i < irq; i++) {
528 err = devm_request_irq(dev, pdev->irq + i, 528 err = devm_request_irq(dev, pci_irq_vector(pdev, i),
529 pci_endpoint_test_irqhandler, 529 pci_endpoint_test_irqhandler,
530 IRQF_SHARED, DRV_MODULE_NAME, test); 530 IRQF_SHARED, DRV_MODULE_NAME, test);
531 if (err) 531 if (err)
532 dev_err(dev, "failed to request IRQ %d for MSI %d\n", 532 dev_err(dev, "failed to request IRQ %d for MSI %d\n",
533 pdev->irq + i, i + 1); 533 pci_irq_vector(pdev, i), i + 1);
534 } 534 }
535 535
536 for (bar = BAR_0; bar <= BAR_5; bar++) { 536 for (bar = BAR_0; bar <= BAR_5; bar++) {
537 if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) { 537 if (pci_resource_flags(pdev, bar) & IORESOURCE_MEM) {
538 base = pci_ioremap_bar(pdev, bar); 538 base = pci_ioremap_bar(pdev, bar);
539 if (!base) { 539 if (!base) {
540 dev_err(dev, "failed to read BAR%d\n", bar); 540 dev_err(dev, "Failed to read BAR%d\n", bar);
541 WARN_ON(bar == test_reg_bar); 541 WARN_ON(bar == test_reg_bar);
542 } 542 }
543 test->bar[bar] = base; 543 test->bar[bar] = base;
@@ -557,7 +557,7 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev,
557 id = ida_simple_get(&pci_endpoint_test_ida, 0, 0, GFP_KERNEL); 557 id = ida_simple_get(&pci_endpoint_test_ida, 0, 0, GFP_KERNEL);
558 if (id < 0) { 558 if (id < 0) {
559 err = id; 559 err = id;
560 dev_err(dev, "unable to get id\n"); 560 dev_err(dev, "Unable to get id\n");
561 goto err_iounmap; 561 goto err_iounmap;
562 } 562 }
563 563
@@ -573,7 +573,7 @@ static int pci_endpoint_test_probe(struct pci_dev *pdev,
573 573
574 err = misc_register(misc_device); 574 err = misc_register(misc_device);
575 if (err) { 575 if (err) {
576 dev_err(dev, "failed to register device\n"); 576 dev_err(dev, "Failed to register device\n");
577 goto err_kfree_name; 577 goto err_kfree_name;
578 } 578 }
579 579
@@ -592,7 +592,7 @@ err_iounmap:
592 } 592 }
593 593
594 for (i = 0; i < irq; i++) 594 for (i = 0; i < irq; i++)
595 devm_free_irq(dev, pdev->irq + i, test); 595 devm_free_irq(&pdev->dev, pci_irq_vector(pdev, i), test);
596 596
597err_disable_msi: 597err_disable_msi:
598 pci_disable_msi(pdev); 598 pci_disable_msi(pdev);
@@ -625,7 +625,7 @@ static void pci_endpoint_test_remove(struct pci_dev *pdev)
625 pci_iounmap(pdev, test->bar[bar]); 625 pci_iounmap(pdev, test->bar[bar]);
626 } 626 }
627 for (i = 0; i < test->num_irqs; i++) 627 for (i = 0; i < test->num_irqs; i++)
628 devm_free_irq(&pdev->dev, pdev->irq + i, test); 628 devm_free_irq(&pdev->dev, pci_irq_vector(pdev, i), test);
629 pci_disable_msi(pdev); 629 pci_disable_msi(pdev);
630 pci_release_regions(pdev); 630 pci_release_regions(pdev);
631 pci_disable_device(pdev); 631 pci_disable_device(pdev);
diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/endpoint/functions/pci-epf-test.c
index bee401d99217..63ed706445b9 100644
--- a/drivers/pci/endpoint/functions/pci-epf-test.c
+++ b/drivers/pci/endpoint/functions/pci-epf-test.c
@@ -87,7 +87,7 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_test)
87 87
88 src_addr = pci_epc_mem_alloc_addr(epc, &src_phys_addr, reg->size); 88 src_addr = pci_epc_mem_alloc_addr(epc, &src_phys_addr, reg->size);
89 if (!src_addr) { 89 if (!src_addr) {
90 dev_err(dev, "failed to allocate source address\n"); 90 dev_err(dev, "Failed to allocate source address\n");
91 reg->status = STATUS_SRC_ADDR_INVALID; 91 reg->status = STATUS_SRC_ADDR_INVALID;
92 ret = -ENOMEM; 92 ret = -ENOMEM;
93 goto err; 93 goto err;
@@ -96,14 +96,14 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_test)
96 ret = pci_epc_map_addr(epc, epf->func_no, src_phys_addr, reg->src_addr, 96 ret = pci_epc_map_addr(epc, epf->func_no, src_phys_addr, reg->src_addr,
97 reg->size); 97 reg->size);
98 if (ret) { 98 if (ret) {
99 dev_err(dev, "failed to map source address\n"); 99 dev_err(dev, "Failed to map source address\n");
100 reg->status = STATUS_SRC_ADDR_INVALID; 100 reg->status = STATUS_SRC_ADDR_INVALID;
101 goto err_src_addr; 101 goto err_src_addr;
102 } 102 }
103 103
104 dst_addr = pci_epc_mem_alloc_addr(epc, &dst_phys_addr, reg->size); 104 dst_addr = pci_epc_mem_alloc_addr(epc, &dst_phys_addr, reg->size);
105 if (!dst_addr) { 105 if (!dst_addr) {
106 dev_err(dev, "failed to allocate destination address\n"); 106 dev_err(dev, "Failed to allocate destination address\n");