From patchwork Mon Jan 20 17:27:02 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Praznik X-Patchwork-Id: 3513801 Return-Path: X-Original-To: patchwork-linux-input@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 5AD68C02DD for ; Mon, 20 Jan 2014 17:27:34 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7116E2015E for ; Mon, 20 Jan 2014 17:27:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 08D932015A for ; Mon, 20 Jan 2014 17:27:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754164AbaATR1a (ORCPT ); Mon, 20 Jan 2014 12:27:30 -0500 Received: from cdptpa-omtalb.mail.rr.com ([75.180.132.120]:55076 "EHLO cdptpa-omtalb.mail.rr.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752268AbaATR13 (ORCPT ); Mon, 20 Jan 2014 12:27:29 -0500 X-Authority-Analysis: v=2.0 cv=dq5Z+ic4 c=1 sm=0 a=N8gH7sxzIWrJto1iYJUVbg==:17 a=FRtJQrQkweQA:10 a=05ChyHeVI94A:10 a=Cvmq5WjI5q8A:10 a=ayC55rCoAAAA:8 a=KGjhK52YXX0A:10 a=t-oidK5SyGUA:10 a=K5H8pT6_htB-v6g982sA:9 a=N8gH7sxzIWrJto1iYJUVbg==:117 X-Cloudmark-Score: 0 X-Authenticated-User: X-Originating-IP: 24.29.232.96 Received: from [24.29.232.96] ([24.29.232.96:2336] helo=localhost.localdomain) by cdptpa-oedge03.mail.rr.com (envelope-from ) (ecelerity 2.2.3.46 r()) with ESMTP id E6/D5-21884-C7C5DD25; Mon, 20 Jan 2014 17:27:24 +0000 From: Frank Praznik To: linux-input@vger.kernel.org Cc: jkosina@suse.cz, Frank Praznik Subject: [PATCH 2/2] Use colors for the Dualshock 4 LED names Date: Mon, 20 Jan 2014 12:27:02 -0500 Message-Id: <1390238822-18164-2-git-send-email-frank.praznik@oh.rr.com> X-Mailer: git-send-email 1.8.3.2 In-Reply-To: <1390238822-18164-1-git-send-email-frank.praznik@oh.rr.com> References: <1390238822-18164-1-git-send-email-frank.praznik@oh.rr.com> Sender: linux-input-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-input@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, 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 Use the naming scheme 'devicename:colour' for the Dualshock 4 LED lightbar controls as specified in Documentation/leds/leds-class.txt Signed-off-by: Frank Praznik --- Apply against jikos/hid.git/for-3.14/sony drivers/hid/hid-sony.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c index 62765c7..1235405 100644 --- a/drivers/hid/hid-sony.c +++ b/drivers/hid/hid-sony.c @@ -834,33 +834,39 @@ static int sony_leds_init(struct hid_device *hdev) struct sony_sc *drv_data; int n, ret = 0; int max_brightness; + int use_colors; struct led_classdev *led; size_t name_sz; char *name; size_t name_len; const char *name_fmt; + static const char * const color_str[] = { "red", "green", "blue" }; static const __u8 initial_values[MAX_LEDS] = { 0x00, 0x00, 0x00, 0x00 }; drv_data = hid_get_drvdata(hdev); BUG_ON(!(drv_data->quirks & SONY_LED_SUPPORT)); if (drv_data->quirks & BUZZ_CONTROLLER) { + drv_data->led_count = 4; + max_brightness = 1; + use_colors = 0; name_len = strlen("::buzz#"); name_fmt = "%s::buzz%d"; /* Validate expected report characteristics. */ if (!hid_validate_values(hdev, HID_OUTPUT_REPORT, 0, 0, 7)) return -ENODEV; - } else { - name_len = strlen("::sony#"); - name_fmt = "%s::sony%d"; - } - - if (drv_data->quirks & DUALSHOCK4_CONTROLLER_USB) { + } else if (drv_data->quirks & DUALSHOCK4_CONTROLLER_USB) { drv_data->led_count = 3; max_brightness = 255; + use_colors = 1; + name_len = 0; + name_fmt = "%s:%s"; } else { drv_data->led_count = 4; max_brightness = 1; + use_colors = 0; + name_len = strlen("::sony#"); + name_fmt = "%s::sony%d"; } /* Clear LEDs as we have no way of reading their initial state. This is @@ -871,6 +877,10 @@ static int sony_leds_init(struct hid_device *hdev) name_sz = strlen(dev_name(&hdev->dev)) + name_len + 1; for (n = 0; n < drv_data->led_count; n++) { + + if (use_colors) + name_sz = strlen(dev_name(&hdev->dev)) + strlen(color_str[n]) + 2; + led = kzalloc(sizeof(struct led_classdev) + name_sz, GFP_KERNEL); if (!led) { hid_err(hdev, "Couldn't allocate memory for LED %d\n", n); @@ -879,7 +889,10 @@ static int sony_leds_init(struct hid_device *hdev) } name = (void *)(&led[1]); - snprintf(name, name_sz, name_fmt, dev_name(&hdev->dev), n + 1); + if (use_colors) + snprintf(name, name_sz, name_fmt, dev_name(&hdev->dev), color_str[n]); + else + snprintf(name, name_sz, name_fmt, dev_name(&hdev->dev), n + 1); led->name = name; led->brightness = 0; led->max_brightness = max_brightness;