* Re: [PATCH] sony-laptop: check for rfkill hard block at load time
2009-09-24 19:15 ` [PATCH] sony-laptop: check for rfkill hard block at load time Alan Jenkins
@ 2009-09-24 19:24 ` Gábor Stefanik
2009-09-24 20:11 ` Alan Jenkins
2009-09-24 19:27 ` Johannes Berg
2009-09-24 22:38 ` Mattia Dongili
2 siblings, 1 reply; 14+ messages in thread
From: Gábor Stefanik @ 2009-09-24 19:24 UTC (permalink / raw)
To: Alan Jenkins
Cc: Mattia Dongili, linux-wireless@vger.kernel.org, Norbert Preining,
Johannes Berg, Almer S. Tigelaar, Matthias Welwarsky
On Thu, Sep 24, 2009 at 9:15 PM, Alan Jenkins
<alan-jenkins@tuffmail.co.uk> wrote:
> "I recently (on a flight) I found out that when I boot with the hard-switch
> activated, so turning off all wireless activity on my laptop, the state
> is not correctly announced in /dev/rfkill (reading it with rfkill command,
> or my own gnome applet)...
>
> After turning off and on again the hard-switch the events were right."
>
> We can fix this by querying the firmware at load time and calling
> rfkill_set_hw_state().
>
> Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
> Tested-by: Norbert Preining <preining@logic.at>
> ---
> drivers/platform/x86/sony-laptop.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
> index dafaa4a..a234a9d 100644
> --- a/drivers/platform/x86/sony-laptop.c
> +++ b/drivers/platform/x86/sony-laptop.c
> @@ -1081,6 +1081,8 @@ static int sony_nc_setup_rfkill(struct acpi_device *device,
> struct rfkill *rfk;
> enum rfkill_type type;
> const char *name;
> + int result;
> + bool hwblock;
>
> switch (nc_type) {
> case SONY_WIFI:
> @@ -1108,6 +1110,10 @@ static int sony_nc_setup_rfkill(struct acpi_device *device,
> if (!rfk)
> return -ENOMEM;
>
> + sony_call_snc_handle(0x124, 0x200, &result);
Please define these somewhere, don't use magic numbers.
> + hwblock = !(result & 0x1);
> + rfkill_set_hw_state(rfk, hwblock);
> +
> err = rfkill_register(rfk);
> if (err) {
> rfkill_destroy(rfk);
> --
> 1.6.3.2
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH] sony-laptop: check for rfkill hard block at load time
2009-09-24 19:24 ` Gábor Stefanik
@ 2009-09-24 20:11 ` Alan Jenkins
2009-09-24 23:04 ` Mattia Dongili
0 siblings, 1 reply; 14+ messages in thread
From: Alan Jenkins @ 2009-09-24 20:11 UTC (permalink / raw)
To: Gábor Stefanik
Cc: Mattia Dongili, linux-wireless@vger.kernel.org, Norbert Preining,
Johannes Berg, Almer S. Tigelaar, Matthias Welwarsky
Gábor Stefanik wrote:
> On Thu, Sep 24, 2009 at 9:15 PM, Alan Jenkins
> <alan-jenkins@tuffmail.co.uk> wrote:
>
>> "I recently (on a flight) I found out that when I boot with the hard-switch
>> activated, so turning off all wireless activity on my laptop, the state
>> is not correctly announced in /dev/rfkill (reading it with rfkill command,
>> or my own gnome applet)...
>>
>> After turning off and on again the hard-switch the events were right."
>>
>> We can fix this by querying the firmware at load time and calling
>> rfkill_set_hw_state().
>>
>> Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
>> Tested-by: Norbert Preining <preining@logic.at>
>> ---
>> drivers/platform/x86/sony-laptop.c | 6 ++++++
>> 1 files changed, 6 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
>> index dafaa4a..a234a9d 100644
>> --- a/drivers/platform/x86/sony-laptop.c
>> +++ b/drivers/platform/x86/sony-laptop.c
>> @@ -1081,6 +1081,8 @@ static int sony_nc_setup_rfkill(struct acpi_device *device,
>> struct rfkill *rfk;
>> enum rfkill_type type;
>> const char *name;
>> + int result;
>> + bool hwblock;
>>
>> switch (nc_type) {
>> case SONY_WIFI:
>> @@ -1108,6 +1110,10 @@ static int sony_nc_setup_rfkill(struct acpi_device *device,
>> if (!rfk)
>> return -ENOMEM;
>>
>> + sony_call_snc_handle(0x124, 0x200, &result);
>>
>
> Please define these somewhere, don't use magic numbers.
>
The rfkill functions are all together in the file, it's not that bad.
But ok.
There's another bug / missing feature - it doesn't re-read the hard
states on resume from suspend.
I'll submit two more patches then. I won't convert all of the magic
numbers though. This isn't hardware I know anything about, and "magic
numbers" is a good description of some of them -
/* Setup hotkeys */
sony_call_snc_handle(0x0100, 0, &result);
sony_call_snc_handle(0x0101, 0, &result);
sony_call_snc_handle(0x0102, 0x100, &result);
sony_call_snc_handle(0x0127, 0, &result);
Others are already sufficiently obvious, and the extra indirection would
only serve to obscure
/* Enable all events */
acpi_callsetfunc(sony_nc_acpi_handle, "SN02", 0xffff, &result);
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH] sony-laptop: check for rfkill hard block at load time
2009-09-24 20:11 ` Alan Jenkins
@ 2009-09-24 23:04 ` Mattia Dongili
0 siblings, 0 replies; 14+ messages in thread
From: Mattia Dongili @ 2009-09-24 23:04 UTC (permalink / raw)
To: Alan Jenkins
Cc: Gábor Stefanik, linux-wireless@vger.kernel.org,
Norbert Preining, Johannes Berg, Almer S. Tigelaar,
Matthias Welwarsky
On Thu, Sep 24, 2009 at 09:11:36PM +0100, Alan Jenkins wrote:
> Gábor Stefanik wrote:
> > On Thu, Sep 24, 2009 at 9:15 PM, Alan Jenkins
> > <alan-jenkins@tuffmail.co.uk> wrote:
> >
...
> >> @@ -1108,6 +1110,10 @@ static int sony_nc_setup_rfkill(struct acpi_device *device,
> >> if (!rfk)
> >> return -ENOMEM;
> >>
> >> + sony_call_snc_handle(0x124, 0x200, &result);
> >>
> >
> > Please define these somewhere, don't use magic numbers.
> >
>
> The rfkill functions are all together in the file, it's not that bad.
> But ok.
>
> There's another bug / missing feature - it doesn't re-read the hard
> states on resume from suspend.
>
> I'll submit two more patches then. I won't convert all of the magic
> numbers though. This isn't hardware I know anything about, and "magic
> numbers" is a good description of some of them -
right and the whole purpose of them is to hit specific code paths
in the DSDT tables. Not sure we would benefit that much from having
names for them.
--
mattia
:wq!
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] sony-laptop: check for rfkill hard block at load time
2009-09-24 19:15 ` [PATCH] sony-laptop: check for rfkill hard block at load time Alan Jenkins
2009-09-24 19:24 ` Gábor Stefanik
@ 2009-09-24 19:27 ` Johannes Berg
2009-09-24 22:38 ` Mattia Dongili
2 siblings, 0 replies; 14+ messages in thread
From: Johannes Berg @ 2009-09-24 19:27 UTC (permalink / raw)
To: Alan Jenkins
Cc: Mattia Dongili, linux-wireless@vger.kernel.org, Norbert Preining,
Almer S. Tigelaar, Matthias Welwarsky
[-- Attachment #1: Type: text/plain, Size: 1602 bytes --]
On Thu, 2009-09-24 at 20:15 +0100, Alan Jenkins wrote:
> "I recently (on a flight) I found out that when I boot with the hard-switch
> activated, so turning off all wireless activity on my laptop, the state
> is not correctly announced in /dev/rfkill (reading it with rfkill command,
> or my own gnome applet)...
>
> After turning off and on again the hard-switch the events were right."
>
> We can fix this by querying the firmware at load time and calling
> rfkill_set_hw_state().
>
> Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
> Tested-by: Norbert Preining <preining@logic.at>
Looks good, thanks Alan.
Acked-by: Johannes Berg <johannes@sipsolutions.net>
> ---
> drivers/platform/x86/sony-laptop.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
> index dafaa4a..a234a9d 100644
> --- a/drivers/platform/x86/sony-laptop.c
> +++ b/drivers/platform/x86/sony-laptop.c
> @@ -1081,6 +1081,8 @@ static int sony_nc_setup_rfkill(struct acpi_device *device,
> struct rfkill *rfk;
> enum rfkill_type type;
> const char *name;
> + int result;
> + bool hwblock;
>
> switch (nc_type) {
> case SONY_WIFI:
> @@ -1108,6 +1110,10 @@ static int sony_nc_setup_rfkill(struct acpi_device *device,
> if (!rfk)
> return -ENOMEM;
>
> + sony_call_snc_handle(0x124, 0x200, &result);
> + hwblock = !(result & 0x1);
> + rfkill_set_hw_state(rfk, hwblock);
> +
> err = rfkill_register(rfk);
> if (err) {
> rfkill_destroy(rfk);
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH] sony-laptop: check for rfkill hard block at load time
2009-09-24 19:15 ` [PATCH] sony-laptop: check for rfkill hard block at load time Alan Jenkins
2009-09-24 19:24 ` Gábor Stefanik
2009-09-24 19:27 ` Johannes Berg
@ 2009-09-24 22:38 ` Mattia Dongili
2009-09-25 9:13 ` Alan Jenkins
2 siblings, 1 reply; 14+ messages in thread
From: Mattia Dongili @ 2009-09-24 22:38 UTC (permalink / raw)
To: Alan Jenkins
Cc: linux-wireless@vger.kernel.org, Norbert Preining, Johannes Berg,
Almer S. Tigelaar, Matthias Welwarsky
On Thu, Sep 24, 2009 at 08:15:24PM +0100, Alan Jenkins wrote:
> "I recently (on a flight) I found out that when I boot with the hard-switch
> activated, so turning off all wireless activity on my laptop, the state
> is not correctly announced in /dev/rfkill (reading it with rfkill command,
> or my own gnome applet)...
>
> After turning off and on again the hard-switch the events were right."
>
> We can fix this by querying the firmware at load time and calling
> rfkill_set_hw_state().
Is it worth trying to get this into a stable release?
> Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
> Tested-by: Norbert Preining <preining@logic.at>
Acked-by: Mattia Dongili <malattia@linux.it>
> ---
> drivers/platform/x86/sony-laptop.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
> index dafaa4a..a234a9d 100644
> --- a/drivers/platform/x86/sony-laptop.c
> +++ b/drivers/platform/x86/sony-laptop.c
> @@ -1081,6 +1081,8 @@ static int sony_nc_setup_rfkill(struct acpi_device *device,
> struct rfkill *rfk;
> enum rfkill_type type;
> const char *name;
> + int result;
> + bool hwblock;
>
> switch (nc_type) {
> case SONY_WIFI:
> @@ -1108,6 +1110,10 @@ static int sony_nc_setup_rfkill(struct acpi_device *device,
> if (!rfk)
> return -ENOMEM;
>
> + sony_call_snc_handle(0x124, 0x200, &result);
> + hwblock = !(result & 0x1);
> + rfkill_set_hw_state(rfk, hwblock);
> +
> err = rfkill_register(rfk);
> if (err) {
> rfkill_destroy(rfk);
> --
> 1.6.3.2
>
>
>
--
mattia
:wq!
^ permalink raw reply [flat|nested] 14+ messages in thread* Re: [PATCH] sony-laptop: check for rfkill hard block at load time
2009-09-24 22:38 ` Mattia Dongili
@ 2009-09-25 9:13 ` Alan Jenkins
0 siblings, 0 replies; 14+ messages in thread
From: Alan Jenkins @ 2009-09-25 9:13 UTC (permalink / raw)
To: John W. Linville
Cc: linux-wireless@vger.kernel.org, Mattia Dongili, Norbert Preining,
Almer S. Tigelaar, Matthias Welwarsky, Johannes Berg
Mattia Dongili wrote:
> On Thu, Sep 24, 2009 at 08:15:24PM +0100, Alan Jenkins wrote:
>
>> "I recently (on a flight) I found out that when I boot with the hard-switch
>> activated, so turning off all wireless activity on my laptop, the state
>> is not correctly announced in /dev/rfkill (reading it with rfkill command,
>> or my own gnome applet)...
>>
>> After turning off and on again the hard-switch the events were right."
>>
>> We can fix this by querying the firmware at load time and calling
>> rfkill_set_hw_state().
>>
>
> Is it worth trying to get this into a stable release?
>
Sure. It seems to fit, and all we have to do is add a CC to the patch
>> Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
>> Tested-by: Norbert Preining <preining@logic.at>
>>
>
> Acked-by: Mattia Dongili <malattia@linux.it>
>
CC: stable@kernel.org
>
>> ---
>> drivers/platform/x86/sony-laptop.c | 6 ++++++
>> 1 files changed, 6 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
>> index dafaa4a..a234a9d 100644
>> --- a/drivers/platform/x86/sony-laptop.c
>> +++ b/drivers/platform/x86/sony-laptop.c
>> @@ -1081,6 +1081,8 @@ static int sony_nc_setup_rfkill(struct acpi_device *device,
>> struct rfkill *rfk;
>> enum rfkill_type type;
>> const char *name;
>> + int result;
>> + bool hwblock;
>>
>> switch (nc_type) {
>> case SONY_WIFI:
>> @@ -1108,6 +1110,10 @@ static int sony_nc_setup_rfkill(struct acpi_device *device,
>> if (!rfk)
>> return -ENOMEM;
>>
>> + sony_call_snc_handle(0x124, 0x200, &result);
>> + hwblock = !(result & 0x1);
>> + rfkill_set_hw_state(rfk, hwblock);
>> +
>> err = rfkill_register(rfk);
>> if (err) {
>> rfkill_destroy(rfk);
>> --
>> 1.6.3.2
>>
>>
>>
>>
^ permalink raw reply [flat|nested] 14+ messages in thread