From: Lukasz Majewski <lukma@denx.de>
To: <Tristram.Ha@microchip.com>
Cc: <andrew@lunn.ch>, <f.fainelli@gmail.com>, <olteanv@gmail.com>,
<davem@davemloft.net>, <edumazet@google.com>, <kuba@kernel.org>,
<Woojung.Huh@microchip.com>, <pabeni@redhat.com>,
<netdev@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<UNGLinuxDriver@microchip.com>
Subject: Re: [PATCH 2/2] net: dsa: microchip: Provide Module 4 KSZ9477 errata (DS80000754C)
Date: Fri, 25 Aug 2023 10:39:11 +0200 [thread overview]
Message-ID: <20230825103911.682b3d70@wsk> (raw)
In-Reply-To: <BYAPR11MB35583A648E4E44944A0172A0ECE3A@BYAPR11MB3558.namprd11.prod.outlook.com>
[-- Attachment #1: Type: text/plain, Size: 3426 bytes --]
Hi Tristram,
> > +static int ksz9477_errata(struct dsa_switch *ds)
> > +{
> > + struct ksz_device *dev = ds->priv;
> > + u16 val;
> > + int p;
> > +
> > + /* KSZ9477 Errata DS80000754C
> > + *
> > + * Module 4: Energy Efficient Ethernet (EEE) feature select
> > must be
> > + * manually disabled
> > + * The EEE feature is enabled by default, but it is not
> > fully
> > + * operational. It must be manually disabled through
> > register
> > + * controls. If not disabled, the PHY ports can
> > auto-negotiate
> > + * to enable EEE, and this feature can cause link drops
> > when linked
> > + * to another device supporting EEE.
> > + *
> > + * Only PHY ports (dsa user) [0-4] need to have the EEE
> > advertisement
> > + * bits cleared.
> > + */
> > +
> > + for (p = 0; p < ds->num_ports; p++) {
> > + if (!dsa_is_user_port(ds, p))
> > + continue;
> > +
> > + ksz9477_port_mmd_read(dev, p, MMD_DEVICE_ID_EEE_ADV,
> > + MMD_EEE_ADV, &val, 1);
> > +
> > + pr_err("%s: PORT: %d val: 0x%x pc: %d\n", __func__,
> > p, val,
> > + ds->num_ports);
> > +
> > + val &= ~(EEE_ADV_100MBIT | EEE_ADV_1GBIT);
> > + ksz9477_port_mmd_write(dev, p,
> > MMD_DEVICE_ID_EEE_ADV,
> > + MMD_EEE_ADV, &val, 1);
> > + }
> > +
> > + return 0;
> > +}
> > +
> > int ksz9477_setup(struct dsa_switch *ds)
> > {
> > struct ksz_device *dev = ds->priv;
> > @@ -1157,7 +1195,7 @@ int ksz9477_setup(struct dsa_switch *ds)
> > /* enable global MIB counter freeze function */
> > ksz_cfg(dev, REG_SW_MAC_CTRL_6, SW_MIB_COUNTER_FREEZE,
> > true);
> >
> > - return 0;
> > + return ksz9477_errata(ds);
> > }
>
> I would prefer to execute the code in ksz9477_config_cpu_port(), as at
> the end there is already a loop to do something to each port.
Just some explanation of the taken approach:
1. I've followed already in-mainline code for ksz8795.c
(ksz8_handle_global_errata(ds)) which is executed in ksz8_setup
function.
2. I do believe, that separate "errata" function would be more
readable, as KSZ9477 has many more erratas to be added.
> The
> check to disable EEE or not should be dev->info->internal_phy[port],
> as one of the user ports can be RGMII or SGMII, which does not have a
> PHY that can be accessed inside the switch.
Yes, this would be better solution. Thanks for the suggestion.
>
> As the EEE register value is simply 6 it should be enough to just set
> the register to zero. If so we do not need to add back those
> ksz9477_port_mmd_setup functions and just use ksz_pwrite16() to write
> to the MMD register.
>
IMHO adding functions to MMD modification would facilitate further
development (for example LED setup).
However, if we only plan to fix this errata, then the MMD access
functions are not required.
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2023-08-25 8:39 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-24 15:48 [PATCH 1/2] net: dsa: microchip: KSZ9477: Provide functions to access MMD registers Lukasz Majewski
2023-08-24 15:48 ` [PATCH 2/2] net: dsa: microchip: Provide Module 4 KSZ9477 errata (DS80000754C) Lukasz Majewski
2023-08-24 15:54 ` Florian Fainelli
2023-08-25 7:42 ` Lukasz Majewski
2023-08-25 1:12 ` Tristram.Ha
2023-08-25 8:39 ` Lukasz Majewski [this message]
2023-08-25 15:26 ` Florian Fainelli
2023-08-25 18:48 ` Tristram.Ha
2023-08-26 10:49 ` Vladimir Oltean
2023-08-29 8:35 ` Lukasz Majewski
2023-08-29 10:18 ` Vladimir Oltean
2023-08-29 11:24 ` Lukasz Majewski
2023-08-29 11:47 ` Oleksij Rempel
2023-08-29 12:38 ` Lukasz Majewski
2023-08-29 14:42 ` Oleksij Rempel
2023-08-29 15:29 ` Lukasz Majewski
2023-08-29 17:12 ` Oleksij Rempel
2023-08-29 22:23 ` Tristram.Ha
2023-08-30 6:16 ` Oleksij Rempel
2023-08-30 8:13 ` Lukasz Majewski
2023-08-29 21:57 ` Tristram.Ha
2023-08-29 22:00 ` Florian Fainelli
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230825103911.682b3d70@wsk \
--to=lukma@denx.de \
--cc=Tristram.Ha@microchip.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=Woojung.Huh@microchip.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).