pci_ep: layerscape: Add the workaround for errata A-009460
The VF_BARn_REG register's Prefetchable and Type bit fields are overwritten by a write to VF's BAR Mask register. workaround: Before writing to the VF_BARn_MASK_REG register, write 0b to the PCIE_MISC_CONTROL_1_OFF register. Signed-off-by: Xiaowei Bao <xiaowei.bao@nxp.com> Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
parent
c5174a52c2
commit
15ce1fadf7
1 changed files with 9 additions and 0 deletions
|
@ -164,6 +164,15 @@ static void ls_pcie_setup_ep(struct ls_pcie_ep *pcie_ep)
|
|||
if (PCI_EXT_CAP_ID(sriov) == PCI_EXT_CAP_ID_SRIOV) {
|
||||
pcie_ep->sriov_flag = 1;
|
||||
for (pf = 0; pf < PCIE_PF_NUM; pf++) {
|
||||
/*
|
||||
* The VF_BARn_REG register's Prefetchable and Type bit
|
||||
* fields are overwritten by a write to VF's BAR Mask
|
||||
* register. Before writing to the VF_BARn_MASK_REG
|
||||
* register, write 0b to the PCIE_MISC_CONTROL_1_OFF
|
||||
* register.
|
||||
*/
|
||||
writel(0, pcie->dbi + PCIE_MISC_CONTROL_1_OFF);
|
||||
|
||||
if (pcie_ep->cfg2_flag) {
|
||||
for (vf = 0; vf <= PCIE_VF_NUM; vf++) {
|
||||
ctrl_writel(pcie,
|
||||
|
|
Loading…
Reference in a new issue