From: Ivo van Doorn <ivdoorn@gmail.com>
To: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: linux-kernel@vger.kernel.org,
"John W. Linville" <linville@tuxdriver.com>,
Dmitry Torokhov <dtor@mail.ru>
Subject: Re: [PATCH 3/8] rfkill: handle KEY_RADIO and SW_RADIO events
Date: Sat, 12 Apr 2008 12:36:41 +0200 [thread overview]
Message-ID: <200804121236.41635.IvDoorn@gmail.com> (raw)
In-Reply-To: <1207946244-14525-4-git-send-email-hmh@hmh.eng.br>
On Friday 11 April 2008, Henrique de Moraes Holschuh wrote:
> The *_RADIO input events are related to all radios in a system. There are
> two: KEY_RADIO and SW_RADIO.
>
> Teach rfkill-input how to handle them. In particular, SW_RADIO is not a
> toggle, but an absolute enable-or-disable command.
Not sure what you are trying to achieve here,
who triggers the SW_RADIO and why?
> Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
> Cc: Ivo van Doorn <IvDoorn@gmail.com>
> Cc: John W. Linville <linville@tuxdriver.com>
> Cc: Dmitry Torokhov <dtor@mail.ru>
> ---
> net/rfkill/rfkill-input.c | 57 +++++++++++++++++++++++++++++++++++++++++++-
> 1 files changed, 55 insertions(+), 2 deletions(-)
>
> diff --git a/net/rfkill/rfkill-input.c b/net/rfkill/rfkill-input.c
> index e4b051d..7d1e520 100644
> --- a/net/rfkill/rfkill-input.c
> +++ b/net/rfkill/rfkill-input.c
> @@ -55,6 +55,22 @@ static void rfkill_task_handler(struct work_struct *work)
> mutex_unlock(&task->mutex);
> }
>
> +static void rfkill_schedule_set(struct rfkill_task *task,
> + enum rfkill_state desired_state)
> +{
> + unsigned long flags;
> +
> + spin_lock_irqsave(&task->lock, flags);
> +
> + if (time_after(jiffies, task->last + msecs_to_jiffies(200))) {
> + task->desired_state = desired_state;
> + task->last = jiffies;
> + schedule_work(&task->work);
> + }
> +
> + spin_unlock_irqrestore(&task->lock, flags);
> +}
> +
> static void rfkill_schedule_toggle(struct rfkill_task *task)
> {
> unsigned long flags;
> @@ -87,9 +103,9 @@ static DEFINE_RFKILL_TASK(rfkill_uwb, RFKILL_TYPE_UWB);
> static DEFINE_RFKILL_TASK(rfkill_wimax, RFKILL_TYPE_WIMAX);
>
> static void rfkill_event(struct input_handle *handle, unsigned int type,
> - unsigned int code, int down)
> + unsigned int code, int data)
> {
> - if (type == EV_KEY && down == 1) {
> + if (type == EV_KEY && data == 1) {
> switch (code) {
> case KEY_WLAN:
> rfkill_schedule_toggle(&rfkill_wlan);
> @@ -103,6 +119,33 @@ static void rfkill_event(struct input_handle *handle, unsigned int type,
> case KEY_WIMAX:
> rfkill_schedule_toggle(&rfkill_wimax);
> break;
> + case KEY_RADIO:
> + /* EVERY radio type */
> + rfkill_schedule_toggle(&rfkill_wimax);
> + rfkill_schedule_toggle(&rfkill_uwb);
> + rfkill_schedule_toggle(&rfkill_bt);
> + rfkill_schedule_toggle(&rfkill_wlan);
> + break;
> + default:
> + break;
> + }
> + } else if (type == EV_SW) {
> + switch (code) {
> + case SW_RADIO:
> + /* EVERY radio type. data != 0 means radios ON */
> + rfkill_schedule_set(&rfkill_wimax,
> + (data)? RFKILL_STATE_ON:
> + RFKILL_STATE_OFF);
> + rfkill_schedule_set(&rfkill_uwb,
> + (data)? RFKILL_STATE_ON:
> + RFKILL_STATE_OFF);
> + rfkill_schedule_set(&rfkill_bt,
> + (data)? RFKILL_STATE_ON:
> + RFKILL_STATE_OFF);
> + rfkill_schedule_set(&rfkill_wlan,
> + (data)? RFKILL_STATE_ON:
> + RFKILL_STATE_OFF);
> + break;
> default:
> break;
> }
> @@ -168,6 +211,16 @@ static const struct input_device_id rfkill_ids[] = {
> .evbit = { BIT_MASK(EV_KEY) },
> .keybit = { [BIT_WORD(KEY_WIMAX)] = BIT_MASK(KEY_WIMAX) },
> },
> + {
> + .flags = INPUT_DEVICE_ID_MATCH_EVBIT | INPUT_DEVICE_ID_MATCH_KEYBIT,
> + .evbit = { BIT(EV_KEY) },
> + .keybit = { [BIT_WORD(KEY_RADIO)] = BIT_MASK(KEY_RADIO) },
> + },
> + {
> + .flags = INPUT_DEVICE_ID_MATCH_EVBIT | INPUT_DEVICE_ID_MATCH_SWBIT,
> + .evbit = { BIT(EV_SW) },
> + .swbit = { [BIT_WORD(SW_RADIO)] = BIT_MASK(SW_RADIO) },
> + },
> { }
> };
>
next prev parent reply other threads:[~2008-04-12 10:35 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-11 20:37 [GIT PATCH] rfkill support for r/w and r/o rfkill switches Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 1/8] rfkill: clarify meaning of rfkill states Henrique de Moraes Holschuh
2008-04-14 4:22 ` Dmitry Torokhov
2008-04-11 20:37 ` [PATCH 2/8] rfkill: fix minor typo in kernel doc Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 3/8] rfkill: handle KEY_RADIO and SW_RADIO events Henrique de Moraes Holschuh
2008-04-12 10:36 ` Ivo van Doorn [this message]
2008-04-12 12:05 ` Henrique de Moraes Holschuh
2008-04-12 12:23 ` Ivo van Doorn
2008-04-12 13:08 ` Henrique de Moraes Holschuh
2008-04-12 13:17 ` Ivo van Doorn
2008-04-12 15:47 ` Dmitry Torokhov
2008-04-12 18:02 ` Henrique de Moraes Holschuh
2008-04-12 18:14 ` Ivo van Doorn
2008-04-12 19:09 ` Carlos Corbacho
2008-04-12 20:36 ` Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 4/8] rfkill: add read-write rfkill switch support Henrique de Moraes Holschuh
2008-04-12 10:36 ` Ivo van Doorn
2008-04-14 1:20 ` Henrique de Moraes Holschuh
2008-04-14 12:00 ` Ivo van Doorn
2008-04-14 14:16 ` Dmitry Torokhov
2008-04-14 14:36 ` Henrique de Moraes Holschuh
2008-04-14 15:19 ` Dmitry Torokhov
2008-04-14 16:33 ` Henrique de Moraes Holschuh
2008-04-14 18:05 ` Dmitry Torokhov
2008-04-14 21:41 ` Henrique de Moraes Holschuh
2008-04-14 19:06 ` Carlos Corbacho
2008-04-14 20:23 ` Dmitry Torokhov
2008-04-15 7:27 ` Carlos Corbacho
2008-04-15 12:58 ` Dmitry Torokhov
2008-04-14 21:04 ` Ivo van Doorn
2008-04-14 21:46 ` Henrique de Moraes Holschuh
2008-04-15 8:14 ` Ivo Van Doorn
2008-04-11 20:37 ` [PATCH 5/8] rfkill: add read-only " Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 6/8] rfkill: add the WWAN radio type Henrique de Moraes Holschuh
2008-04-11 20:44 ` Inaky Perez-Gonzalez
2008-04-11 20:53 ` Henrique de Moraes Holschuh
2008-04-12 10:36 ` Ivo van Doorn
2008-04-12 12:15 ` Henrique de Moraes Holschuh
2008-04-12 12:28 ` Ivo van Doorn
2008-04-12 23:23 ` Inaky Perez-Gonzalez
2008-04-13 17:25 ` Henrique de Moraes Holschuh
2008-04-13 17:37 ` Ivo van Doorn
2008-04-13 18:16 ` Henrique de Moraes Holschuh
2008-04-14 4:20 ` Dmitry Torokhov
2008-04-11 20:37 ` [PATCH 7/8] rfkill: add an "any radio" switch type and functionality Henrique de Moraes Holschuh
2008-04-12 19:57 ` Pavel Machek
2008-04-13 17:40 ` Henrique de Moraes Holschuh
2008-04-11 20:37 ` [PATCH 8/8] rfkill: add parameter to disable radios by default Henrique de Moraes Holschuh
2008-04-12 10:36 ` Ivo van Doorn
2008-04-12 12:56 ` Henrique de Moraes Holschuh
2008-04-12 13:43 ` Ivo van Doorn
2008-04-12 14:43 ` Henrique de Moraes Holschuh
2008-04-12 16:24 ` Ivo van Doorn
2008-04-12 18:36 ` Henrique de Moraes Holschuh
2008-04-12 19:15 ` Ivo van Doorn
2008-04-12 10:36 ` [GIT PATCH] rfkill support for r/w and r/o rfkill switches Ivo van Doorn
2008-04-16 18:37 ` John W. Linville
2008-04-16 19:26 ` Ivo van Doorn
2008-04-16 19:58 ` John W. Linville
2008-04-16 20:40 ` Ivo van Doorn
2008-04-17 1:29 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200804121236.41635.IvDoorn@gmail.com \
--to=ivdoorn@gmail.com \
--cc=dtor@mail.ru \
--cc=hmh@hmh.eng.br \
--cc=linux-kernel@vger.kernel.org \
--cc=linville@tuxdriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.