All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Kemnade <andreas@kemnade.info>
To: Pavel Machek <pavel@ucw.cz>
Cc: lee@kernel.org, robh+dt@kernel.org,
	krzysztof.kozlowski+dt@linaro.org, linux-leds@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	Matti Vaittinen <mazziesaccount@gmail.com>
Subject: Re: [PATCH v4 2/2] leds: bd2606mvv: Driver for the Rohm 6 Channel i2c LED driver
Date: Sat, 15 Apr 2023 00:05:33 +0200	[thread overview]
Message-ID: <20230415000533.534ea99b@aktux> (raw)
In-Reply-To: <ZDlEsNZ3pTlfxkAz@duo.ucw.cz>

Hi Pavel,

On Fri, 14 Apr 2023 14:18:56 +0200
Pavel Machek <pavel@ucw.cz> wrote:

> Hi!
> 
> > The device provides 6 channels which can be individually
> > turned off and on but groups of two channels share a common brightness
> > register.  
> 
> Yeah, well.. Turn it into 3-channel controller with brightness or
> 6-channel on/off one... You can't really share brightness.
> 
No, I cannot change the hardware, so it is a 6-channel with limitations.
And the devicetree has to describe the hardware and not the driver.

What is discussable is just how the driver should deal with that:

I see 5 possibilities.
a) ignore the shared brightness problem (status quo)
b) never set a brightness other than full on/off
c) ignore one led of each pair (not register it at all{
d) couple also the on/off of the pairs, so present to
   userspace only max. 3 leds.
e) allow full brightness control where independently possible,
   if LEDs are defined where that leads to conflicts,
   register them with max_brightness=1 and use them
   in on/off mode.

My preference were a) or e), the most possible usages.
e) has a cleaner interface to the userspace.

I would not upstream b)

Regards,
Andreas

> > +++ b/drivers/leds/Kconfig
> > @@ -551,6 +551,17 @@ config LEDS_REGULATOR
> >  	help
> >  	  This option enables support for regulator driven LEDs.
> >  
> > +config LEDS_BD2606MVV
> > +	tristate "LED driver for BD2606MVV"
> > +	depends on LEDS_CLASS
> > +	depends on I2C
> > +	select REGMAP_I2C
> > +	help
> > +	  This option enables support for BD2606MVV LED driver chips
> > +	  accessed via the I2C bus. It supports setting brightness, with
> > +	  the limitiation that there are groups of two channels sharing
> > +	  a brightness setting, but not the on/off setting.
> > +  
> 
> This driver can be used as a module...
> 
> 
> > +static int
> > +bd2606mvv_brightness_set(struct led_classdev *led_cdev,
> > +		      enum led_brightness brightness)
> > +{
> > +	struct bd2606mvv_led *led = ldev_to_led(led_cdev);
> > +	struct bd2606mvv_priv *priv = led->priv;
> > +	int err;
> > +
> > +	if (brightness == 0)
> > +		return regmap_update_bits(priv->regmap,
> > +					  BD2606_REG_PWRCNT,
> > +					  1 << led->led_no,
> > +					  0);
> > +
> > +	/* shared brightness register */
> > +	err = regmap_write(priv->regmap, led->led_no / 2,
> > +			   brightness);
> > +	if (err)
> > +		return err;  
> 
> Yeah. No.
> 
> Best regards,
> 							Pavel


  reply	other threads:[~2023-04-14 22:05 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-14  5:53 [PATCH v4 0/2] leds: Add a driver for the BD2606MVV Andreas Kemnade
2023-04-14  5:53 ` [PATCH v4 1/2] dt-bindings: leds: Add ROHM BD2606MVV LED driver Andreas Kemnade
2023-04-14 15:28   ` Krzysztof Kozlowski
2023-04-14 15:54     ` Andreas Kemnade
2023-04-14 15:56       ` Andreas Kemnade
2023-04-14 21:17       ` Krzysztof Kozlowski
2023-04-16 21:25         ` Andreas Kemnade
2023-04-14  5:53 ` [PATCH v4 2/2] leds: bd2606mvv: Driver for the Rohm 6 Channel i2c " Andreas Kemnade
2023-04-14 12:18   ` Pavel Machek
2023-04-14 22:05     ` Andreas Kemnade [this message]
2023-04-15  8:01       ` Pavel Machek
2023-04-17 12:32       ` Pavel Machek

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=20230415000533.534ea99b@aktux \
    --to=andreas@kemnade.info \
    --cc=devicetree@vger.kernel.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=lee@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=mazziesaccount@gmail.com \
    --cc=pavel@ucw.cz \
    --cc=robh+dt@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.