From patchwork Fri May 27 00:12:54 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Rojtberg X-Patchwork-Id: 9137491 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 74634607D3 for ; Fri, 27 May 2016 00:13:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 66FF928300 for ; Fri, 27 May 2016 00:13:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5C1F5282FF; Fri, 27 May 2016 00:13:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 02067282E1 for ; Fri, 27 May 2016 00:13:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755529AbcE0ANQ (ORCPT ); Thu, 26 May 2016 20:13:16 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:35905 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755469AbcE0ANQ (ORCPT ); Thu, 26 May 2016 20:13:16 -0400 Received: by mail-wm0-f66.google.com with SMTP id q62so9970568wmg.3 for ; Thu, 26 May 2016 17:13:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=EveeWobhnjoqZrCLvbd810F7wzWmbSHh2BJ2obDATVE=; b=RvroF6junDkN+x+Yyb2N973L8I/DR/LfUnJjj/7hEVLqtaLBUzbw2T/95PXIt6UbUC D08qahHc9lf9PtdZnpzeI/PqeoxEZV3ZamWTUovjNE63iMLERKKvkeCZ+b/SCmObjLNd q78+oCojrvuUUCWa84bEnVWp9vAlPy3Bo8n/z896dOAHG75qOCjA3OBKI9j7IbB3JZTC +QRUJnzenxIfsOYkbVEauT85GAco/aYLTBohtkupzaTCxZc9mCSJN5GaoVGnZwQkOntZ peuth0A6DAGsgDhLBwVkxSxMxj8cTCyqDylMdY8pFBL0t2NohGr3QBkSJLDmm6TTXcUE BnKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=EveeWobhnjoqZrCLvbd810F7wzWmbSHh2BJ2obDATVE=; b=dB2wKoIp+iNDKRm/pqkKMeeoKRzLpMArlRFEsF4fcQRCsyP6YTmb6dR7xhgffxHd2k g3o3PQQKW07SJIAnhp8ms0NcMliHALAG1J5vZ4HprU+hOeCnR7U69GkFwO9HQkpEYLTU KGbH5lXy01gYuMpFJLRT3ziwy7Im2bhFvo9N55uJccOF1JOD1jNVb6XF/cQ/Afn6OhVe nxlo7YnZlaPJntazSpewaihBpd7w8rwmeFQyO/elqxj/v0avJhsI4KjRtOKFPAmB/q9e CdPi6Iw83EWYTXlybfJB2ekO7OOkWLFJsfIWOV8SA5qQJuTr70GcC4dWt2uNaQX249K/ Vl/Q== X-Gm-Message-State: ALyK8tKokQsngHrXrX8gbSgKUHjkmFMu2ojgWvciZfTcXJdWh5IINQgSfGxHKWyL7Ppujw== X-Received: by 10.28.0.84 with SMTP id 81mr6172410wma.23.1464307994506; Thu, 26 May 2016 17:13:14 -0700 (PDT) Received: from deepwhite.fritz.box (p5790B7FB.dip0.t-ipconnect.de. [87.144.183.251]) by smtp.gmail.com with ESMTPSA id kz1sm16628372wjc.46.2016.05.26.17.13.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 26 May 2016 17:13:14 -0700 (PDT) From: Pavel Rojtberg X-Google-Original-From: Pavel Rojtberg < rojtberg@gmail.com > To: linux-input@vger.kernel.org, dmitry.torokhov@gmail.com Cc: Daniel Tobias , Pavel Rojtberg Subject: [PATCH 6/7] Input: xpad: move reporting xbox one home button to common function Date: Fri, 27 May 2016 02:12:54 +0200 Message-Id: <1464307975-25890-7-git-send-email-rojtberg@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1464307975-25890-1-git-send-email-rojtberg@gmail.com> References: <1464307975-25890-1-git-send-email-rojtberg@gmail.com> Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Daniel Tobias xbox one was the only device that has a *_process_buttons routine. Signed-off-by: Pavel Rojtberg --- drivers/input/joystick/xpad.c | 52 +++++++++++++++++++--------------------------------- 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/drivers/input/joystick/xpad.c b/drivers/input/joystick/xpad.c index ba3ac27..4ecbbbf 100644 --- a/drivers/input/joystick/xpad.c +++ b/drivers/input/joystick/xpad.c @@ -604,14 +604,28 @@ static void xpad360w_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned cha } /* - * xpadone_process_buttons + * xpadone_process_packet * - * Process a button update packet from an Xbox one controller. + * Completes a request by converting the data into events for the + * input subsystem. This version is for the Xbox One controller. + * + * The report format was gleaned from + * https://github.com/kylelemons/xbox/blob/master/xbox.go */ -static void xpadone_process_buttons(struct usb_xpad *xpad, - struct input_dev *dev, - unsigned char *data) +static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *data) { + struct input_dev *dev = xpad->dev; + + /* the xbox button has its own special report */ + if (data[0] == 0X07) { + input_report_key(dev, BTN_MODE, data[4] & 0x01); + input_sync(dev); + return; + } + /* check invalid packet */ + else if (data[0] != 0X20) + return; + /* menu/view buttons */ input_report_key(dev, BTN_START, data[4] & 0x04); input_report_key(dev, BTN_SELECT, data[4] & 0x08); @@ -674,34 +688,6 @@ static void xpadone_process_buttons(struct usb_xpad *xpad, input_sync(dev); } -/* - * xpadone_process_packet - * - * Completes a request by converting the data into events for the - * input subsystem. This version is for the Xbox One controller. - * - * The report format was gleaned from - * https://github.com/kylelemons/xbox/blob/master/xbox.go - */ - -static void xpadone_process_packet(struct usb_xpad *xpad, - u16 cmd, unsigned char *data) -{ - struct input_dev *dev = xpad->dev; - - switch (data[0]) { - case 0x20: - xpadone_process_buttons(xpad, dev, data); - break; - - case 0x07: - /* the xbox button has its own special report */ - input_report_key(dev, BTN_MODE, data[4] & 0x01); - input_sync(dev); - break; - } -} - static void xpad_irq_in(struct urb *urb) { struct usb_xpad *xpad = urb->context;