linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: broonie@opensource.wolfsonmicro.com (Mark Brown)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] leds: Add LED class driver for regulator driven LEDs.
Date: Wed, 2 Dec 2009 18:06:58 +0000	[thread overview]
Message-ID: <20091202180658.GA12292@rakim.wolfsonmicro.main> (raw)
In-Reply-To: <1259775625-25973-1-git-send-email-ospite@studenti.unina.it>

On Wed, Dec 02, 2009 at 06:40:25PM +0100, Antonio Ospite wrote:

> A doubt I had was about leaving the 'supply' variable configurable from
> platform data, or relying on some fixed value like "vled", but leaving it
> configurable covers the case when we have different regulators used for
> different LEDs or vibrators.

There's no need to do this since the regulator API matches consumers
based on struct device as well as name so you can have as many LEDs as
you like all using the same supply name mapping to different regulators.

> Should I add a note in Documentation/ about how to use it? Tell me if so.

If you wish to, it's not essential (only one existing LED driver appears
to do this) and the comment in the header file is probably adequate.

> +static inline int led_regulator_get_max_brightness(struct regulator *supply)
> +{
> +	return regulator_count_voltages(supply);
> +}

More graceful handling of regulators that don't implement list_voltage
might be nice (for simple on/off control - not all regulators have
configurable voltages).  If a regulator doesn't support list_voltage
you'll get -EINVAL.

> +	vcc = regulator_get(&pdev->dev, pdata->supply);
> +	if (IS_ERR(vcc)) {
> +		dev_err(&pdev->dev, "Cannot get vcc for %s\n", pdata->name);
> +		return PTR_ERR(vcc);;
> +	}

You almost certainly want regulator_get_exclusive() here; this driver
can't function properly if something else is using the regulator and
holding the LED on or off without it.  You'll also want to check the
status of the LED on startup and update your internal status to match
that.

       reply	other threads:[~2009-12-02 18:06 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1259775625-25973-1-git-send-email-ospite@studenti.unina.it>
2009-12-02 18:06 ` Mark Brown [this message]
2009-12-02 20:25   ` [PATCH] leds: Add LED class driver for regulator driven LEDs Antonio Ospite
2009-12-02 20:40     ` Mark Brown
2009-12-02 20:48       ` Antonio Ospite
2009-12-04 12:39   ` Antonio Ospite
2009-12-04 12:45     ` Mark Brown
2009-12-02 18:23 ` Liam Girdwood
2009-12-02 20:31   ` Antonio Ospite
2009-12-02 20:41     ` Mark Brown
2009-12-04 12:57       ` Antonio Ospite
2009-12-07 11:49         ` Mark Brown
     [not found] ` <1260194893-30149-1-git-send-email-ospite@studenti.unina.it>
2009-12-15 10:22   ` [PATCH v2] " Antonio Ospite
2009-12-15 10:58   ` Mark Brown

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=20091202180658.GA12292@rakim.wolfsonmicro.main \
    --to=broonie@opensource.wolfsonmicro.com \
    --cc=linux-arm-kernel@lists.infradead.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;
as well as URLs for NNTP newsgroup(s).