mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
PCI: dwc: Implement .assert_perst() for dwc glue drivers
Add .assert_perst() hook for dwc glue drivers to register with assert_perst() of pci ops, allowing for better control over the link initialization and shutdown process. Implement assert_perst() function op for dwc drivers. Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com> [bhelgaas: squash dwc host support] Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Manivannan Sadhasivam <mani@kernel.org> Link: https://patch.msgid.link/20251101-tc9563-v9-3-de3429f7787a@oss.qualcomm.com Link: https://patch.msgid.link/20251101-tc9563-v9-4-de3429f7787a@oss.qualcomm.com
This commit is contained in:
committed by
Bjorn Helgaas
parent
01ba827029
commit
3445d38207
@@ -842,10 +842,19 @@ void __iomem *dw_pcie_own_conf_map_bus(struct pci_bus *bus, unsigned int devfn,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dw_pcie_own_conf_map_bus);
|
||||
|
||||
static int dw_pcie_op_assert_perst(struct pci_bus *bus, bool assert)
|
||||
{
|
||||
struct dw_pcie_rp *pp = bus->sysdata;
|
||||
struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
|
||||
|
||||
return dw_pcie_assert_perst(pci, assert);
|
||||
}
|
||||
|
||||
static struct pci_ops dw_pcie_ops = {
|
||||
.map_bus = dw_pcie_own_conf_map_bus,
|
||||
.read = pci_generic_config_read,
|
||||
.write = pci_generic_config_write,
|
||||
.assert_perst = dw_pcie_op_assert_perst,
|
||||
};
|
||||
|
||||
static int dw_pcie_iatu_setup(struct dw_pcie_rp *pp)
|
||||
|
||||
@@ -485,6 +485,7 @@ struct dw_pcie_ops {
|
||||
enum dw_pcie_ltssm (*get_ltssm)(struct dw_pcie *pcie);
|
||||
int (*start_link)(struct dw_pcie *pcie);
|
||||
void (*stop_link)(struct dw_pcie *pcie);
|
||||
int (*assert_perst)(struct dw_pcie *pcie, bool assert);
|
||||
};
|
||||
|
||||
struct debugfs_info {
|
||||
@@ -787,6 +788,14 @@ static inline void dw_pcie_stop_link(struct dw_pcie *pci)
|
||||
pci->ops->stop_link(pci);
|
||||
}
|
||||
|
||||
static inline int dw_pcie_assert_perst(struct dw_pcie *pci, bool assert)
|
||||
{
|
||||
if (pci->ops && pci->ops->assert_perst)
|
||||
return pci->ops->assert_perst(pci, assert);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline enum dw_pcie_ltssm dw_pcie_get_ltssm(struct dw_pcie *pci)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
Reference in New Issue
Block a user