lkml.org 
[lkml]   [2019]   [Apr]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.0 238/246] Input: soc_button_array - fix mapping of the 5th GPIO in a PNP0C40 device
    Date
    5.0-stable review patch.  If anyone has any objections, please let me know.

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

    [ Upstream commit e9eb788f9442d1b5d93efdb30c3be071ce8a22b1 ]

    The Microsoft documenation for the PNP0C40 device aka the
    "Windows-compatible button array" describes the 5th GpioInt listed in
    the resources as: '5. Interrupt corresponding to the "Rotation Lock"
    button, if supported'.

    Notice this describes the 5th entry as a button while we sofar have been
    mapping it to EV_SW, SW_ROTATE_LOCK. On my Point of View TAB P1006W-232
    which actually comes with a rotation-lock button, the button indeed is a
    button and not a slider/switch. An image search for other Windows tablets
    has found 2 more models with a rotation-lock button and on both of those
    it too is a push-button and not a slider/switch.

    Further evidence can be found in the HUT extension HUTRR52 from Microsoft
    which adds rotation lock support to the HUT, which describes 2 different
    usages: "0xC9 System Display Rotation Lock Button" and
    "0xCA System Display Rotation Lock Slider Switch" note that switch is seen
    as a separate thing here and the non switch wording is an exact match for
    the "Windows-compatible button array" spec wording.

    TL;DR: our current mapping of the 5th GPIO to SW_ROTATE_LOCK is wrong
    because the 5th GPIO is for a push-button not a switch.

    This commit fixes this by maping the 5th GPIO to KEY_ROTATE_LOCK_TOGGLE.

    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/input/misc/soc_button_array.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c
    index 23520df7650f..55cd6e0b409c 100644
    --- a/drivers/input/misc/soc_button_array.c
    +++ b/drivers/input/misc/soc_button_array.c
    @@ -373,7 +373,7 @@ static struct soc_button_info soc_button_PNP0C40[] = {
    { "home", 1, EV_KEY, KEY_LEFTMETA, false, true },
    { "volume_up", 2, EV_KEY, KEY_VOLUMEUP, true, false },
    { "volume_down", 3, EV_KEY, KEY_VOLUMEDOWN, true, false },
    - { "rotation_lock", 4, EV_SW, SW_ROTATE_LOCK, false, false },
    + { "rotation_lock", 4, EV_KEY, KEY_ROTATE_LOCK_TOGGLE, false, false },
    { }
    };

    --
    2.19.1


    \
     
     \ /
      Last update: 2019-04-04 11:19    [W:4.333 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site