From: Andrew Lunn <andrew@lunn.ch>
To: Michael Walle <michael@walle.cc>
Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org,
netdev@vger.kernel.org, Jean Delvare <jdelvare@suse.com>,
Guenter Roeck <linux@roeck-us.net>,
Florian Fainelli <f.fainelli@gmail.com>,
Heiner Kallweit <hkallweit1@gmail.com>,
Russell King <linux@armlinux.org.uk>,
"David S . Miller" <davem@davemloft.net>
Subject: Re: [PATCH net-next 3/3] net: phy: bcm54140: add hwmon support
Date: Mon, 20 Apr 2020 17:36:25 +0200 [thread overview]
Message-ID: <20200420153625.GA917792@lunn.ch> (raw)
In-Reply-To: <75428c5faab7fc656051ab227663e6e6@walle.cc>
> Ok I see, but what locking do you have in mind? We could have something
> like
>
> __phy_package_write(struct phy_device *dev, u32 regnum, u16 val)
> {
> return __mdiobus_write(phydev->mdio.bus, phydev->shared->addr,
> regnum, val);
> }
>
> and its phy_package_write() equivalent. But that would just be
> convenience functions, nothing where you actually help the user with
> locking. Am I missing something?
In general, drivers should not be using __foo functions. We want
drivers to make use of phy_package_write() which would do the bus
locking. Look at a typical PHY driver. There is no locking what so
ever. Just lots of phy_read() and phy write(). The locking is done by
the core and so should be correct.
> > > > Get the core to do reference counting on the structure?
> > > > Add helpers phy_read_shared(), phy_write_shared(), etc, which does
> > > > MDIO accesses on the base device, taking care of the locking.
> > > >
> > > The "base" access is another thing, I guess, which has nothing to do
> > > with the shared structure.
> > >
> > I'm making the assumption that all global addresses are at the base
> > address. If we don't want to make that assumption, we need the change
> > the API above so you pass a cookie, and all PHYs need to use the same
> > cookie to identify the package.
>
> how would a phy driver deduce a common cookie? And how would that be a
> difference to using a PHY address.
For a cookie, i don't care how the driver decides on the cookie. The
core never uses it, other than comparing cookies to combine individual
PHYs into a package. It could be a PHY address. It could be the PHY
address where the global registers are. Or it could be anything else.
> > Maybe base is the wrong name, since MSCC can have the base as the high
> > address of the four, not the low?
>
> I'd say it might be any of the four addresses as long as it is the same
> across the PHYs in the same package. And in that case you can also have
> the phy_package_read/write() functions.
Yes. That is the semantics which is think is most useful. But then we
don't have a cookie, the value has real significance, and we need to
document what is should mean.
Andrew
next prev parent reply other threads:[~2020-04-20 15:36 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-17 19:28 [PATCH net-next 1/3] net: phy: broadcom: add helper to write/read RDB registers Michael Walle
2020-04-17 19:28 ` [PATCH net-next 2/3] net: phy: add Broadcom BCM54140 support Michael Walle
2020-04-17 19:39 ` Andrew Lunn
2020-04-17 19:50 ` Michael Walle
2020-04-17 20:00 ` Vladimir Oltean
2020-04-17 21:04 ` Michael Walle
2020-04-17 20:12 ` Andrew Lunn
2020-04-17 19:28 ` [PATCH net-next 3/3] net: phy: bcm54140: add hwmon support Michael Walle
2020-04-17 19:50 ` Andrew Lunn
2020-04-17 19:53 ` Michael Walle
2020-04-17 20:13 ` Andrew Lunn
2020-04-17 21:08 ` Michael Walle
2020-04-17 21:28 ` Andrew Lunn
2020-04-19 10:29 ` Michael Walle
2020-04-19 16:29 ` Andrew Lunn
2020-04-19 16:47 ` Michael Walle
2020-04-19 17:05 ` Andrew Lunn
2020-04-19 21:31 ` Michael Walle
2020-04-19 21:55 ` Andrew Lunn
2020-04-20 15:10 ` Michael Walle
2020-04-20 15:36 ` Andrew Lunn [this message]
2020-04-20 16:11 ` Michael Walle
2020-04-20 17:20 ` Russell King - ARM Linux admin
2020-04-19 17:12 ` Russell King - ARM Linux admin
2020-04-18 3:09 ` Guenter Roeck
2020-04-17 19:34 ` [PATCH net-next 1/3] net: phy: broadcom: add helper to write/read RDB registers Florian Fainelli
2020-04-18 14:13 ` Andrew Lunn
2020-04-18 15:55 ` Florian Fainelli
2020-04-18 20:09 ` Michael Walle
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=20200420153625.GA917792@lunn.ch \
--to=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=hkallweit1@gmail.com \
--cc=jdelvare@suse.com \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=linux@roeck-us.net \
--cc=michael@walle.cc \
--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 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.