lkml.org 
[lkml]   [2022]   [Mar]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH RFC net-next 2/5] net: phy: support indirect c45 access in get_phy_c45_ids()
Am 2022-03-23 20:39, schrieb Andrew Lunn:
>> +static int mdiobus_probe_mmd_read(struct mii_bus *bus, int prtad, int
>> devad,
>> + u16 regnum)
>> +{
>> + int ret;
>> +
>> + /* For backwards compatibility, treat MDIOBUS_NO_CAP as c45 capable
>> */
>> + if (bus->probe_capabilities == MDIOBUS_NO_CAP ||
>> + bus->probe_capabilities >= MDIOBUS_C45)
>
> Maybe we should do the work and mark up those that are C45 capable. At
> a quick count, see 16 of them.

You mean look at they are MDIOBUS_C45, MDIOBUS_C22_C45 or MDIOBUS_C22
and drop MDIOBUS_NO_CAP?

>
>> + return mdiobus_c45_read(bus, prtad, devad, regnum);
>> +
>> + mutex_lock(&bus->mdio_lock);
>> +
>> + /* Write the desired MMD Devad */
>> + ret = __mdiobus_write(bus, prtad, MII_MMD_CTRL, devad);
>> + if (ret)
>> + goto out;
>> +
>> + /* Write the desired MMD register address */
>> + ret = __mdiobus_write(bus, prtad, MII_MMD_DATA, regnum);
>> + if (ret)
>> + goto out;
>> +
>> + /* Select the Function : DATA with no post increment */
>> + ret = __mdiobus_write(bus, prtad, MII_MMD_CTRL,
>> + devad | MII_MMD_CTRL_NOINCR);
>> + if (ret)
>> + goto out;
>
> Make mmd_phy_indirect() usable, rather then repeat it.

I actually had that. But mmd_phy_indirect() doesn't check
the return code and neither does the __phy_write_mmd() it
actually deliberatly sets "ret = 0". So I wasn't sure. If you
are fine with a changed code flow in the error case, then sure.
I.e. mmd_phy_indirect() always (try to) do three accesses; with
error checks it might end after the first. If you are fine
with the error checks, should __phy_write_mmd() also check the
last mdiobus_write()?

-michael

\
 
 \ /
  Last update: 2022-03-23 23:14    [W:0.068 / U:2.064 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site