Re: [PATCH 2/2] net: phy: dp83867: support setting output-impedance
From: Andrew Lunn
Date: Thu Aug 06 2026 - 09:30:20 EST
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 <s.trumtrar@xxxxxxxxxxxxxx>
> ---
> 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