From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756051AbcDLHNb (ORCPT ); Tue, 12 Apr 2016 03:13:31 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:46649 "EHLO mailout4.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751181AbcDLHN3 (ORCPT ); Tue, 12 Apr 2016 03:13:29 -0400 X-AuditID: cbfec7f5-f792a6d000001302-43-570ca0157a4a Message-id: <570CA014.7000709@samsung.com> Date: Tue, 12 Apr 2016 09:13:24 +0200 From: Jacek Anaszewski User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130804 Thunderbird/17.0.8 MIME-version: 1.0 To: Pavel Machek Cc: Jacek Anaszewski , Heiner Kallweit , Greg KH , linux-leds@vger.kernel.org, Benjamin Tissoires , linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, pali.rohar@gmail.com, sre@kernel.org, khilman@kernel.org, aaro.koskinen@iki.fi, ivo.g.dimitrov.75@gmail.com, Patrik Bachan , serge@hallyn.com Subject: Re: [PATCH v5 1/4] leds: core: add generic support for RGB Color LED's References: <20160401135748.GD11860@amd> <56FEC444.4040106@gmail.com> <20160401211844.GA21768@amd> <5702DDD2.2030902@gmail.com> <20160405090141.GA23282@amd> <570415C4.5070003@gmail.com> <20160406085248.GB10196@amd> <5704DC93.6050104@gmail.com> <20160407204540.GA11202@amd> <5707FCC0.6000204@gmail.com> <20160409160142.GD19362@xo-6d-61-c0.localdomain> In-reply-to: <20160409160142.GD19362@xo-6d-61-c0.localdomain> Content-type: text/plain; charset=ISO-8859-1; format=flowed Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupnkeLIzCtJLcpLzFFi42I5/e/4ZV3RBTzhBv3HFCzWvHCwuD5lM6vF uQUzGC0WvZ/BarHkyiF2i9tbN7BYPN38mMni8q45bBZb36wDyi5rZbaYePo3k8XCm03MFndP HWWzOH/hHLvF6d0lDvweO2fdZfe4tjvS4/DXhSwem1Z1snm8fRjg8X7fVTaPFau/s3t83iQX wBHFZZOSmpNZllqkb5fAldH+ZyZjwQqpipa9LA2M20S7GDk5JARMJJa83MsCYYtJXLi3nq2L kYtDSGApo8Tr/a+ZIZxnjBJrX29n7GLk4OAV0JJ4dlkXpIFFQFXiwZQv7CA2m4ChxM8Xr5lA bFGBCIk/p/exgti8AoISPybfA1sgIiAvsbVvBdhMZoGNzBKXlmxnBkkIC/hLnP/YCLXsBZNE 22GIBKeArcTbD7PZQGxmAWuJlZO2MULY8hKb17xlnsAoMAvJkllIymYhKVvAyLyKUTS1NLmg OCk910ivODG3uDQvXS85P3cTIySavu5gXHrM6hCjAAejEg+vpRtPuBBrYllxZe4hRgkOZiUR Xr7ZQCHelMTKqtSi/Pii0pzU4kOM0hwsSuK8M3e9DxESSE8sSc1OTS1ILYLJMnFwSjUwqkz0 q/7Vks7VPkPJp+dr5e6zSXM22n+Zv13RlGPzxW/hXSsP3E0T8P8o2buoJZKzsEFh6cKJal/3 Msk9mpox0b72rn+QjpbRjGfrMzee3+d1/ek9r+ktBRo70lsV1nPwTqufxlu/MfPElU7V+r3l C2R1Nr6coPDC1WfrzpsytsWf3/f+v5Jjq8RSnJFoqMVcVJwIALkqShOiAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/09/2016 06:01 PM, Pavel Machek wrote: > Hi! > >>>>> What's tricky about patterns is that you need to control 3 (or more) >>>>> leds at a time. Problem you are trying to solve here is ... control of >>>>> 3 leds, at the same time. >>>>> >>>>> So let's solve them together. >>>> >>>> OK, now I've got your point. So we'd need to have a means for defining >>>> patterns. The interface could be located at /sys/class/leds/patterns. >>>> >>>> We'd need to have a flexible way for defining LED class devices involved >>>> in a pattern. Since we cannot guarantee no space in a LED class device >>>> name, then a single attribute containing space separated list is not an >>>> option. We'd have to create a predefined set of attributes that would >>>> contain LED class device name. Predefined implies that it would be >>>> a fixed number, i.e. either some attributes would always remain unused >>>> or, which is even worse, we could run out of free attributes for some >>>> use cases. >>> >>> There's a better solution: make pattern behave as a trigger for leds >>> it controls. >>> >>> So we'd have >>> >>> /sys/class/leds/patterns/lp5523 >>> >>> then we'd have >>> >>> /sys/class/leds/lp5523::red/trigger = "lp5523:1" >>> /sys/class/leds/lp5523::green/trigger = "lp5523:2" >>> /sys/class/leds/lp5523::blue/trigger = "lp5523:3" >>> >>> (or something similar, I'd have to boot the n900 to see the exact >>> names). >> >> How about implementing patterns as a specific typer of triggers? >> Let's say we have ledtrig-rgb-pattern: > > Well, we'd need ledtrig-rgb-pattern-1, ledtrig-rgb-pattern-2, ... , as we > can have more than one rgb led. But yes. Triggers can have many listeners, i.e. led_trigger_event() sets brightness on all LED class devices registered on given trigger. We could have led_trigger_rgb_event() that would set brightness on all groups-of-three LEDs registered on given rgb-trigger. I agree that ledtrig-rgb-pattern-1, ledtrig-rgb-pattern-2, etc. would be also needed to add a capability of setting different colors on different LED devices. >> After setting a trigger following sysfs attribute would appear >> in a LED class device sysfs interface: >> >> $cat /sys/class/lp5523::red/rgb_color >> red green blue [none] >> >> $echo "red" > /sys/class/leds/lp5523::red/rgb_color >> >> and similarly >> >> $echo "green" > /sys/class/leds/lp5523::green/rgb_color >> $echo "blue" > /sys/class/leds/lp5523::blue/rgb_color > > Yes, that would work -- selecting channels from the pattern. > >> Similar approach could be applied for blink patterns: >> There could be additional attributes provided for defining >> the position in a blink sequence, or/and blink period. > > For patterns, I'd suggest array of (r g b time) values. > > Pattern engines can do stuff like "slowly turn LED from off to red, then switch color to > white, then slowly turn it to yellow, then turn it off at once" with defined speeds > for "slowly" and option of either linear on non-linear brightness ramping. > > The last option might be a bit too much, but I believe we should support the rest. Yes, that's an interesting idea. It also turns out that trigger based patterns could be also used for defining generic patterns for a group of monochrome LEDs. -- Best regards, Jacek Anaszewski