Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3729919imm; Mon, 11 Jun 2018 00:20:38 -0700 (PDT) X-Google-Smtp-Source: ADUXVKL1VaCFFBWj5xIt0FgXPVxkF72P0PkpjaNfVhCbkUUcpc2S/AyuX5TWrMPwD8iZh8lI8VDb X-Received: by 2002:a62:e8d:: with SMTP id 13-v6mr16297406pfo.63.1528701638365; Mon, 11 Jun 2018 00:20:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528701638; cv=none; d=google.com; s=arc-20160816; b=XTA6BTrTDrZYXPFnf1EGwk7plMJjq/15+DoSv0/gmHVGQXBuRJT3Cxd+yupsWJM0W0 rNd/r5f4YK0swpr4F9ES6aMOa/0IlLh23bXVHu7bpbjrK3+dufkVlyDFBrUKoIpfbSDV MRDS1Qws2SmjCHdyNze7wxdn0WsmvhJQCEtuJr+ylZiS6+a0LRf9S7hPnMrqGkgrvK6S QxLvnmJEGasiVOMfEGyysT2nAdp/URXQ9kQEEEJ6Ym4e6/m1lUEAkNs7rXrCrqLnpmGV JTCLs71xoT3a/gwcr+y9Y7za1ViPrNr38k74n5iRAGb61aHlb/cqK11bOlrlK0k9qXA8 WdjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=VFI3XHE7sXwJCC9HPXBJTtkLBfmxzRFUKjmMAyho8jQ=; b=xkDtoWiCpGCIGMSRRMbhnnykYyolvCO8GKVXHGgtoo8kLowVuMGoy4M6pozoaHvZS8 HAs8nu4oDBXmanMzCK0dJlESisdqTC08bWTLtLQPFXH2cXccTL5Tx6+lQSmfbKS7Fz1C dABL60CgLVSt9gyhSKO3XPN+P5mZI7WdEeZ4V+kIHgO2OUsWcKRRvuUP19gnICXX+ApB xLKW76i/HWf/lkcKRmlLEO5yO2Ik21tas4m9vkvM9Km3uKLwgGkEdQJgjenRf1bXRseo 0v34kP1BTiKW3XB/UgglGslAJORb8q/9eQo5soeSJK/QXOQtJfgKxYIBmpMc9m5rp5No AsEQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@endlessm-com.20150623.gappssmtp.com header.s=20150623 header.b=ZXGnvohn; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t5-v6si20308398pgc.189.2018.06.11.00.20.24; Mon, 11 Jun 2018 00:20:38 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@endlessm-com.20150623.gappssmtp.com header.s=20150623 header.b=ZXGnvohn; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754095AbeFKHSx (ORCPT + 99 others); Mon, 11 Jun 2018 03:18:53 -0400 Received: from mail-pl0-f65.google.com ([209.85.160.65]:39329 "EHLO mail-pl0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754028AbeFKHSv (ORCPT ); Mon, 11 Jun 2018 03:18:51 -0400 Received: by mail-pl0-f65.google.com with SMTP id f1-v6so11806872plt.6 for ; Mon, 11 Jun 2018 00:18:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=endlessm-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=VFI3XHE7sXwJCC9HPXBJTtkLBfmxzRFUKjmMAyho8jQ=; b=ZXGnvohnHAqYWPgBXpZr4UJElJXRMJ6NNEudhK/paULF5/rpEQrh7rqSiCrX7mGV4T GEdj4gCiq7yWfc/BOe7MZKrKKhzJ0eL30fUXtJ/O3IHQPdDEQF4dYgyyLO+DaH67ja7Y v6eif073acW6p1unmJvk8cCN+R0pxWFFu1yiAB2+f5AeewZXL68Ols+dyoISYvLuILjn 9d0EV+HcHgYnpnuEPjOkKtGQPGpi7RtTZfPeM4nMChyyrXuSE/IcNpD77tjtXOfctYxr BHT73LRyVt3btFTLKbswscL2vfM3cvzI4agQhpS26TQWWVUIjCeeqSCs5ZEjdJh8layR vcqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=VFI3XHE7sXwJCC9HPXBJTtkLBfmxzRFUKjmMAyho8jQ=; b=Fk/pw3HmMlZ/e8k3R/LzmSinHrqUFcMNkiPYtXwL3NWM4wrUPxGXNCyiTz5oCzG7gL or6TZ4EHxLcdM1EvR7oZC7AXP6cgvED6BHjFub6c5jYU87Q6Q1AcjbRM/H4s4eU3nRKb 5VDNuPFaTFp78KMPS7jg5El4YVV8P6Hq0dlckOYFKjiREzfIZkdY/KB4xG/v0GZ/lADr 3bdc87wQVdQB0i1ZiMWoIFzaR53g5jvEyJEYUKM/N4VP1cuslQsQ0u+RJIRoaksYKWo9 fKrizyPpFmUMMnnMznLUFsVQlUMcYS5qKWmKU4wnerPNoiL0LAbbL4nLCSCjnIcoG0rD 3z6Q== X-Gm-Message-State: APt69E18Ak5DL+gwLFLXS5LLokybsuxP6za4zDaGLDR+xogWWN6v6zaW CLKertIy/jYdV6S2+rCRr5E4mWdd X-Received: by 2002:a17:902:543:: with SMTP id 61-v6mr17309275plf.47.1528701531174; Mon, 11 Jun 2018 00:18:51 -0700 (PDT) Received: from localhost.localdomain (114-26-212-90.dynamic-ip.hinet.net. [114.26.212.90]) by smtp.gmail.com with ESMTPSA id t13-v6sm30349692pgv.43.2018.06.11.00.18.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 11 Jun 2018 00:18:50 -0700 (PDT) From: Chris Chiu To: corentin.chary@gmail.com, dvhart@infradead.org, andy.shevchenko@gmail.com Cc: linux-kernel@vger.kernel.org, platform-driver-x86@vger.kernel.org, acpi4asus-user@lists.sourceforge.net, hdegoede@redhat.com, linux@endlessm.com, Chris Chiu Subject: [PATCH v2 1/2] platform/x86: asus-wmi: Call led hw_changed API on kbd brightness change Date: Mon, 11 Jun 2018 15:18:37 +0800 Message-Id: <20180611071838.47945-1-chiu@endlessm.com> X-Mailer: git-send-email 2.15.1 (Apple Git-101) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Make asus-wmi notify on hotkey kbd brightness changes, listen for brightness events and update the brightness directly in the driver. For this purpose, bound check on brightness in kbd_led_set must be based on the same data type to prevent illegal value been set. Update the brightness by led_classdev_notify_brightness_hw_changed. This will allow userspace to monitor (poll) for brightness changes on the LED without reporting via input keymapping. Signed-off-by: Chris Chiu --- drivers/platform/x86/asus-wmi.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index 1f6e68f0b646..a18484f4bae3 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -460,6 +460,7 @@ static void kbd_led_update(struct work_struct *work) ctrl_param = 0x80 | (asus->kbd_led_wk & 0x7F); asus_wmi_set_devstate(ASUS_WMI_DEVID_KBD_BACKLIGHT, ctrl_param, NULL); + led_classdev_notify_brightness_hw_changed(&asus->kbd_led, asus->kbd_led_wk); } static int kbd_led_read(struct asus_wmi *asus, int *level, int *env) @@ -497,9 +498,9 @@ static void kbd_led_set(struct led_classdev *led_cdev, asus = container_of(led_cdev, struct asus_wmi, kbd_led); - if (value > asus->kbd_led.max_brightness) + if ((int)value > (int)asus->kbd_led.max_brightness) value = asus->kbd_led.max_brightness; - else if (value < 0) + else if ((int)value < 0) value = 0; asus->kbd_led_wk = value; @@ -656,6 +657,7 @@ static int asus_wmi_led_init(struct asus_wmi *asus) asus->kbd_led_wk = led_val; asus->kbd_led.name = "asus::kbd_backlight"; + asus->kbd_led.flags = LED_BRIGHT_HW_CHANGED; asus->kbd_led.brightness_set = kbd_led_set; asus->kbd_led.brightness_get = kbd_led_get; asus->kbd_led.max_brightness = 3; @@ -1745,6 +1747,15 @@ static void asus_wmi_notify(u32 value, void *context) } } + if (code == NOTIFY_KBD_BRTUP) { + kbd_led_set(&asus->kbd_led, asus->kbd_led_wk + 1); + goto exit; + } + if (code == NOTIFY_KBD_BRTDWN) { + kbd_led_set(&asus->kbd_led, asus->kbd_led_wk - 1); + goto exit; + } + if (is_display_toggle(code) && asus->driver->quirks->no_display_toggle) goto exit; -- 2.11.0