]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: endpoint: pci-epf-test: Expose supported IRQ types in CAPS register
authorNiklas Cassel <cassel@kernel.org>
Mon, 10 Mar 2025 11:10:23 +0000 (12:10 +0100)
committerKrzysztof Wilczyński <kwilczynski@kernel.org>
Wed, 26 Mar 2025 06:11:52 +0000 (06:11 +0000)
Expose the supported IRQ types in the CAPS register.

This way, the host side driver (drivers/misc/pci_endpoint_test.c) can
know which IRQ types that the endpoint supports.

The host side driver will make use of this information in a follow-up
commit.

Signed-off-by: Niklas Cassel <cassel@kernel.org>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Link: https://lore.kernel.org/r/20250310111016.859445-15-cassel@kernel.org
drivers/pci/endpoint/functions/pci-epf-test.c

index b94e205ae10b94c33c7a2c4f38f6c38e1f94443a..1b1e92c1460f9c6b008ae6bb8ec33ed747547fee 100644 (file)
@@ -45,6 +45,9 @@
 #define TIMER_RESOLUTION               1
 
 #define CAP_UNALIGNED_ACCESS           BIT(0)
+#define CAP_MSI                                BIT(1)
+#define CAP_MSIX                       BIT(2)
+#define CAP_INTX                       BIT(3)
 
 static struct workqueue_struct *kpcitest_workqueue;
 
@@ -753,6 +756,15 @@ static void pci_epf_test_set_capabilities(struct pci_epf *epf)
        if (epc->ops->align_addr)
                caps |= CAP_UNALIGNED_ACCESS;
 
+       if (epf_test->epc_features->msi_capable)
+               caps |= CAP_MSI;
+
+       if (epf_test->epc_features->msix_capable)
+               caps |= CAP_MSIX;
+
+       if (epf_test->epc_features->intx_capable)
+               caps |= CAP_INTX;
+
        reg->caps = cpu_to_le32(caps);
 }