From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Christian Marangi <ansuelsmth@gmail.com>
Cc: "Andrew Lunn" <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Heiner Kallweit" <hkallweit1@gmail.com>,
"Florian Fainelli" <florian.fainelli@broadcom.com>,
"Broadcom internal kernel review list"
<bcm-kernel-feedback-list@broadcom.com>,
"Marek Behún" <kabel@kernel.org>,
"Andrei Botila" <andrei.botila@oss.nxp.com>,
"Sabrina Dubroca" <sd@queasysnail.net>,
"Eric Woudstra" <ericwouds@gmail.com>,
"Daniel Golle" <daniel@makrotopia.org>,
netdev@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.or
Subject: Re: [net-next PATCH v7 5/6] net: phy: Add support for Aeonsemi AS21xxx PHYs
Date: Tue, 15 Apr 2025 13:55:29 +0100 [thread overview]
Message-ID: <Z_5XQZvgdW6Wfo06@shell.armlinux.org.uk> (raw)
In-Reply-To: <67fe41e5.5d0a0220.1003f3.9737@mx.google.com>
On Tue, Apr 15, 2025 at 01:24:16PM +0200, Christian Marangi wrote:
> On Tue, Apr 15, 2025 at 10:37:49AM +0100, Russell King (Oracle) wrote:
> > > +static int aeon_ipcs_wait_cmd(struct phy_device *phydev, bool parity_status)
> > > +{
> > > + u16 val;
> > > +
> > > + /* Exit condition logic:
> > > + * - Wait for parity bit equal
> > > + * - Wait for status success, error OR ready
> > > + */
> > > + return phy_read_mmd_poll_timeout(phydev, MDIO_MMD_VEND1, VEND1_IPC_STS, val,
> > > + FIELD_GET(AEON_IPC_STS_PARITY, val) == parity_status &&
> > > + (val & AEON_IPC_STS_STATUS) != AEON_IPC_STS_STATUS_RCVD &&
> > > + (val & AEON_IPC_STS_STATUS) != AEON_IPC_STS_STATUS_PROCESS &&
> > > + (val & AEON_IPC_STS_STATUS) != AEON_IPC_STS_STATUS_BUSY,
> > > + AEON_IPC_DELAY, AEON_IPC_TIMEOUT, false);
> >
> > Hmm. I'm wondering whether:
> >
> > static bool aeon_ipc_ready(u16 val, bool parity_status)
> > {
> > u16 status;
> >
> > if (FIELD_GET(AEON_IPC_STS_PARITY, val) != parity_status)
> > return false;
> >
> > status = val & AEON_IPC_STS_STATUS;
> >
> > return status != AEON_IPC_STS_STATUS_RCVD &&
> > status != AEON_IPC_STS_STATUS_PROCESS &&
> > status != AEON_IPC_STS_STATUS_BUSY;
> > }
> >
> > would be better, and then maybe you can fit the code into less than 80
> > columns. I'm not a fan of FIELD_PREP_CONST() when it causes differing
> > usage patterns like the above (FIELD_GET(AEON_IPC_STS_STATUS, val)
> > would match the coding style, and probably makes no difference to the
> > code emitted.)
> >
>
> You are suggesting to use a generic readx function or use a while +
> sleep to use the suggested _ready function?
To write the other part of it (I thought this would be obvious!):
+ return phy_read_mmd_poll_timeout(phydev, MDIO_MMD_VEND1, VEND1_IPC_STS, val,
+ aeon_ipc_ready(val, parity_status),
+ AEON_IPC_DELAY, AEON_IPC_TIMEOUT, false);
> Mhhh I think I will have to create __ function for locked and non-locked
> variant. I think I woulkd just handle the lock in the function using
> send and rcv and maybe add some smatch tag to make sure the lock is
> taken when entering those functions.
If you don't need the receive part, then pass NULL in for the receive
data pointer, and use that to conditionalise that part?
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2025-04-15 12:55 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-10 9:53 [net-next PATCH v7 0/6] net: phy: Add support for new Aeonsemi PHYs Christian Marangi
2025-04-10 9:53 ` [net-next PATCH v7 1/6] net: phy: pass PHY driver to .match_phy_device OP Christian Marangi
2025-04-10 9:53 ` [net-next PATCH v7 2/6] net: phy: bcm87xx: simplify " Christian Marangi
2025-04-10 9:53 ` [net-next PATCH v7 3/6] net: phy: nxp-c45-tja11xx: " Christian Marangi
2025-04-15 10:56 ` Andrei Botila
2025-04-10 9:53 ` [net-next PATCH v7 4/6] net: phy: introduce genphy_match_phy_device() Christian Marangi
2025-04-10 9:53 ` [net-next PATCH v7 5/6] net: phy: Add support for Aeonsemi AS21xxx PHYs Christian Marangi
2025-04-14 23:36 ` Jakub Kicinski
2025-04-15 1:14 ` Andrew Lunn
2025-04-15 11:19 ` Christian Marangi
2025-04-15 9:37 ` Russell King (Oracle)
2025-04-15 11:24 ` Christian Marangi
2025-04-15 12:33 ` Andrew Lunn
2025-04-15 12:55 ` Russell King (Oracle) [this message]
2025-04-15 13:04 ` Christian Marangi
2025-04-10 9:53 ` [net-next PATCH v7 6/6] dt-bindings: net: Document support for Aeonsemi PHYs Christian Marangi
2025-04-15 9:56 ` [net-next PATCH v7 0/6] net: phy: Add support for new " Russell King (Oracle)
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=Z_5XQZvgdW6Wfo06@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=andrei.botila@oss.nxp.com \
--cc=andrew+netdev@lunn.ch \
--cc=ansuelsmth@gmail.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=conor+dt@kernel.org \
--cc=daniel@makrotopia.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=ericwouds@gmail.com \
--cc=florian.fainelli@broadcom.com \
--cc=hkallweit1@gmail.com \
--cc=kabel@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.or \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
--cc=sd@queasysnail.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.