From: Andy Shevchenko <andy@kernel.org>
To: Nam Tran <trannamatk@gmail.com>
Cc: lee@kernel.org, geert@linux-m68k.org, pavel@ucw.cz,
robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org,
christophe.jaillet@wanadoo.fr, corbet@lwn.net,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-doc@vger.kernel.org, florian.fainelli@broadcom.com,
bcm-kernel-feedback-list@broadcom.com,
linux-rpi-kernel@lists.infradead.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v8 0/5] auxdisplay: add support for TI LP5812 4x3 Matrix LED driver
Date: Mon, 12 May 2025 09:05:44 +0300 [thread overview]
Message-ID: <aCGPuKtfprIvwADa@smile.fi.intel.com> (raw)
In-Reply-To: <20250510074802.8400-1-trannamatk@gmail.com>
On Sat, May 10, 2025 at 02:48:02PM +0700, Nam Tran wrote:
> On Thu, 8 May 2025 Lee Jones wrote:
> > On Thu, 08 May 2025, Andy Shevchenko wrote:
> > > On Thu, May 8, 2025 at 5:27 PM Nam Tran <trannamatk@gmail.com> wrote:
> > > > On Thu, 8 May 2025 Lee Jones wrote:
> > > > > On Thu, 08 May 2025, Andy Shevchenko wrote:
> > > > > > On Wed, May 7, 2025 at 7:42 PM Nam Tran <trannamatk@gmail.com> wrote:
...
> > > > > > At least, based on the above it's my formal NAK from an auxdisplay perspective.
> > > > >
> > > > > This is fine.
> > > > >
> > > > > Just be aware, before you submit to LEDs again, that you need to use
> > > > > what is available in the LEDs subsystem to it's fullest, before
> > > > > hand-rolling all of your own APIs. The first submission didn't use a
> > > > > single LED API. This, as before, would be a big NACK also.
> > > >
> > > > Thanks for the clarification.
> > > >
> > > > Just to confirm — the current version of the driver is customized to allow
> > > > user space to directly manipulate LP5812 registers and to support the
> > > > device’s full feature set. Because of this, it doesn’t follow the standard
> > > > LED interfaces.
> > >
> > > But why? What's wrong with the LED ABI? (see also below question
> > > before answering to this one)
> > >
> > > > Given that, would it be acceptable to submit this driver under the misc subsystem instead?
> > >
> > > But these are LEDs in the hardware and you can access them as 4
> > > individual LEDs, right?
> >
> > Right. Please work with the API you are offered in the first instance.
> > My first assumption is always that this driver isn't as special as you
> > think it might be.
>
> In direct mode, we can access them as individual LEDS. User doesn't need
> to select LEDs. In this mode, it is a simple LED driver.
>
> However, user must select LEDs in scan mode. The hardware uses 4 pin to
> display 12 LEDs (or 4 RGB LEDs). Ordering of LED selection also impact
> to display capacibility. That why, I need to support another interface
> for user to controll hardware's registers.
>
> In mix mode, we can control an individual LED and up to 6 scan LEDs.
> However, user must select the order of single LED and which LEDs will be
> use for scan function.
>
> The main point is user must have capacibility in write information to
> hardware's registers to select LEDs in scan mode and mix mode.
>
> Besides system modes (direct mode, scan mode, mix mode), each LED has
> manual mode and autonomous mode.
>
> A example steps to display a LED in manual mode
> # Set drive mode is Scan mode with 4 scan. Scan order 0 is out_0,
> # Scan order 1 is out_1, Scan order 2 is out_2, and Scan order 3 is out_3
> echo tcmscan:4:0:1:2:3 > /sys/bus/i2c/drivers/lp5812/1-001b/lp5812_chip_setup/dev_config
> # Enable led_A0
> echo 1 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/activate
> # Enable manual mode
> echo manual > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/mode
> # Set Dot Current
> echo 100 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/manual_dc
> # Set Manual PWM
> echo 100 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/manual_pwm
>
> However in autonomous mode, the steps are complicated
> # Set drive mode is Scan mode with 4 scan. Scan order 0 is out_0,
> # Scan order 1 is out_1, Scan order 2 is out_2, and Scan order 3 is out_3
> echo tcmscan:4:0:1:2:3 > /sys/bus/i2c/drivers/lp5812/1-001b/lp5812_chip_setup/dev_config
> # Enable led_A0
> echo 1 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/activate
> # Enable autonomous mode
> echo autonomous > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/mode
> # Config autonomous animation mode: (only use AEU1, start pause time: 3.04s,
> # stop pause time: 3.04s, playback time: infinite time)
> echo 1:10:10:15 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/mode
> # Config AEU1 playback times
> echo 1 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/AEU1/playback_time
> # Config PWM
> echo 100 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/AEU1/pwm1
> echo 100 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/AEU1/pwm2
> echo 100 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/AEU1/pwm3
> echo 100 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/AEU1/pwm4
> echo 100 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/AEU1/pwm5
> # Config slope time
> echo 5 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/AEU1/slope_time_t1
> echo 5 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/AEU1/slope_time_t2
> echo 5 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/AEU1/slope_time_t3
> echo 5 > /sys/bus/i2c/drivers/lp5812/1-001b/led_A0/AEU1/slope_time_t4
> # Start autonomous
> echo start > /sys/bus/i2c/drivers/lp5812/1-001b/lp5812_chip_setup/device_command
>
> I think setting PWM also same as brightness_set API. However, there are
> many PWM config for a LED and it is one of other config to make autonomous mode work.
> Therefore, standard led API can use in some use cases only.
>
> Please see the link below for a better visualization of how to configure the LP5812.
> https://dev.ti.com/gallery/view/LED/LP581x/ver/0.10.0/
To me it sounds like you should start from the small steps, i.e. do not
implement everything at once. And starting point of the 4 RGB LEDs sounds
the best approach to me. Then, if needed, you can always move on with
fancy features of this hardware on top of the existing code.
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2025-05-12 6:08 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-27 8:24 [PATCH v8 0/5] auxdisplay: add support for TI LP5812 4x3 Matrix LED driver Nam Tran
2025-04-27 8:24 ` [PATCH v8 1/5] dt-bindings: auxdisplay: add TI LP5812 4×3 Matrix RGB LED Driver Nam Tran
2025-04-27 8:24 ` [PATCH v8 2/5] " Nam Tran
2025-04-27 16:04 ` Randy Dunlap
2025-04-28 17:39 ` Nam Tran
2025-04-27 8:24 ` [PATCH v8 3/5] docs: ABI: Document LP5812 sysfs interfaces Nam Tran
2025-04-27 8:24 ` [PATCH v8 4/5] docs: auxdisplay: document TI LP5812 RGB LED driver Nam Tran
2025-04-27 8:24 ` [PATCH v8 5/5] arm64: dts: Add LP5812 node for Raspberry Pi 4 Model B Nam Tran
2025-04-27 9:35 ` [PATCH v8 0/5] auxdisplay: add support for TI LP5812 4x3 Matrix LED driver Andy Shevchenko
2025-04-28 10:37 ` Pavel Machek
2025-04-28 11:34 ` Geert Uytterhoeven
2025-04-28 17:29 ` Nam Tran
2025-04-28 20:18 ` Pavel Machek
2025-04-29 17:02 ` Nam Tran
2025-04-29 19:47 ` Andy Shevchenko
2025-05-07 16:42 ` Nam Tran
2025-05-08 8:24 ` Andy Shevchenko
2025-05-08 13:26 ` Lee Jones
2025-05-08 14:26 ` Nam Tran
2025-05-08 14:46 ` Andy Shevchenko
2025-05-08 15:01 ` Lee Jones
2025-05-10 7:48 ` Nam Tran
2025-05-12 6:05 ` Andy Shevchenko [this message]
2025-05-12 17:38 ` Nam Tran
2025-05-12 17:44 ` Andy Shevchenko
2025-05-13 8:35 ` Lee Jones
2025-05-13 8:10 ` Geert Uytterhoeven
2025-05-13 8:50 ` Lee Jones
2025-04-30 7:15 ` Pavel Machek
2025-05-05 7:24 ` Nam Tran
2025-05-08 8:38 ` Pavel Machek
2025-04-28 16:37 ` Nam Tran
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=aCGPuKtfprIvwADa@smile.fi.intel.com \
--to=andy@kernel.org \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=christophe.jaillet@wanadoo.fr \
--cc=conor+dt@kernel.org \
--cc=corbet@lwn.net \
--cc=devicetree@vger.kernel.org \
--cc=florian.fainelli@broadcom.com \
--cc=geert@linux-m68k.org \
--cc=krzk+dt@kernel.org \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rpi-kernel@lists.infradead.org \
--cc=pavel@ucw.cz \
--cc=robh@kernel.org \
--cc=trannamatk@gmail.com \
/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;
as well as URLs for NNTP newsgroup(s).