From patchwork Mon Feb 16 13:06:59 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lauri Kasanen X-Patchwork-Id: 5832441 X-Patchwork-Delegate: jikos@jikos.cz Return-Path: X-Original-To: patchwork-linux-input@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id EE5E69F380 for ; Mon, 16 Feb 2015 13:05:06 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3A58A201F5 for ; Mon, 16 Feb 2015 13:05:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6F22A2017E for ; Mon, 16 Feb 2015 13:04:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755667AbbBPNE6 (ORCPT ); Mon, 16 Feb 2015 08:04:58 -0500 Received: from mout.gmx.net ([212.227.17.21]:56496 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755543AbbBPNE5 (ORCPT ); Mon, 16 Feb 2015 08:04:57 -0500 Received: from Valinor ([84.251.16.90]) by mail.gmx.com (mrgmx103) with ESMTPA (Nemesis) id 0MKpQ4-1YNLLr1dMO-0001ze; Mon, 16 Feb 2015 14:04:39 +0100 Date: Mon, 16 Feb 2015 15:06:59 +0200 From: Lauri Kasanen To: jkosina@suse.cz, linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, benjamin.tissoires@gmail.com Cc: ao2@ao2.it, AndrewD207@aol.com Subject: [PATCHv4] HID: sony: Enable Gasia third-party PS3 controllers Message-Id: <20150216150659.db522f3d.cand@gmx.com> X-Mailer: Sylpheed 3.1.4 (GTK+ 2.18.6; x86_64-unknown-linux-gnu) Mime-Version: 1.0 X-Provags-ID: V03:K0:PLR4KrWm9B6hiz5EX70paEaJ/tQYrylGsgoV2bHddG4f64PQ9lF l4RLqr5tbLuV9w/vifD4xYvwqmLvnmeiyivQSy8UzctsQmfTWsM1/MZUuG2/g/Alnsdn36b eHVLaNL6zbbRK3pwnRLEghNhJKxYcwLdE3LCJi8acFgiJoZMHy9i/5jHvLNPm8HiNMvfxnJ bY5YqwWlNguOjnvsSnUbg== X-UI-Out-Filterresults: notjunk:1; Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_HI,T_RP_MATCHES_RCVD,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Without this, my "Gasia Co.,Ltd PS(R) Gamepad" would not send any events. Now everything works including the leds. Based on work by Andrew Haines and Antonio Ospite. cc: Antonio Ospite cc: Andrew Haines Signed-off-by: Lauri Kasanen Reviewed-by: Antonio Ospite Acked-by: Frank Praznik --- drivers/hid/hid-sony.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) Antonio: size 8 works. v4: - use size 8 v3: - reuse the dummy heap buffer - skip later checks if the earlier ones fail v2: - edited error messages - use output_report diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c index 31e9d25..f3d44e5 100644 --- a/drivers/hid/hid-sony.c +++ b/drivers/hid/hid-sony.c @@ -1139,9 +1139,29 @@ static int sixaxis_set_operational_usb(struct hid_device *hdev) ret = hid_hw_raw_request(hdev, 0xf2, buf, 17, HID_FEATURE_REPORT, HID_REQ_GET_REPORT); + if (ret < 0) { + hid_err(hdev, "can't set operational mode: step 1\n"); + goto out; + } + + /* + * Some compatible controllers like the Speedlink Strike FX and + * Gasia need another query plus an USB interrupt to get operational. + */ + ret = hid_hw_raw_request(hdev, 0xf5, buf, 8, HID_FEATURE_REPORT, + HID_REQ_GET_REPORT); + + if (ret < 0) { + hid_err(hdev, "can't set operational mode: step 2\n"); + goto out; + } + + ret = hid_hw_output_report(hdev, buf, 1); + if (ret < 0) - hid_err(hdev, "can't set operational mode\n"); + hid_err(hdev, "can't set operational mode: step 3\n"); +out: kfree(buf); return ret;