Re: How to set Current register in IIO driver from sysfs

From: Jonathan Cameron
Date: Wed Jul 20 2016 - 17:42:00 EST

On 11/07/16 10:10, Pratik Prajapati wrote:
> Hi Jonathan,
> Thanks for the answers.
> One more question:
> What are volatile registers?
Volatile registers can change without software interaction.
Things like interrupt status registers, or the output register for
an ADC. Hence they can't be cached.

Writable simply means that their value can be effected by a software
write (not necessarily all of it).

So it's perfectly possible to be both writeable and volatile.

Often what you read from a register has very little resemblance to what
you wrote to it!

> I couldn't understood the difference between volatile and writable
> registers from max44000 driver.
> Best Regards,
> Pratik
> On Sun, Jul 10, 2016 at 8:09 PM, Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
>> On 10/07/16 14:11, Pratik Prajapati wrote:
>>> Including more members.
>>> On Sat, Jul 9, 2016 at 5:22 PM, Pratik Prajapati
>>> <pratik.prajapati12@xxxxxxxxx> wrote:
>>>> Hi,
>> hi Pratik,
>>>> I am trying to add support of adjusting IR led current in vcnl4000
>>>> driver (has IR led current register for doing the same).
>> This is always a bit of a 'rough' corner when it comes to what interface
>> to do it with. Strictly speaking this is typically just a regulator that
>> happens to be used for this special purpose. Sometimes they are tightly
>> tied together with the input and sometime (on devices with more than one)
>> there is no explicit linkage at all.
>> In this particular case we seem to actually have a high frequency modulated
>> LED driver so it's pretty tightly tied to this use.
>>>> Below is what I have done till now:
>>>> 1) Added Current channel in the vcnl4000_channels structure with
>>>> separate mask IIO_CHAN_INFO_RAW
>>>> 2) Reading the LED current register inside IIO_CURRENT case in vcnl4010_read_raw
>>>> 3) Writing to LED current register inside IIO_CURRENT case in vcnl4010_write_raw
>>>> Is this the correct way of setting Current register in IIO subsystem?
>> That's about the best option we currently have. This is exactly how it's done
>> in the max44000 driver for example.
>> It's not an interface anyone is terribly happy with so you are welcome to
>> suggestion alternatives (easy to add them as an additional interface to
>> existing cases - which is why we haven't been that worried about ending up
>> with the current less than ideal interface)
>> The tight coupling in this particular case might justify something more
>> explicitly linked to the proximity channel but as noted above it's not
>> always that obvious (see the health/afe parts for example which are way
>> too flexible in my view!)
>> Jonathan
>>>> Best Regards,
>>>> Pratik Prajapati
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
>>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>>> More majordomo info at
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at