From patchwork Mon Sep 14 09:16:30 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Oleksij Rempel X-Patchwork-Id: 7174101 Return-Path: X-Original-To: patchwork-platform-driver-x86@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 382069F380 for ; Mon, 14 Sep 2015 09:17:00 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 4D69920641 for ; Mon, 14 Sep 2015 09:16:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CA44C2064E for ; Mon, 14 Sep 2015 09:16:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752614AbbINJQ5 (ORCPT ); Mon, 14 Sep 2015 05:16:57 -0400 Received: from mout.gmx.net ([212.227.15.18]:64902 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752588AbbINJQ4 (ORCPT ); Mon, 14 Sep 2015 05:16:56 -0400 Received: from localhost.localdomain ([80.187.107.50]) by mail.gmx.com (mrgmx002) with ESMTPSA (Nemesis) id 0M4WRI-1YhFMd1fgK-00yg8J; Mon, 14 Sep 2015 11:16:51 +0200 From: Oleksij Rempel To: corentin.chary@gmail.com, acpi4asus-user@lists.sourceforge.net, platform-driver-x86@vger.kernel.org Cc: Oleksij Rempel Subject: [PATCH] asus-wmi: restore kbd led level after resume Date: Mon, 14 Sep 2015 11:16:30 +0200 Message-Id: <1442222190-8591-1-git-send-email-linux@rempel-privat.de> X-Mailer: git-send-email 2.5.0 X-Provags-ID: V03:K0:TL9mVcH+a+QC9ifYWcYHGR4gc9nuTZxrulqw8osVPdja25D1vLZ rfqjXnZbXlklvqj5wIlqiUirV0YhFUuEX2k0cwAry6psBmCT7+Zn9+ccrWE6slryuVj6kXW I1FeTftGKvrYio7Q8lN6+nImnP8naSNuz5SltElATqcFDyUZD79qmJZtJEbC7QplRrfwRYS PUn0rCJCZuRFTPQq38EyA== X-UI-Out-Filterresults: notjunk:1; V01:K0:+Kx+e1zuGMk=:7HP8WzQMPR68CDJP/KHi/i 7yxZosgvGV2BCbxTFv0RZQPr/j9+1wyiKfomHwgABgZmw3bEXjGpEdKFlRwnTl+quwPXcFzC0 V9vzfvqrrmf/fiycCbdE78kvwLjfbUT1ETpMDfAWLn5FBZe+JqImmhl5jRt8iSB6fquI/RUML gXPSEkcABloBe+Py220kT2Gw9cfT3Usqt4pvCNrYoamNy7apw2excIVdrshnkoUYJ7ecEq3hq 2ktgru6EtkE0JNFG3AVNphGWqaeKocbWjyxHr/TKqJjN8W4du1CCxA8NlDDcO2W0rlUyKkAph OYsUn10VYtXQiu/Z/cMEPzGSoqImhzoB1kpQLfIUZe8VTh9jQhGCEy+ftToc1IbFWFkT/m8zn tnOmMQkvBB2H8tASTgK0GfbPIvqVlx6pRbIVQ+BuWV61uoPK+wK5AFDPWhs4D9+zyDk+N/s+A Eo+VnlJU0G3CEJyNqL+0Ye+jD8e599hP2hsAtaq+MSZ1TpV6uUT+oq7bX6J50hKPRbphzHVA/ xlJ1Vh7MQahWktwYcXly4iwfHMlC5C8YOMyqrMp0LrFyns27yGqWcsVALLnFMBHKY55UNfxZm 1YNCLepWTZ8umGMgtANnxgOPLH4I4RI+Q9glmyWygB/yf/5hXrufxx1yGqbxG13Td5vlq+9qM 8GLC9ahPGhdSJ6JmX+LSGQ74PgYjVklJgopgvwerF+M1RRYFVk0cnF05FXDOZxgst6uwonweQ CQ2Gp9NulT3aMkFz/h1+Rg4Jv3Ra5HyikjMohw== Sender: platform-driver-x86-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: platform-driver-x86@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, 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 Afters suspend/resume cycle with closed lid the kbd backlight level is lost. This patch will will restore this value to last known level. Signed-off-by: Oleksij Rempel --- drivers/platform/x86/asus-wmi.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index efbc3f0..1f7d80f 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -582,7 +582,7 @@ static void asus_wmi_led_exit(struct asus_wmi *asus) static int asus_wmi_led_init(struct asus_wmi *asus) { - int rv = 0; + int rv = 0, led_val; asus->led_workqueue = create_singlethread_workqueue("led_workqueue"); if (!asus->led_workqueue) @@ -602,9 +602,11 @@ static int asus_wmi_led_init(struct asus_wmi *asus) goto error; } - if (kbd_led_read(asus, NULL, NULL) >= 0) { + led_val = kbd_led_read(asus, NULL, NULL); + if (led_val >= 0) { INIT_WORK(&asus->kbd_led_work, kbd_led_update); + asus->kbd_led_wk = led_val; asus->kbd_led.name = "asus::kbd_backlight"; asus->kbd_led.brightness_set = kbd_led_set; asus->kbd_led.brightness_get = kbd_led_get; @@ -2160,6 +2162,16 @@ static int asus_hotk_thaw(struct device *device) return 0; } +static int asus_hotk_resume(struct device *device) +{ + struct asus_wmi *asus = dev_get_drvdata(device); + + if (!IS_ERR_OR_NULL(asus->kbd_led.dev)) + queue_work(asus->led_workqueue, &asus->kbd_led_work); + + return 0; +} + static int asus_hotk_restore(struct device *device) { struct asus_wmi *asus = dev_get_drvdata(device); @@ -2190,6 +2202,8 @@ static int asus_hotk_restore(struct device *device) bl = !asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_UWB); rfkill_set_sw_state(asus->uwb.rfkill, bl); } + if (!IS_ERR_OR_NULL(asus->kbd_led.dev)) + queue_work(asus->led_workqueue, &asus->kbd_led_work); return 0; } @@ -2197,6 +2211,7 @@ static int asus_hotk_restore(struct device *device) static const struct dev_pm_ops asus_pm_ops = { .thaw = asus_hotk_thaw, .restore = asus_hotk_restore, + .resume = asus_hotk_resume, }; static int asus_wmi_probe(struct platform_device *pdev)