aboutsummaryrefslogtreecommitdiffstats
path: root/net/rfkill/rfkill-input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/rfkill/rfkill-input.c')
-rw-r--r--net/rfkill/rfkill-input.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/net/rfkill/rfkill-input.c b/net/rfkill/rfkill-input.c
index 5d4c8b2446f7..8aa822730145 100644
--- a/net/rfkill/rfkill-input.c
+++ b/net/rfkill/rfkill-input.c
@@ -84,7 +84,8 @@ static void rfkill_schedule_toggle(struct rfkill_task *task)
84 spin_lock_irqsave(&task->lock, flags); 84 spin_lock_irqsave(&task->lock, flags);
85 85
86 if (time_after(jiffies, task->last + msecs_to_jiffies(200))) { 86 if (time_after(jiffies, task->last + msecs_to_jiffies(200))) {
87 task->desired_state = !task->desired_state; 87 task->desired_state =
88 rfkill_state_complement(task->desired_state);
88 task->last = jiffies; 89 task->last = jiffies;
89 schedule_work(&task->work); 90 schedule_work(&task->work);
90 } 91 }
@@ -92,14 +93,14 @@ static void rfkill_schedule_toggle(struct rfkill_task *task)
92 spin_unlock_irqrestore(&task->lock, flags); 93 spin_unlock_irqrestore(&task->lock, flags);
93} 94}
94 95
95#define DEFINE_RFKILL_TASK(n, t) \ 96#define DEFINE_RFKILL_TASK(n, t) \
96 struct rfkill_task n = { \ 97 struct rfkill_task n = { \
97 .work = __WORK_INITIALIZER(n.work, \ 98 .work = __WORK_INITIALIZER(n.work, \
98 rfkill_task_handler), \ 99 rfkill_task_handler), \
99 .type = t, \ 100 .type = t, \
100 .mutex = __MUTEX_INITIALIZER(n.mutex), \ 101 .mutex = __MUTEX_INITIALIZER(n.mutex), \
101 .lock = __SPIN_LOCK_UNLOCKED(n.lock), \ 102 .lock = __SPIN_LOCK_UNLOCKED(n.lock), \
102 .desired_state = RFKILL_STATE_ON, \ 103 .desired_state = RFKILL_STATE_UNBLOCKED, \
103 } 104 }
104 105
105static DEFINE_RFKILL_TASK(rfkill_wlan, RFKILL_TYPE_WLAN); 106static DEFINE_RFKILL_TASK(rfkill_wlan, RFKILL_TYPE_WLAN);
@@ -135,15 +136,15 @@ static void rfkill_event(struct input_handle *handle, unsigned int type,
135 /* handle EPO (emergency power off) through shortcut */ 136 /* handle EPO (emergency power off) through shortcut */
136 if (data) { 137 if (data) {
137 rfkill_schedule_set(&rfkill_wwan, 138 rfkill_schedule_set(&rfkill_wwan,
138 RFKILL_STATE_ON); 139 RFKILL_STATE_UNBLOCKED);
139 rfkill_schedule_set(&rfkill_wimax, 140 rfkill_schedule_set(&rfkill_wimax,
140 RFKILL_STATE_ON); 141 RFKILL_STATE_UNBLOCKED);
141 rfkill_schedule_set(&rfkill_uwb, 142 rfkill_schedule_set(&rfkill_uwb,
142 RFKILL_STATE_ON); 143 RFKILL_STATE_UNBLOCKED);
143 rfkill_schedule_set(&rfkill_bt, 144 rfkill_schedule_set(&rfkill_bt,
144 RFKILL_STATE_ON); 145 RFKILL_STATE_UNBLOCKED);
145 rfkill_schedule_set(&rfkill_wlan, 146 rfkill_schedule_set(&rfkill_wlan,
146 RFKILL_STATE_ON); 147 RFKILL_STATE_UNBLOCKED);
147 } else 148 } else
148 rfkill_schedule_epo(); 149 rfkill_schedule_epo();
149 break; 150 break;