Re: [PATCH v2 1/3] platform: x86: dell-rbtn: Dell Airplane Mode Switch driver

From: Gabriele Mazzotta
Date: Wed Apr 29 2015 - 14:11:48 EST


On Wednesday 29 April 2015 20:00:18 Pali Rohár wrote:
> On Wednesday 29 April 2015 19:54:43 Gabriele Mazzotta wrote:
> > On Wednesday 29 April 2015 18:28:40 Pali Rohár wrote:
> > > On Wednesday 29 April 2015 15:57:58 Gabriele Mazzotta wrote:
> > > > On Wednesday 29 April 2015 15:08:40 Pali Rohár wrote:
> > > > > On Wednesday 29 April 2015 12:30:32 Gabriele Mazzotta wrote:
> > > > > > On Wednesday 29 April 2015 11:51:04 Pali Rohár wrote:
> > > > > > > This is an ACPI driver for Dell laptops which receive HW switch events.
> > > > > > > It exports rfkill device dell-rbtn which provide correct hard rfkill state.
> > > > > > >
> > > > > > > Alex Hung added code for supporting Dell laptops which have toggle button
> > > > > > > instead HW slider switch. On these laptops toggle button event is reported
> > > > > > > by new input device (instead rfkill) as they do not have hw radio switch.
> > > > > > >
> > > > > > > It looks like those are two different functions (rfkill, input device), but
> > > > > > > Dell BIOS exports them via same ACPI device and uses same ACPI functions.
> > > > > > > So code is in one kernel driver.
> > > > > >
> > > > > > I made a patch some time ago that I've just adapted. It allows to
> > > > > > prefer RBTN_SLIDER over RBTN_TOGGLE. The main reason why I'd like to
> > > > > > have the hardware switch is that the BIOS doesn't alter the soft state
> > > > > > of the devices. This comes in handy when the function key controls
> > > > > > multiple radio devices.
> > > > > >
> > > > >
> > > > > Now I'm thinking... is't this bug in wifi kernel driver (which exports
> > > > > phy rfkill)? Or problem somewhere else (userspace or kernel)?
> > > >
> > > > What is the presumed bug you are referring to? The fact that the soft state
> > > > doesn't change?
> > >
> > > Can you remind me whats the problem on your laptop?
> >
> > CRBT returns 0 (so RBTN_TOGGLE), but by default my laptop acts as if
> > it returned 2 or 3, so we have to call ARBT.
> >
> > As said before, there's no way to know when a platform whose CRBT
> > method returns 0 or 1 also has the hardware switch, so to be sure that
> > all the platforms have working function keys, some of them (such as
> > mine) have to give up on the hardware switch.
>
> Ok, and what happens when you load this v2 version? What stopped working
> on your laptop?
>
> Alex, can you help? Code for toggle laptop version is originally yours.

When I press the Fn key, a _Qxx EC method is executed. The code path
of this method depends on a variable set by ARBT.

When you call ARBT with 1 as argument, the variable is set to 1 and the
_Qxx method does nothing but sending a notification (0x80) to RBTN
whenever the function key is pressed.

When you call ARBT with 0 as argument, the variable is set to 0 and
the _Qxx method both sends 0x80 to RBTN _and_ toggle the state of the
radio devices whenever the function key is pressed.

So in the end nothing _really_ breaks.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/