Re: [PATCH] eeepc-laptop: fix wlan rfkill state change during init

Matthew Garrett
2009-03-29T21:55:11Z

On Sun, Mar 29, 2009 at 11:16:25PM +0200, Corentin Chary wrote:
> On Sun, Mar 29, 2009 at 7:20 PM, Alan Jenkins
> <alan-jenkins-cCz0Lq7MMjm9FHfhHBbuYA@public.gmane.org> wrote:
> > 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-cCz0Lq7MMjm9FHfhHBbuYA@public.gmane.org>
> >
> > diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c
> > index 786ed86..b8951b9 100644
> > --- a/drivers/platform/x86/eeepc-laptop.c
> > +++ b/drivers/platform/x86/eeepc-laptop.c
> > @@ -645,6 +645,9 @@ static int eeepc_hotk_add(struct acpi_device *device)
> >        if (ACPI_FAILURE(status))
> >                printk(EEEPC_ERR "Error installing notify handler\n");
> >
> > +       eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P6");
> > +       eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P7");
> > +
> >        if (get_acpi(CM_ASL_WLAN) != -1) {
> >                ehotk->eeepc_wlan_rfkill = rfkill_allocate(&device->dev,
> >                                                           RFKILL_TYPE_WLAN);
> > @@ -700,9 +703,6 @@ static int eeepc_hotk_add(struct acpi_device *device)
> >                        goto bluetooth_fail;
> >        }
> >
> > -       eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P6");
> > -       eeepc_register_rfkill_notifier("\\_SB.PCI0.P0P7");
> > -
> >        return 0;
> >
> >  bluetooth_fail:
> >
> >
> >
>
> Hi,
> Cc'd linux-acpi to get more review about that.
> I'm not very familiar with rfkill interface.

Looks fine to me.

Acked-by: Matthew Garrett <mjg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>

--
Matthew Garrett | mjg59-1xO5oi07KQx4cg9Nei1l7Q@public.gmane.org

------------------------------------------------------------------------------