Search Linux Wireless

Re: [PATCH] sony-laptop: check for rfkill hard block at load time

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Gábor Stefanik wrote:
> On Thu, Sep 24, 2009 at 9:15 PM, Alan Jenkins
> <alan-jenkins@xxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxx>
>> Tested-by: Norbert Preining <preining@xxxxxxxx>
>> ---
>>  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);
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux