Messages in this thread | | | Date | Mon, 8 Nov 2021 15:04:23 +0100 | From | Andrew Lunn <> | Subject | Re: [RFC PATCH v2 1/5] leds: trigger: add API for HW offloading of triggers |
| |
> +static inline int led_trigger_offload(struct led_classdev *led_cdev) > +{ > + int ret; > + > + if (!led_cdev->trigger_offload) > + return -EOPNOTSUPP; > + > + ret = led_cdev->trigger_offload(led_cdev, true); > + led_cdev->offloaded = !ret; > + > + return ret; > +} > + > +static inline void led_trigger_offload_stop(struct led_classdev *led_cdev) > +{ > + if (!led_cdev->trigger_offload) > + return; > + > + if (led_cdev->offloaded) { > + led_cdev->trigger_offload(led_cdev, false); > + led_cdev->offloaded = false; > + } > +} > +#endif
I think there should be two calls into the cdev driver, not this true/false parameter. trigger_offload_start() and trigger_offload_stop().
There are also a number of PHYs which don't allow software blinking of the LED. So for them, trigger_offload_stop() is going to return -EOPNOTSUPP. And you need to handle that correctly.
It would be go to also document the expectations of trigger_offload_stop(). Should it leave the LED in whatever state it was, or force it off?
Andrew
| |