Re: [PATCH 1/2] mc13783: add LED support

From: Richard Purdie
Date: Wed May 26 2010 - 08:01:40 EST


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


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/