Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp580946imm; Tue, 5 Jun 2018 00:39:40 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIdjI2Aro0mIz3nzQREXffdWHsy9bxLFCET44dN7e1yn/fmbuWq7161J2FfAWobOtNrFIoL X-Received: by 2002:a62:303:: with SMTP id 3-v6mr24485766pfd.255.1528184379976; Tue, 05 Jun 2018 00:39:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528184379; cv=none; d=google.com; s=arc-20160816; b=oD8JUQJs0IR2KfBRRk6Ql9LUt8qh41h40nd0cM0Rg4U5Htqe5XzRMCWVTjjuF2lGT6 lei0WYcuEj9uEKypRumLucuiWXylsB/8CrKdHq8QgPWruLZqHZ6NGQqar8ShrdPiGiB6 8bo7cCPBEKNEYWMOCVQ+rGrk7dYBwh47LFeBTSBBj4Xdwiw+DrKqQI4lAdVG6DOBUFii iN2sMuTl+XOWXTWc7/LnZyTUfs8itmYmimaz/qdTV+B4EIAK48iJhJFuLP/z0Tslx5hP q/0FLVUfzRH8qZ/va2yLubzdco4abe+dnRLZ1lkBSpwgFf5stoCuM+dlvp0MeCxqPMrB m0eA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=hz+XaHH6C9qvAehH1+GHyVRtSNi3DPgARCsYw1Qf0R0=; b=fq/4qry5UcpzQ3ZBLt6pVDZlbVJNicjw3YezPCf0D1ScLaSWU/2LP11oEQGAUUBZCx 7WfgRIgmZyGji5DIXw/Rs6TbPPGDGpHKL/lxGBzFz3KfxhY8Ukd1aNjghaMVJ2w3rtgH cvtF1zO77ca0X777Uyt/e8KoaULSDaY8S6jx1vAVB5AZqtcMqoP/w1dGSadEDcVejA89 2Z6GHuCXCt49ax2ThCdqIHaZq30yuWEKS4YLJd3DEz2+6OVs60Ze99b9doEP2Im9/Su/ WEpJw/IbQQgMnJtkteleVjxsrajaGbbTGLJ40ZwUr1Eh5B3ZieJPbwZbwi+htBnFUa7Q LE3g== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a16-v6si3876502pff.43.2018.06.05.00.39.25; Tue, 05 Jun 2018 00:39:39 -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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751815AbeFEHhh (ORCPT + 99 others); Tue, 5 Jun 2018 03:37:37 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:51665 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751502AbeFEHhf (ORCPT ); Tue, 5 Jun 2018 03:37:35 -0400 Received: by mail-wm0-f68.google.com with SMTP id r15-v6so2891549wmc.1 for ; Tue, 05 Jun 2018 00:37:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=hz+XaHH6C9qvAehH1+GHyVRtSNi3DPgARCsYw1Qf0R0=; b=A1Hz/OsM/GAe9xVzR5G3av4l+Y/ruy+XANdoj+GRwysFY/Cw/4MvUdBnaVCqLi3+Vs V2wmV64hYuDW5SaZGAj9NC7ttNaLBzN9L2WfAzueUzRNAHtyCVsFiwIqPQVQwt6svjn7 p5XOpKYnLXv/5Ypny43sFGPukShUnQj71/nmVg1Hf/IjbcvdY8EHwsAogHzds8NNyylZ /EuWGZo8GWLerK6yh6mZ5kVJwPKsTp9Thxcp1nyb2zghdq3TCqpEP5F/kCQ7QltV1t8D MZyPzneA9jPk5X0npcKXsjXkYuTI4yhQSxGThrYEp/YsYfewDg7WW1YO4E0+X0AZYfYW M6aA== X-Gm-Message-State: ALKqPwdxPnvdykcSTQImlHxOOzi8HbLthiVrdWrISAnbAMgh0kKWRNy4 zSgNQ+tvUNlvA9aKvhMSelUicw== X-Received: by 2002:a50:9772:: with SMTP id d47-v6mr28100693edb.174.1528184254282; Tue, 05 Jun 2018 00:37:34 -0700 (PDT) Received: from shalem.localdomain (546A5441.cm-12-3b.dynamic.ziggo.nl. [84.106.84.65]) by smtp.gmail.com with ESMTPSA id l9-v6sm16044399edb.17.2018.06.05.00.37.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Jun 2018 00:37:33 -0700 (PDT) Subject: Re: [PATCH 1/2] platform/x86: asus-wmi: Call new led hw_changed API on kbd brightness change To: Chris Chiu , Darren Hart Cc: Daniel Drake , Corentin Chary , Andy Shevchenko , Linux Kernel , Platform Driver , acpi4asus-user , Linux Upstreaming Team , Bastien Nocera , Benjamin Berg References: <20180604123238.82200-1-chiu@endlessm.com> <20180605023124.GE47042@localhost.localdomain> From: Hans de Goede Message-ID: <38cb3527-8480-bdb9-a5d9-b601bc494a5f@redhat.com> Date: Tue, 5 Jun 2018 09:37:32 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 05-06-18 05:18, Chris Chiu wrote: > On Tue, Jun 5, 2018 at 10:31 AM, Darren Hart wrote: >> On Mon, Jun 04, 2018 at 04:23:04PM +0200, Hans de Goede wrote: >>> Hi, >>> >>> On 04-06-18 15:51, Daniel Drake wrote: >>>> On Mon, Jun 4, 2018 at 7:22 AM, Hans de Goede wrote: >>>>> Is this really a case of the hardware itself processing the >>>>> keypress and then changing the brightness *itself* ? >>>>> >>>>> From the "[PATCH 2/2] platform/x86: asus-wmi: Add keyboard backlight >>>>> toggle support" patch I get the impression that the driver is >>>>> modifying the brightness from within the kernel rather then the >>>>> keyboard controller are ACPI embeddec-controller doing it itself. >>>>> >>>>> If that is the case then the right fix is for the driver to stop >>>>> mucking with the brighness itself, it should simply report the >>>>> right keyboard events and export a led interface and then userspace >>>>> will do the right thing (and be able to offer flexible policies >>>>> to the user). >>>> >>>> Before this modification, the driver reports the brightness keypresses >>>> to userspace and then userspace can respond by changing the brightness >>>> level, as you describe. >>>> >>>> You are right in that the hardware doesn't change the brightness >>>> directly itself, which is the normal usage of LED_BRIGHT_HW_CHANGED. >>>> >>>> However this approach was suggested by Benjamin Berg and Bastien >>>> Nocera in the thread: Re: [PATCH v2] platform/x86: asus-wmi: Add >>>> keyboard backlight toggle support >>>> https://marc.info/?l=linux-kernel&m=152639169210655&w=2 >>>> >>>> The issue is that we need to support a new "keyboard backlight >>>> brightness cycle" key (in the patch that follows this one) which >>>> doesn't fit into any definitions of keys recognised by the kernel and >>>> likewise there's no userspace code to handle it. >>>> >>>> If preferred we could leave the standard brightness keys behaving as >>>> they are (input events) and make the new special key type directly >>>> handled by the kernel? >>> >>> I'm sorry that Benjamin and Bastien steered you in this direction, >>> IMHO none of it should be handled in the kernel. >>> >>> Anytime any sort of input is directly responded to by the kernel >>> it is a huge PITA to deal with from userspace. The kernel will have >>> a simplistic implementation which almost always is wrong. >>> >>> Benjamin, remember the pain we went through with rfkill hotkey >>> presses being handled in the kernel ? >>> >>> And then there is the whole acpi_video.brightness_switch_enabled >>> debacle, which is an option which defaults to true which causes >>> the kernel to handle LCD brightness key presses, which all distros >>> have been patching to default to off for ages. >>> >>> To give a concrete example, we may want to implement software >>> dimming / auto-off of the kbd backlight when the no keys are >>> touched for x seconds. This would seriously get in the way of that. >>> >>> So sorry, but NACK to this series. >> >> So if instead of modifying the LED value, the kernel platform drivers >> converted the TOGGLE into a cycle even by converting to an UP event >> based on awareness of the plaform specific max value and the read >> current value, leaving userspace to act on the TOGGLE/UP events - would >> that be preferable? >> >> Something like: >> >> if (code == TOGGLE && ledval < ledmax) >> code = UP; >> >> sparse_keymap_report_event(..., code, ...) >> >> } >> -- >> Darren Hart >> VMware Open Source Technology Center > > That's what I was trying to do in [PATCH v2] platform/x86: asus-wmi: Add > keyboard backlight toggle support. However, that brought another problem > discussed in the thread. > https://marc.info/?l=linux-kernel&m=152639169210655&w=2 > > So I moved the brightness change in the driver without passing to userspace. > Per Hans, seems there're some other concerns and I also wonder if the > TOGGLE event happens in ASUS HID (asus-hid.c) which also convert and > pass the keycode to userspace but no TOGGLE key support yet What should > we do then? As I mentioned in my reply to Darren, there are 2 proper solutions to this: 1) Make userspace treat KEY_KBDILLUMTOGGLE as a cycle key, this is what the kbd-backlight on most laptops with a single hotkey (*) does in cases where this is handled in firmware, rather then left to the OS. The handled in firmware is the case which I created the led_classdev_notify_brightness_hw_changed() API for. This would be my preferred solution and I believe that Benjamin is discussing this with Bastien ATM. 2) Add a new KEY_KBDILLUMCYCLE event and send that for the TOGGLE code on these laptops. Yes both will take time to get into end-users hand, but so will a kernel-only solution. In the mean time endless can always carry downstream patches to make things work right now (while waiting for the changes to trickle down from upstream). Regards, Hans