lkml.org 
[lkml]   [2018]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 63/92] Input: xpad - add support for PDP Xbox One controllers
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

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

    [ Upstream commit e5c9c6a885fad00aa559b49d8fc23a60e290824e ]

    Adds support for the current lineup of Xbox One controllers from PDP
    (Performance Designed Products). These controllers are very picky with
    their initialization sequence and require an additional 2 packets before
    they send any input reports.

    Signed-off-by: Mark Furneaux <mark@furneaux.ca>
    Reviewed-by: Cameron Gutman <aicommander@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/input/joystick/xpad.c | 19 +++++++++++++++++++
    1 file changed, 19 insertions(+)

    diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c
    index d86e59515b9c..d88d3e0f59fb 100644
    --- a/drivers/input/joystick/xpad.c
    +++ b/drivers/input/joystick/xpad.c
    @@ -229,6 +229,7 @@ static const struct xpad_device {
    { 0x0e6f, 0x0213, "Afterglow Gamepad for Xbox 360", 0, XTYPE_XBOX360 },
    { 0x0e6f, 0x021f, "Rock Candy Gamepad for Xbox 360", 0, XTYPE_XBOX360 },
    { 0x0e6f, 0x0246, "Rock Candy Gamepad for Xbox One 2015", 0, XTYPE_XBOXONE },
    + { 0x0e6f, 0x02ab, "PDP Controller for Xbox One", 0, XTYPE_XBOXONE },
    { 0x0e6f, 0x0301, "Logic3 Controller", 0, XTYPE_XBOX360 },
    { 0x0e6f, 0x0346, "Rock Candy Gamepad for Xbox One 2016", 0, XTYPE_XBOXONE },
    { 0x0e6f, 0x0401, "Logic3 Controller", 0, XTYPE_XBOX360 },
    @@ -475,6 +476,22 @@ static const u8 xboxone_hori_init[] = {
    0x00, 0x00, 0x00, 0x80, 0x00
    };

    +/*
    + * This packet is required for some of the PDP pads to start
    + * sending input reports. One of those pads is (0x0e6f:0x02ab).
    + */
    +static const u8 xboxone_pdp_init1[] = {
    + 0x0a, 0x20, 0x00, 0x03, 0x00, 0x01, 0x14
    +};
    +
    +/*
    + * This packet is required for some of the PDP pads to start
    + * sending input reports. One of those pads is (0x0e6f:0x02ab).
    + */
    +static const u8 xboxone_pdp_init2[] = {
    + 0x06, 0x20, 0x00, 0x02, 0x01, 0x00
    +};
    +
    /*
    * A specific rumble packet is required for some PowerA pads to start
    * sending input reports. One of those pads is (0x24c6:0x543a).
    @@ -505,6 +522,8 @@ static const struct xboxone_init_packet xboxone_init_packets[] = {
    XBOXONE_INIT_PKT(0x0e6f, 0x0165, xboxone_hori_init),
    XBOXONE_INIT_PKT(0x0f0d, 0x0067, xboxone_hori_init),
    XBOXONE_INIT_PKT(0x0000, 0x0000, xboxone_fw2015_init),
    + XBOXONE_INIT_PKT(0x0e6f, 0x02ab, xboxone_pdp_init1),
    + XBOXONE_INIT_PKT(0x0e6f, 0x02ab, xboxone_pdp_init2),
    XBOXONE_INIT_PKT(0x24c6, 0x541a, xboxone_rumblebegin_init),
    XBOXONE_INIT_PKT(0x24c6, 0x542a, xboxone_rumblebegin_init),
    XBOXONE_INIT_PKT(0x24c6, 0x543a, xboxone_rumblebegin_init),
    --
    2.17.1


    \
     
     \ /
      Last update: 2018-11-29 15:51    [W:4.208 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site