linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@cam.ac.uk>
To: Johan Hovold <jhovold@gmail.com>
Cc: Jonathan Cameron <jic23@kernel.org>,
	Rob Landley <rob@landley.net>, Richard Purdie <rpurdie@rpsys.net>,
	Samuel Ortiz <sameo@linux.intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Florian Tobias Schandinat <FlorianSchandinat@gmx.de>,
	Arnd Bergmann <arnd@arndb.de>,
	Andrew Morton <akpm@linux-foundation.org>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-iio@vger.kernel.org, "Hennerich,
	Michael" <Michael.Hennerich@analog.com>
Subject: Re: [PATCH v4] iio: add LM3533 ambient-light-sensor driver
Date: Tue, 22 May 2012 10:15:19 +0100	[thread overview]
Message-ID: <4FBB5927.30905@cam.ac.uk> (raw)
In-Reply-To: <20120522090945.GB7323@localhost>

On 5/22/2012 10:09 AM, Johan Hovold wrote:
> On Tue, May 22, 2012 at 08:13:12AM +0100, Jonathan Cameron wrote:
>> On 5/21/2012 11:07 PM, Johan Hovold wrote:
>>> On Mon, May 21, 2012 at 05:37:11PM +0100, Jonathan Cameron wrote:
>>>> Michael cc'd for comments on core support of some stuff that is also
>>>> in frequency drivers down the end of the email.
>>>>
>>>> On 05/21/2012 10:50 AM, Johan Hovold wrote:
>>>>> On Sat, May 19, 2012 at 09:48:23AM +0100, Jonathan Cameron wrote:
>>>>>> On 05/18/2012 02:07 PM, Johan Hovold wrote:
>>>>>>> Add sub-driver for the ambient-light-sensor interface on National
>>>>>>> Semiconductor / TI LM3533 lighting power chips.
>>>>>>>
>>>>>>> The sensor interface can be used to control the LEDs and backlights of
>>>>>>> the chip through defining five light zones and three sets of
>>>>>>> corresponding brightness target levels.
>>>>>>>
>>>>>>> The driver provides raw and mean adc readings along with the current
>>>>>>> light zone through sysfs. A threshold event can be generated on zone
>>>>>>> changes.
>>>>>>
>>>>>> Hi Johan,
>>>>>>
>>>>>> I hate to be a pain with this one, but it's a complex beast and I'd
>>>>>> really like to get the interface right first time - particularly as
>>>>>> you are going in after the move out of staging.
>>>>>>
>>>>>>
>>>>>> Queries for you.
>>>>>> 1) Ordering in the probe function. Normally expect iio_device_register
>>>>>> to be the last call. Why not here?
>>>>>> 2) Worth combining enable / disable into one as very similar functions?
>>>>>> 3) Suspicious code in als_set_input_mode
>>>>>>
>>>>>> Naming of the target values.  I think we can make the naming of these
>>>>>> fit in much better with the normal abi which is going to be all for the
>>>>>> good in the long run.  They are basically current output channels
>>>>>> with a controllable set of steps (where we don't have direct control
>>>>>> of which one we are in).  This is very similar to the frequency controls
>>>>>> on some of Analog's dds that we have a well defined interface for.
>>>>>>
>>>>>> More detail below, but in summary.
>>>>>>
>>>>>> out_currentX_currentY_raw for channel X value for zone Y.
>>>>>>
>>>>>> Jonathan
>>>>>>>
>>>>>>> Signed-off-by: Johan Hovold<jhovold@gmail.com>
>>>>>>> ---
>>>>>>>
>>>>>>> Note that addition of r_select to the platform data probably needs to go
>>>>>>> in via mfd.
>>>>>>>
>>>>>>>
>>>>>>> v2:
>>>>>>>    - reimplement using iio
>>>>>>>    - add sysfs-ABI documentation
>>>>>>> v3
>>>>>>>    - use indexed channel
>>>>>>>    - fix sysfs-ABI documentation typo and style
>>>>>>>    - replace gain attribute with in_illuminance0_calibscale
>>>>>>>    - add calibscale to platform data
>>>>>>>    - fix adc register definitions
>>>>>>>    - replace to_lm3533_dev_attr macro with inline function
>>>>>>>    - fix device used for error reporting at irq allocation
>>>>>>>    - use iio device for error reporting during setup/enable
>>>>>>>    - rebase on staging-next
>>>>>>>      - fix header include paths
>>>>>>>      - use dev_to_iio_dev
>>>>>>>      - add IIO_CHAN_INFO_RAW to info mask
>>>>>>>      - use iio_device_{alloc,free}
>>>>>>> v4
>>>>>>>    - move to driver/iio/light
>>>>>>>    - add events/in_illuminance0_threshY_hysteresis attributes
>>>>>>>    - fix device zone-boundary quirkiness
>>>>>>>    - clean up attribute handling
>>>>>>>    - replace calibscale with device-specific r_select attribute
>>>>>>>
>>>>>>>
>>>>>>>    .../ABI/testing/sysfs-bus-iio-light-lm3533-als     |   64 ++
>>>>>>>    drivers/iio/Kconfig                                |    1 +
>>>>>>>    drivers/iio/Makefile                               |    1 +
>>>>>>>    drivers/iio/light/Kconfig                          |   22 +
>>>>>>>    drivers/iio/light/Makefile                         |    5 +
>>>>>>>    drivers/iio/light/lm3533-als.c                     |  941 ++++++++++++++++++++
>>>>>>>    include/linux/mfd/lm3533.h                         |    1 +
>>>>>>>    7 files changed, 1035 insertions(+), 0 deletions(-)
>>>>>>>    create mode 100644 Documentation/ABI/testing/sysfs-bus-iio-light-lm3533-als
>>>>>>>    create mode 100644 drivers/iio/light/Kconfig
>>>>>>>    create mode 100644 drivers/iio/light/Makefile
>>>>>>>    create mode 100644 drivers/iio/light/lm3533-als.c
>>>>>>>
>>>>>>> diff --git a/Documentation/ABI/testing/sysfs-bus-iio-light-lm3533-als b/Documentation/ABI/testing/sysfs-bus-iio-light-lm3533-als
>>>>>>> new file mode 100644
>>>>>>> index 0000000..7ea1770
>>>>>>> --- /dev/null
>>>>>>> +++ b/Documentation/ABI/testing/sysfs-bus-iio-light-lm3533-als
>>>>>>> @@ -0,0 +1,64 @@
>>>>>>> +What:		/sys/bus/iio/devices/iio:deviceX/r_select
>>>>>>> +Date:		April 2012
>>>>>>> +KernelVersion:	3.5
>>>>>>> +Contact:	Johan Hovold<jhovold@gmail.com>
>>>>>>> +Description:
>>>>>>> +		Set the ALS internal pull-down resistor for analog input mode
>>>>>>> +		(1..127), such that,
>>>>>>> +
>>>>>>> +		R_als = 200000 / r_select	(ohm)
>>>>>>> +
>>>>>>> +		This setting is ignored in PWM-mode (input is always high
>>>>>>> +		impedance in PWM-mode).
>>>>>>> +
>>>>>>> +What:		/sys/.../events/in_illuminance0_thresh_either_en
>>>>>>> +Date:		April 2012
>>>>>>> +KernelVersion:	3.5
>>>>>>> +Contact:	Johan Hovold<jhovold@gmail.com>
>>>>>>> +Description:
>>>>>>> +		Event generated when channel passes one of the four thresholds
>>>>>>> +		in each direction (rising|falling) and a zone change occurs.
>>>>>>> +		The corresponding light zone can be read from
>>>>>>> +		in_illuminance0_zone.
>>>>>>> +
>>>>>>> +What:		/sys/.../events/in_illuminance0_threshY_hysteresis
>>>>>>> +Date:		May 2012
>>>>>>> +KernelVersion:	3.5
>>>>>>> +Contact:	Johan Hovold<jhovold@gmail.com>
>>>>>>> +Description:
>>>>>>> +		Get the hysteresis for thresholds Y, that is,
>>>>>>> +
>>>>>>> +		threshY_hysteresis = threshY_raising - threshY_falling
>>>>>>> +
>>>>>>> +What:		/sys/.../events/illuminance_threshY_falling_value
>>>>>>> +What:		/sys/.../events/illuminance_threshY_raising_value
>>>>>>> +Date:		April 2012
>>>>>>> +KernelVersion:	3.5
>>>>>>> +Contact:	Johan Hovold<jhovold@gmail.com>
>>>>>>> +Description:
>>>>>>> +		Specifies the value of threshold that the device is
>>>>>>> +		comparing against for the events enabled by
>>>>>>> +		in_illuminance0_thresh_either_en, where Y in 0..3.
>>>>>>> +
>>>>>>> +		Note that threshY_falling must be less than or equal to
>>>>>>> +		threshY_raising.
>>>>>>> +
>>>>>>> +		These thresholds correspond to the eight zone-boundary
>>>>>>> +		registers (boundaryY_{low,high}) and defines the five light
>>>>>>> +		zones.
>>>>>>> +
>>>>>>> +What:		/sys/bus/iio/devices/iio:deviceX/in_illuminance0_zone
>>>>>>> +Date:		April 2012
>>>>>>> +KernelVersion:	3.5
>>>>>>> +Contact:	Johan Hovold<jhovold@gmail.com>
>>>>>>> +Description:
>>>>>>> +		Get the current light zone (0..4) as defined by the
>>>>>>> +		in_illuminance0_threshY_{falling,rising} thresholds.
>>>>>>> +
>>>>>>> +What:		/sys/bus/iio/devices/iio:deviceX/targetY_Z
>>>>>>> +Date:		April 2012
>>>>>>> +KernelVersion:	3.5
>>>>>>> +Contact:	Johan Hovold<jhovold@gmail.com>
>>>>>>> +Description:
>>>>>>> +		Set the target brightness for ALS-mapper Y in light zone Z
>>>>>>> +		(0..255), where Y in 1..3 and Z in 0..4.
>>>>>>
>>>>>> What are the units of this?
>>>>>
>>>>> The datasheet reads "percent of the full-scale current" (actually depends
>>>>> somewhat on whether the als is in linear or exponential mode). When the
>>>>> leds or backlights are in PWM-mode (not the ALS necessarily), these
>>>>> values are interpreted as a scale factor which is applied to the output
>>>>> current determined by the PWM-signal.
>>>>>
>>>>> Either way it could indeed be considered a raw output current (which
>>>>> could be manipulated later by various factors).
>>>> Fine.... Theoretically if at all possible we'd want the conversion
>>>> factors to get it to an actual current (in amps) to be available though.
>>>> (tend to relax that if there are unknowable elements or they aren't
>>>> specified by board file etc).
>>>
>>> Hmmm. I'm starting to get a feeling that we're over-doing this. The ALS
>>> on the lm3533 isn't a general purpose sensor. It's simply a way to
>>> control the leds and backlights of that device. So what you do is to
>>> determine the full-scale current (max current at maximum brightness 0xff
>>> in this case -- set in board file). Then the ALS input range is divided
>>> in 5 zones, and for each zone you set a brightness as a percent of the
>>> full-scale current. You relly don't care about amps (except for the
>>> maximum determined by the setup).
>> Then no need to provide scale etc.
>
> Good.
>
>>> The equation's for determining the current are available in the
>>> datasheets however, but they depend on which mapping mode (linear or
>>> exponential) and can also be effected by PWM-input duty cycle etc. For
>>> this particular device, I really don't see the point in trying to
>>> determine actual current in amps in all these settings.
>> We can always add it later if anyone cares.
>>>
>>> Note also that the actual output current cannot be determined in the
>>> ALS as the required factors are only set/known in the led/backlight
>>> devices (mapping mode, pwm-mode).
>> Could query it back if it was useful, but sounds like probably not.
>> If we don't provide the information it can't be wrong...
>
> Problem is that we would have three out_currentY_raw channels generating
> up to five different output currents depending on the configuration of
> the five controlled devices...
Gah.  So if we did do this, we'd have to define all 5.  What a pain.
Lest just skip that for now then.
>
>> I'd basically missunderstood where the division between the sensor and
>> the led/backlight drivers lay.  I think I'm happy now with where you
>> have it.
>
> Great.
>
>>>
>>>>>> Also arguably is it not the als that this is related to, but rather
>>>>>> the light source?
>>>>>
>>>>> Well, it would be a raw output, mapping the measured LUX.
>>>> Fair enough, though I wonder if we are stepping on led / backlight
>>>> classes stuff with this.
>>>
>>> Keeping the target sets and the mapper terminology could still be an
>>> option.
>>>
>>> ALS input mode is a special mode of the LEDs and backlights which
>>> overrides the direct current control. It's indeed a special-purpose
>>> device.
>> Yup, I understand you now!
>>>
>>>>>> A quick datasheet browse says that these are current targets? If so I
>>>>>> wonder if we can make that explicit...  Could treat them as 3 output
>>>>>> channels and have indexed values like we do for frequencies in dds
>>>>>> devices (where external hardware is controlling them.
>>>>>
>>>>> I think I like this.
>>>>>
>>>>>> Hmm. lets see.
>>>>>>
>>>>>> out_currentX_currentY_raw
>>>>>> (the double naming is a bit clunky but corresponds to frequency devices
>>>>>> where we have
>>>>>> out_altvoltageX_frequencyY_raw
>>>>>>
>>>>>> Hence we'd treat you 3 mapers as indexed channels 0,1,2 and the zones
>>>>>> as indexed values they can take 0,1,2,3,4
>>>>>> out_currentX_raw is not read only and gives you the current for whichever
>>>>>> zone the device is currently in.
>>>>>
>>>>> I take it you mean "out_currentX_raw is read only".
>>>> yes. I do indeed. oops.
>>>>>
>>>>>> This may seem convoluted but I'd really rather have something generalizable
>>>>>> for this if we possibly can.  We'd still need documentation to say what is
>>>>>> controlling these, but at least they'd fit within our more general abi.
>>>>>>
>>>>>> What do you think?
>>>>>
>>>>> I like it. From a user perspective it's mainly a change of names (and
>>>>> indexes). But conceptually it's perhaps more clear: the als maps it's
>>>>> input to an output current, which, just like a PWM-signal, could be used
>>>>> as an input to the LEDs and backlights to determine their outputs.
>>>>>
>>>>> I'd have to modify the LED and backlight interfaces somewhat to reflect
>>>>> the changed indexes and terminology (e.g. "output channel" rather
>>>>> than "ALS mapper"). Something like:
>>>>>
>>>>> 	als_en		-- enable als input mode (0,1)
>>>>> 	als_channel	-- which out_currentX to use as input (0..2) in
>>>>> 			   als input mode
>>>> Not entirely sure I'm happy with this. Would rather it was done
>>>> on a per channel basis, so in_illuminance0_ *
>>>>   From point of view of sensors I don't really care if it is an als or
>>>> measuring something active (hence inherently not ambient!)
>>>
>>> Not sure I understood that. What is it you don't like about it?  You
>>> need to keep in mind what is actually there; three sets of target
>>> values per zone of which one set is dedicated to the first backlight
>>> device. That means, that the ALS mapper (or channel if we want to
>>> use that terminology) needs to be set in the actual devices and not
>>> the other way round. [ The als_en and als_channel attributes would
>>> belong to the led/backlight devices. ]
>> Ah. THat last bit in brackets is what I'd missed ;)  That's fine with me
>> then.
>
> Suspected that. ;)
>
>>> What did you mean by "per channel basis, so in_illuminance0_ *"?
>>>
>>> Again it's a special purpose device -- the lm3533 leds and backlights
>>> are controlled in hw by the on-chip als interface. We can't just use any
>>> generic iio device for this.
>> sure. Had missunderstood completely.
>>>
>>>> Silly question but how is the out_current related to the input in als
>>>> mode?
>>>
>>> 1. raw adc input is averaged
>>> 2. mean adc input is mapped to zone using zone registers ("thresholds")
>>> 3. zone is mapped to a percentage using ALS mapper registers, that is,
>>>      three sets of 8-bit values per zone. Which set is used can be set on
>>>      a per-device (led, backlight) basis
>>> 4. the percentage is applied to the per-device full-scale current to
>>>      determine the actual output. How this mapping is done depends on if
>>>      linear or exponential mapping mode is set (also per-device).
>>>
>> All makes sense now.  Thanks for the clarification.
>>
>>> [ And things can get even more complicated if the devices are in
>>>     PWM-mode, but this is roughly the full picture. ]
>>>
>>> And all of the above is done in hw.
>>>
>>> So, we're only using out_current channels because it maybe fits iio
>>> better. For anyone familiar with the lm3533 this may even just confuse
>>> things.
>> I'm realy keen to do this primarily because we may well hit similar
>> devices at a later stage and it's much nicer to generalize earlier
>> than go through supporting the old method in parallel for years...
>> What we have here is general enough to support a wide range of possible
>> devices so lets go with it.
>
> Ok.
>
>>> There are only the three tables of values that maps a zone to an output
>>> percentage (e.g. half brightness in zone 2).
>>
>> One last question.  Are the als ->  LEd /backlight mapping something a
>> device user would ever change?  If not the most general option would be
>> to use the iio inkernel mapping interfaces to do the assignments. Gives
>> you a clean easy way to allow reading back of current brightness in the
>> led drivers etc...
>
> Are you referring to the als_channel settings above (i.e., which output
> current is used as device input is ALS mode)? I think that may be the
> case. You could have two sets of brightness values and quickly be able
> to switch from one to another (e.g., for PM reasons).
>
> Wouldn't it be possible to both allow users to change this and to add
> support for iio in-kernel mappings later if needed?
In theory yes.  No core support for dynamically messing with this as
such but not to hard to do.
>
> The mapping has the following constraints by the way:
>
> 	backlight.0	->	out_current0
> 	backlight.1	->	out_current1
> 	led.[0-4]	->	out_current[1-2]
>
> So it would only be possible to change the mapping for the leds and
> only to select between two channels.
>
> Is there anything preventing the led driver acting as IIO consumer to
> set up a map to both channels and then decide which to read from
> depending on als_channel?
hmm. That mapping would need to be at the consumer side I think.
>
>>>>> So to summarise, we get the following new sysfs-entries for the ALS
>>>>> (where the first set replace targetX_Y):
>>>>>
>>>>> 	out_currentX_currentY_raw	r/w, (0..255), X in 0..2, Y in 0..4
>>>>> 	out_currentX_raw		ro (0..255), X in 0..2
>>>>>
>>>>> Is there any support in core for the first set or should I simply
>>>>> rename my target attributes?
>>>> No support in the core yet for this sort of thing..
>>>> Michael, any thoughts on this? In a sense it's very similar to
>>>> out_altvoltageX_frequencyY_raw etc...
>
> Core support could be added later as long as we get the naming right in
> lm3533, right?
>
> I'm really keen to get this one into 3.5 (along with the rest of the
> MFD-driver) and I know Greg usually sends his merge requests early...
> But if I understand you correctly, it should be possible to apply
> lm3533-als v5 now?
Err.  I'll try and have a quick last look shortly.

Jonathan
>
> Thanks,
> Johan


  reply	other threads:[~2012-05-22  9:15 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-20 15:30 [PATCH 0/4] mfd: add LM3533 lighting-power chip driver Johan Hovold
2012-04-20 15:30 ` [PATCH 1/4] mfd: add LM3533 lighting-power core driver Johan Hovold
2012-04-26 12:41   ` Mark Brown
2012-05-03 10:15     ` Johan Hovold
2012-05-03 10:22     ` Johan Hovold
2012-04-20 15:30 ` [PATCH 2/4] misc: add LM3533 ambient light sensor driver Johan Hovold
2012-04-20 15:57   ` Greg Kroah-Hartman
2012-04-20 17:28     ` Johan Hovold
2012-04-20 17:37       ` Greg Kroah-Hartman
2012-04-26 11:52         ` Johan Hovold
2012-04-20 15:30 ` [PATCH 3/4] leds: add LM3533 LED driver Johan Hovold
2012-04-20 16:10   ` Arnd Bergmann
2012-04-20 16:45     ` Johan Hovold
2012-04-20 15:30 ` [PATCH 4/4] backlight: add LM3533 backlight driver Johan Hovold
2012-05-03 10:26 ` [PATCH v2 0/4] mfd: add LM3533 lighting-power chip driver Johan Hovold
2012-05-03 10:26   ` [PATCH v2 1/4] mfd: add LM3533 lighting-power core driver Johan Hovold
2012-05-03 10:38     ` Mark Brown
2012-05-03 11:28       ` Johan Hovold
2012-05-03 11:38         ` Mark Brown
2012-05-03 15:00           ` Johan Hovold
2012-05-03 15:24             ` Mark Brown
2012-05-03 16:54               ` Johan Hovold
2012-05-03 16:57                 ` Mark Brown
2012-05-03 17:14                   ` Johan Hovold
2012-05-03 17:23                     ` Mark Brown
2012-05-03 17:31                       ` Johan Hovold
2012-05-09 14:42     ` Samuel Ortiz
2012-05-10 12:07       ` Johan Hovold
2012-05-10 12:11         ` [PATCH 1/2] mfd: lm3533: add boost frequency and ovp to platform data Johan Hovold
2012-05-10 12:11           ` [PATCH 2/2] mfd: lm3533: remove boost attributes Johan Hovold
2012-05-10 17:18         ` [PATCH 0/2] mfd: lm3533: update max-current interface Johan Hovold
2012-05-10 17:18           ` [PATCH 1/2] mfd: lm3533: remove unused max-current function Johan Hovold
2012-05-10 17:18           ` [PATCH 2/2] mfd: lm3533: use SI-units for max-current interface Johan Hovold
2012-05-11 13:32         ` [PATCH v2 1/4] mfd: add LM3533 lighting-power core driver Samuel Ortiz
2012-05-03 10:26   ` [PATCH v2 2/4] iio: add LM3533 ambient light sensor driver Johan Hovold
2012-05-03 11:40     ` Jonathan Cameron
2012-05-03 16:36       ` Johan Hovold
2012-05-08 13:47         ` Jonathan Cameron
2012-05-15 16:44           ` Johan Hovold
2012-05-15 20:00             ` Jonathan Cameron
2012-05-16 13:05               ` Johan Hovold
2012-05-16 14:21                 ` Jonathan Cameron
2012-05-18 12:27                   ` Johan Hovold
2012-05-18 17:34                     ` Jonathan Cameron
2012-05-18 17:57                       ` Johan Hovold
2012-05-19  8:04                         ` Jonathan Cameron
2012-05-15 16:46     ` [PATCH v3] iio: add LM3533 ambient-light-sensor driver Johan Hovold
2012-05-15 19:27       ` Andrew Morton
2012-05-15 20:00         ` Johan Hovold
2012-05-15 20:16           ` Jonathan Cameron
2012-05-18 13:07       ` [PATCH v4] " Johan Hovold
2012-05-19  8:48         ` Jonathan Cameron
2012-05-19 16:30           ` Johan Hovold
2012-05-19 13:26             ` Jonathan Cameron
2012-05-21  9:50           ` Johan Hovold
2012-05-21 16:37             ` Jonathan Cameron
2012-05-21 22:07               ` Johan Hovold
2012-05-22  7:13                 ` Jonathan Cameron
2012-05-22  9:09                   ` Johan Hovold
2012-05-22  9:15                     ` Jonathan Cameron [this message]
2012-05-22  7:45               ` Michael Hennerich
2012-05-22  7:49                 ` Jonathan Cameron
2012-05-22  8:11                   ` Michael Hennerich
2012-05-22  8:20                     ` Jonathan Cameron
2012-05-21 12:18         ` [PATCH v5] " Johan Hovold
2012-05-22  9:19           ` Jonathan Cameron
2012-05-22  9:40             ` Johan Hovold
2012-05-22 13:55               ` Greg Kroah-Hartman
2012-06-05  4:11               ` Greg Kroah-Hartman
2012-05-03 10:26   ` [PATCH v2 3/4] leds: add LM3533 LED driver Johan Hovold
2012-05-03 10:43     ` Mark Brown
2012-05-03 11:50       ` Johan Hovold
2012-05-03 14:51         ` Mark Brown
2012-05-03 16:46           ` Johan Hovold
2012-05-10 18:27     ` [PATCH v3] " Johan Hovold
2012-05-10 18:48       ` Andrew Morton
2012-05-11  9:54         ` Johan Hovold
2012-05-11 22:24           ` Andrew Morton
2012-05-14 10:25             ` Johan Hovold
2012-05-14 10:31       ` [PATCH v4] " Johan Hovold
2012-05-03 10:26   ` [PATCH v2 4/4] backlight: add LM3533 backlight driver Johan Hovold
2012-05-10 18:29     ` [PATCH v3] " Johan Hovold
2012-05-15 19:13       ` [PATCH v4] " Johan Hovold

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=4FBB5927.30905@cam.ac.uk \
    --to=jic23@cam.ac.uk \
    --cc=FlorianSchandinat@gmx.de \
    --cc=Michael.Hennerich@analog.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jhovold@gmail.com \
    --cc=jic23@kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rob@landley.net \
    --cc=rpurdie@rpsys.net \
    --cc=sameo@linux.intel.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).