mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-15 13:56:45 +07:00
Merge branch 'remotes/lorenzo/pci/iproc'
- Invalidate iProc PAXB address mapping before programming it (Abhishek Shah) * remotes/lorenzo/pci/iproc: PCI: iproc: Invalidate PAXB address mapping before programming it
This commit is contained in:
commit
132c4a6b54
@ -1245,6 +1245,32 @@ static int iproc_pcie_map_dma_ranges(struct iproc_pcie *pcie)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void iproc_pcie_invalidate_mapping(struct iproc_pcie *pcie)
|
||||
{
|
||||
struct iproc_pcie_ib *ib = &pcie->ib;
|
||||
struct iproc_pcie_ob *ob = &pcie->ob;
|
||||
int idx;
|
||||
|
||||
if (pcie->ep_is_internal)
|
||||
return;
|
||||
|
||||
if (pcie->need_ob_cfg) {
|
||||
/* iterate through all OARR mapping regions */
|
||||
for (idx = ob->nr_windows - 1; idx >= 0; idx--) {
|
||||
iproc_pcie_write_reg(pcie,
|
||||
MAP_REG(IPROC_PCIE_OARR0, idx), 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (pcie->need_ib_cfg) {
|
||||
/* iterate through all IARR mapping regions */
|
||||
for (idx = 0; idx < ib->nr_regions; idx++) {
|
||||
iproc_pcie_write_reg(pcie,
|
||||
MAP_REG(IPROC_PCIE_IARR0, idx), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int iproce_pcie_get_msi(struct iproc_pcie *pcie,
|
||||
struct device_node *msi_node,
|
||||
u64 *msi_addr)
|
||||
@ -1517,6 +1543,8 @@ int iproc_pcie_setup(struct iproc_pcie *pcie, struct list_head *res)
|
||||
iproc_pcie_perst_ctrl(pcie, true);
|
||||
iproc_pcie_perst_ctrl(pcie, false);
|
||||
|
||||
iproc_pcie_invalidate_mapping(pcie);
|
||||
|
||||
if (pcie->need_ob_cfg) {
|
||||
ret = iproc_pcie_map_ranges(pcie, res);
|
||||
if (ret) {
|
||||
|
Loading…
Reference in New Issue
Block a user