Subject: Re: [net-next PATCH v8 3/5] net: phy: add support for PHY LEDs polarity modes

From: Christian Marangi <[email-masked]>
Date: Thu, 4 Jan 2024 22:42:23 +0100

On Thu, Jan 04, 2024 at 02:20:45PM +0100, Andrew Lunn wrote:
> > +	if (phydev->drv->led_polarity_set) {
> > +		if (of_property_read_bool(led, "active-low"))
> > +			set_bit(PHY_LED_ACTIVE_LOW, &modes);
> > +		if (of_property_read_bool(led, "inactive-high-impedance"))
> > +			set_bit(PHY_LED_INACTIVE_HIGH_IMPEDANCE, &modes);
> > +
> > +		err = phydev->drv->led_polarity_set(phydev, index, modes);
> > +		if (err)
> > +			return err;
> > +	}
> 
> I think we should return an error if asked to set the mode, but its
> not implemented by the driver. Something like:
> 
> 	if (of_property_read_bool(led, "active-low"))
> 		set_bit(PHY_LED_ACTIVE_LOW, &modes);
> 	if (of_property_read_bool(led, "inactive-high-impedance"))
> 		set_bit(PHY_LED_INACTIVE_HIGH_IMPEDANCE, &modes);
> 
> 		
> 	if (mode)
> 		if (phydev->drv->led_polarity_set) {
> 			return -EINVAL;
> 		} else {
> 			err = phydev->drv->led_polarity_set(phydev, index, modes);
> 			if (err)
> 				return err;
> 		}
> 	}
> 
> > +	/**
> > +	 * @led_polarity_set: Set the LED polarity if active low
> 
> The 'if active low' is not ouw of date, since it is used for more than
> that.
> 
> > +	 * @dev: PHY device which has the LED
> > +	 * @index: Which LED of the PHY device or -1
> > +	 * @modes: bitmap of LED polarity modes
> > +	 *
> > +	 * Configure LED with all the required polarity modes in @modes
> > +	 * to make it correctly turn ON or OFF.
> 
> index == -1 should be explained.
>

If you are referring to the special way of setting the LED globally,
that is not a thing anymore. Rob pointed out that having the double
reference in DT is problematic and PHY driver should handle that
internally.

> > +	 *
> > +	 * Returns 0, or an error code.
> > +	 */
> > +	int (*led_polarity_set)(struct phy_device *dev, int index,
> > +				unsigned long modes);
> 
> 
>     Andrew
> 
> ---
> pw-bot: cr

-- 
	Ansuel