Re: [PATCH] leds: add LED driver for CR0014114 board

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12.08.17 20:46, Pavel Machek wrote:
> On Sat 2017-08-12 14:34:02, Oleh Kravchenko wrote:
>> On 12.08.17 13:56, Pavel Machek wrote:
>>> Hi!
>>>
>>>>> On Sat 2017-08-12 12:09:35, Oleh Kravchenko wrote:
>>>>>> This patch adds a LED class driver for the RGB LEDs found on
>>>>>> the Crane Merchandising System CR0014114 LEDs board.
>>>>>
>>>>> What kind of hardware is this? 
>>>>
>>>> It's from vending machines produced by Crane Merchandising System http://cranems.com/
>>>>  
>>>>>> Driver creates LED devices with name written using the following
>>>>>> pattern "LABEL-{N}:{red,green,blue}:".
>>>>>
>>>>> Is the "-{N} suffix needed?
>>>>
>>>> It's number of RGB LED, board has 6 LEDs.
>>>
>>> Normally label differentiates them...?
>>
>> For example, possible names when two boards connected is:
>> /sys/class/leds/board0-0:blue:
>> /sys/class/leds/board0-0:green:
>> /sys/class/leds/board0-0:red:
> 
> Hmm. Well, this works if you can't provide better names. Still "board"
> is somehow generic, andsomeone else might want to use it. "board" ->
> "crms"?

It's specified in device tree by defining label.
In my examples:
board@0 {
       compatible = "ccs,cr0014114";
       reg = <0>;
       spi-max-frequency = <50000>;
       spi-cpha;
       label = "board0";
};

board@1 {
       compatible = "ccs,cr0014114";
       reg = <1>;
       spi-max-frequency = <50000>;
       spi-cpha;
       label = "board1";
};
 
>>>>>> +	while (i--)
>>>>>> +		led_classdev_unregister(&priv->leds[i].ldev);
>>>>>
>>>>> Can devm_* be used to simplify this?
>>>>
>>>> I think no, because it will cause race condition.
>>>
>>> Please take a look at devm_led_classdev_register() and friends. It
>>> should be possible to simplify code without races.
>>
>> I don't understand how I can call destroy_workqueue() after calling unregister leds.
> 
> Do you actually need the workqueues? It should be possible to avoid
> them, using workqueue support in the core.

The delay between data sends to SPI board should be at least 10 ms
I think it will be bad idea to use shared workqueue from kernel,
so I create separate single threaded work queue :)

-- 
Best regards,
Oleh Kravchenko

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux