public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Hans de Goede <hansg@kernel.org>
To: "Leo L. Schwab" <ewhac@ewhac.org>
Cc: Kate Hsuan <hpa@redhat.com>, Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	linux-input@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3] HID: lg-g15 - Add support for Logitech G13.
Date: Wed, 17 Sep 2025 12:33:36 +0200	[thread overview]
Message-ID: <8e2c3560-6cba-4808-8207-ba3e1dd0e661@kernel.org> (raw)
In-Reply-To: <aMiQsMtyX9POrXof@ewhac.org>

Hi Leo,

On 16-Sep-25 00:18, Leo L. Schwab wrote:
> On Wed, Sep 10, 2025 at 09:16:45PM +0200, Hans de Goede wrote:
>> Since the driver writes any new values to the G13 and the G13 accepts
>> those and remembers them even when the backlight is off,
>> the notify() should be passed g15_led->brightness when an
>> off -> on transition happens (and 0 or LED_OFF for the on -> off
>> transition).
>>
>> Since g15_led->brightness gets initialized by reading the actual
>> setting from the G13 at probe time and then gets updated on
>> any successful completion if writing a new brightness value
>> to the G13, it should always reflect the value which the backlight
>> will be set at by the G13 after an off -> on transition.
>>
>> Or am I missing something ?
>>
> 	If I'm understanding you correctly:


> 	You want `brightness` to be copied to `brightness_hw_changed` on
> probe, and on every backlight off->on transition (cool so far).

Just to clarify, there are 2 things here

1: brightness as in the actual rgb/brightness values the backlight will
   be lit with when it is on
2. A backlight_disabled flag to indicate if the backlight is disabled
   in hw by the button on the G13

I would suggest to track those separately by adding a backlight_disabled
(or backlight_enabled) flag to struct lg_g15_data like I do in the
g510 patch I send earlier in the thread.

So wrt copying things on probe() I would copy both the brightness
to g15_led->brightness which is already done in v3 as well as 
use something like:

        ret = hid_hw_raw_request(g15->hdev, LG_G510_INPUT_KBD_BACKLIGHT,
                                 g15->transfer_buf, 2,
                                 HID_INPUT_REPORT, HID_REQ_GET_REPORT);

to get the input-report with the backlight_enabled/disabled flag and
initialize backlight_disabled based on that.

I would not touch mcled.cdev.brightness_hw_changed directly,
not touching this will also avoid the build issues when
support for it is disabled.

Ack to on detecting a backlight off->on transition based on comparing
the input-report bit to the cached backlight_disabled flag pass
the cached g15_led->brightness to notify()

> 	What do you want to happen to `brightness_hw_changed` when
> `brightness` is changed in sysfs while the backlight is on?  As it stands,
> the current behavior is:
> 	* Driver loads and probes; `brightness` and `brightness_hw_changed`
> 	  both set to 255.

Ack, except that as mentioned above I would not touch brightness_hw_changed
and just leave it at -1.

> 	* sysfs `brightness` changed to 128.  `brightness_hw_changed`
> 	  remains at 255.
> 	* Toggle backilght off.  `brightness_hw_changed` changed to 0.
> 	  `brightness` remains at 128.
> 	* Toggle backlight back on.  `brightness_hw_changed` gets a copy of
> 	  `brightness`, and both are now 128.

Ack this is all correct.

> 	This seems inconsistent to me.

This is working as intended / how the API was designed as
Documentation/ABI/testing/sysfs-class-led says:

                Reading this file will return the last brightness level set
                by the hardware, this may be different from the current
                brightness. Reading this file when no hw brightness change
                event has happened will return an ENODATA error.

>  Hence my earlier suggestion that
> `brightness_hw_changed` should track all changes to `brightness`, except
> when the backlight is toggled off.

Then it also would be reporting values coming from sysfs writes,
which it explicitly should not do.

Summarizing in my view the following changes are necessary on v4:

1. Add backlight_disabled (or backlight_enabled) flag to struct lg_g15_data
2. Init that flag from prope()
3. Use that flag on receiving input reports to see if notify()
   should be called
4. Replace the LED_FULL passed to notify() (for off->on)
   with g15_led->brightness

and that is it, with those changes I believe that we should be
good to go.

Regards,

Hans



  reply	other threads:[~2025-09-17 10:33 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-14 21:26 [PATCH v3] HID: lg-g15 - Add support for Logitech G13 Leo L. Schwab
2025-08-31 13:01 ` Hans de Goede
2025-08-31 19:51   ` Leo L. Schwab
2025-09-02  9:07     ` Hans de Goede
2025-09-02  9:14       ` Hans de Goede
2025-09-02 20:41         ` Leo L. Schwab
2025-09-02 21:05           ` Hans de Goede
2025-09-03 19:39         ` Leo L. Schwab
2025-09-08 21:08           ` Hans de Goede
2025-09-10  5:52             ` Leo L. Schwab
2025-09-10 11:09               ` Hans de Goede
2025-09-10 18:02                 ` Leo L. Schwab
2025-09-10 19:16                   ` Hans de Goede
2025-09-15 22:18                     ` Leo L. Schwab
2025-09-17 10:33                       ` Hans de Goede [this message]
2025-09-17 19:50                         ` Leo L. Schwab

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8e2c3560-6cba-4808-8207-ba3e1dd0e661@kernel.org \
    --to=hansg@kernel.org \
    --cc=bentiss@kernel.org \
    --cc=ewhac@ewhac.org \
    --cc=hpa@redhat.com \
    --cc=jikos@kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox