From: Jerome Brunet <jbrunet@baylibre.com>
To: Andrew Lunn <andrew@lunn.ch>
Cc: netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>,
linux-amlogic@lists.infradead.org,
Kevin Hilman <khilman@baylibre.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Da Xue <da@lessconfused.com>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next 2/2] net: mdio: add amlogic gxl mdio mux support
Date: Thu, 19 Jan 2023 11:55:29 +0100 [thread overview]
Message-ID: <1jmt6eye1m.fsf@starbuckisacylon.baylibre.com> (raw)
In-Reply-To: <Y8dhUwIMb4tTeqWN@lunn.ch>
On Wed 18 Jan 2023 at 04:02, Andrew Lunn <andrew@lunn.ch> wrote:
>> +static int gxl_enable_internal_mdio(struct gxl_mdio_mux *priv)
>> +{
>> + u32 val;
>> +
>> + /* Setup the internal phy */
>> + val = (REG3_ENH |
>> + FIELD_PREP(REG3_CFGMODE, 0x7) |
>> + REG3_AUTOMDIX |
>> + FIELD_PREP(REG3_PHYADDR, 8) |
>> + REG3_LEDPOL |
>> + REG3_PHYMDI |
>> + REG3_CLKINEN |
>> + REG3_PHYIP);
>> +
>> + writel_relaxed(REG4_PWRUPRSTSIG, priv->regs + ETH_REG4);
>> + writel_relaxed(val, priv->regs + ETH_REG3);
>> + mdelay(10);
>
> Probably the second _relaxed() should not be. You want it guaranteed
> to be written out before you do the mdelay().
Good point, I'll have a look
>
>> +
>> + /* Set the internal phy id */
>> + writel_relaxed(FIELD_PREP(REG2_PHYID, 0x110181),
>> + priv->regs + ETH_REG2);
>
> So how does this play with what Heiner has been reporting recently?
What Heiner reported recently is related to the g12 family, not the gxl
which this driver address.
That being said, the g12 does things in a similar way - the glue
is just a bit different:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/mdio/mdio-mux-meson-g12a.c?h=v6.2-rc4#n165
> What is the reset default? Who determined this value?
It's the problem, the reset value is 0. That is why GXL does work with the
internal PHY if the bootloader has not initialized it before the kernel
comes up ... and there is no guarantee that it will.
The phy id value is arbitrary, same as the address. They match what AML
is using internally.
They have been kept to avoid making a mess if a vendor bootloader is
used with the mainline kernel, I guess.
I suppose any value could be used here, as long as it matches the value
in the PHY driver:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/phy/meson-gxl.c?h=v6.2-rc4#n253
>
>> + /* Enable the internal phy */
>> + val |= REG3_PHYEN;
>> + writel_relaxed(val, priv->regs + ETH_REG3);
>> + writel_relaxed(0, priv->regs + ETH_REG4);
>> +
>> + /* The phy needs a bit of time to come up */
>> + mdelay(10);
>
> What do you mean by 'come up'? Not link up i assume. But maybe it will
> not respond to MDIO requests?
Yes this MDIO multiplexer is also the glue that provides power and
clocks to the internal PHY. Once the internal PHY is selected, it needs
a bit a of time before it is usuable.
>
> Andrew
next prev parent reply other threads:[~2023-01-19 11:12 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-16 9:16 [PATCH net-next 0/2] net: mdio: add amlogic gxl mdio mux support Jerome Brunet
2023-01-16 9:16 ` [PATCH net-next 1/2] dt-bindings: net: add amlogic gxl mdio multiplexer Jerome Brunet
2023-01-17 8:31 ` Krzysztof Kozlowski
2023-01-17 9:05 ` Jerome Brunet
2023-01-17 10:39 ` Krzysztof Kozlowski
2023-01-16 9:16 ` [PATCH net-next 2/2] net: mdio: add amlogic gxl mdio mux support Jerome Brunet
2023-01-16 12:11 ` Simon Horman
2023-01-16 13:27 ` Jerome Brunet
2023-01-16 13:51 ` Simon Horman
2023-01-18 2:56 ` Andrew Lunn
2023-01-18 12:41 ` Simon Horman
2023-01-18 3:02 ` Andrew Lunn
2023-01-19 10:55 ` Jerome Brunet [this message]
2023-01-19 17:17 ` Andrew Lunn
2023-01-20 10:16 ` Jerome Brunet
2023-01-18 3:08 ` [PATCH net-next 0/2] " Andrew Lunn
2023-01-19 10:42 ` Jerome Brunet
2023-01-19 17:21 ` Andrew Lunn
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=1jmt6eye1m.fsf@starbuckisacylon.baylibre.com \
--to=jbrunet@baylibre.com \
--cc=andrew@lunn.ch \
--cc=da@lessconfused.com \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=khilman@baylibre.com \
--cc=linux-amlogic@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=netdev@vger.kernel.org \
/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