[PATCH 4/6] drivers: net: octeontx: fix QSGMII
Suneel Garapati
suneelglinux at gmail.com
Fri Mar 26 17:08:55 CET 2021
This looks like a workaround than the root cause fix.
As this patch just moves the bringup of link from probe stage to on-demand.
On Thu, Mar 25, 2021 at 11:46 PM Stefan Roese <sr at denx.de> wrote:
>
> On 26.03.21 01:07, Tim Harvey wrote:
> > Revert a change that occured between the Marvell SDK-10.1.1.0
> > and SDK-10.3.1.1 which broke QSMII phy support.
> >
> > Signed-off-by: Tim Harvey <tharvey at gateworks.com>
>
> Thanks.
>
> Suneel, do you have a comment on this? Is this revert the "best way" to
> handle this?
>
> Thanks,
> Stefan
>
> > ---
> > drivers/net/octeontx/bgx.c | 20 +++++++-------------
> > 1 file changed, 7 insertions(+), 13 deletions(-)
> >
> > diff --git a/drivers/net/octeontx/bgx.c b/drivers/net/octeontx/bgx.c
> > index 2ea54be84d..a5c0c9fe2b 100644
> > --- a/drivers/net/octeontx/bgx.c
> > +++ b/drivers/net/octeontx/bgx.c
> > @@ -36,7 +36,6 @@ struct lmac {
> > int dmac;
> > u8 mac[6];
> > bool link_up;
> > - bool init_pend;
> > int lmacid; /* ID within BGX */
> > int phy_addr; /* ID on board */
> > struct udevice *dev;
> > @@ -849,6 +848,7 @@ static int bgx_lmac_enable(struct bgx *bgx, int8_t lmacid)
> > u64 cfg;
> >
> > lmac = &bgx->lmac[lmacid];
> > + lmac->bgx = bgx;
> >
> > debug("%s: lmac: %p, lmacid = %d\n", __func__, lmac, lmacid);
> >
> > @@ -895,16 +895,6 @@ int bgx_poll_for_link(int node, int bgx_idx, int lmacid)
> > debug("%s: %d, lmac: %d/%d/%d %p\n",
> > __FILE__, __LINE__,
> > node, bgx_idx, lmacid, lmac);
> > - if (lmac->init_pend) {
> > - ret = bgx_lmac_enable(lmac->bgx, lmacid);
> > - if (ret < 0) {
> > - printf("BGX%d LMAC%d lmac_enable failed\n", bgx_idx,
> > - lmacid);
> > - return ret;
> > - }
> > - lmac->init_pend = 0;
> > - mdelay(100);
> > - }
> > if (lmac->qlm_mode == QLM_MODE_SGMII ||
> > lmac->qlm_mode == QLM_MODE_RGMII ||
> > lmac->qlm_mode == QLM_MODE_QSGMII) {
> > @@ -1461,6 +1451,7 @@ int octeontx_bgx_remove(struct udevice *dev)
> >
> > int octeontx_bgx_probe(struct udevice *dev)
> > {
> > + int err;
> > struct bgx *bgx = dev_get_priv(dev);
> > u8 lmac = 0;
> > int qlm[4] = {-1, -1, -1, -1};
> > @@ -1540,8 +1531,11 @@ skip_qlm_config:
> > struct lmac *tlmac = &bgx->lmac[lmac];
> >
> > tlmac->dev = dev;
> > - tlmac->init_pend = 1;
> > - tlmac->bgx = bgx;
> > + err = bgx_lmac_enable(bgx, lmac);
> > + if (err) {
> > + printf("BGX%d failed to enable lmac%d\n",
> > + bgx->bgx_id, lmac);
> > + }
> > }
> >
> > return 0;
> >
>
>
> Viele Grüße,
> Stefan
>
> --
> DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de
More information about the U-Boot
mailing list