diff options
Diffstat (limited to 'net/rfkill/rfkill-input.c')
| -rw-r--r-- | net/rfkill/rfkill-input.c | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/net/rfkill/rfkill-input.c b/net/rfkill/rfkill-input.c index 84efde97c5a7..60a34f3b5f65 100644 --- a/net/rfkill/rfkill-input.c +++ b/net/rfkill/rfkill-input.c | |||
| @@ -47,12 +47,6 @@ enum rfkill_global_sched_op { | |||
| 47 | RFKILL_GLOBAL_OP_UNBLOCK, | 47 | RFKILL_GLOBAL_OP_UNBLOCK, |
| 48 | }; | 48 | }; |
| 49 | 49 | ||
| 50 | /* | ||
| 51 | * Currently, the code marked with RFKILL_NEED_SWSET is inactive. | ||
| 52 | * If handling of EV_SW SW_WLAN/WWAN/BLUETOOTH/etc is needed in the | ||
| 53 | * future, when such events are added, that code will be necessary. | ||
| 54 | */ | ||
| 55 | |||
| 56 | struct rfkill_task { | 50 | struct rfkill_task { |
| 57 | struct delayed_work dwork; | 51 | struct delayed_work dwork; |
| 58 | 52 | ||
| @@ -65,14 +59,6 @@ struct rfkill_task { | |||
| 65 | /* pending regular switch operations (1=pending) */ | 59 | /* pending regular switch operations (1=pending) */ |
| 66 | unsigned long sw_pending[BITS_TO_LONGS(RFKILL_TYPE_MAX)]; | 60 | unsigned long sw_pending[BITS_TO_LONGS(RFKILL_TYPE_MAX)]; |
| 67 | 61 | ||
| 68 | #ifdef RFKILL_NEED_SWSET | ||
| 69 | /* set operation pending (1=pending) */ | ||
| 70 | unsigned long sw_setpending[BITS_TO_LONGS(RFKILL_TYPE_MAX)]; | ||
| 71 | |||
| 72 | /* desired state for pending set operation (1=unblock) */ | ||
| 73 | unsigned long sw_newstate[BITS_TO_LONGS(RFKILL_TYPE_MAX)]; | ||
| 74 | #endif | ||
| 75 | |||
| 76 | /* should the state be complemented (1=yes) */ | 62 | /* should the state be complemented (1=yes) */ |
| 77 | unsigned long sw_togglestate[BITS_TO_LONGS(RFKILL_TYPE_MAX)]; | 63 | unsigned long sw_togglestate[BITS_TO_LONGS(RFKILL_TYPE_MAX)]; |
| 78 | 64 | ||
| @@ -111,24 +97,6 @@ static void __rfkill_handle_global_op(enum rfkill_global_sched_op op) | |||
| 111 | } | 97 | } |
| 112 | } | 98 | } |
| 113 | 99 | ||
| 114 | #ifdef RFKILL_NEED_SWSET | ||
| 115 | static void __rfkill_handle_normal_op(const enum rfkill_type type, | ||
| 116 | const bool sp, const bool s, const bool c) | ||
| 117 | { | ||
| 118 | enum rfkill_state state; | ||
| 119 | |||
| 120 | if (sp) | ||
| 121 | state = (s) ? RFKILL_STATE_UNBLOCKED : | ||
| 122 | RFKILL_STATE_SOFT_BLOCKED; | ||
| 123 | else | ||
| 124 | state = rfkill_get_global_state(type); | ||
| 125 | |||
| 126 | if (c) | ||
| 127 | state = rfkill_state_complement(state); | ||
| 128 | |||
| 129 | rfkill_switch_all(type, state); | ||
| 130 | } | ||
| 131 | #else | ||
| 132 | static void __rfkill_handle_normal_op(const enum rfkill_type type, | 100 | static void __rfkill_handle_normal_op(const enum rfkill_type type, |
| 133 | const bool c) | 101 | const bool c) |
| 134 | { | 102 | { |
| @@ -140,7 +108,6 @@ static void __rfkill_handle_normal_op(const enum rfkill_type type, | |||
| 140 | 108 | ||
| 141 | rfkill_switch_all(type, state); | 109 | rfkill_switch_all(type, state); |
| 142 | } | 110 | } |
| 143 | #endif | ||
| 144 | 111 | ||
| 145 | static void rfkill_task_handler(struct work_struct *work) | 112 | static void rfkill_task_handler(struct work_struct *work) |
| 146 | { | 113 | { |
| @@ -171,21 +138,11 @@ static void rfkill_task_handler(struct work_struct *work) | |||
| 171 | i < RFKILL_TYPE_MAX) { | 138 | i < RFKILL_TYPE_MAX) { |
| 172 | if (test_and_clear_bit(i, task->sw_pending)) { | 139 | if (test_and_clear_bit(i, task->sw_pending)) { |
| 173 | bool c; | 140 | bool c; |
| 174 | #ifdef RFKILL_NEED_SWSET | ||
| 175 | bool sp, s; | ||
| 176 | sp = test_and_clear_bit(i, | ||
| 177 | task->sw_setpending); | ||
| 178 | s = test_bit(i, task->sw_newstate); | ||
| 179 | #endif | ||
| 180 | c = test_and_clear_bit(i, | 141 | c = test_and_clear_bit(i, |
| 181 | task->sw_togglestate); | 142 | task->sw_togglestate); |
| 182 | spin_unlock_irq(&task->lock); | 143 | spin_unlock_irq(&task->lock); |
| 183 | 144 | ||
| 184 | #ifdef RFKILL_NEED_SWSET | ||
| 185 | __rfkill_handle_normal_op(i, sp, s, c); | ||
| 186 | #else | ||
| 187 | __rfkill_handle_normal_op(i, c); | 145 | __rfkill_handle_normal_op(i, c); |
| 188 | #endif | ||
| 189 | 146 | ||
| 190 | spin_lock_irq(&task->lock); | 147 | spin_lock_irq(&task->lock); |
| 191 | } | 148 | } |
| @@ -238,32 +195,6 @@ static void rfkill_schedule_global_op(enum rfkill_global_sched_op op) | |||
| 238 | spin_unlock_irqrestore(&rfkill_task.lock, flags); | 195 | spin_unlock_irqrestore(&rfkill_task.lock, flags); |
| 239 | } | 196 | } |
| 240 | 197 | ||
| 241 | #ifdef RFKILL_NEED_SWSET | ||
| 242 | /* Use this if you need to add EV_SW SW_WLAN/WWAN/BLUETOOTH/etc handling */ | ||
| 243 | |||
| 244 | static void rfkill_schedule_set(enum rfkill_type type, | ||
| 245 | enum rfkill_state desired_state) | ||
| 246 | { | ||
| 247 | unsigned long flags; | ||
| 248 | |||
| 249 | if (rfkill_is_epo_lock_active()) | ||
| 250 | return; | ||
| 251 | |||
| 252 | spin_lock_irqsave(&rfkill_task.lock, flags); | ||
| 253 | if (!rfkill_task.global_op_pending) { | ||
| 254 | set_bit(type, rfkill_task.sw_pending); | ||
| 255 | set_bit(type, rfkill_task.sw_setpending); | ||
| 256 | clear_bit(type, rfkill_task.sw_togglestate); | ||
| 257 | if (desired_state) | ||
| 258 | set_bit(type, rfkill_task.sw_newstate); | ||
| 259 | else | ||
| 260 | clear_bit(type, rfkill_task.sw_newstate); | ||
| 261 | rfkill_schedule_ratelimited(); | ||
| 262 | } | ||
| 263 | spin_unlock_irqrestore(&rfkill_task.lock, flags); | ||
| 264 | } | ||
| 265 | #endif | ||
| 266 | |||
| 267 | static void rfkill_schedule_toggle(enum rfkill_type type) | 198 | static void rfkill_schedule_toggle(enum rfkill_type type) |
| 268 | { | 199 | { |
| 269 | unsigned long flags; | 200 | unsigned long flags; |
