<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/leds/trigger/ledtrig-gpio.c, branch v5.1-rc4</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>leds: gpio trigger: simplifications from core changes</title>
<updated>2018-07-05T21:21:15+00:00</updated>
<author>
<name>Uwe Kleine-König</name>
<email>u.kleine-koenig@pengutronix.de</email>
</author>
<published>2018-07-02T20:05:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9bfd7d9e5d63532da2d2d55a6bec5bb377761d37'/>
<id>9bfd7d9e5d63532da2d2d55a6bec5bb377761d37</id>
<content type='text'>
The trigger core learned error handling for the activate callback and
to handle device attributes. Also make use of the module_led_trigger()
helper to simplify trigger registration.

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Acked-by: Pavel Machek &lt;pavel@ucw.cz&gt;
Signed-off-by: Jacek Anaszewski &lt;jacek.anaszewski@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The trigger core learned error handling for the activate callback and
to handle device attributes. Also make use of the module_led_trigger()
helper to simplify trigger registration.

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Acked-by: Pavel Machek &lt;pavel@ucw.cz&gt;
Signed-off-by: Jacek Anaszewski &lt;jacek.anaszewski@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>leds: triggers: let struct led_trigger::activate() return an error code</title>
<updated>2018-07-05T21:21:10+00:00</updated>
<author>
<name>Uwe Kleine-König</name>
<email>u.kleine-koenig@pengutronix.de</email>
</author>
<published>2018-07-02T20:05:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=2282e125a406e09331c5a785e3df29035c99a607'/>
<id>2282e125a406e09331c5a785e3df29035c99a607</id>
<content type='text'>
Given that activating a trigger can fail, let the callback return an
indication. This prevents to have a trigger active according to the
"trigger" sysfs attribute but not functional.

All users are changed accordingly to return 0 for now. There is no intended
change in behaviour.

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Acked-by: Pavel Machek &lt;pavel@ucw.cz&gt;
Signed-off-by: Jacek Anaszewski &lt;jacek.anaszewski@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Given that activating a trigger can fail, let the callback return an
indication. This prevents to have a trigger active according to the
"trigger" sysfs attribute but not functional.

All users are changed accordingly to return 0 for now. There is no intended
change in behaviour.

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Acked-by: Pavel Machek &lt;pavel@ucw.cz&gt;
Signed-off-by: Jacek Anaszewski &lt;jacek.anaszewski@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>leds: triggers: make the MODULE_LICENSE string match the actual license</title>
<updated>2018-07-05T20:59:36+00:00</updated>
<author>
<name>Uwe Kleine-König</name>
<email>u.kleine-koenig@pengutronix.de</email>
</author>
<published>2018-07-02T20:05:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=033692eb3ec8305f6e9998b297aaec6899680637'/>
<id>033692eb3ec8305f6e9998b297aaec6899680637</id>
<content type='text'>
These files are licensed under GPL version 2 only. So use "GPL v2"
instead of "GPL" (which means v2 or later).

Also remove an empty (but commented) line at the end of the license
header which nicely proves in the context that the drivers are really v2
only :-)

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Signed-off-by: Jacek Anaszewski &lt;jacek.anaszewski@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These files are licensed under GPL version 2 only. So use "GPL v2"
instead of "GPL" (which means v2 or later).

Also remove an empty (but commented) line at the end of the license
header which nicely proves in the context that the drivers are really v2
only :-)

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Signed-off-by: Jacek Anaszewski &lt;jacek.anaszewski@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>leds: trigger: gpio: Use threaded IRQ</title>
<updated>2017-05-29T19:55:58+00:00</updated>
<author>
<name>Jan Kiszka</name>
<email>jan.kiszka@siemens.com</email>
</author>
<published>2017-05-26T13:17:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=71c17b06ef7dd23a09725827303e6ed19bf16cce'/>
<id>71c17b06ef7dd23a09725827303e6ed19bf16cce</id>
<content type='text'>
This both simplifies the code because we can drop the workqueue
indirection, and it enables using the trigger for GPIOs that work with
threaded IRQs themselves.

Signed-off-by: Jan Kiszka &lt;jan.kiszka@siemens.com&gt;
Reviewed-by: Andy Shevchenko &lt;andy.shevchenko@gmail.com&gt;
Signed-off-by: Jacek Anaszewski &lt;jacek.anaszewski@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This both simplifies the code because we can drop the workqueue
indirection, and it enables using the trigger for GPIOs that work with
threaded IRQs themselves.

Signed-off-by: Jan Kiszka &lt;jan.kiszka@siemens.com&gt;
Reviewed-by: Andy Shevchenko &lt;andy.shevchenko@gmail.com&gt;
Signed-off-by: Jacek Anaszewski &lt;jacek.anaszewski@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>leds: trigger: gpio: Refresh LED state after GPIO change</title>
<updated>2017-05-29T19:55:04+00:00</updated>
<author>
<name>Jan Kiszka</name>
<email>jan.kiszka@siemens.com</email>
</author>
<published>2017-05-26T13:17:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=71afe3cb1e8fdf89556047e03bcbcd731f1ab108'/>
<id>71afe3cb1e8fdf89556047e03bcbcd731f1ab108</id>
<content type='text'>
The new GPIO may have a different state than the old one.

Signed-off-by: Jan Kiszka &lt;jan.kiszka@siemens.com&gt;
Reviewed-by: Andy Shevchenko &lt;andy.shevchenko@gmail.com&gt;
Signed-off-by: Jacek Anaszewski &lt;jacek.anaszewski@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The new GPIO may have a different state than the old one.

Signed-off-by: Jan Kiszka &lt;jan.kiszka@siemens.com&gt;
Reviewed-by: Andy Shevchenko &lt;andy.shevchenko@gmail.com&gt;
Signed-off-by: Jacek Anaszewski &lt;jacek.anaszewski@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>leds: core: Add led_set_brightness_nosleep{nopm} functions</title>
<updated>2016-01-04T08:57:30+00:00</updated>
<author>
<name>Jacek Anaszewski</name>
<email>j.anaszewski@samsung.com</email>
</author>
<published>2015-10-07T09:10:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=81fe8e5b73e3f4de578ac7f53c1d956d4f58b8d4'/>
<id>81fe8e5b73e3f4de578ac7f53c1d956d4f58b8d4</id>
<content type='text'>
This patch adds led_set_brightness_nosleep() and led_set_brightness_nopm()
functions, that guarantee setting LED brightness in a non-blocking way.
The latter is used from pm_ops context and doesn't modify the brightness
cached in the struct led_classdev. Its execution always ends up with
a call to brightness setting op - either directly or through
a set_brightness_work, regardless of LED_SUSPENDED flag state.

The patch also replaces led_set_brightness_async() with
led_set_brightness_nosleep() in all places where the most vital was setting
brightness in a non sleeping way but not necessarily asynchronously, which
is not needed for non-blocking drivers.

Signed-off-by: Jacek Anaszewski &lt;j.anaszewski@samsung.com&gt;
Acked-by: Sakari Ailus &lt;sakari.ailus@linux.intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch adds led_set_brightness_nosleep() and led_set_brightness_nopm()
functions, that guarantee setting LED brightness in a non-blocking way.
The latter is used from pm_ops context and doesn't modify the brightness
cached in the struct led_classdev. Its execution always ends up with
a call to brightness setting op - either directly or through
a set_brightness_work, regardless of LED_SUSPENDED flag state.

The patch also replaces led_set_brightness_async() with
led_set_brightness_nosleep() in all places where the most vital was setting
brightness in a non sleeping way but not necessarily asynchronously, which
is not needed for non-blocking drivers.

Signed-off-by: Jacek Anaszewski &lt;j.anaszewski@samsung.com&gt;
Acked-by: Sakari Ailus &lt;sakari.ailus@linux.intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>leds: Add support for setting brightness in a synchronous way</title>
<updated>2014-11-14T22:29:35+00:00</updated>
<author>
<name>Jacek Anaszewski</name>
<email>j.anaszewski@samsung.com</email>
</author>
<published>2014-11-14T10:50:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4d71a4a12b130ad033219e6f58c74a64059415eb'/>
<id>4d71a4a12b130ad033219e6f58c74a64059415eb</id>
<content type='text'>
There are use cases when setting a LED brightness has to
have immediate effect (e.g. setting a torch LED brightness).
This patch extends LED subsystem to support such operations.
The LED subsystem internal API __led_set_brightness is changed
to led_set_brightness_async and new led_set_brightness_sync API
is added.

Signed-off-by: Jacek Anaszewski &lt;j.anaszewski@samsung.com&gt;
Acked-by: Kyungmin Park &lt;kyungmin.park@samsung.com&gt;
Cc: Richard Purdie &lt;rpurdie@rpsys.net&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There are use cases when setting a LED brightness has to
have immediate effect (e.g. setting a torch LED brightness).
This patch extends LED subsystem to support such operations.
The LED subsystem internal API __led_set_brightness is changed
to led_set_brightness_async and new led_set_brightness_sync API
is added.

Signed-off-by: Jacek Anaszewski &lt;j.anaszewski@samsung.com&gt;
Acked-by: Kyungmin Park &lt;kyungmin.park@samsung.com&gt;
Cc: Richard Purdie &lt;rpurdie@rpsys.net&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>leds: trigger: gpio: fix warning in gpio trigger for gpios whose accessor function may sleep</title>
<updated>2014-09-11T23:57:51+00:00</updated>
<author>
<name>Lothar Waßmann</name>
<email>LW@karo-electronics.de</email>
</author>
<published>2014-09-09T07:40:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=914ae25a62e77ebbfa0ce7cbc60edd01cc4d1d31'/>
<id>914ae25a62e77ebbfa0ce7cbc60edd01cc4d1d31</id>
<content type='text'>
When using a GPIO driver whose accessor functions may sleep (e.g. an
I2C GPIO extender like PCA9554) the following warning is issued:
WARNING: CPU: 0 PID: 665 at drivers/gpio/gpiolib.c:2274 gpiod_get_raw_value+0x3c/0x48()
Modules linked in:
CPU: 0 PID: 665 Comm: kworker/0:2 Not tainted 3.16.0-karo+ #115
Workqueue: events gpio_trig_work
[&lt;c00142cc&gt;] (unwind_backtrace) from [&lt;c00118f8&gt;] (show_stack+0x10/0x14)
[&lt;c00118f8&gt;] (show_stack) from [&lt;c001bf10&gt;] (warn_slowpath_common+0x64/0x84)
[&lt;c001bf10&gt;] (warn_slowpath_common) from [&lt;c001bf4c&gt;] (warn_slowpath_null+0x1c/0x24)
[&lt;c001bf4c&gt;] (warn_slowpath_null) from [&lt;c020a1b8&gt;] (gpiod_get_raw_value+0x3c/0x48)
[&lt;c020a1b8&gt;] (gpiod_get_raw_value) from [&lt;c02f68a0&gt;] (gpio_trig_work+0x1c/0xb0)
[&lt;c02f68a0&gt;] (gpio_trig_work) from [&lt;c0030c1c&gt;] (process_one_work+0x144/0x38c)
[&lt;c0030c1c&gt;] (process_one_work) from [&lt;c0030ef8&gt;] (worker_thread+0x60/0x5cc)
[&lt;c0030ef8&gt;] (worker_thread) from [&lt;c0036dd4&gt;] (kthread+0xb4/0xd0)
[&lt;c0036dd4&gt;] (kthread) from [&lt;c000f0f0&gt;] (ret_from_fork+0x14/0x24)
---[ end trace cd51a1dad8b86c9c ]---

Fix this by using the _cansleep() variant of gpio_get_value().

Signed-off-by: Lothar Waßmann &lt;LW@KARO-electronics.de&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When using a GPIO driver whose accessor functions may sleep (e.g. an
I2C GPIO extender like PCA9554) the following warning is issued:
WARNING: CPU: 0 PID: 665 at drivers/gpio/gpiolib.c:2274 gpiod_get_raw_value+0x3c/0x48()
Modules linked in:
CPU: 0 PID: 665 Comm: kworker/0:2 Not tainted 3.16.0-karo+ #115
Workqueue: events gpio_trig_work
[&lt;c00142cc&gt;] (unwind_backtrace) from [&lt;c00118f8&gt;] (show_stack+0x10/0x14)
[&lt;c00118f8&gt;] (show_stack) from [&lt;c001bf10&gt;] (warn_slowpath_common+0x64/0x84)
[&lt;c001bf10&gt;] (warn_slowpath_common) from [&lt;c001bf4c&gt;] (warn_slowpath_null+0x1c/0x24)
[&lt;c001bf4c&gt;] (warn_slowpath_null) from [&lt;c020a1b8&gt;] (gpiod_get_raw_value+0x3c/0x48)
[&lt;c020a1b8&gt;] (gpiod_get_raw_value) from [&lt;c02f68a0&gt;] (gpio_trig_work+0x1c/0xb0)
[&lt;c02f68a0&gt;] (gpio_trig_work) from [&lt;c0030c1c&gt;] (process_one_work+0x144/0x38c)
[&lt;c0030c1c&gt;] (process_one_work) from [&lt;c0030ef8&gt;] (worker_thread+0x60/0x5cc)
[&lt;c0030ef8&gt;] (worker_thread) from [&lt;c0036dd4&gt;] (kthread+0xb4/0xd0)
[&lt;c0036dd4&gt;] (kthread) from [&lt;c000f0f0&gt;] (ret_from_fork+0x14/0x24)
---[ end trace cd51a1dad8b86c9c ]---

Fix this by using the _cansleep() variant of gpio_get_value().

Signed-off-by: Lothar Waßmann &lt;LW@KARO-electronics.de&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>leds: move LED trigger drivers into new subdirectory</title>
<updated>2013-04-01T18:04:48+00:00</updated>
<author>
<name>Kim, Milo</name>
<email>Milo.Kim@ti.com</email>
</author>
<published>2013-02-20T08:36:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f07fb52107c881f35eaff09fe990a4dfd0f7e62a'/>
<id>f07fb52107c881f35eaff09fe990a4dfd0f7e62a</id>
<content type='text'>
For better driver management, new subdirectory, 'trigger' is created.
All LED trigger drivers are moved into this directory.

Internal header, 'leds.h' is included in each LED trigger drivers.
Fix the location of header file, "leds.h" -&gt; "../leds.h" in driver files.
One exception is here, 'ledtrig-timer.c'.
There is no need to include 'leds.h'. so '#include "leds.h"' line was removed.

Signed-off-by: Milo(Woogyom) Kim &lt;milo.kim@ti.com&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
For better driver management, new subdirectory, 'trigger' is created.
All LED trigger drivers are moved into this directory.

Internal header, 'leds.h' is included in each LED trigger drivers.
Fix the location of header file, "leds.h" -&gt; "../leds.h" in driver files.
One exception is here, 'ledtrig-timer.c'.
There is no need to include 'leds.h'. so '#include "leds.h"' line was removed.

Signed-off-by: Milo(Woogyom) Kim &lt;milo.kim@ti.com&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
