[PATCH 6/8] rfkill: add the WWAN radio type

From: Henrique de Moraes Holschuh
Date: Fri Apr 11 2008 - 16:39:56 EST


Unfortunately, instead of adding a generic Wireless WAN type, a technology-
specific type (WiMAX) was added. That's useless for other WWAN devices,
such as EDGE, UMTS, X-RTT and other such radios.

Add a WWAN rfkill type for generic wireless WAN devices. No keys are added
as most devices use KEY_RADIO for WWAN control and need no specific keycode
added.

Signed-off-by: Inaky Perez-Gonzalez <inaky@xxxxxxxxxxxxxxx>
Cc: IÃaky PÃrez-GonzÃlez <inaky.perez-gonzalez@xxxxxxxxx>
Cc: Ivo van Doorn <IvDoorn@xxxxxxxxx>
Cc: John W. Linville <linville@xxxxxxxxxxxxx>
Cc: David S. Miller <davem@xxxxxxxxxxxxx>
---
include/linux/rfkill.h | 2 ++
net/rfkill/rfkill-input.c | 5 +++++
net/rfkill/rfkill.c | 3 +++
3 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h
index 931d32b..7650517 100644
--- a/include/linux/rfkill.h
+++ b/include/linux/rfkill.h
@@ -34,12 +34,14 @@
* RFKILL_TYPE_BLUETOOTH: switch is on a bluetooth device.
* RFKILL_TYPE_UWB: switch is on a ultra wideband device.
* RFKILL_TYPE_WIMAX: switch is on a WiMAX device.
+ * RFKILL_TYPE_WWAN: switch is on a wireless WAN device.
*/
enum rfkill_type {
RFKILL_TYPE_WLAN ,
RFKILL_TYPE_BLUETOOTH,
RFKILL_TYPE_UWB,
RFKILL_TYPE_WIMAX,
+ RFKILL_TYPE_WWAN,
RFKILL_TYPE_MAX,
};

diff --git a/net/rfkill/rfkill-input.c b/net/rfkill/rfkill-input.c
index 7d1e520..675651b 100644
--- a/net/rfkill/rfkill-input.c
+++ b/net/rfkill/rfkill-input.c
@@ -101,6 +101,7 @@ static DEFINE_RFKILL_TASK(rfkill_wlan, RFKILL_TYPE_WLAN);
static DEFINE_RFKILL_TASK(rfkill_bt, RFKILL_TYPE_BLUETOOTH);
static DEFINE_RFKILL_TASK(rfkill_uwb, RFKILL_TYPE_UWB);
static DEFINE_RFKILL_TASK(rfkill_wimax, RFKILL_TYPE_WIMAX);
+static DEFINE_RFKILL_TASK(rfkill_wwan, RFKILL_TYPE_WIMAX);

static void rfkill_event(struct input_handle *handle, unsigned int type,
unsigned int code, int data)
@@ -121,6 +122,7 @@ static void rfkill_event(struct input_handle *handle, unsigned int type,
break;
case KEY_RADIO:
/* EVERY radio type */
+ rfkill_schedule_toggle(&rfkill_wwan);
rfkill_schedule_toggle(&rfkill_wimax);
rfkill_schedule_toggle(&rfkill_uwb);
rfkill_schedule_toggle(&rfkill_bt);
@@ -133,6 +135,9 @@ static void rfkill_event(struct input_handle *handle, unsigned int type,
switch (code) {
case SW_RADIO:
/* EVERY radio type. data != 0 means radios ON */
+ rfkill_schedule_set(&rfkill_wwan,
+ (data)? RFKILL_STATE_ON:
+ RFKILL_STATE_OFF);
rfkill_schedule_set(&rfkill_wimax,
(data)? RFKILL_STATE_ON:
RFKILL_STATE_OFF);
diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c
index d149d94..56241a4 100644
--- a/net/rfkill/rfkill.c
+++ b/net/rfkill/rfkill.c
@@ -171,6 +171,9 @@ static ssize_t rfkill_type_show(struct device *dev,
case RFKILL_TYPE_WIMAX:
type = "wimax";
break;
+ case RFKILL_TYPE_WWAN:
+ type = "wwan";
+ break;
default:
BUG();
}
--
1.5.4.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/