Message ID | 20240216205633.118747-1-manuel.diewald@canonical.com |
---|---|
State | New |
Headers | show |
Series | [SRU,mantic:linux-raspi,1/1] PCI: brcmstb: fix broken brcm_pcie_mdio_write() polling | expand |
On Fri, 16 Feb 2024 21:56:33 +0100 Manuel Diewald <manuel.diewald@canonical.com> wrote: > From: Jonathan Bell <jonathan@raspberrypi.com> > > BugLink: https://bugs.launchpad.net/bugs/2052861 > > MDIO_WR_DONE() tests bit 31, which is always 0 (==done) as > readw_poll_timeout_atomic does a 16-bit read. Replace with the readl > variant. > > Fixes: ca5dcc76314d ("PCI: brcmstb: Replace status loops with read_poll_timeout_atomic()") > Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> > (cherry picked from commit 2677529a4f8a50c7567f50d67f368f1d138fb4d2 rpi-6.6.y) > Signed-off-by: Manuel Diewald <manuel.diewald@canonical.com> Acked-by: Juerg Haefliger <juerg.haefliger@canonical.com> > --- > drivers/pci/controller/pcie-brcmstb.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c > index 009028feacdc..cb75e32458d6 100644 > --- a/drivers/pci/controller/pcie-brcmstb.c > +++ b/drivers/pci/controller/pcie-brcmstb.c > @@ -418,7 +418,7 @@ static int brcm_pcie_mdio_write(void __iomem *base, u8 port, > readl(base + PCIE_RC_DL_MDIO_ADDR); > writel(MDIO_DATA_DONE_MASK | wrdata, base + PCIE_RC_DL_MDIO_WR_DATA); > > - err = readw_poll_timeout_atomic(base + PCIE_RC_DL_MDIO_WR_DATA, data, > + err = readl_poll_timeout_atomic(base + PCIE_RC_DL_MDIO_WR_DATA, data, > MDIO_WT_DONE(data), 10, 100); > return err; > }
LGTM Acked-by: Jose Ogando <jose.ogando@canonical.com> On Fri, 2024-02-16 at 21:56 +0100, Manuel Diewald wrote: > From: Jonathan Bell <jonathan@raspberrypi.com> > > BugLink: https://bugs.launchpad.net/bugs/2052861 > > MDIO_WR_DONE() tests bit 31, which is always 0 (==done) as > readw_poll_timeout_atomic does a 16-bit read. Replace with the readl > variant. > > Fixes: ca5dcc76314d ("PCI: brcmstb: Replace status loops with > read_poll_timeout_atomic()") > Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> > (cherry picked from commit 2677529a4f8a50c7567f50d67f368f1d138fb4d2 > rpi-6.6.y) > Signed-off-by: Manuel Diewald <manuel.diewald@canonical.com> > --- > drivers/pci/controller/pcie-brcmstb.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/pci/controller/pcie-brcmstb.c > b/drivers/pci/controller/pcie-brcmstb.c > index 009028feacdc..cb75e32458d6 100644 > --- a/drivers/pci/controller/pcie-brcmstb.c > +++ b/drivers/pci/controller/pcie-brcmstb.c > @@ -418,7 +418,7 @@ static int brcm_pcie_mdio_write(void __iomem > *base, u8 port, > readl(base + PCIE_RC_DL_MDIO_ADDR); > writel(MDIO_DATA_DONE_MASK | wrdata, base + > PCIE_RC_DL_MDIO_WR_DATA); > > - err = readw_poll_timeout_atomic(base + > PCIE_RC_DL_MDIO_WR_DATA, data, > + err = readl_poll_timeout_atomic(base + > PCIE_RC_DL_MDIO_WR_DATA, data, > MDIO_WT_DONE(data), 10, 100); > return err; > } > -- > 2.34.1 > >
Applied to mantic:linux-raspi master-next branch. ...Juerg On Fri, 16 Feb 2024 21:56:33 +0100 Manuel Diewald <manuel.diewald@canonical.com> wrote: > From: Jonathan Bell <jonathan@raspberrypi.com> > > BugLink: https://bugs.launchpad.net/bugs/2052861 > > MDIO_WR_DONE() tests bit 31, which is always 0 (==done) as > readw_poll_timeout_atomic does a 16-bit read. Replace with the readl > variant. > > Fixes: ca5dcc76314d ("PCI: brcmstb: Replace status loops with read_poll_timeout_atomic()") > Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com> > (cherry picked from commit 2677529a4f8a50c7567f50d67f368f1d138fb4d2 rpi-6.6.y) > Signed-off-by: Manuel Diewald <manuel.diewald@canonical.com> > --- > drivers/pci/controller/pcie-brcmstb.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c > index 009028feacdc..cb75e32458d6 100644 > --- a/drivers/pci/controller/pcie-brcmstb.c > +++ b/drivers/pci/controller/pcie-brcmstb.c > @@ -418,7 +418,7 @@ static int brcm_pcie_mdio_write(void __iomem *base, u8 port, > readl(base + PCIE_RC_DL_MDIO_ADDR); > writel(MDIO_DATA_DONE_MASK | wrdata, base + PCIE_RC_DL_MDIO_WR_DATA); > > - err = readw_poll_timeout_atomic(base + PCIE_RC_DL_MDIO_WR_DATA, data, > + err = readl_poll_timeout_atomic(base + PCIE_RC_DL_MDIO_WR_DATA, data, > MDIO_WT_DONE(data), 10, 100); > return err; > }
diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c index 009028feacdc..cb75e32458d6 100644 --- a/drivers/pci/controller/pcie-brcmstb.c +++ b/drivers/pci/controller/pcie-brcmstb.c @@ -418,7 +418,7 @@ static int brcm_pcie_mdio_write(void __iomem *base, u8 port, readl(base + PCIE_RC_DL_MDIO_ADDR); writel(MDIO_DATA_DONE_MASK | wrdata, base + PCIE_RC_DL_MDIO_WR_DATA); - err = readw_poll_timeout_atomic(base + PCIE_RC_DL_MDIO_WR_DATA, data, + err = readl_poll_timeout_atomic(base + PCIE_RC_DL_MDIO_WR_DATA, data, MDIO_WT_DONE(data), 10, 100); return err; }