From patchwork Sun Feb 8 09:11:38 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lauri Kasanen X-Patchwork-Id: 5797131 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 0D40B9F36A for ; Sun, 8 Feb 2015 09:09:33 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1117B2012D for ; Sun, 8 Feb 2015 09:09:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EA65B2012B for ; Sun, 8 Feb 2015 09:09:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752014AbbBHJJ3 (ORCPT ); Sun, 8 Feb 2015 04:09:29 -0500 Received: from mout.gmx.net ([212.227.15.19]:64906 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751956AbbBHJJ0 (ORCPT ); Sun, 8 Feb 2015 04:09:26 -0500 Received: from Valinor ([84.251.16.90]) by mail.gmx.com (mrgmx001) with ESMTPA (Nemesis) id 0Mey7N-1Y0P4z0n6X-00OZ9Y; Sun, 08 Feb 2015 10:09:20 +0100 Date: Sun, 8 Feb 2015 11:11:38 +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: [PATCH] HID: sony: Enable Gasia third-party PS3 controllers, v2 Message-Id: <20150208111138.6f562d6c.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:8amBc8AJWqdooO+E453OuUIQ+wfT2QAM6YvRSlmDW8Ml26I4w+V LVbFhcDjbJ3xEYLw39ZlapAD/MZ7XARar1jqILVgzNbPNe02IUukNsQasJdLvvuBqFII3s/ mJSbMEdZlEyg/5QihLTAodqsSYxCCYQDGS0u/akDByfzUF3FNa4CWxCgXfAGrpSYOgnkB95 UeWqwkMAGJUvwD13Xptsw== 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. v2: - edited error messages - use output_report cc: Antonio Ospite cc: Andrew Haines Signed-off-by: Lauri Kasanen --- drivers/hid/hid-sony.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) Despite Andrew's report, using output_report worked fine. diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c index 31e9d25..2661227 100644 --- a/drivers/hid/hid-sony.c +++ b/drivers/hid/hid-sony.c @@ -1131,7 +1131,8 @@ static void sony_input_configured(struct hid_device *hdev, static int sixaxis_set_operational_usb(struct hid_device *hdev) { int ret; - char *buf = kmalloc(18, GFP_KERNEL); + char *buf = kmalloc(65, GFP_KERNEL); + unsigned char buf2[] = { 0x00 }; if (!buf) return -ENOMEM; @@ -1140,7 +1141,22 @@ static int sixaxis_set_operational_usb(struct hid_device *hdev) HID_REQ_GET_REPORT); if (ret < 0) - hid_err(hdev, "can't set operational mode\n"); + hid_err(hdev, "can't set operational mode: step 1\n"); + + /* + * 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, 64, HID_FEATURE_REPORT, + HID_REQ_GET_REPORT); + + if (ret < 0) + hid_err(hdev, "can't set operational mode: step 2\n"); + + ret = hid_hw_output_report(hdev, buf2, sizeof(buf2)); + + if (ret < 0) + hid_err(hdev, "can't set operational mode: step 3\n"); kfree(buf);