1. 26 10月, 2015 1 次提交
  2. 05 5月, 2015 1 次提交
  3. 10 3月, 2015 2 次提交
  4. 27 1月, 2015 1 次提交
    • J
      leds: Add LED Flash class extension to the LED subsystem · 7aea8389
      Jacek Anaszewski 提交于
      Some LED devices support two operation modes - torch and flash.
      This patch provides support for flash LED devices in the LED subsystem
      by introducing new sysfs attributes and kernel internal interface.
      The attributes being introduced are: flash_brightness, flash_strobe,
      flash_timeout, max_flash_timeout, max_flash_brightness, flash_fault,
      flash_sync_strobe and available_sync_leds. All the flash related
      features are placed in a separate module.
      
      The modifications aim to be compatible with V4L2 framework requirements
      related to the flash devices management. The design assumes that V4L2
      sub-device can take of the LED class device control and communicate
      with it through the kernel internal interface. When V4L2 Flash sub-device
      file is opened, the LED class device sysfs interface is made
      unavailable.
      Signed-off-by: NJacek Anaszewski <j.anaszewski@samsung.com>
      Acked-by: NKyungmin Park <kyungmin.park@samsung.com>
      Cc: Richard Purdie <rpurdie@rpsys.net>
      Acked-by: NPavel Machek <pavel@ucw.cz>
      Signed-off-by: NBryan Wu <cooloney@gmail.com>
      7aea8389
  5. 15 11月, 2014 2 次提交
  6. 05 11月, 2014 2 次提交
  7. 13 9月, 2014 1 次提交
  8. 12 9月, 2014 2 次提交
  9. 03 9月, 2014 1 次提交
    • J
      Revert "leds: convert blink timer to workqueue" · 9067359f
      Jiri Kosina 提交于
      This reverts commit 8b37e1be.
      
      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: [<ffffffff814c7c92>] rtnl_lock+0x12/0x20
        #1:  (&wdev->mtx){+.+.+.}, at: [<ffffffffc06e649c>] cfg80211_mgd_wext_siwessid+0x5c/0x180 [cfg80211]
        #2:  (&local->mtx){+.+.+.}, at: [<ffffffffc0817dea>] ieee80211_prep_connection+0x17a/0x9a0 [mac80211]
        #3:  (&local->chanctx_mtx){+.+.+.}, at: [<ffffffffc08081ed>] ieee80211_vif_use_channel+0x5d/0x2a0 [mac80211]
        #4:  (&trig->leddev_list_lock){.+.+..}, at: [<ffffffffc081e68c>] 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:
        [<ffffffff8159e97f>] dump_stack+0x4d/0x66
        [<ffffffff810739a5>] __might_sleep+0xe5/0x120
        [<ffffffff8106862f>] flush_work+0x5f/0x270
        [<ffffffff810685d0>] ? mod_delayed_work_on+0x80/0x80
        [<ffffffff810945ca>] ? mark_held_locks+0x6a/0x90
        [<ffffffff81068a5f>] ? __cancel_work_timer+0x6f/0x100
        [<ffffffff810946ed>] ? trace_hardirqs_on_caller+0xfd/0x1c0
        [<ffffffff81068a6b>] __cancel_work_timer+0x7b/0x100
        [<ffffffff81068b0e>] cancel_delayed_work_sync+0xe/0x10
        [<ffffffff8147cf3b>] led_blink_set+0x1b/0x40
        [<ffffffffc081e6b0>] tpt_trig_timer+0x110/0x170 [mac80211]
        [<ffffffffc081ecdd>] ieee80211_mod_tpt_led_trig+0x9d/0x160 [mac80211]
        [<ffffffffc07e4278>] __ieee80211_recalc_idle+0x98/0x140 [mac80211]
        [<ffffffffc07e59ce>] ieee80211_idle_off+0xe/0x10 [mac80211]
        [<ffffffffc0804e5b>] ieee80211_add_chanctx+0x3b/0x220 [mac80211]
        [<ffffffffc08062e4>] ieee80211_new_chanctx+0x44/0xf0 [mac80211]
        [<ffffffffc080838a>] ieee80211_vif_use_channel+0x1fa/0x2a0 [mac80211]
        [<ffffffffc0817df8>] ieee80211_prep_connection+0x188/0x9a0 [mac80211]
        [<ffffffffc081c246>] ieee80211_mgd_auth+0x256/0x2e0 [mac80211]
        [<ffffffffc07eab33>] ieee80211_auth+0x13/0x20 [mac80211]
        [<ffffffffc06cb006>] cfg80211_mlme_auth+0x106/0x270 [cfg80211]
        [<ffffffffc06ce085>] cfg80211_conn_do_work+0x155/0x3b0 [cfg80211]
        [<ffffffffc06cf670>] cfg80211_connect+0x3f0/0x540 [cfg80211]
        [<ffffffffc06e6148>] cfg80211_mgd_wext_connect+0x158/0x1f0 [cfg80211]
        [<ffffffffc06e651e>] cfg80211_mgd_wext_siwessid+0xde/0x180 [cfg80211]
        [<ffffffffc06e36c0>] ? cfg80211_wext_giwessid+0x50/0x50 [cfg80211]
        [<ffffffffc06e36dd>] cfg80211_wext_siwessid+0x1d/0x40 [cfg80211]
        [<ffffffff81584d0c>] ioctl_standard_iw_point+0x14c/0x3e0
        [<ffffffff810946ed>] ? trace_hardirqs_on_caller+0xfd/0x1c0
        [<ffffffff8158502a>] ioctl_standard_call+0x8a/0xd0
        [<ffffffff81584fa0>] ? ioctl_standard_iw_point+0x3e0/0x3e0
        [<ffffffff81584b76>] wireless_process_ioctl.constprop.10+0xb6/0x100
        [<ffffffff8158521d>] wext_handle_ioctl+0x5d/0xb0
        [<ffffffff814cfb29>] dev_ioctl+0x329/0x620
        [<ffffffff810946ed>] ? trace_hardirqs_on_caller+0xfd/0x1c0
        [<ffffffff8149c7f2>] sock_ioctl+0x142/0x2e0
        [<ffffffff811b0140>] do_vfs_ioctl+0x300/0x520
        [<ffffffff815a67fb>] ? sysret_check+0x1b/0x56
        [<ffffffff810946ed>] ? trace_hardirqs_on_caller+0xfd/0x1c0
        [<ffffffff811b03e1>] SyS_ioctl+0x81/0xa0
        [<ffffffff815a67d6>] 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} -> {IN-SOFTIRQ-W} usage.
       swapper/0/0 [HC0[0]:SC1[1]:HE1:SE0] takes:
        ((&(&led_cdev->blink_work)->work)){+.?...}, at: [<ffffffff810685d0>] flush_work+0x0/0x270
       {SOFTIRQ-ON-W} state was registered at:
         [<ffffffff81094dbe>] __lock_acquire+0x30e/0x1a30
         [<ffffffff81096c81>] lock_acquire+0x91/0x110
         [<ffffffff81068608>] flush_work+0x38/0x270
         [<ffffffff81068a6b>] __cancel_work_timer+0x7b/0x100
         [<ffffffff81068b0e>] cancel_delayed_work_sync+0xe/0x10
         [<ffffffff8147cf3b>] led_blink_set+0x1b/0x40
         [<ffffffffc081e6b0>] tpt_trig_timer+0x110/0x170 [mac80211]
         [<ffffffffc081ecdd>] ieee80211_mod_tpt_led_trig+0x9d/0x160 [mac80211]
         [<ffffffffc07e4278>] __ieee80211_recalc_idle+0x98/0x140 [mac80211]
         [<ffffffffc07e59ce>] ieee80211_idle_off+0xe/0x10 [mac80211]
         [<ffffffffc0804e5b>] ieee80211_add_chanctx+0x3b/0x220 [mac80211]
         [<ffffffffc08062e4>] ieee80211_new_chanctx+0x44/0xf0 [mac80211]
         [<ffffffffc080838a>] ieee80211_vif_use_channel+0x1fa/0x2a0 [mac80211]
         [<ffffffffc0817df8>] ieee80211_prep_connection+0x188/0x9a0 [mac80211]
         [<ffffffffc081c246>] ieee80211_mgd_auth+0x256/0x2e0 [mac80211]
         [<ffffffffc07eab33>] ieee80211_auth+0x13/0x20 [mac80211]
         [<ffffffffc06cb006>] cfg80211_mlme_auth+0x106/0x270 [cfg80211]
         [<ffffffffc06ce085>] cfg80211_conn_do_work+0x155/0x3b0 [cfg80211]
         [<ffffffffc06cf670>] cfg80211_connect+0x3f0/0x540 [cfg80211]
         [<ffffffffc06e6148>] cfg80211_mgd_wext_connect+0x158/0x1f0 [cfg80211]
         [<ffffffffc06e651e>] cfg80211_mgd_wext_siwessid+0xde/0x180 [cfg80211]
         [<ffffffffc06e36dd>] cfg80211_wext_siwessid+0x1d/0x40 [cfg80211]
         [<ffffffff81584d0c>] ioctl_standard_iw_point+0x14c/0x3e0
         [<ffffffff8158502a>] ioctl_standard_call+0x8a/0xd0
         [<ffffffff81584b76>] wireless_process_ioctl.constprop.10+0xb6/0x100
         [<ffffffff8158521d>] wext_handle_ioctl+0x5d/0xb0
         [<ffffffff814cfb29>] dev_ioctl+0x329/0x620
         [<ffffffff8149c7f2>] sock_ioctl+0x142/0x2e0
         [<ffffffff811b0140>] do_vfs_ioctl+0x300/0x520
         [<ffffffff811b03e1>] SyS_ioctl+0x81/0xa0
         [<ffffffff815a67d6>] system_call_fastpath+0x1a/0x1f
       irq event stamp: 493416
       hardirqs last  enabled at (493416): [<ffffffff81068a5f>] __cancel_work_timer+0x6f/0x100
       hardirqs last disabled at (493415): [<ffffffff81067e9f>] try_to_grab_pending+0x1f/0x160
       softirqs last  enabled at (493408): [<ffffffff81053ced>] _local_bh_enable+0x1d/0x50
       softirqs last disabled at (493409): [<ffffffff81054c75>] irq_exit+0xa5/0xb0
      
       other info that might help us debug this:
        Possible unsafe locking scenario:
      
              CPU0
              ----
         lock((&(&led_cdev->blink_work)->work));
         <Interrupt>
           lock((&(&led_cdev->blink_work)->work));
      
        *** DEADLOCK ***
      
       2 locks held by swapper/0/0:
        #0:  (((&tpt_trig->timer))){+.-...}, at: [<ffffffff810b4c50>] call_timer_fn+0x0/0x180
        #1:  (&trig->leddev_list_lock){.+.?..}, at: [<ffffffffc081e68c>] 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:
        <IRQ>  [<ffffffff8159e97f>] dump_stack+0x4d/0x66
        [<ffffffff81599c29>] print_usage_bug+0x1f4/0x205
        [<ffffffff81093ad0>] ? check_usage_backwards+0x140/0x140
        [<ffffffff810944d3>] mark_lock+0x223/0x2b0
        [<ffffffff81094d60>] __lock_acquire+0x2b0/0x1a30
        [<ffffffff81096c81>] lock_acquire+0x91/0x110
        [<ffffffff810685d0>] ? mod_delayed_work_on+0x80/0x80
        [<ffffffffc081e5a0>] ? __ieee80211_get_rx_led_name+0x10/0x10 [mac80211]
        [<ffffffff81068608>] flush_work+0x38/0x270
        [<ffffffff810685d0>] ? mod_delayed_work_on+0x80/0x80
        [<ffffffff810945ca>] ? mark_held_locks+0x6a/0x90
        [<ffffffff81068a5f>] ? __cancel_work_timer+0x6f/0x100
        [<ffffffffc081e5a0>] ? __ieee80211_get_rx_led_name+0x10/0x10 [mac80211]
        [<ffffffff8109469d>] ? trace_hardirqs_on_caller+0xad/0x1c0
        [<ffffffffc081e5a0>] ? __ieee80211_get_rx_led_name+0x10/0x10 [mac80211]
        [<ffffffff81068a6b>] __cancel_work_timer+0x7b/0x100
        [<ffffffff81068b0e>] cancel_delayed_work_sync+0xe/0x10
        [<ffffffff8147cf3b>] led_blink_set+0x1b/0x40
        [<ffffffffc081e6b0>] tpt_trig_timer+0x110/0x170 [mac80211]
        [<ffffffff810b4cc5>] call_timer_fn+0x75/0x180
        [<ffffffff810b4c50>] ? process_timeout+0x10/0x10
        [<ffffffffc081e5a0>] ? __ieee80211_get_rx_led_name+0x10/0x10 [mac80211]
        [<ffffffff810b50ac>] run_timer_softirq+0x1fc/0x2f0
        [<ffffffff81054805>] __do_softirq+0x115/0x2e0
        [<ffffffff81054c75>] irq_exit+0xa5/0xb0
        [<ffffffff810049b3>] do_IRQ+0x53/0xf0
        [<ffffffff815a74af>] common_interrupt+0x6f/0x6f
        <EOI>  [<ffffffff8147b56e>] ? cpuidle_enter_state+0x6e/0x180
        [<ffffffff8147b732>] cpuidle_enter+0x12/0x20
        [<ffffffff8108bba0>] cpu_startup_entry+0x330/0x360
        [<ffffffff8158fb51>] rest_init+0xc1/0xd0
        [<ffffffff8158fa90>] ? csum_partial_copy_generic+0x170/0x170
        [<ffffffff81af3ff2>] start_kernel+0x44f/0x45a
        [<ffffffff81af399c>] ? set_init_arg+0x53/0x53
        [<ffffffff81af35ad>] x86_64_start_reservations+0x2a/0x2c
        [<ffffffff81af36a0>] x86_64_start_kernel+0xf1/0xf4
      
      Cc: Vincent Donnefort <vdonnefort@gmail.com>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      Signed-off-by: NBryan Wu <cooloney@gmail.com>
      9067359f
  10. 04 7月, 2014 1 次提交
  11. 26 6月, 2014 1 次提交
  12. 02 4月, 2013 2 次提交
    • K
      leds: add camera LED triggers · 48a1d032
      Kim, Milo 提交于
      Some LED devices support flash/torch functionality through the LED subsystem.
      This patch enables direct LED trigger controls by the driver.
      Flash on/off and torch on/off can be done simply by other driver space.
      Two trigger APIs are added, ledtrig_flash_ctrl() and ledtrig_torch_ctrl().
      Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com>
      Signed-off-by: NBryan Wu <cooloney@gmail.com>
      48a1d032
    • K
      leds: trigger: use inline functions instead of macros · 39f7e08a
      Kim, Milo 提交于
      Macros are used in case that an inline function doesn't work.
      Otherwise, use an empty inline function.
      
      (a) Case of !CONFIG_LEDS_TRIGGERS
      Following macros are replaced with inline functions.
        led_trigger_register_simple()
        led_trigger_unregister_simple()
        led_trigger_event()
      To make inline types, the structure, 'led_trigger' should be defined.
      This structure has no member at all.
      
      (b) Case of !CONFIG_LEDS_TRIGGER_IDE_DISK
      ledtrig_ide_activity() macro is replaced with an inline function as well.
      
      (c) DEFINE_LED_TRIGGER() and DEFINE_LED_TRIGGER_GLOBAL()
      Struct 'led_trigger' is defined both cases, with CONFIG_LEDS_TRIGGERS and
      without CONFIG_LEDS_TRIGGERS.
      Those macros are moved out of CONFIG_LED_TRIGGERS because of no-dependency
      on CONFIG_LEDS_TRIGGERS.
      
      (d) Fix build errors in mmc-core driver
      After replacing macros with inline functions, following build errors occur.
      (condition: CONFIG_LEDS_TRIGGERS is not set)
      
        drivers/mmc/core/core.c: In function 'mmc_request_done':
        drivers/mmc/core/core.c:164:25: error: 'struct mmc_host' has no member named 'led'
        drivers/mmc/core/core.c: In function 'mmc_start_request':
        drivers/mmc/core/core.c:254:24: error: 'struct mmc_host' has no member named 'led'
        make[3]: *** [drivers/mmc/core/core.o] Error 1
      
      The reason of these errors is non-existent member variable, 'led'.
      It is only valid when CONFIG_LEDS_TRIGGERS is set.
      But now, it can be used without this dependency.
      To fix build errors, member 'led' is always used without its config option in
      'include/linux/mmc/host.h'.
      Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com>
      Signed-off-by: NBryan Wu <cooloney@gmail.com>
      39f7e08a
  13. 27 11月, 2012 2 次提交
  14. 11 9月, 2012 1 次提交
  15. 31 7月, 2012 1 次提交
  16. 24 7月, 2012 2 次提交
    • S
      leds: Rename led_brightness_set() to led_set_brightness() · 19cd67e2
      Shuah Khan 提交于
      Rename leds external interface led_brightness_set() to led_set_brightness().
      This is the second phase of the change to reduce confusion between the
      leds internal and external interfaces that set brightness. With this change,
      now the external interface is led_set_brightness(). The first phase renamed
      the internal interface led_set_brightness() to __led_set_brightness().
      There are no changes to the interface implementations.
      Signed-off-by: NShuah Khan <shuahkhan@gmail.com>
      Signed-off-by: NBryan Wu <bryan.wu@canonical.com>
      19cd67e2
    • F
      leds: add oneshot blink functions · 5bb629c5
      Fabio Baltieri 提交于
      Add two new functions, led_blink_set_oneshot and
      led_trigger_blink_oneshot, to be used by triggers for one-shot blink of
      led devices.
      
      This is implemented extending the existing software-blink code, and uses
      the same timer and handler function.
      
      The behavior of the code is to do a blink-on, blink-off sequence when
      the function is called, ignoring other calls until the sequence is
      completed so that the leds keep blinking at constant rate if the
      functions are called repeatedly.
      
      This is meant to be used by drivers which needs to trigger on sporadic
      event, but doesn't have clear busy/idle trigger points.
      
      After the blink sequence the led remains off. This behavior can be
      inverted setting the "invert" argument, which blink the led off, than on
      and leave the led on after the sequence.
      
      (bryan.wu@canonical.com: rebase to commit 'leds: don't disable blinking
      when writing the same value to delay_on or delay_off')
      Signed-off-by: NFabio Baltieri <fabio.baltieri@gmail.com>
      Acked-by: NShuah Khan <shuahkhan@gmail.com>
      Signed-off-by: NBryan Wu <bryan.wu@canonical.com>
      5bb629c5
  17. 30 5月, 2012 1 次提交
  18. 25 5月, 2011 1 次提交
  19. 23 3月, 2011 1 次提交
  20. 31 1月, 2011 1 次提交
  21. 12 11月, 2010 1 次提交
  22. 26 5月, 2010 1 次提交
  23. 24 6月, 2009 3 次提交
    • R
      leds: Futher document blink_set · a1dd8c61
      Richard Purdie 提交于
      Futher document blink_set function pointer
      Signed-off-by: NRichard Purdie <rpurdie@linux.intel.com>
      a1dd8c61
    • T
      leds: Add options to have GPIO LEDs start on or keep their state · ed88bae6
      Trent Piepho 提交于
      There already is a "default-on" trigger but there are problems with it.
      
      For one, it's a inefficient way to do it and requires led trigger support
      to be compiled in.
      
      But the real reason is that is produces a glitch on the LED.  The GPIO is
      allocate with the LED *off*, then *later* when the trigger runs it is
      turned back on.  If the LED was already on via the GPIO's reset default or
      action of the firmware, this produces a glitch where the LED goes from on
      to off to on.  While normally this is fast enough that it wouldn't be
      noticeable to a human observer, there are still serious problems.
      
      One is that there may be something else on the GPIO line, like a hardware
      alarm or watchdog, that is fast enough to notice the glitch.
      
      Another is that the kernel may panic before the LED is turned back on, thus
      hanging with the LED in the wrong state.  This is not just speculation, but
      actually happened to me with an embedded system that has an LED which
      should turn off when the kernel finishes booting, which was left in the
      incorrect state due to a bug in the OF LED binding code.
      
      We also let GPIO LEDs get their initial value from whatever the current
      state of the GPIO line is.  On some systems the LEDs are put into some
      state by the firmware or hardware before Linux boots, and it is desired to
      have them keep this state which is otherwise unknown to Linux.
      
      This requires that the underlying GPIO driver support reading the value of
      output GPIOs.  Some drivers support this and some do not.
      
      The platform device binding gains a field in the platform data
      "default_state" that controls this.  There are three constants defined to
      select from on, off, or keeping the current state.  The OpenFirmware
      binding uses a property named "default-state" that can be set to "on",
      "off", or "keep".  The default if the property isn't present is off.
      Signed-off-by: NTrent Piepho <xyzzy@speakeasy.org>
      Acked-by: NGrant Likely <grant.likely@secretlab.ca>
      Acked-by: NWolfram Sang <w.sang@pengutronix.de>
      Acked-by: NSean MacLennan <smaclennan@pikatech.com>
      Signed-off-by: NRichard Purdie <rpurdie@linux.intel.com>
      ed88bae6
    • M
      leds: Further document parameters for blink_set() · 92722b1b
      Mark Brown 提交于
      The documentation for the parameters of blink_set() was a bit hard
      to find so put some where I'd expected to find it.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Signed-off-by: NRichard Purdie <rpurdie@linux.intel.com>
      92722b1b
  24. 06 4月, 2009 2 次提交
  25. 09 1月, 2009 1 次提交
    • R
      leds: Add suspend/resume to the core class · 859cb7f2
      Richard Purdie 提交于
      Add suspend/resume to the core class and remove all the now unneeded
      code from various drivers. Originally the class code couldn't support
      suspend/resume but since class_device can there is no reason for
      each driver doing its own suspend/resume anymore.
      859cb7f2
  26. 08 1月, 2009 1 次提交
  27. 21 10月, 2008 1 次提交
    • T
      leds: Make default trigger fields const · 326bb8a5
      Trent Piepho 提交于
      The default_trigger fields of struct gpio_led and thus struct
      led_classdev are pretty much always assigned from a string literal,
      which means the string can't be modified.  Which is fine, since there is
      no reason to modify the string and in fact it never is.
      
      But they should be marked const to prevent such code from being added,
      to prevent warnings if -Wwrite-strings is used, when assigned from a
      constant string other than a string literal (which produces a warning
      under current kernel compiler flags), and for general good coding
      practices.
      Signed-off-by: NTrent Piepho <tpiepho@freescale.com>
      Signed-off-by: NRichard Purdie <rpurdie@linux.intel.com>
      326bb8a5
  28. 23 7月, 2008 2 次提交
  29. 25 4月, 2008 1 次提交