* "advanced" LED controllers @ 2015-02-19 21:14 Felipe Balbi 2015-02-23 22:34 ` Pavel Machek 2015-02-25 8:25 ` Geert Uytterhoeven 0 siblings, 2 replies; 16+ messages in thread From: Felipe Balbi @ 2015-02-19 21:14 UTC (permalink / raw) To: cooloney, rpurdie, linux-leds, Linux Kernel Mailing List, Linux OMAP Mailing List [-- Attachment #1: Type: text/plain, Size: 1414 bytes --] Hi, Do we have support for LED controllers which can handle patterns of different kinds ? I mean, currently, if we have an LED controller such as TPIC2810 [1] which can control 8 different leds and each LED corresponds to one bit on register 0x44, we could control leds by just "playing" a wave file on the controller and create easy patterns with that. AFAICT, in linux today we would have to register each of the 8 LEDs as a different LED and have driver magic to write the proper bits on register 0x44, that seems a bit overkill, specially when we want to make patterns: instead of writing 0xff we would have to write 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 separately and have the driver cache the previous results so we don't end up switching off other LEDs. IOW, what could be handled with a single write, currently needs 8. I wonder if there's any work happening to support these slightly more inteligent LED engines. regards [1] http://www.ti.com/product/tpic2810 ps: tpic2810 is probably the simplest example, lp551, lp5523 and others have even more advanced pattern engines which can even handle RGB leds. Currently the driver loads patterns as if it was a firmware blob and registers each of R, G and B components as separate LEDs. Each component also has its own brightness controls (something tpic2810 doesn't have, it's either on or off). -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: "advanced" LED controllers 2015-02-19 21:14 "advanced" LED controllers Felipe Balbi @ 2015-02-23 22:34 ` Pavel Machek 2015-02-23 22:58 ` Felipe Balbi 2015-02-25 8:25 ` Geert Uytterhoeven 1 sibling, 1 reply; 16+ messages in thread From: Pavel Machek @ 2015-02-23 22:34 UTC (permalink / raw) To: Felipe Balbi Cc: cooloney, rpurdie, linux-leds, Linux Kernel Mailing List, Linux OMAP Mailing List On Thu 2015-02-19 15:14:24, Felipe Balbi wrote: > Hi, > > Do we have support for LED controllers which can handle patterns of > different kinds ? I mean, currently, if we have an LED controller such > as TPIC2810 [1] which can control 8 different leds and each LED > corresponds to one bit on register 0x44, we could control leds by just > "playing" a wave file on the controller and create easy patterns with > that. > > AFAICT, in linux today we would have to register each of the 8 LEDs as a > different LED and have driver magic to write the proper bits on register > 0x44, that seems a bit overkill, specially when we want to make > patterns: instead of writing 0xff we would have to write 0x80, 0x40, > 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 separately and have the driver cache > the previous results so we don't end up switching off other LEDs. > > IOW, what could be handled with a single write, currently needs 8. > > I wonder if there's any work happening to support these slightly more > inteligent LED engines. > > regards > > [1] http://www.ti.com/product/tpic2810 > > ps: tpic2810 is probably the simplest example, lp551, lp5523 and others > have even more advanced pattern engines which can even handle RGB leds. Well... some more advanced pattern engines can actually run code, up to and including prime number computation. So yes, this is complex, and how to handle it nicely is a question... I have "notcc" to compile for that. #!/usr/bin/python3 # # NOTification Compiler # # for LP5523 chip. # # Copyright 2014 Pavel Machek <pavel@ucw.cz>, GPLv3 # # http://wiki.maemo.org/LED_patterns#Lysti_Format_Engine_Patterns_and_Commands # http://www.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=lp5523&fileType=pdf # # Seems to have A,B local variables, C global variable, # # 2.6.28-omap1 seems to cut execution after 16 steps. import sys Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: "advanced" LED controllers 2015-02-23 22:34 ` Pavel Machek @ 2015-02-23 22:58 ` Felipe Balbi 2015-02-25 21:49 ` Pavel Machek 0 siblings, 1 reply; 16+ messages in thread From: Felipe Balbi @ 2015-02-23 22:58 UTC (permalink / raw) To: Pavel Machek Cc: Felipe Balbi, cooloney, rpurdie, linux-leds, Linux Kernel Mailing List, Linux OMAP Mailing List [-- Attachment #1: Type: text/plain, Size: 1778 bytes --] On Mon, Feb 23, 2015 at 11:34:57PM +0100, Pavel Machek wrote: > On Thu 2015-02-19 15:14:24, Felipe Balbi wrote: > > Hi, > > > > Do we have support for LED controllers which can handle patterns of > > different kinds ? I mean, currently, if we have an LED controller such > > as TPIC2810 [1] which can control 8 different leds and each LED > > corresponds to one bit on register 0x44, we could control leds by just > > "playing" a wave file on the controller and create easy patterns with > > that. > > > > AFAICT, in linux today we would have to register each of the 8 LEDs as a > > different LED and have driver magic to write the proper bits on register > > 0x44, that seems a bit overkill, specially when we want to make > > patterns: instead of writing 0xff we would have to write 0x80, 0x40, > > 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 separately and have the driver cache > > the previous results so we don't end up switching off other LEDs. > > > > IOW, what could be handled with a single write, currently needs 8. > > > > I wonder if there's any work happening to support these slightly more > > inteligent LED engines. > > > > regards > > > > [1] http://www.ti.com/product/tpic2810 > > > > ps: tpic2810 is probably the simplest example, lp551, lp5523 and others > > have even more advanced pattern engines which can even handle RGB leds. > > Well... some more advanced pattern engines can actually run code, up > to and including prime number computation. So yes, this is complex, > and how to handle it nicely is a question... > > I have "notcc" to compile for that. right, the point is that this is a solution which only works with lp5523 and IMO linux led subsystem should do a little more for such devices. -- balbi [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: "advanced" LED controllers 2015-02-23 22:58 ` Felipe Balbi @ 2015-02-25 21:49 ` Pavel Machek 2015-02-25 23:55 ` NeilBrown 0 siblings, 1 reply; 16+ messages in thread From: Pavel Machek @ 2015-02-25 21:49 UTC (permalink / raw) To: Felipe Balbi Cc: cooloney, rpurdie, linux-leds, Linux Kernel Mailing List, Linux OMAP Mailing List On Mon 2015-02-23 16:58:36, Felipe Balbi wrote: > On Mon, Feb 23, 2015 at 11:34:57PM +0100, Pavel Machek wrote: > > On Thu 2015-02-19 15:14:24, Felipe Balbi wrote: > > > Hi, > > > > > > Do we have support for LED controllers which can handle patterns of > > > different kinds ? I mean, currently, if we have an LED controller such > > > as TPIC2810 [1] which can control 8 different leds and each LED > > > corresponds to one bit on register 0x44, we could control leds by just > > > "playing" a wave file on the controller and create easy patterns with > > > that. > > > [1] http://www.ti.com/product/tpic2810 > > > > > > ps: tpic2810 is probably the simplest example, lp551, lp5523 and others > > > have even more advanced pattern engines which can even handle RGB leds. > > > > Well... some more advanced pattern engines can actually run code, up > > to and including prime number computation. So yes, this is complex, > > and how to handle it nicely is a question... > > > > I have "notcc" to compile for that. > > right, the point is that this is a solution which only works with lp5523 > and IMO linux led subsystem should do a little more for such devices. Well, question is what we want. Possibilities I see: 1) We won't support all the features, just some common subset. Kernel will get commands for LED controller and translate them. Question is what reasonable subset is, then. I guess "delay", "set led brightness to X", "jump" would be minimal shared command set. lp5523 can do also "slowly increase/decrease brightness to X" (I believe we should support that one), arithmetics, conditional jumps, and communications between 3 threads. 2) We want to support all the features. I guess that would mean doing compilation in userspace, and having "compiler" for each led controller. Having common source code would still be nice. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: "advanced" LED controllers 2015-02-25 21:49 ` Pavel Machek @ 2015-02-25 23:55 ` NeilBrown 2015-02-28 16:18 ` Pavel Machek 0 siblings, 1 reply; 16+ messages in thread From: NeilBrown @ 2015-02-25 23:55 UTC (permalink / raw) To: Pavel Machek Cc: Felipe Balbi, cooloney, rpurdie, linux-leds, Linux Kernel Mailing List, Linux OMAP Mailing List [-- Attachment #1: Type: text/plain, Size: 3036 bytes --] On Wed, 25 Feb 2015 22:49:41 +0100 Pavel Machek <pavel@ucw.cz> wrote: > On Mon 2015-02-23 16:58:36, Felipe Balbi wrote: > > On Mon, Feb 23, 2015 at 11:34:57PM +0100, Pavel Machek wrote: > > > On Thu 2015-02-19 15:14:24, Felipe Balbi wrote: > > > > Hi, > > > > > > > > Do we have support for LED controllers which can handle patterns of > > > > different kinds ? I mean, currently, if we have an LED controller such > > > > as TPIC2810 [1] which can control 8 different leds and each LED > > > > corresponds to one bit on register 0x44, we could control leds by just > > > > "playing" a wave file on the controller and create easy patterns with > > > > that. > > > > > [1] http://www.ti.com/product/tpic2810 > > > > > > > > ps: tpic2810 is probably the simplest example, lp551, lp5523 and others > > > > have even more advanced pattern engines which can even handle RGB leds. > > > > > > Well... some more advanced pattern engines can actually run code, up > > > to and including prime number computation. So yes, this is complex, > > > and how to handle it nicely is a question... > > > > > > I have "notcc" to compile for that. > > > > right, the point is that this is a solution which only works with lp5523 > > and IMO linux led subsystem should do a little more for such devices. > > Well, question is what we want. Possibilities I see: > > 1) We won't support all the features, just some common subset. Kernel > will get commands for LED controller and translate them. Question is > what reasonable subset is, then. > > I guess "delay", "set led brightness to X", "jump" would be minimal > shared command set. lp5523 can do also "slowly increase/decrease > brightness to X" (I believe we should support that one), arithmetics, > conditional jumps, and communications between 3 threads. > > 2) We want to support all the features. I guess that would mean doing > compilation in userspace, and having "compiler" for each led > controller. Having common source code would still be nice. > > Pavel All (most) current options for controlling LEDs are based on what a user might want, rather than what the hardware can provide. I think it would be good to keep that approach, but add more "interesting" functions which each hardware can support in whichever way suits it best. So "ramp_blink" which allow a ramp on/off time to be specified would be useful. "audio_meter" which allows a particular sound card (or output or something) to be specified would also be useful. You could also specify a what volume the LED saturates. Then if you set each led on a given controller to saturate at different level and to use the same sound source, then you could get the "graphic equaliser" effect. Maybe 'blinking' should have a 'synchronise' setting to that a bunch of LEDs can be synchonised so you can create a "cylon eye" effect. i.e. don't focus on the low-level 'what can we provide' but on the high level "what might users want". NeilBrown [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 811 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: "advanced" LED controllers 2015-02-25 23:55 ` NeilBrown @ 2015-02-28 16:18 ` Pavel Machek 0 siblings, 0 replies; 16+ messages in thread From: Pavel Machek @ 2015-02-28 16:18 UTC (permalink / raw) To: NeilBrown Cc: Felipe Balbi, cooloney, rpurdie, linux-leds, Linux Kernel Mailing List, Linux OMAP Mailing List Hi! On Thu 2015-02-26 10:55:52, NeilBrown wrote: > On Wed, 25 Feb 2015 22:49:41 +0100 Pavel Machek <pavel@ucw.cz> wrote: > > > On Mon 2015-02-23 16:58:36, Felipe Balbi wrote: > > > On Mon, Feb 23, 2015 at 11:34:57PM +0100, Pavel Machek wrote: > > > > On Thu 2015-02-19 15:14:24, Felipe Balbi wrote: > > > > > Hi, > > > > > > > > > > Do we have support for LED controllers which can handle patterns of > > > > > different kinds ? I mean, currently, if we have an LED controller such > > > > > as TPIC2810 [1] which can control 8 different leds and each LED > > > > > corresponds to one bit on register 0x44, we could control leds by just > > > > > "playing" a wave file on the controller and create easy patterns with > > > > > that. > > > > > > > [1] http://www.ti.com/product/tpic2810 Does tpic2810 support brightness on the LEDs, or is it just one bit per led? > > Well, question is what we want. Possibilities I see: > > > > 1) We won't support all the features, just some common subset. Kernel > > will get commands for LED controller and translate them. Question is > > what reasonable subset is, then. > > > > I guess "delay", "set led brightness to X", "jump" would be minimal > > shared command set. lp5523 can do also "slowly increase/decrease > > brightness to X" (I believe we should support that one), arithmetics, > > conditional jumps, and communications between 3 threads. > > > > 2) We want to support all the features. I guess that would mean doing > > compilation in userspace, and having "compiler" for each led > > controller. Having common source code would still be nice. > > All (most) current options for controlling LEDs are based on what a user > might want, rather than what the hardware can provide. > > I think it would be good to keep that approach, but add more "interesting" > functions which each hardware can support in whichever way suits it best. > > So "ramp_blink" which allow a ramp on/off time to be specified would be > useful. Well, ramp_blink would certainly cover a lot of cases, but not everything. For example, I'd like to do "ramp to 25% brightness, wait, ramp to 50% brightness, > > Well, question is what we want. Possibilities I see: > > > > 1) We won't support all the features, just some common subset. Kernel > > will get commands for LED controller and translate them. Question is > > what reasonable subset is, then. > > > > I guess "delay", "set led brightness to X", "jump" would be minimal > > shared command set. lp5523 can do also "slowly increase/decrease > > brightness to X" (I believe we should support that one), arithmetics, > > conditional jumps, and communications between 3 threads. > > > > 2) We want to support all the features. I guess that would mean doing > > compilation in userspace, and having "compiler" for each led > > controller. Having common source code would still be nice. > > All (most) current options for controlling LEDs are based on what a user > might want, rather than what the hardware can provide. > > I think it would be good to keep that approach, but add more "interesting" > functions which each hardware can support in whichever way suits it best. > > So "ramp_blink" which allow a ramp on/off time to be specified would be > useful. Well, ramp_blink would certainly cover a lot of cases, but not everything. For example, I'd like to do "ramp to 25% brightness, wait, ramp to 50% brightness > > Well, question is what we want. Possibilities I see: > > > > 1) We won't support all the features, just some common subset. Kernel > > will get commands for LED controller and translate them. Question is > > what reasonable subset is, then. > > > > I guess "delay", "set led brightness to X", "jump" would be minimal > > shared command set. lp5523 can do also "slowly increase/decrease > > brightness to X" (I believe we should support that one), arithmetics, > > conditional jumps, and communications between 3 threads. > > > > 2) We want to support all the features. I guess that would mean doing > > compilation in userspace, and having "compiler" for each led > > controller. Having common source code would still be nice. > > All (most) current options for controlling LEDs are based on what a user > might want, rather than what the hardware can provide. > > I think it would be good to keep that approach, but add more "interesting" > functions which each hardware can support in whichever way suits it best. > > So "ramp_blink" which allow a ramp on/off time to be specified would be > useful. Well, ramp_blink would certainly cover a lot of cases, but not everything. For example, I'd like to do "ramp to 25% brightness, wait, ramp to 50% brightness, > > Well, question is what we want. Possibilities I see: > > > > 1) We won't support all the features, just some common subset. Kernel > > will get commands for LED controller and translate them. Question is > > what reasonable subset is, then. > > > > I guess "delay", "set led brightness to X", "jump" would be minimal > > shared command set. lp5523 can do also "slowly increase/decrease > > brightness to X" (I believe we should support that one), arithmetics, > > conditional jumps, and communications between 3 threads. > > > > 2) We want to support all the features. I guess that would mean doing > > compilation in userspace, and having "compiler" for each led > > controller. Having common source code would still be nice. > > All (most) current options for controlling LEDs are based on what a user > might want, rather than what the hardware can provide. > > I think it would be good to keep that approach, but add more "interesting" > functions which each hardware can support in whichever way suits it best. > > So "ramp_blink" which allow a ramp on/off time to be specified would be > useful. Well, ramp_blink would certainly cover a lot of cases, but not everything. For example, I'd like to do "ramp to 25% brightness, wait, ramp to 50% brightness, wait, ramp to 75% brightness, wait, ramp to 100% brightness, wait, ramp back to 0" pattern to indicate charging.. Also, I'd like to do "smoothly go through colors of rainbow" pattern to indicate booting. So yes, "ramp_blink" would cover some common cases, but not nearly everything. > "audio_meter" which allows a particular sound card (or output or something) > to be specified would also be useful. You could also specify a what volume > the LED saturates. audio_meter would have to be done by software, as hardware can not really accelerate that. 256 brightness values to cycle through for each r/g/b channel might be enough for most patterns... but it would be quite hard to "compile" that into program for lp5523. Other solution would be specifying series of "time, brightness" points, with expectation of linear change between those". So [ 0sec, 0%; 1sec, 0%; 1sec, 100%] would be turn the LED on quickly, and [ 0sec, 0%, 1sec, 100% ] would be slowly ramp the LED over one second. Advantage would be that it should be fairly easy to compile from this to lp5523 and similar. > Maybe 'blinking' should have a 'synchronise' setting to that a bunch of LEDs > can be synchonised so you can create a "cylon eye" effect. > i.e. don't focus on the low-level 'what can we provide' but on the high level > "what might users want". See above what I'd want, and http://my-maemo.com/software/applications.php?fldAuto=1275&faq=42 http://my-maemo.com/software/applications.php?fldAuto=2096&faq=42 https://wiki.maemo.org/LED_patterns what other people want. Best regards, Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: "advanced" LED controllers 2015-02-19 21:14 "advanced" LED controllers Felipe Balbi 2015-02-23 22:34 ` Pavel Machek @ 2015-02-25 8:25 ` Geert Uytterhoeven 2015-02-25 9:06 ` Alexandre Courbot 1 sibling, 1 reply; 16+ messages in thread From: Geert Uytterhoeven @ 2015-02-25 8:25 UTC (permalink / raw) To: Felipe Balbi Cc: Bryan Wu, Richard Purdie, linux-leds@vger.kernel.org, Linux Kernel Mailing List, Linux OMAP Mailing List, linux-gpio@vger.kernel.org CC linux-gpio, as this looks like the LED equivalent of bulk gpio? On Thu, Feb 19, 2015 at 10:14 PM, Felipe Balbi <balbi@ti.com> wrote: > Do we have support for LED controllers which can handle patterns of > different kinds ? I mean, currently, if we have an LED controller such > as TPIC2810 [1] which can control 8 different leds and each LED > corresponds to one bit on register 0x44, we could control leds by just > "playing" a wave file on the controller and create easy patterns with > that. > > AFAICT, in linux today we would have to register each of the 8 LEDs as a > different LED and have driver magic to write the proper bits on register > 0x44, that seems a bit overkill, specially when we want to make > patterns: instead of writing 0xff we would have to write 0x80, 0x40, > 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 separately and have the driver cache > the previous results so we don't end up switching off other LEDs. > > IOW, what could be handled with a single write, currently needs 8. > > I wonder if there's any work happening to support these slightly more > inteligent LED engines. > > regards > > [1] http://www.ti.com/product/tpic2810 > > ps: tpic2810 is probably the simplest example, lp551, lp5523 and others > have even more advanced pattern engines which can even handle RGB leds. > > Currently the driver loads patterns as if it was a firmware blob and > registers each of R, G and B components as separate LEDs. Each component > also has its own brightness controls (something tpic2810 doesn't have, > it's either on or off). ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: "advanced" LED controllers 2015-02-25 8:25 ` Geert Uytterhoeven @ 2015-02-25 9:06 ` Alexandre Courbot 2015-03-02 9:21 ` Pavel Machek 0 siblings, 1 reply; 16+ messages in thread From: Alexandre Courbot @ 2015-02-25 9:06 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Felipe Balbi, Bryan Wu, Richard Purdie, linux-leds@vger.kernel.org, Linux Kernel Mailing List, Linux OMAP Mailing List, linux-gpio@vger.kernel.org On Wed, Feb 25, 2015 at 5:25 PM, Geert Uytterhoeven <geert@linux-m68k.org> wrote: > CC linux-gpio, as this looks like the LED equivalent of bulk gpio? Indeed. The LED core could implement something similar to gpiod_set_array() to allow several LEDs to be set in one call. If the controller supports it, it would then set all the LEDs at once, otherwise the core would apply the values serially. In leds-gpio.c, this multiple LED setting could be implemented by a single call to gpiod_set_array() and the right thing would happen. > > On Thu, Feb 19, 2015 at 10:14 PM, Felipe Balbi <balbi@ti.com> wrote: >> Do we have support for LED controllers which can handle patterns of >> different kinds ? I mean, currently, if we have an LED controller such >> as TPIC2810 [1] which can control 8 different leds and each LED >> corresponds to one bit on register 0x44, we could control leds by just >> "playing" a wave file on the controller and create easy patterns with >> that. >> >> AFAICT, in linux today we would have to register each of the 8 LEDs as a >> different LED and have driver magic to write the proper bits on register >> 0x44, that seems a bit overkill, specially when we want to make >> patterns: instead of writing 0xff we would have to write 0x80, 0x40, >> 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 separately and have the driver cache >> the previous results so we don't end up switching off other LEDs. >> >> IOW, what could be handled with a single write, currently needs 8. >> >> I wonder if there's any work happening to support these slightly more >> inteligent LED engines. >> >> regards >> >> [1] http://www.ti.com/product/tpic2810 >> >> ps: tpic2810 is probably the simplest example, lp551, lp5523 and others >> have even more advanced pattern engines which can even handle RGB leds. >> >> Currently the driver loads patterns as if it was a firmware blob and >> registers each of R, G and B components as separate LEDs. Each component >> also has its own brightness controls (something tpic2810 doesn't have, >> it's either on or off). > -- > To unsubscribe from this list: send the line "unsubscribe linux-gpio" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: "advanced" LED controllers 2015-02-25 9:06 ` Alexandre Courbot @ 2015-03-02 9:21 ` Pavel Machek 2015-03-03 8:15 ` Alexandre Courbot 0 siblings, 1 reply; 16+ messages in thread From: Pavel Machek @ 2015-03-02 9:21 UTC (permalink / raw) To: Alexandre Courbot Cc: Geert Uytterhoeven, Felipe Balbi, Bryan Wu, Richard Purdie, linux-leds@vger.kernel.org, Linux Kernel Mailing List, Linux OMAP Mailing List, linux-gpio@vger.kernel.org On Wed 2015-02-25 18:06:07, Alexandre Courbot wrote: > On Wed, Feb 25, 2015 at 5:25 PM, Geert Uytterhoeven > <geert@linux-m68k.org> wrote: > > CC linux-gpio, as this looks like the LED equivalent of bulk gpio? > > Indeed. The LED core could implement something similar to > gpiod_set_array() to allow several LEDs to be set in one call. If the > controller supports it, it would then set all the LEDs at once, > otherwise the core would apply the values serially. > > In leds-gpio.c, this multiple LED setting could be implemented by a > single call to gpiod_set_array() and the right thing would happen. Actually, there are two issues: some controlles can set all LEDs at once, and some can program pwm level smoothly using given program (and handle multiple leds in the process). -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: "advanced" LED controllers 2015-03-02 9:21 ` Pavel Machek @ 2015-03-03 8:15 ` Alexandre Courbot 2015-03-08 20:57 ` RGB LED control (was Re: "advanced" LED controllers) Pavel Machek 0 siblings, 1 reply; 16+ messages in thread From: Alexandre Courbot @ 2015-03-03 8:15 UTC (permalink / raw) To: Pavel Machek Cc: Geert Uytterhoeven, Felipe Balbi, Bryan Wu, Richard Purdie, linux-leds@vger.kernel.org, Linux Kernel Mailing List, Linux OMAP Mailing List, linux-gpio@vger.kernel.org On Mon, Mar 2, 2015 at 6:21 PM, Pavel Machek <pavel@ucw.cz> wrote: > On Wed 2015-02-25 18:06:07, Alexandre Courbot wrote: >> On Wed, Feb 25, 2015 at 5:25 PM, Geert Uytterhoeven >> <geert@linux-m68k.org> wrote: >> > CC linux-gpio, as this looks like the LED equivalent of bulk gpio? >> >> Indeed. The LED core could implement something similar to >> gpiod_set_array() to allow several LEDs to be set in one call. If the >> controller supports it, it would then set all the LEDs at once, >> otherwise the core would apply the values serially. >> >> In leds-gpio.c, this multiple LED setting could be implemented by a >> single call to gpiod_set_array() and the right thing would happen. > > Actually, there are two issues: some controlles can set all LEDs at > once, and some can program pwm level smoothly using given program (and > handle multiple leds in the process). In any case, that would be handled at the controller level and should work with a function similar to gpiod_set_array(), wouldn't it? ^ permalink raw reply [flat|nested] 16+ messages in thread
* RGB LED control (was Re: "advanced" LED controllers) 2015-03-03 8:15 ` Alexandre Courbot @ 2015-03-08 20:57 ` Pavel Machek 2015-03-09 8:08 ` Geert Uytterhoeven 0 siblings, 1 reply; 16+ messages in thread From: Pavel Machek @ 2015-03-08 20:57 UTC (permalink / raw) To: Alexandre Courbot Cc: Geert Uytterhoeven, Felipe Balbi, Bryan Wu, Richard Purdie, linux-leds@vger.kernel.org, Linux Kernel Mailing List, Linux OMAP Mailing List, linux-gpio@vger.kernel.org Ok, so I played with RGB LED a bit, and we have quite a gap in documentation: what 50% brightness means is non-trivial and very important in case we want to do smooth blinking and color transitions. Signed-off-by: Pavel Machek <pavel@ucw.cz> diff --git a/Documentation/ABI/testing/sysfs-class-led b/Documentation/ABI/testing/sysfs-class-led index 3646ec8..649d7a6 100644 --- a/Documentation/ABI/testing/sysfs-class-led +++ b/Documentation/ABI/testing/sysfs-class-led @@ -8,6 +8,11 @@ Description: non-zero brightness settings. The value is between 0 and /sys/class/leds/<led>/max_brightness. + If LED supports continuous brightness settings, 50% brightness + should correspond to 50% brightness perceived by human, in a similar + manner pixel brightness on monitor does (not 50% PWM). + + What: /sys/class/leds/<led>/max_brightness Date: March 2006 KernelVersion: 2.6.17 -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: RGB LED control (was Re: "advanced" LED controllers) 2015-03-08 20:57 ` RGB LED control (was Re: "advanced" LED controllers) Pavel Machek @ 2015-03-09 8:08 ` Geert Uytterhoeven 2015-03-09 9:08 ` Pavel Machek 2015-03-09 11:50 ` Måns Rullgård 0 siblings, 2 replies; 16+ messages in thread From: Geert Uytterhoeven @ 2015-03-09 8:08 UTC (permalink / raw) To: Pavel Machek Cc: Alexandre Courbot, Felipe Balbi, Bryan Wu, Richard Purdie, linux-leds@vger.kernel.org, Linux Kernel Mailing List, Linux OMAP Mailing List, linux-gpio@vger.kernel.org Hi Pavel, On Sun, Mar 8, 2015 at 9:57 PM, Pavel Machek <pavel@ucw.cz> wrote: > Ok, so I played with RGB LED a bit, and we have quite a gap in > documentation: what 50% brightness means is non-trivial and very > important in case we want to do smooth blinking and color transitions. > > Signed-off-by: Pavel Machek <pavel@ucw.cz> > > diff --git a/Documentation/ABI/testing/sysfs-class-led b/Documentation/ABI/testing/sysfs-class-led > index 3646ec8..649d7a6 100644 > --- a/Documentation/ABI/testing/sysfs-class-led > +++ b/Documentation/ABI/testing/sysfs-class-led > @@ -8,6 +8,11 @@ Description: > non-zero brightness settings. The value is between 0 and > /sys/class/leds/<led>/max_brightness. > > + If LED supports continuous brightness settings, 50% brightness > + should correspond to 50% brightness perceived by human, in a similar > + manner pixel brightness on monitor does (not 50% PWM). How many drivers do it right? How many don't? For those that don't, perhaps we handle the conversion between perceived and pwm in the core, e.g. by adding a new flag to led_classdev.flags to indicate the need for conversion? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: RGB LED control (was Re: "advanced" LED controllers) 2015-03-09 8:08 ` Geert Uytterhoeven @ 2015-03-09 9:08 ` Pavel Machek 2015-03-09 11:50 ` Måns Rullgård 1 sibling, 0 replies; 16+ messages in thread From: Pavel Machek @ 2015-03-09 9:08 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Alexandre Courbot, Felipe Balbi, Bryan Wu, Richard Purdie, linux-leds@vger.kernel.org, Linux Kernel Mailing List, Linux OMAP Mailing List, linux-gpio@vger.kernel.org On Mon 2015-03-09 09:08:37, Geert Uytterhoeven wrote: > Hi Pavel, > > On Sun, Mar 8, 2015 at 9:57 PM, Pavel Machek <pavel@ucw.cz> wrote: > > Ok, so I played with RGB LED a bit, and we have quite a gap in > > documentation: what 50% brightness means is non-trivial and very > > important in case we want to do smooth blinking and color transitions. > > > > Signed-off-by: Pavel Machek <pavel@ucw.cz> > > > > diff --git a/Documentation/ABI/testing/sysfs-class-led b/Documentation/ABI/testing/sysfs-class-led > > index 3646ec8..649d7a6 100644 > > --- a/Documentation/ABI/testing/sysfs-class-led > > +++ b/Documentation/ABI/testing/sysfs-class-led > > @@ -8,6 +8,11 @@ Description: > > non-zero brightness settings. The value is between 0 and > > /sys/class/leds/<led>/max_brightness. > > > > + If LED supports continuous brightness settings, 50% brightness > > + should correspond to 50% brightness perceived by human, in a similar > > + manner pixel brightness on monitor does (not 50% PWM). > > How many drivers do it right? How many don't? Not sure. leds-lp5523.c gets is wrong. Easy test is to attempt to set "electric indigo" color (http://en.wikipedia.org/wiki/Indigo#Violet-blue) and see what comes out. > For those that don't, perhaps we handle the conversion between perceived and > pwm in the core, e.g. by adding a new flag to led_classdev.flags to indicate > the need for conversion? There is not that many drivers that support smooth power adjustments. But yes, we can probably conversion in the core for trivial case. Unfortunately, we only have 8-bits of precision to work with... Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: RGB LED control (was Re: "advanced" LED controllers) 2015-03-09 8:08 ` Geert Uytterhoeven 2015-03-09 9:08 ` Pavel Machek @ 2015-03-09 11:50 ` Måns Rullgård 2015-03-10 8:04 ` Pavel Machek 1 sibling, 1 reply; 16+ messages in thread From: Måns Rullgård @ 2015-03-09 11:50 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Pavel Machek, Alexandre Courbot, Felipe Balbi, Bryan Wu, Richard Purdie, linux-leds@vger.kernel.org, Linux Kernel Mailing List, Linux OMAP Mailing List, linux-gpio@vger.kernel.org Geert Uytterhoeven <geert@linux-m68k.org> writes: > Hi Pavel, > > On Sun, Mar 8, 2015 at 9:57 PM, Pavel Machek <pavel@ucw.cz> wrote: >> Ok, so I played with RGB LED a bit, and we have quite a gap in >> documentation: what 50% brightness means is non-trivial and very >> important in case we want to do smooth blinking and color transitions. >> >> Signed-off-by: Pavel Machek <pavel@ucw.cz> >> >> diff --git a/Documentation/ABI/testing/sysfs-class-led b/Documentation/ABI/testing/sysfs-class-led >> index 3646ec8..649d7a6 100644 >> --- a/Documentation/ABI/testing/sysfs-class-led >> +++ b/Documentation/ABI/testing/sysfs-class-led >> @@ -8,6 +8,11 @@ Description: >> non-zero brightness settings. The value is between 0 and >> /sys/class/leds/<led>/max_brightness. >> >> + If LED supports continuous brightness settings, 50% brightness >> + should correspond to 50% brightness perceived by human, in a similar >> + manner pixel brightness on monitor does (not 50% PWM). > > How many drivers do it right? How many don't? > > For those that don't, perhaps we handle the conversion between perceived and > pwm in the core, e.g. by adding a new flag to led_classdev.flags to indicate > the need for conversion? Some LED controllers do the right thing in hardware, so any adjustment done in the core needs to be optional. -- Måns Rullgård mans@mansr.com -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: RGB LED control (was Re: "advanced" LED controllers) 2015-03-09 11:50 ` Måns Rullgård @ 2015-03-10 8:04 ` Pavel Machek [not found] ` <CAK5ve-K4jyBSVk1CZ8qQrFgevqdbhdsgZ1ZYX2e-t07494oq4A@mail.gmail.com> 0 siblings, 1 reply; 16+ messages in thread From: Pavel Machek @ 2015-03-10 8:04 UTC (permalink / raw) To: Måns Rullgård Cc: Geert Uytterhoeven, Alexandre Courbot, Felipe Balbi, Bryan Wu, Richard Purdie, linux-leds@vger.kernel.org, Linux Kernel Mailing List, Linux OMAP Mailing List, linux-gpio@vger.kernel.org On Mon 2015-03-09 11:50:56, Måns Rullgård wrote: > Geert Uytterhoeven <geert@linux-m68k.org> writes: > > > Hi Pavel, > > > > On Sun, Mar 8, 2015 at 9:57 PM, Pavel Machek <pavel@ucw.cz> wrote: > >> Ok, so I played with RGB LED a bit, and we have quite a gap in > >> documentation: what 50% brightness means is non-trivial and very > >> important in case we want to do smooth blinking and color transitions. > >> > >> Signed-off-by: Pavel Machek <pavel@ucw.cz> > >> > >> diff --git a/Documentation/ABI/testing/sysfs-class-led b/Documentation/ABI/testing/sysfs-class-led > >> index 3646ec8..649d7a6 100644 > >> --- a/Documentation/ABI/testing/sysfs-class-led > >> +++ b/Documentation/ABI/testing/sysfs-class-led > >> @@ -8,6 +8,11 @@ Description: > >> non-zero brightness settings. The value is between 0 and > >> /sys/class/leds/<led>/max_brightness. > >> > >> + If LED supports continuous brightness settings, 50% brightness > >> + should correspond to 50% brightness perceived by human, in a similar > >> + manner pixel brightness on monitor does (not 50% PWM). > > > > How many drivers do it right? How many don't? > > > > For those that don't, perhaps we handle the conversion between perceived and > > pwm in the core, e.g. by adding a new flag to led_classdev.flags to indicate > > the need for conversion? > > Some LED controllers do the right thing in hardware, so any adjustment > done in the core needs to be optional. Do you have example controller that gets it right, btw? Bryan, can you apply the documentation patch so we can start fixing the drivers? Thanks, Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 16+ messages in thread
[parent not found: <CAK5ve-K4jyBSVk1CZ8qQrFgevqdbhdsgZ1ZYX2e-t07494oq4A@mail.gmail.com>]
* Documentation: leds: clarify what 50% brightness means [not found] ` <CAK5ve-K4jyBSVk1CZ8qQrFgevqdbhdsgZ1ZYX2e-t07494oq4A@mail.gmail.com> @ 2015-03-11 9:34 ` Pavel Machek 0 siblings, 0 replies; 16+ messages in thread From: Pavel Machek @ 2015-03-11 9:34 UTC (permalink / raw) To: Bryan Wu Cc: Måns Rullgård, Geert Uytterhoeven, Alexandre Courbot, Felipe Balbi, Bryan Wu, Richard Purdie, linux-leds@vger.kernel.org, Linux Kernel Mailing List, Linux OMAP Mailing List, linux-gpio@vger.kernel.org I played with RGB LED a bit, and we have quite a gap in documentation: what 50% brightness means is non-trivial and very important in case we want to do smooth blinking and color transitions. Signed-off-by: Pavel Machek <pavel@ucw.cz> diff --git a/Documentation/ABI/testing/sysfs-class-led b/Documentation/ABI/testing/sysfs-class-led index 3646ec8..649d7a6 100644 --- a/Documentation/ABI/testing/sysfs-class-led +++ b/Documentation/ABI/testing/sysfs-class-led @@ -8,6 +8,11 @@ Description: non-zero brightness settings. The value is between 0 and /sys/class/leds/<led>/max_brightness. + If LED supports continuous brightness settings, 50% brightness + should correspond to 50% brightness perceived by human, in a similar + manner pixel brightness on monitor does (not 50% PWM). + + What: /sys/class/leds/<led>/max_brightness Date: March 2006 KernelVersion: 2.6.17 -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply related [flat|nested] 16+ messages in thread
end of thread, other threads:[~2015-03-11 9:34 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-19 21:14 "advanced" LED controllers Felipe Balbi
2015-02-23 22:34 ` Pavel Machek
2015-02-23 22:58 ` Felipe Balbi
2015-02-25 21:49 ` Pavel Machek
2015-02-25 23:55 ` NeilBrown
2015-02-28 16:18 ` Pavel Machek
2015-02-25 8:25 ` Geert Uytterhoeven
2015-02-25 9:06 ` Alexandre Courbot
2015-03-02 9:21 ` Pavel Machek
2015-03-03 8:15 ` Alexandre Courbot
2015-03-08 20:57 ` RGB LED control (was Re: "advanced" LED controllers) Pavel Machek
2015-03-09 8:08 ` Geert Uytterhoeven
2015-03-09 9:08 ` Pavel Machek
2015-03-09 11:50 ` Måns Rullgård
2015-03-10 8:04 ` Pavel Machek
[not found] ` <CAK5ve-K4jyBSVk1CZ8qQrFgevqdbhdsgZ1ZYX2e-t07494oq4A@mail.gmail.com>
2015-03-11 9:34 ` Documentation: leds: clarify what 50% brightness means Pavel Machek
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).