Re: [RFC PATCH net-next 1/3] net: phy: add concept of shared storage for PHYs

From: Michael Walle
Date: Tue Apr 21 2020 - 17:19:52 EST


Am 2020-04-21 21:30, schrieb Andrew Lunn:
Speaking of it. Does anyone have an idea how I could create the hwmon
device without the PHY device? At the moment it is attached to the
first PHY device and is removed when the PHY is removed, although
there might be still other PHYs in this package. Its unlikely to
happen though, but if someone has a good idea how to handle that,
I'd give it a try.

There is a somewhat similar problem with Marvell Ethernet switches and
their internal PHYs. The PHYs are the same as the discrete PHYs, and
the usual Marvell PHY driver is used. But there is only one
temperature sensor for the whole switch, and it is mapped into all the
PHYs. So we end up creating multiple hwmon devices for the one
temperature sensor, one per PHY.

You could take the same approach here. Each PHY exposes a hwmon
device?

Looking at
static struct device *
__hwmon_device_register(struct device *dev, const char *name, void *drvdata,
const struct hwmon_chip_info *chip,
const struct attribute_group **groups)

I think it is O.K. to pass dev as NULL. You don't have to associate it
to a device. So you could create the hwmon device as part of package
initialisation and put it into shared->priv.

I actually tried that before writing my mail. Have a look at commit
59df4f4e8e0b ("hwmon: (core) check parent dev != NULL when chip != NULL")

and the corresponding discussion here:
https://patchwork.kernel.org/patch/10381759/

And if I'd had to choose, I'd prefer having one hwmon device on the
first PHY (with its drawback) rather than having it four times.

-michael