diff options
-rw-r--r-- | include/linux/input.h | 1 | ||||
-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, 15 insertions, 0 deletions
diff --git a/include/linux/input.h b/include/linux/input.h index 36e00aa6f03b..6eb3aead7f1d 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -360,6 +360,7 @@ struct input_absinfo { | |||
360 | 360 | ||
361 | #define KEY_BLUETOOTH 237 | 361 | #define KEY_BLUETOOTH 237 |
362 | #define KEY_WLAN 238 | 362 | #define KEY_WLAN 238 |
363 | #define KEY_UWB 239 | ||
363 | 364 | ||
364 | #define KEY_UNKNOWN 240 | 365 | #define KEY_UNKNOWN 240 |
365 | 366 | ||
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h index c4546e15c853..f9a50dab4168 100644 --- a/include/linux/rfkill.h +++ b/include/linux/rfkill.h | |||
@@ -31,10 +31,12 @@ | |||
31 | * enum rfkill_type - type of rfkill switch. | 31 | * enum rfkill_type - type of rfkill switch. |
32 | * RFKILL_TYPE_WLAN: switch is no a Wireless network devices. | 32 | * RFKILL_TYPE_WLAN: switch is no a Wireless network devices. |
33 | * RFKILL_TYPE_BlUETOOTH: switch is on a bluetooth device. | 33 | * RFKILL_TYPE_BlUETOOTH: switch is on a bluetooth device. |
34 | * RFKILL_TYPE_UWB: switch is on a Ultra wideband device. | ||
34 | */ | 35 | */ |
35 | enum rfkill_type { | 36 | enum rfkill_type { |
36 | RFKILL_TYPE_WLAN , | 37 | RFKILL_TYPE_WLAN , |
37 | RFKILL_TYPE_BLUETOOTH, | 38 | RFKILL_TYPE_BLUETOOTH, |
39 | RFKILL_TYPE_UWB, | ||
38 | RFKILL_TYPE_MAX, | 40 | RFKILL_TYPE_MAX, |
39 | }; | 41 | }; |
40 | 42 | ||
diff --git a/net/rfkill/rfkill-input.c b/net/rfkill/rfkill-input.c index 9f746be58854..8e4516a5fe32 100644 --- a/net/rfkill/rfkill-input.c +++ b/net/rfkill/rfkill-input.c | |||
@@ -81,6 +81,7 @@ static void rfkill_schedule_toggle(struct rfkill_task *task) | |||
81 | 81 | ||
82 | static DEFINE_RFKILL_TASK(rfkill_wlan, RFKILL_TYPE_WLAN); | 82 | static DEFINE_RFKILL_TASK(rfkill_wlan, RFKILL_TYPE_WLAN); |
83 | static DEFINE_RFKILL_TASK(rfkill_bt, RFKILL_TYPE_BLUETOOTH); | 83 | static DEFINE_RFKILL_TASK(rfkill_bt, RFKILL_TYPE_BLUETOOTH); |
84 | static DEFINE_RFKILL_TASK(rfkill_uwb, RFKILL_TYPE_UWB); | ||
84 | 85 | ||
85 | static void rfkill_event(struct input_handle *handle, unsigned int type, | 86 | static void rfkill_event(struct input_handle *handle, unsigned int type, |
86 | unsigned int code, int down) | 87 | unsigned int code, int down) |
@@ -93,6 +94,9 @@ static void rfkill_event(struct input_handle *handle, unsigned int type, | |||
93 | case KEY_BLUETOOTH: | 94 | case KEY_BLUETOOTH: |
94 | rfkill_schedule_toggle(&rfkill_bt); | 95 | rfkill_schedule_toggle(&rfkill_bt); |
95 | break; | 96 | break; |
97 | case KEY_UWB: | ||
98 | rfkill_schedule_toggle(&rfkill_uwb); | ||
99 | break; | ||
96 | default: | 100 | default: |
97 | break; | 101 | break; |
98 | } | 102 | } |
@@ -148,6 +152,11 @@ static const struct input_device_id rfkill_ids[] = { | |||
148 | .evbit = { BIT(EV_KEY) }, | 152 | .evbit = { BIT(EV_KEY) }, |
149 | .keybit = { [LONG(KEY_BLUETOOTH)] = BIT(KEY_BLUETOOTH) }, | 153 | .keybit = { [LONG(KEY_BLUETOOTH)] = BIT(KEY_BLUETOOTH) }, |
150 | }, | 154 | }, |
155 | { | ||
156 | .flags = INPUT_DEVICE_ID_MATCH_EVBIT | INPUT_DEVICE_ID_MATCH_KEYBIT, | ||
157 | .evbit = { BIT(EV_KEY) }, | ||
158 | .keybit = { [LONG(KEY_UWB)] = BIT(KEY_UWB) }, | ||
159 | }, | ||
151 | { } | 160 | { } |
152 | }; | 161 | }; |
153 | 162 | ||
diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c index 50e010272e47..03ed7fd8afe0 100644 --- a/net/rfkill/rfkill.c +++ b/net/rfkill/rfkill.c | |||
@@ -106,6 +106,9 @@ static ssize_t rfkill_type_show(struct device *dev, | |||
106 | case RFKILL_TYPE_BLUETOOTH: | 106 | case RFKILL_TYPE_BLUETOOTH: |
107 | type = "bluetooth"; | 107 | type = "bluetooth"; |
108 | break; | 108 | break; |
109 | case RFKILL_TYPE_UWB: | ||
110 | type = "ultrawideband"; | ||
111 | break; | ||
109 | default: | 112 | default: |
110 | BUG(); | 113 | BUG(); |
111 | } | 114 | } |