diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2018-07-02 16:05:21 -0400 |
---|---|---|
committer | Jacek Anaszewski <jacek.anaszewski@gmail.com> | 2018-07-05 17:21:10 -0400 |
commit | 2282e125a406e09331c5a785e3df29035c99a607 (patch) | |
tree | b5936ee2bde7c85bf71aaff259026857b2bda6d9 /net | |
parent | 033692eb3ec8305f6e9998b297aaec6899680637 (diff) |
leds: triggers: let struct led_trigger::activate() return an error code
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 <u.kleine-koenig@pengutronix.de>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/bluetooth/leds.c | 6 | ||||
-rw-r--r-- | net/mac80211/led.c | 20 | ||||
-rw-r--r-- | net/rfkill/core.c | 4 |
3 files changed, 22 insertions, 8 deletions
diff --git a/net/bluetooth/leds.c b/net/bluetooth/leds.c index cb670b5594eb..6d59a5023231 100644 --- a/net/bluetooth/leds.c +++ b/net/bluetooth/leds.c | |||
@@ -43,7 +43,7 @@ void hci_leds_update_powered(struct hci_dev *hdev, bool enabled) | |||
43 | led_trigger_event(bt_power_led_trigger, enabled ? LED_FULL : LED_OFF); | 43 | led_trigger_event(bt_power_led_trigger, enabled ? LED_FULL : LED_OFF); |
44 | } | 44 | } |
45 | 45 | ||
46 | static void power_activate(struct led_classdev *led_cdev) | 46 | static int power_activate(struct led_classdev *led_cdev) |
47 | { | 47 | { |
48 | struct hci_basic_led_trigger *htrig; | 48 | struct hci_basic_led_trigger *htrig; |
49 | bool powered; | 49 | bool powered; |
@@ -52,10 +52,12 @@ static void power_activate(struct led_classdev *led_cdev) | |||
52 | powered = test_bit(HCI_UP, &htrig->hdev->flags); | 52 | powered = test_bit(HCI_UP, &htrig->hdev->flags); |
53 | 53 | ||
54 | led_trigger_event(led_cdev->trigger, powered ? LED_FULL : LED_OFF); | 54 | led_trigger_event(led_cdev->trigger, powered ? LED_FULL : LED_OFF); |
55 | |||
56 | return 0; | ||
55 | } | 57 | } |
56 | 58 | ||
57 | static struct led_trigger *led_allocate_basic(struct hci_dev *hdev, | 59 | static struct led_trigger *led_allocate_basic(struct hci_dev *hdev, |
58 | void (*activate)(struct led_classdev *led_cdev), | 60 | int (*activate)(struct led_classdev *led_cdev), |
59 | const char *name) | 61 | const char *name) |
60 | { | 62 | { |
61 | struct hci_basic_led_trigger *htrig; | 63 | struct hci_basic_led_trigger *htrig; |
diff --git a/net/mac80211/led.c b/net/mac80211/led.c index ba0b507ea691..d6c66fc19716 100644 --- a/net/mac80211/led.c +++ b/net/mac80211/led.c | |||
@@ -52,13 +52,15 @@ void ieee80211_free_led_names(struct ieee80211_local *local) | |||
52 | kfree(local->radio_led.name); | 52 | kfree(local->radio_led.name); |
53 | } | 53 | } |
54 | 54 | ||
55 | static void ieee80211_tx_led_activate(struct led_classdev *led_cdev) | 55 | static int ieee80211_tx_led_activate(struct led_classdev *led_cdev) |
56 | { | 56 | { |
57 | struct ieee80211_local *local = container_of(led_cdev->trigger, | 57 | struct ieee80211_local *local = container_of(led_cdev->trigger, |
58 | struct ieee80211_local, | 58 | struct ieee80211_local, |
59 | tx_led); | 59 | tx_led); |
60 | 60 | ||
61 | atomic_inc(&local->tx_led_active); | 61 | atomic_inc(&local->tx_led_active); |
62 | |||
63 | return 0; | ||
62 | } | 64 | } |
63 | 65 | ||
64 | static void ieee80211_tx_led_deactivate(struct led_classdev *led_cdev) | 66 | static void ieee80211_tx_led_deactivate(struct led_classdev *led_cdev) |
@@ -70,13 +72,15 @@ static void ieee80211_tx_led_deactivate(struct led_classdev *led_cdev) | |||
70 | atomic_dec(&local->tx_led_active); | 72 | atomic_dec(&local->tx_led_active); |
71 | } | 73 | } |
72 | 74 | ||
73 | static void ieee80211_rx_led_activate(struct led_classdev *led_cdev) | 75 | static int ieee80211_rx_led_activate(struct led_classdev *led_cdev) |
74 | { | 76 | { |
75 | struct ieee80211_local *local = container_of(led_cdev->trigger, | 77 | struct ieee80211_local *local = container_of(led_cdev->trigger, |
76 | struct ieee80211_local, | 78 | struct ieee80211_local, |
77 | rx_led); | 79 | rx_led); |
78 | 80 | ||
79 | atomic_inc(&local->rx_led_active); | 81 | atomic_inc(&local->rx_led_active); |
82 | |||
83 | return 0; | ||
80 | } | 84 | } |
81 | 85 | ||
82 | static void ieee80211_rx_led_deactivate(struct led_classdev *led_cdev) | 86 | static void ieee80211_rx_led_deactivate(struct led_classdev *led_cdev) |
@@ -88,13 +92,15 @@ static void ieee80211_rx_led_deactivate(struct led_classdev *led_cdev) | |||
88 | atomic_dec(&local->rx_led_active); | 92 | atomic_dec(&local->rx_led_active); |
89 | } | 93 | } |
90 | 94 | ||
91 | static void ieee80211_assoc_led_activate(struct led_classdev *led_cdev) | 95 | static int ieee80211_assoc_led_activate(struct led_classdev *led_cdev) |
92 | { | 96 | { |
93 | struct ieee80211_local *local = container_of(led_cdev->trigger, | 97 | struct ieee80211_local *local = container_of(led_cdev->trigger, |
94 | struct ieee80211_local, | 98 | struct ieee80211_local, |
95 | assoc_led); | 99 | assoc_led); |
96 | 100 | ||
97 | atomic_inc(&local->assoc_led_active); | 101 | atomic_inc(&local->assoc_led_active); |
102 | |||
103 | return 0; | ||
98 | } | 104 | } |
99 | 105 | ||
100 | static void ieee80211_assoc_led_deactivate(struct led_classdev *led_cdev) | 106 | static void ieee80211_assoc_led_deactivate(struct led_classdev *led_cdev) |
@@ -106,13 +112,15 @@ static void ieee80211_assoc_led_deactivate(struct led_classdev *led_cdev) | |||
106 | atomic_dec(&local->assoc_led_active); | 112 | atomic_dec(&local->assoc_led_active); |
107 | } | 113 | } |
108 | 114 | ||
109 | static void ieee80211_radio_led_activate(struct led_classdev *led_cdev) | 115 | static int ieee80211_radio_led_activate(struct led_classdev *led_cdev) |
110 | { | 116 | { |
111 | struct ieee80211_local *local = container_of(led_cdev->trigger, | 117 | struct ieee80211_local *local = container_of(led_cdev->trigger, |
112 | struct ieee80211_local, | 118 | struct ieee80211_local, |
113 | radio_led); | 119 | radio_led); |
114 | 120 | ||
115 | atomic_inc(&local->radio_led_active); | 121 | atomic_inc(&local->radio_led_active); |
122 | |||
123 | return 0; | ||
116 | } | 124 | } |
117 | 125 | ||
118 | static void ieee80211_radio_led_deactivate(struct led_classdev *led_cdev) | 126 | static void ieee80211_radio_led_deactivate(struct led_classdev *led_cdev) |
@@ -124,13 +132,15 @@ static void ieee80211_radio_led_deactivate(struct led_classdev *led_cdev) | |||
124 | atomic_dec(&local->radio_led_active); | 132 | atomic_dec(&local->radio_led_active); |
125 | } | 133 | } |
126 | 134 | ||
127 | static void ieee80211_tpt_led_activate(struct led_classdev *led_cdev) | 135 | static int ieee80211_tpt_led_activate(struct led_classdev *led_cdev) |
128 | { | 136 | { |
129 | struct ieee80211_local *local = container_of(led_cdev->trigger, | 137 | struct ieee80211_local *local = container_of(led_cdev->trigger, |
130 | struct ieee80211_local, | 138 | struct ieee80211_local, |
131 | tpt_led); | 139 | tpt_led); |
132 | 140 | ||
133 | atomic_inc(&local->tpt_led_active); | 141 | atomic_inc(&local->tpt_led_active); |
142 | |||
143 | return 0; | ||
134 | } | 144 | } |
135 | 145 | ||
136 | static void ieee80211_tpt_led_deactivate(struct led_classdev *led_cdev) | 146 | static void ieee80211_tpt_led_deactivate(struct led_classdev *led_cdev) |
diff --git a/net/rfkill/core.c b/net/rfkill/core.c index a7a4e6ff9be2..1355f5ca8d22 100644 --- a/net/rfkill/core.c +++ b/net/rfkill/core.c | |||
@@ -141,13 +141,15 @@ static void rfkill_led_trigger_event(struct rfkill *rfkill) | |||
141 | led_trigger_event(trigger, LED_FULL); | 141 | led_trigger_event(trigger, LED_FULL); |
142 | } | 142 | } |
143 | 143 | ||
144 | static void rfkill_led_trigger_activate(struct led_classdev *led) | 144 | static int rfkill_led_trigger_activate(struct led_classdev *led) |
145 | { | 145 | { |
146 | struct rfkill *rfkill; | 146 | struct rfkill *rfkill; |
147 | 147 | ||
148 | rfkill = container_of(led->trigger, struct rfkill, led_trigger); | 148 | rfkill = container_of(led->trigger, struct rfkill, led_trigger); |
149 | 149 | ||
150 | rfkill_led_trigger_event(rfkill); | 150 | rfkill_led_trigger_event(rfkill); |
151 | |||
152 | return 0; | ||
151 | } | 153 | } |
152 | 154 | ||
153 | const char *rfkill_get_led_trigger_name(struct rfkill *rfkill) | 155 | const char *rfkill_get_led_trigger_name(struct rfkill *rfkill) |