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