diff options
author | Iñaky Pérez-González <inaky.perez-gonzalez@intel.com> | 2008-01-23 16:40:27 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-31 22:26:46 -0500 |
commit | 303d9bf6bb64ead8e3f1d7e29904a4025502e591 (patch) | |
tree | c33cc180a0f5084bcb1c2e8921cab35eb9aea476 | |
parent | 09552ccd8277e6382097e93a40f7311a09449367 (diff) |
rfkill: add the WiMAX radio type
Teach rfkill about wimax radios.
Had to define a KEY_WIMAX as a 'key for disabling only wimax radios',
as other radio technologies have. This makes sense as hardware has
specific keys for disabling specific radios.
The RFKILL enabling part is, otherwise, a copy and paste of any other
radio technology.
Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/linux/input.h | 2 | ||||
-rw-r--r-- | include/linux/rfkill.h | 2 | ||||
-rw-r--r-- | net/rfkill/rfkill-input.c | 9 | ||||
-rw-r--r-- | net/rfkill/rfkill.c | 3 |
4 files changed, 16 insertions, 0 deletions
diff --git a/include/linux/input.h b/include/linux/input.h index 2075d6da2a3..056a17a4f34 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -371,6 +371,8 @@ struct input_absinfo { | |||
371 | #define KEY_BRIGHTNESS_ZERO 244 /* brightness off, use ambient */ | 371 | #define KEY_BRIGHTNESS_ZERO 244 /* brightness off, use ambient */ |
372 | #define KEY_DISPLAY_OFF 245 /* display device to off state */ | 372 | #define KEY_DISPLAY_OFF 245 /* display device to off state */ |
373 | 373 | ||
374 | #define KEY_WIMAX 246 | ||
375 | |||
374 | #define BTN_MISC 0x100 | 376 | #define BTN_MISC 0x100 |
375 | #define BTN_0 0x100 | 377 | #define BTN_0 0x100 |
376 | #define BTN_1 0x101 | 378 | #define BTN_1 0x101 |
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h index 0ce5e0b52db..e3ab21d7fc7 100644 --- a/include/linux/rfkill.h +++ b/include/linux/rfkill.h | |||
@@ -33,11 +33,13 @@ | |||
33 | * RFKILL_TYPE_WLAN: switch is on a 802.11 wireless network device. | 33 | * RFKILL_TYPE_WLAN: switch is on a 802.11 wireless network device. |
34 | * RFKILL_TYPE_BLUETOOTH: switch is on a bluetooth device. | 34 | * RFKILL_TYPE_BLUETOOTH: switch is on a bluetooth device. |
35 | * RFKILL_TYPE_UWB: switch is on a ultra wideband device. | 35 | * RFKILL_TYPE_UWB: switch is on a ultra wideband device. |
36 | * RFKILL_TYPE_WIMAX: switch is on a WiMAX device. | ||
36 | */ | 37 | */ |
37 | enum rfkill_type { | 38 | enum rfkill_type { |
38 | RFKILL_TYPE_WLAN , | 39 | RFKILL_TYPE_WLAN , |
39 | RFKILL_TYPE_BLUETOOTH, | 40 | RFKILL_TYPE_BLUETOOTH, |
40 | RFKILL_TYPE_UWB, | 41 | RFKILL_TYPE_UWB, |
42 | RFKILL_TYPE_WIMAX, | ||
41 | RFKILL_TYPE_MAX, | 43 | RFKILL_TYPE_MAX, |
42 | }; | 44 | }; |
43 | 45 | ||
diff --git a/net/rfkill/rfkill-input.c b/net/rfkill/rfkill-input.c index d1e9d68f8ba..e4b051dbed6 100644 --- a/net/rfkill/rfkill-input.c +++ b/net/rfkill/rfkill-input.c | |||
@@ -84,6 +84,7 @@ static void rfkill_schedule_toggle(struct rfkill_task *task) | |||
84 | static DEFINE_RFKILL_TASK(rfkill_wlan, RFKILL_TYPE_WLAN); | 84 | static DEFINE_RFKILL_TASK(rfkill_wlan, RFKILL_TYPE_WLAN); |
85 | static DEFINE_RFKILL_TASK(rfkill_bt, RFKILL_TYPE_BLUETOOTH); | 85 | static DEFINE_RFKILL_TASK(rfkill_bt, RFKILL_TYPE_BLUETOOTH); |
86 | static DEFINE_RFKILL_TASK(rfkill_uwb, RFKILL_TYPE_UWB); | 86 | static DEFINE_RFKILL_TASK(rfkill_uwb, RFKILL_TYPE_UWB); |
87 | static DEFINE_RFKILL_TASK(rfkill_wimax, RFKILL_TYPE_WIMAX); | ||
87 | 88 | ||
88 | static void rfkill_event(struct input_handle *handle, unsigned int type, | 89 | static void rfkill_event(struct input_handle *handle, unsigned int type, |
89 | unsigned int code, int down) | 90 | unsigned int code, int down) |
@@ -99,6 +100,9 @@ static void rfkill_event(struct input_handle *handle, unsigned int type, | |||
99 | case KEY_UWB: | 100 | case KEY_UWB: |
100 | rfkill_schedule_toggle(&rfkill_uwb); | 101 | rfkill_schedule_toggle(&rfkill_uwb); |
101 | break; | 102 | break; |
103 | case KEY_WIMAX: | ||
104 | rfkill_schedule_toggle(&rfkill_wimax); | ||
105 | break; | ||
102 | default: | 106 | default: |
103 | break; | 107 | break; |
104 | } | 108 | } |
@@ -159,6 +163,11 @@ static const struct input_device_id rfkill_ids[] = { | |||
159 | .evbit = { BIT_MASK(EV_KEY) }, | 163 | .evbit = { BIT_MASK(EV_KEY) }, |
160 | .keybit = { [BIT_WORD(KEY_UWB)] = BIT_MASK(KEY_UWB) }, | 164 | .keybit = { [BIT_WORD(KEY_UWB)] = BIT_MASK(KEY_UWB) }, |
161 | }, | 165 | }, |
166 | { | ||
167 | .flags = INPUT_DEVICE_ID_MATCH_EVBIT | INPUT_DEVICE_ID_MATCH_KEYBIT, | ||
168 | .evbit = { BIT_MASK(EV_KEY) }, | ||
169 | .keybit = { [BIT_WORD(KEY_WIMAX)] = BIT_MASK(KEY_WIMAX) }, | ||
170 | }, | ||
162 | { } | 171 | { } |
163 | }; | 172 | }; |
164 | 173 | ||
diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c index d06d338812e..6562f868e82 100644 --- a/net/rfkill/rfkill.c +++ b/net/rfkill/rfkill.c | |||
@@ -126,6 +126,9 @@ static ssize_t rfkill_type_show(struct device *dev, | |||
126 | case RFKILL_TYPE_UWB: | 126 | case RFKILL_TYPE_UWB: |
127 | type = "ultrawideband"; | 127 | type = "ultrawideband"; |
128 | break; | 128 | break; |
129 | case RFKILL_TYPE_WIMAX: | ||
130 | type = "wimax"; | ||
131 | break; | ||
129 | default: | 132 | default: |
130 | BUG(); | 133 | BUG(); |
131 | } | 134 | } |