lkml.org 
[lkml]   [2011]   [Aug]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [v2 3/4] platform: (TS-5500) add LED support
    On Mon, 29 Aug 2011 22:37:53 -0700,
    "H. Peter Anvin" <hpa@zytor.com> wrote:

    > On 08/29/2011 03:16 PM, Mark Brown wrote:
    > > On Fri, Aug 26, 2011 at 07:40:26PM -0400, Vivien Didelot wrote:
    > >
    > >> +static void ts5500_led_work(struct work_struct *work)
    > >> +{
    > >> + struct ts5500_led *led = container_of(work, struct
    > >> ts5500_led, work);
    > >> + u8 val = led->new_brightness ? led->bit : 0;
    > >> +
    > >> + outb(val, led->ioaddr);
    > >> +}
    > >
    > > Can you not do outb() from atomic context? The reason lots of LED
    > > drivers update the hardware in a workqueue is that they communicate
    > > with the hardware over buses that can't be used in atomic context
    > > like I2C or SPI but if that's not an issue then the workqueue is
    > > not required and the code can be simplified.
    >
    > outb() can definitely be executed from atomic context.
    >
    > -hpa

    Good to know, thanks. I removed the work_struct and instead lock a mutex
    before setting led->new_brightness and calling outb().

    Vivien.


    \
     
     \ /
      Last update: 2011-08-30 23:17    [W:0.020 / U:61.916 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site