From: Richard Purdie on
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(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Mark Brown on
On Wed, May 26, 2010 at 01:01:08PM +0100, Richard Purdie wrote:
> On Mon, 2010-05-17 at 21:00 +0100, Mark Brown wrote:

> > 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 :)

In my copious free time, perhaps. I was kind of hoping someone actively
working on a driver could be inspired to do the work :)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/