mirror of https://github.com/torvalds/linux.git
PCI/TPH: Expose pcie_tph_get_st_table_loc()
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>
This commit is contained in:
parent
eea31f21dc
commit
7b8a8ec20c
|
|
@ -155,7 +155,16 @@ static u8 get_st_modes(struct pci_dev *pdev)
|
||||||
return reg;
|
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;
|
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);
|
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
|
* 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;
|
u32 loc;
|
||||||
|
|
||||||
/* Check ST table location first */
|
/* 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 */
|
/* Convert loc to match with PCI_TPH_LOC_* defined in pci_regs.h */
|
||||||
loc = FIELD_PREP(PCI_TPH_CAP_LOC_MASK, loc);
|
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);
|
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_* */
|
/* Convert loc to match with PCI_TPH_LOC_* */
|
||||||
loc = FIELD_PREP(PCI_TPH_CAP_LOC_MASK, loc);
|
loc = FIELD_PREP(PCI_TPH_CAP_LOC_MASK, loc);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ int pcie_tph_get_cpu_st(struct pci_dev *dev,
|
||||||
void pcie_disable_tph(struct pci_dev *pdev);
|
void pcie_disable_tph(struct pci_dev *pdev);
|
||||||
int pcie_enable_tph(struct pci_dev *pdev, int mode);
|
int pcie_enable_tph(struct pci_dev *pdev, int mode);
|
||||||
u16 pcie_tph_get_st_table_size(struct pci_dev *pdev);
|
u16 pcie_tph_get_st_table_size(struct pci_dev *pdev);
|
||||||
|
u32 pcie_tph_get_st_table_loc(struct pci_dev *pdev);
|
||||||
#else
|
#else
|
||||||
static inline int pcie_tph_set_st_entry(struct pci_dev *pdev,
|
static inline int pcie_tph_set_st_entry(struct pci_dev *pdev,
|
||||||
unsigned int index, u16 tag)
|
unsigned int index, u16 tag)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue