diff options
author | Alan Jenkins <alan-jenkins@tuffmail.co.uk> | 2009-04-27 03:23:37 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2009-05-14 11:14:42 -0400 |
commit | fbc97e4c5c31ea198f912196b1379d7493362800 (patch) | |
tree | 8835aa89d274fbb76f06384d129b335fd2887630 /drivers | |
parent | 091bf7624d1c90cec9e578a18529f615213ff847 (diff) |
eeepc-laptop: fix wlan rfkill state change during init
When an rfkill device is registered, the rfkill core will change its
state to the system default. So we need to prepare for state changes
*before* we register it. That means installing the eeepc-specific ACPI
callback which handles the hotplug of the wireless network adaptor.
This problem doesn't occur during normal operation. You have to
1) Boot with wireless enabled. eeepc-laptop should load automatically.
2) modprobe -r eeepc-laptop
3) modprobe eeepc-laptop
On boot, the default rfkill state will be set to enabled.
With the current core code, step 2) will disable the wireless.
Therefore in step 3), the wireless will change state during registration,
from disabled to enabled. But without this fix, the PCI device for the
wireless adaptor will not appear.
Signed-off-by: Alan Jenkins <alan-jenkins@tuffmail.co.uk>
Acked-by: Matthew Garrett <mjg@redhat.com>
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/platform/x86/eeepc-laptop.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index 6f54fd1757cd..e21f7cd72e4e 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c | |||
@@ -649,6 +649,9 @@ static int eeepc_hotk_add(struct acpi_device *device) | |||
649 | if (ACPI_FAILURE(status)) | 649 | if (ACPI_FAILURE(status)) |
650 | printk(EEEPC_ERR "Error installing notify handler\n"); | 650 | printk(EEEPC_ERR "Error installing notify handler\n"); |
651 | 651 | ||
652 | eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P6"); | ||
653 | eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P7"); | ||
654 | |||
652 | if (get_acpi(CM_ASL_WLAN) != -1) { | 655 | if (get_acpi(CM_ASL_WLAN) != -1) { |
653 | ehotk->eeepc_wlan_rfkill = rfkill_allocate(&device->dev, | 656 | ehotk->eeepc_wlan_rfkill = rfkill_allocate(&device->dev, |
654 | RFKILL_TYPE_WLAN); | 657 | RFKILL_TYPE_WLAN); |
@@ -704,9 +707,6 @@ static int eeepc_hotk_add(struct acpi_device *device) | |||
704 | goto bluetooth_fail; | 707 | goto bluetooth_fail; |
705 | } | 708 | } |
706 | 709 | ||
707 | eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P6"); | ||
708 | eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P7"); | ||
709 | |||
710 | return 0; | 710 | return 0; |
711 | 711 | ||
712 | bluetooth_fail: | 712 | bluetooth_fail: |