Re: [PATCH 2/2] net: phy: dp83867: support setting output-impedance
Andrew Lunn <[email protected]>
| Newsgroups | org.kernel.vger.netdev,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Tue, Aug 04, 2026 at 02:46:34PM +0200, Steffen Trumtrar wrote: > Currently the dp83867 supports setting the io impedance to minimum, > maximum, default or a value from a nvmem cell. In situations where there > is no backend for a nvmem cell, the value can not be set to anything but > minimum, maximum or default. > > Add support for the ti,output-impedance binding, allowing to specify the > impedance via the devicetree. The existing boolean bindings for minimum > and maximum take precedence over this new binding. The nvmem consumer > still takes lowest precedence. > > Signed-off-by: Steffen Trumtrar <[email protected]> > --- > drivers/net/phy/dp83867.c | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/phy/dp83867.c b/drivers/net/phy/dp83867.c > index 88255e92b4cdb..e98c5d940410e 100644 > --- a/drivers/net/phy/dp83867.c > +++ b/drivers/net/phy/dp83867.c > @@ -542,12 +542,19 @@ static int dp83867_of_init_io_impedance(struct phy_device *phydev) > "failed to get nvmem cell io_impedance_ctrl\n"); > > /* If no nvmem cell, check for the boolean properties. */ > - if (of_property_read_bool(of_node, "ti,max-output-impedance")) > + if (of_property_read_bool(of_node, "ti,max-output-impedance")) { > dp83867->io_impedance = DP83867_IO_MUX_CFG_IO_IMPEDANCE_MAX; > - else if (of_property_read_bool(of_node, "ti,min-output-impedance")) > + } else if (of_property_read_bool(of_node, "ti,min-output-impedance")) { > dp83867->io_impedance = DP83867_IO_MUX_CFG_IO_IMPEDANCE_MIN; > - else > + } else if (of_property_read_u32(of_node, "ti,output-impedance", &val)) { > + if ((val & DP83867_IO_MUX_CFG_IO_IMPEDANCE_MASK) != val) { > + phydev_err(phydev, "'ti,output-impedance' contents out of range\n"); The binding says 35-70. A simple mask operation is not sufficient for that. Andrew