[PATCH 1/2] mc13783: add LED support
Richard Purdie
rpurdie at rpsys.net
Wed May 26 08:01:08 EDT 2010
On Mon, 2010-05-17 at 21:00 +0100, Mark Brown wrote:
> On Mon, May 17, 2010 at 09:02:42PM +0200, Uwe Kleine-K?nig wrote:
> > On Mon, May 17, 2010 at 06:40:22PM +0200, Philippe R?tornaz wrote:
>
> > > +static void mc13783_led_set(struct led_classdev *led_cdev,
> > > + enum led_brightness value)
> > > +{
> > > + struct mc13783_led *led;
> > > +
> > > + led = container_of(led_cdev, struct mc13783_led, cdev);
> > > + led->new_brightness = value;
> > > + schedule_work(&led->work);
> > > +}
>
> > I wonder why you don't set the registers directly here, but use a work
> > struct instead.
>
> The LED API allows clients to configure the LEDs from interrupt context
> so for devices on blocking buses (like this) the driver needs to defer
> the actual implementation of the change.
>
> It'd be nice to add helpers for this to the LED core, there's quite a
> few drivers implementing this idiom now - a flag that does the deferring
> of the set() for example.
Agreed, or a wrapper around the core which deferred implementations
could just use. I'm open to patches :)
Cheers,
Richard
More information about the linux-arm-kernel
mailing list