]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI/TPH: Expose pcie_tph_get_st_table_loc()
authorYishai Hadas <yishaih@nvidia.com>
Mon, 27 Oct 2025 09:34:01 +0000 (11:34 +0200)
committerLeon Romanovsky <leon@kernel.org>
Sun, 9 Nov 2025 10:13:02 +0000 (05:13 -0500)
Expose pcie_tph_get_st_table_loc() to be used by drivers as will be done
in the next patch from the series.

Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
Signed-off-by: Edward Srouji <edwards@nvidia.com>
Link: https://patch.msgid.link/20251027-st-direct-mode-v1-1-e0ad953866b6@nvidia.com
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/pci/tph.c
include/linux/pci-tph.h

index cc64f93709a4f064b4aaffc4e8ac5fab83babe76..ca4f97be75389d8e2c52eeb511fab266e075a63b 100644 (file)
@@ -155,7 +155,16 @@ static u8 get_st_modes(struct pci_dev *pdev)
        return reg;
 }
 
-static u32 get_st_table_loc(struct pci_dev *pdev)
+/**
+ * pcie_tph_get_st_table_loc - Return the device's ST table location
+ * @pdev: PCI device to query
+ *
+ * Return:
+ *  PCI_TPH_LOC_NONE - Not present
+ *  PCI_TPH_LOC_CAP  - Located in the TPH Requester Extended Capability
+ *  PCI_TPH_LOC_MSIX - Located in the MSI-X Table
+ */
+u32 pcie_tph_get_st_table_loc(struct pci_dev *pdev)
 {
        u32 reg;
 
@@ -163,6 +172,7 @@ static u32 get_st_table_loc(struct pci_dev *pdev)
 
        return FIELD_GET(PCI_TPH_CAP_LOC_MASK, reg);
 }
+EXPORT_SYMBOL(pcie_tph_get_st_table_loc);
 
 /*
  * Return the size of ST table. If ST table is not in TPH Requester Extended
@@ -174,7 +184,7 @@ u16 pcie_tph_get_st_table_size(struct pci_dev *pdev)
        u32 loc;
 
        /* Check ST table location first */
-       loc = get_st_table_loc(pdev);
+       loc = pcie_tph_get_st_table_loc(pdev);
 
        /* Convert loc to match with PCI_TPH_LOC_* defined in pci_regs.h */
        loc = FIELD_PREP(PCI_TPH_CAP_LOC_MASK, loc);
@@ -299,7 +309,7 @@ int pcie_tph_set_st_entry(struct pci_dev *pdev, unsigned int index, u16 tag)
         */
        set_ctrl_reg_req_en(pdev, PCI_TPH_REQ_DISABLE);
 
-       loc = get_st_table_loc(pdev);
+       loc = pcie_tph_get_st_table_loc(pdev);
        /* Convert loc to match with PCI_TPH_LOC_* */
        loc = FIELD_PREP(PCI_TPH_CAP_LOC_MASK, loc);
 
index 9e4e331b16033262805b0a79f02b7b8af71aeefe..ba28140ce6707621340064bce1d3d97f4c613bdd 100644 (file)
@@ -29,6 +29,7 @@ int pcie_tph_get_cpu_st(struct pci_dev *dev,
 void pcie_disable_tph(struct pci_dev *pdev);
 int pcie_enable_tph(struct pci_dev *pdev, int mode);
 u16 pcie_tph_get_st_table_size(struct pci_dev *pdev);
+u32 pcie_tph_get_st_table_loc(struct pci_dev *pdev);
 #else
 static inline int pcie_tph_set_st_entry(struct pci_dev *pdev,
                                        unsigned int index, u16 tag)