aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/input.h1
-rw-r--r--include/linux/rfkill.h2
-rw-r--r--net/rfkill/rfkill-input.c9
-rw-r--r--net/rfkill/rfkill.c3
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 */
35enum rfkill_type { 36enum 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
82static DEFINE_RFKILL_TASK(rfkill_wlan, RFKILL_TYPE_WLAN); 82static DEFINE_RFKILL_TASK(rfkill_wlan, RFKILL_TYPE_WLAN);
83static DEFINE_RFKILL_TASK(rfkill_bt, RFKILL_TYPE_BLUETOOTH); 83static DEFINE_RFKILL_TASK(rfkill_bt, RFKILL_TYPE_BLUETOOTH);
84static DEFINE_RFKILL_TASK(rfkill_uwb, RFKILL_TYPE_UWB);
84 85
85static void rfkill_event(struct input_handle *handle, unsigned int type, 86static 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 }