<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/leds, branch v3.17</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v3.17</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v3.17'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2014-09-02T17:02:13Z</updated>
<entry>
<title>Revert "leds: convert blink timer to workqueue"</title>
<updated>2014-09-02T17:02:13Z</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.cz</email>
</author>
<published>2014-09-02T09:03:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=9067359faf890b3a18ab38c792d458fba77b32b4'/>
<id>urn:sha1:9067359faf890b3a18ab38c792d458fba77b32b4</id>
<content type='text'>
This reverts commit 8b37e1bef5a6b60e949e28a4db3006e4b00bd758.

It's broken as it changes led_blink_set() in a way that it can now sleep
(while synchronously waiting for workqueue to be cancelled). That's a
problem, because it's possible that this function gets called from atomic
context (tpt_trig_timer() takes a readlock and thus disables preemption).

This has been brought up 3 weeks ago already [1] but no proper fix has
materialized, and I keep seeing the problem since 3.17-rc1.

[1] https://lkml.org/lkml/2014/8/16/128

 BUG: sleeping function called from invalid context at kernel/workqueue.c:2650
 in_atomic(): 1, irqs_disabled(): 0, pid: 2335, name: wpa_supplicant
 5 locks held by wpa_supplicant/2335:
  #0:  (rtnl_mutex){+.+.+.}, at: [&lt;ffffffff814c7c92&gt;] rtnl_lock+0x12/0x20
  #1:  (&amp;wdev-&gt;mtx){+.+.+.}, at: [&lt;ffffffffc06e649c&gt;] cfg80211_mgd_wext_siwessid+0x5c/0x180 [cfg80211]
  #2:  (&amp;local-&gt;mtx){+.+.+.}, at: [&lt;ffffffffc0817dea&gt;] ieee80211_prep_connection+0x17a/0x9a0 [mac80211]
  #3:  (&amp;local-&gt;chanctx_mtx){+.+.+.}, at: [&lt;ffffffffc08081ed&gt;] ieee80211_vif_use_channel+0x5d/0x2a0 [mac80211]
  #4:  (&amp;trig-&gt;leddev_list_lock){.+.+..}, at: [&lt;ffffffffc081e68c&gt;] tpt_trig_timer+0xec/0x170 [mac80211]
 CPU: 0 PID: 2335 Comm: wpa_supplicant Not tainted 3.17.0-rc3 #1
 Hardware name: LENOVO 7470BN2/7470BN2, BIOS 6DET38WW (2.02 ) 12/19/2008
  ffff8800360b5a50 ffff8800751f76d8 ffffffff8159e97f ffff8800360b5a30
  ffff8800751f76e8 ffffffff810739a5 ffff8800751f77b0 ffffffff8106862f
  ffffffff810685d0 0aa2209200000000 ffff880000000004 ffff8800361c59d0
 Call Trace:
  [&lt;ffffffff8159e97f&gt;] dump_stack+0x4d/0x66
  [&lt;ffffffff810739a5&gt;] __might_sleep+0xe5/0x120
  [&lt;ffffffff8106862f&gt;] flush_work+0x5f/0x270
  [&lt;ffffffff810685d0&gt;] ? mod_delayed_work_on+0x80/0x80
  [&lt;ffffffff810945ca&gt;] ? mark_held_locks+0x6a/0x90
  [&lt;ffffffff81068a5f&gt;] ? __cancel_work_timer+0x6f/0x100
  [&lt;ffffffff810946ed&gt;] ? trace_hardirqs_on_caller+0xfd/0x1c0
  [&lt;ffffffff81068a6b&gt;] __cancel_work_timer+0x7b/0x100
  [&lt;ffffffff81068b0e&gt;] cancel_delayed_work_sync+0xe/0x10
  [&lt;ffffffff8147cf3b&gt;] led_blink_set+0x1b/0x40
  [&lt;ffffffffc081e6b0&gt;] tpt_trig_timer+0x110/0x170 [mac80211]
  [&lt;ffffffffc081ecdd&gt;] ieee80211_mod_tpt_led_trig+0x9d/0x160 [mac80211]
  [&lt;ffffffffc07e4278&gt;] __ieee80211_recalc_idle+0x98/0x140 [mac80211]
  [&lt;ffffffffc07e59ce&gt;] ieee80211_idle_off+0xe/0x10 [mac80211]
  [&lt;ffffffffc0804e5b&gt;] ieee80211_add_chanctx+0x3b/0x220 [mac80211]
  [&lt;ffffffffc08062e4&gt;] ieee80211_new_chanctx+0x44/0xf0 [mac80211]
  [&lt;ffffffffc080838a&gt;] ieee80211_vif_use_channel+0x1fa/0x2a0 [mac80211]
  [&lt;ffffffffc0817df8&gt;] ieee80211_prep_connection+0x188/0x9a0 [mac80211]
  [&lt;ffffffffc081c246&gt;] ieee80211_mgd_auth+0x256/0x2e0 [mac80211]
  [&lt;ffffffffc07eab33&gt;] ieee80211_auth+0x13/0x20 [mac80211]
  [&lt;ffffffffc06cb006&gt;] cfg80211_mlme_auth+0x106/0x270 [cfg80211]
  [&lt;ffffffffc06ce085&gt;] cfg80211_conn_do_work+0x155/0x3b0 [cfg80211]
  [&lt;ffffffffc06cf670&gt;] cfg80211_connect+0x3f0/0x540 [cfg80211]
  [&lt;ffffffffc06e6148&gt;] cfg80211_mgd_wext_connect+0x158/0x1f0 [cfg80211]
  [&lt;ffffffffc06e651e&gt;] cfg80211_mgd_wext_siwessid+0xde/0x180 [cfg80211]
  [&lt;ffffffffc06e36c0&gt;] ? cfg80211_wext_giwessid+0x50/0x50 [cfg80211]
  [&lt;ffffffffc06e36dd&gt;] cfg80211_wext_siwessid+0x1d/0x40 [cfg80211]
  [&lt;ffffffff81584d0c&gt;] ioctl_standard_iw_point+0x14c/0x3e0
  [&lt;ffffffff810946ed&gt;] ? trace_hardirqs_on_caller+0xfd/0x1c0
  [&lt;ffffffff8158502a&gt;] ioctl_standard_call+0x8a/0xd0
  [&lt;ffffffff81584fa0&gt;] ? ioctl_standard_iw_point+0x3e0/0x3e0
  [&lt;ffffffff81584b76&gt;] wireless_process_ioctl.constprop.10+0xb6/0x100
  [&lt;ffffffff8158521d&gt;] wext_handle_ioctl+0x5d/0xb0
  [&lt;ffffffff814cfb29&gt;] dev_ioctl+0x329/0x620
  [&lt;ffffffff810946ed&gt;] ? trace_hardirqs_on_caller+0xfd/0x1c0
  [&lt;ffffffff8149c7f2&gt;] sock_ioctl+0x142/0x2e0
  [&lt;ffffffff811b0140&gt;] do_vfs_ioctl+0x300/0x520
  [&lt;ffffffff815a67fb&gt;] ? sysret_check+0x1b/0x56
  [&lt;ffffffff810946ed&gt;] ? trace_hardirqs_on_caller+0xfd/0x1c0
  [&lt;ffffffff811b03e1&gt;] SyS_ioctl+0x81/0xa0
  [&lt;ffffffff815a67d6&gt;] system_call_fastpath+0x1a/0x1f
 wlan0: send auth to 00:0b:6b:3c:8c:e4 (try 1/3)
 wlan0: authenticated
 wlan0: associate with 00:0b:6b:3c:8c:e4 (try 1/3)
 wlan0: RX AssocResp from 00:0b:6b:3c:8c:e4 (capab=0x431 status=0 aid=2)
 wlan0: associated
 IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
 cfg80211: Calling CRDA for country: NA
 wlan0: Limiting TX power to 27 (27 - 0) dBm as advertised by 00:0b:6b:3c:8c:e4

 =================================
 [ INFO: inconsistent lock state ]
 3.17.0-rc3 #1 Not tainted
 ---------------------------------
 inconsistent {SOFTIRQ-ON-W} -&gt; {IN-SOFTIRQ-W} usage.
 swapper/0/0 [HC0[0]:SC1[1]:HE1:SE0] takes:
  ((&amp;(&amp;led_cdev-&gt;blink_work)-&gt;work)){+.?...}, at: [&lt;ffffffff810685d0&gt;] flush_work+0x0/0x270
 {SOFTIRQ-ON-W} state was registered at:
   [&lt;ffffffff81094dbe&gt;] __lock_acquire+0x30e/0x1a30
   [&lt;ffffffff81096c81&gt;] lock_acquire+0x91/0x110
   [&lt;ffffffff81068608&gt;] flush_work+0x38/0x270
   [&lt;ffffffff81068a6b&gt;] __cancel_work_timer+0x7b/0x100
   [&lt;ffffffff81068b0e&gt;] cancel_delayed_work_sync+0xe/0x10
   [&lt;ffffffff8147cf3b&gt;] led_blink_set+0x1b/0x40
   [&lt;ffffffffc081e6b0&gt;] tpt_trig_timer+0x110/0x170 [mac80211]
   [&lt;ffffffffc081ecdd&gt;] ieee80211_mod_tpt_led_trig+0x9d/0x160 [mac80211]
   [&lt;ffffffffc07e4278&gt;] __ieee80211_recalc_idle+0x98/0x140 [mac80211]
   [&lt;ffffffffc07e59ce&gt;] ieee80211_idle_off+0xe/0x10 [mac80211]
   [&lt;ffffffffc0804e5b&gt;] ieee80211_add_chanctx+0x3b/0x220 [mac80211]
   [&lt;ffffffffc08062e4&gt;] ieee80211_new_chanctx+0x44/0xf0 [mac80211]
   [&lt;ffffffffc080838a&gt;] ieee80211_vif_use_channel+0x1fa/0x2a0 [mac80211]
   [&lt;ffffffffc0817df8&gt;] ieee80211_prep_connection+0x188/0x9a0 [mac80211]
   [&lt;ffffffffc081c246&gt;] ieee80211_mgd_auth+0x256/0x2e0 [mac80211]
   [&lt;ffffffffc07eab33&gt;] ieee80211_auth+0x13/0x20 [mac80211]
   [&lt;ffffffffc06cb006&gt;] cfg80211_mlme_auth+0x106/0x270 [cfg80211]
   [&lt;ffffffffc06ce085&gt;] cfg80211_conn_do_work+0x155/0x3b0 [cfg80211]
   [&lt;ffffffffc06cf670&gt;] cfg80211_connect+0x3f0/0x540 [cfg80211]
   [&lt;ffffffffc06e6148&gt;] cfg80211_mgd_wext_connect+0x158/0x1f0 [cfg80211]
   [&lt;ffffffffc06e651e&gt;] cfg80211_mgd_wext_siwessid+0xde/0x180 [cfg80211]
   [&lt;ffffffffc06e36dd&gt;] cfg80211_wext_siwessid+0x1d/0x40 [cfg80211]
   [&lt;ffffffff81584d0c&gt;] ioctl_standard_iw_point+0x14c/0x3e0
   [&lt;ffffffff8158502a&gt;] ioctl_standard_call+0x8a/0xd0
   [&lt;ffffffff81584b76&gt;] wireless_process_ioctl.constprop.10+0xb6/0x100
   [&lt;ffffffff8158521d&gt;] wext_handle_ioctl+0x5d/0xb0
   [&lt;ffffffff814cfb29&gt;] dev_ioctl+0x329/0x620
   [&lt;ffffffff8149c7f2&gt;] sock_ioctl+0x142/0x2e0
   [&lt;ffffffff811b0140&gt;] do_vfs_ioctl+0x300/0x520
   [&lt;ffffffff811b03e1&gt;] SyS_ioctl+0x81/0xa0
   [&lt;ffffffff815a67d6&gt;] system_call_fastpath+0x1a/0x1f
 irq event stamp: 493416
 hardirqs last  enabled at (493416): [&lt;ffffffff81068a5f&gt;] __cancel_work_timer+0x6f/0x100
 hardirqs last disabled at (493415): [&lt;ffffffff81067e9f&gt;] try_to_grab_pending+0x1f/0x160
 softirqs last  enabled at (493408): [&lt;ffffffff81053ced&gt;] _local_bh_enable+0x1d/0x50
 softirqs last disabled at (493409): [&lt;ffffffff81054c75&gt;] irq_exit+0xa5/0xb0

 other info that might help us debug this:
  Possible unsafe locking scenario:

        CPU0
        ----
   lock((&amp;(&amp;led_cdev-&gt;blink_work)-&gt;work));
   &lt;Interrupt&gt;
     lock((&amp;(&amp;led_cdev-&gt;blink_work)-&gt;work));

  *** DEADLOCK ***

 2 locks held by swapper/0/0:
  #0:  (((&amp;tpt_trig-&gt;timer))){+.-...}, at: [&lt;ffffffff810b4c50&gt;] call_timer_fn+0x0/0x180
  #1:  (&amp;trig-&gt;leddev_list_lock){.+.?..}, at: [&lt;ffffffffc081e68c&gt;] tpt_trig_timer+0xec/0x170 [mac80211]

 stack backtrace:
 CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.17.0-rc3 #1
 Hardware name: LENOVO 7470BN2/7470BN2, BIOS 6DET38WW (2.02 ) 12/19/2008
  ffffffff8246eb30 ffff88007c203b00 ffffffff8159e97f ffffffff81a194c0
  ffff88007c203b50 ffffffff81599c29 0000000000000001 ffffffff00000001
  ffff880000000000 0000000000000006 ffffffff81a194c0 ffffffff81093ad0
 Call Trace:
  &lt;IRQ&gt;  [&lt;ffffffff8159e97f&gt;] dump_stack+0x4d/0x66
  [&lt;ffffffff81599c29&gt;] print_usage_bug+0x1f4/0x205
  [&lt;ffffffff81093ad0&gt;] ? check_usage_backwards+0x140/0x140
  [&lt;ffffffff810944d3&gt;] mark_lock+0x223/0x2b0
  [&lt;ffffffff81094d60&gt;] __lock_acquire+0x2b0/0x1a30
  [&lt;ffffffff81096c81&gt;] lock_acquire+0x91/0x110
  [&lt;ffffffff810685d0&gt;] ? mod_delayed_work_on+0x80/0x80
  [&lt;ffffffffc081e5a0&gt;] ? __ieee80211_get_rx_led_name+0x10/0x10 [mac80211]
  [&lt;ffffffff81068608&gt;] flush_work+0x38/0x270
  [&lt;ffffffff810685d0&gt;] ? mod_delayed_work_on+0x80/0x80
  [&lt;ffffffff810945ca&gt;] ? mark_held_locks+0x6a/0x90
  [&lt;ffffffff81068a5f&gt;] ? __cancel_work_timer+0x6f/0x100
  [&lt;ffffffffc081e5a0&gt;] ? __ieee80211_get_rx_led_name+0x10/0x10 [mac80211]
  [&lt;ffffffff8109469d&gt;] ? trace_hardirqs_on_caller+0xad/0x1c0
  [&lt;ffffffffc081e5a0&gt;] ? __ieee80211_get_rx_led_name+0x10/0x10 [mac80211]
  [&lt;ffffffff81068a6b&gt;] __cancel_work_timer+0x7b/0x100
  [&lt;ffffffff81068b0e&gt;] cancel_delayed_work_sync+0xe/0x10
  [&lt;ffffffff8147cf3b&gt;] led_blink_set+0x1b/0x40
  [&lt;ffffffffc081e6b0&gt;] tpt_trig_timer+0x110/0x170 [mac80211]
  [&lt;ffffffff810b4cc5&gt;] call_timer_fn+0x75/0x180
  [&lt;ffffffff810b4c50&gt;] ? process_timeout+0x10/0x10
  [&lt;ffffffffc081e5a0&gt;] ? __ieee80211_get_rx_led_name+0x10/0x10 [mac80211]
  [&lt;ffffffff810b50ac&gt;] run_timer_softirq+0x1fc/0x2f0
  [&lt;ffffffff81054805&gt;] __do_softirq+0x115/0x2e0
  [&lt;ffffffff81054c75&gt;] irq_exit+0xa5/0xb0
  [&lt;ffffffff810049b3&gt;] do_IRQ+0x53/0xf0
  [&lt;ffffffff815a74af&gt;] common_interrupt+0x6f/0x6f
  &lt;EOI&gt;  [&lt;ffffffff8147b56e&gt;] ? cpuidle_enter_state+0x6e/0x180
  [&lt;ffffffff8147b732&gt;] cpuidle_enter+0x12/0x20
  [&lt;ffffffff8108bba0&gt;] cpu_startup_entry+0x330/0x360
  [&lt;ffffffff8158fb51&gt;] rest_init+0xc1/0xd0
  [&lt;ffffffff8158fa90&gt;] ? csum_partial_copy_generic+0x170/0x170
  [&lt;ffffffff81af3ff2&gt;] start_kernel+0x44f/0x45a
  [&lt;ffffffff81af399c&gt;] ? set_init_arg+0x53/0x53
  [&lt;ffffffff81af35ad&gt;] x86_64_start_reservations+0x2a/0x2c
  [&lt;ffffffff81af36a0&gt;] x86_64_start_kernel+0xf1/0xf4

Cc: Vincent Donnefort &lt;vdonnefort@gmail.com&gt;
Cc: Hugh Dickins &lt;hughd@google.com&gt;
Cc: Tejun Heo &lt;tj@kernel.org&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</content>
</entry>
<entry>
<title>Merge tag 'drivers-for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc</title>
<updated>2014-08-08T18:34:32Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-08-08T18:34:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=10c8e0562057b5d64ea170feab148e1550420030'/>
<id>urn:sha1:10c8e0562057b5d64ea170feab148e1550420030</id>
<content type='text'>
Pull ARM SoC driver changes from Olof Johansson:
 "A handful of driver-related changes.  We've had a bunch of them going
  in through other branches as well, so it's only a part of what we
  really have this release.

  Larger pieces are:

   - Removal of a now unused PWM driver for atmel
     [ This includes AVR32 changes that have been appropriately acked ]
   - Performance counter support for the arm CCN interconnect
   - OMAP mailbox driver cleanups and consolidation
   - PCI and SATA PHY drivers for SPEAr 13xx platforms
   - Redefinition (with backwards compatibility!) of PCI DT bindings for
     Tegra to better model regulators/power"

Note: this merge also fixes up the semantic conflict with the new
calling convention for devm_phy_create(), see commit f0ed817638b5 ("phy:
core: Let node ptr of PHY point to PHY and not of PHY provider") that
came in through Greg's USB tree.

Semantic merge patch by Stephen Rothwell &lt;sfr@canb.auug.org.au&gt; through
the next tree.

* tag 'drivers-for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (38 commits)
  bus: arm-ccn: Fix error handling at event allocation
  mailbox/omap: add a parent structure for every IP instance
  mailbox/omap: remove the private mailbox structure
  mailbox/omap: consolidate OMAP mailbox driver
  mailbox/omap: simplify the fifo assignment by using macros
  mailbox/omap: remove omap_mbox_type_t from mailbox ops
  mailbox/omap: remove OMAP1 mailbox driver
  mailbox/omap: use devm_* interfaces
  bus: ARM CCN: add PERF_EVENTS dependency
  bus: ARM CCN PMU driver
  PCI: spear: Remove spear13xx_pcie_remove()
  PCI: spear: Fix Section mismatch compilation warning for probe()
  ARM: tegra: Remove legacy PCIe power supply properties
  PCI: tegra: Remove deprecated power supply properties
  PCI: tegra: Implement accurate power supply scheme
  ARM: SPEAr13xx: Update defconfigs
  ARM: SPEAr13xx: Add pcie and miphy DT nodes
  ARM: SPEAr13xx: Add bindings and dt node for misc block
  ARM: SPEAr13xx: Fix static mapping table
  phy: Add drivers for PCIe and SATA phy on SPEAr13xx
  ...
</content>
</entry>
<entry>
<title>leds: ipaq-micro: fix sparse non static symbol warning</title>
<updated>2014-07-29T17:57:20Z</updated>
<author>
<name>Wei Yongjun</name>
<email>yongjun_wei@trendmicro.com.cn</email>
</author>
<published>2014-07-28T13:15:24Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=e661c8978e4833d4148d08b405a2f3175d6f97d9'/>
<id>urn:sha1:e661c8978e4833d4148d08b405a2f3175d6f97d9</id>
<content type='text'>
Fixes the following sparse warnings:

drivers/leds/leds-ipaq-micro.c:130:24: warning:
 symbol 'micro_leds_device_driver' was not declared. Should it be static?

Signed-off-by: Wei Yongjun &lt;yongjun_wei@trendmicro.com.cn&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</content>
</entry>
<entry>
<title>leds: add driver for the iPAQ micro</title>
<updated>2014-07-23T20:33:04Z</updated>
<author>
<name>Linus Walleij</name>
<email>linus.walleij@linaro.org</email>
</author>
<published>2014-07-23T12:36:00Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=4da498fc65de321682396401393340fef5b9c2f6'/>
<id>urn:sha1:4da498fc65de321682396401393340fef5b9c2f6</id>
<content type='text'>
This adds a driver for the iPAQ microcontroller LED.

Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</content>
</entry>
<entry>
<title>leds: atmel-pwm: remove obsolete driver</title>
<updated>2014-07-09T13:13:35Z</updated>
<author>
<name>Alexandre Belloni</name>
<email>alexandre.belloni@free-electrons.com</email>
</author>
<published>2014-05-28T23:20:17Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=3088883b598be8adc47ba5330f3492331d7c6ec5'/>
<id>urn:sha1:3088883b598be8adc47ba5330f3492331d7c6ec5</id>
<content type='text'>
The leds-atmel-pwm driver is now obsolete. It is not used by any mainlined
boards and is replaced by the generic leds_pwm with the pwm-atmel driver using
the generic PWM framework.

Signed-off-by: Alexandre Belloni &lt;alexandre.belloni@free-electrons.com&gt;
Acked-by: Bryan Wu &lt;cooloney@gmail.com&gt;
Signed-off-by: Nicolas Ferre &lt;nicolas.ferre@atmel.com&gt;
</content>
</entry>
<entry>
<title>leds: convert blink timer to workqueue</title>
<updated>2014-07-03T19:02:14Z</updated>
<author>
<name>Vincent Donnefort</name>
<email>vdonnefort@gmail.com</email>
</author>
<published>2014-06-14T09:21:40Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=8b37e1bef5a6b60e949e28a4db3006e4b00bd758'/>
<id>urn:sha1:8b37e1bef5a6b60e949e28a4db3006e4b00bd758</id>
<content type='text'>
This patch converts the blink timer from led-core to workqueue which is more
suitable for this kind of non-priority operations. Moreover, timer may lead to
errors when a LED setting function use a scheduling function such as pinctrl
which is using mutex.

Signed-off-by: Vincent Donnefort &lt;vdonnefort@gmail.com&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</content>
</entry>
<entry>
<title>leds:pca963x: Always initialize MODE2 register</title>
<updated>2014-07-03T18:55:56Z</updated>
<author>
<name>Peter Meerwald</name>
<email>pmeerw@pmeerw.net</email>
</author>
<published>2014-07-03T05:50:35Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=0c62f42dabb5d43d880262d7f1f85e6464acd601'/>
<id>urn:sha1:0c62f42dabb5d43d880262d7f1f85e6464acd601</id>
<content type='text'>
PCA9632 defaults to open-drain
PCA9633/4/5 defaults to totem-pole

the driver assumed that totem-pole default and didn't actively set
the value; the MODE2 register is now written if platform
data indicating the mode is given

Signed-off-by: Peter Meerwald &lt;pmeerw@pmeerw.net&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</content>
</entry>
<entry>
<title>leds:pca963x: Add support for PCA9635 LED driver chip</title>
<updated>2014-07-03T18:52:30Z</updated>
<author>
<name>Peter Meerwald</name>
<email>pmeerw@pmeerw.net</email>
</author>
<published>2014-07-03T05:50:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=3dfedb9d545346958311b8d73f90b8522d1fc759'/>
<id>urn:sha1:3dfedb9d545346958311b8d73f90b8522d1fc759</id>
<content type='text'>
supports 16 PWM-controlled LEDs

Signed-off-by: Peter Meerwald &lt;pmeerw@pmeerw.net&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</content>
</entry>
<entry>
<title>leds: lp55xx-common: fix attribute-creation race</title>
<updated>2014-06-27T20:44:05Z</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2014-06-25T17:08:56Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=44a1255b03aeedb56cbe7cf27461458bd4513049'/>
<id>urn:sha1:44a1255b03aeedb56cbe7cf27461458bd4513049</id>
<content type='text'>
Use the attribute groups of the led-class to create the LED attributes
during probe in order to avoid racing with userspace.

Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</content>
</entry>
<entry>
<title>leds: lp55xx-common: fix sysfs entry leak</title>
<updated>2014-06-27T20:44:04Z</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2014-06-25T17:08:55Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=660216bf82e0cd65603c0935193c1f7c4aca04fb'/>
<id>urn:sha1:660216bf82e0cd65603c0935193c1f7c4aca04fb</id>
<content type='text'>
Make sure the sysfs group is removed when the LEDs are unregistered.

Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Bryan Wu &lt;cooloney@gmail.com&gt;
</content>
</entry>
</feed>
