devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Javier Carrasco <javier.carrasco.cruz@gmail.com>
To: Jonathan Cameron <jic23@kernel.org>
Cc: Lars-Peter Clausen <lars@metafoo.de>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Rishi Gupta <gupt21@gmail.com>,
	linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>
Subject: Re: [PATCH v2 06/10] iio: light: veml6030: use read_avail() for available attributes
Date: Sun, 29 Sep 2024 20:45:40 +0200	[thread overview]
Message-ID: <b4a72e65-b8b0-41da-ac6e-372371f3943a@gmail.com> (raw)
In-Reply-To: <20240928171922.0caccaf3@jic23-huawei>

On 28/09/2024 18:19, Jonathan Cameron wrote:
> On Mon, 23 Sep 2024 00:17:54 +0200
> Javier Carrasco <javier.carrasco.cruz@gmail.com> wrote:
> 
>> Drop custom attributes by using the standard read_avail() callback to
>> read scale and integration time. When at it, define these attributes as
>> available by all channels, as they affect the values of both the ALS and
>> the WHITE channel.
>>
>> Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
> Hi Javier
> 
> Some comments inline
> 
> Thanks,
> 
> Jonathan
> 
>> ---
>>  drivers/iio/light/veml6030.c | 64 +++++++++++++++++++++++++++++++-------------
>>  1 file changed, 45 insertions(+), 19 deletions(-)
>>
>> diff --git a/drivers/iio/light/veml6030.c b/drivers/iio/light/veml6030.c
>> index 89c98bfc5191..a3190fab3add 100644
>> --- a/drivers/iio/light/veml6030.c
>> +++ b/drivers/iio/light/veml6030.c
>> @@ -58,25 +58,24 @@ struct veml6030_data {
>>  	int cur_integration_time;
>>  };
>>  
>> -/* Integration time available in seconds */
>> -static IIO_CONST_ATTR(in_illuminance_integration_time_available,
>> -				"0.025 0.05 0.1 0.2 0.4 0.8");
>> +static const int veml6030_it_times[][2] = {
>> +	{0, 25000},
> Really minor but I'm trying to get IIO standardized on formatting for this
> sort of array and I'd like not to introduce more instances of it
> done without the extra spaces as it will just give more to clean up
> at some point.
> 
> 	{ 0, 25000 },
> etc please.
>> +	{0, 50000},
>> +	{0, 100000},
>> +	{0, 200000},
>> +	{0, 400000},
>> +	{0, 800000},
>> +};
>>  
>>  /*
>>   * Scale is 1/gain. Value 0.125 is ALS gain x (1/8), 0.25 is
>>   * ALS gain x (1/4), 1.0 = ALS gain x 1 and 2.0 is ALS gain x 2.
>>   */
>> -static IIO_CONST_ATTR(in_illuminance_scale_available,
>> -				"0.125 0.25 1.0 2.0");
>> -
>> -static struct attribute *veml6030_attributes[] = {
>> -	&iio_const_attr_in_illuminance_integration_time_available.dev_attr.attr,
>> -	&iio_const_attr_in_illuminance_scale_available.dev_attr.attr,
>> -	NULL
>> -};
>> -
>> -static const struct attribute_group veml6030_attr_group = {
>> -	.attrs = veml6030_attributes,
>> +static const int veml6030_scale_vals[][2] = {
>> +	{0, 125000},
>> +	{0, 250000},
>> +	{1, 0},
>> +	{2, 0},
> 
> As above, add some spaces for minor readability improvement.
> 
>>  };
>>  
>>  /*
>> @@ -197,9 +196,11 @@ static const struct iio_chan_spec veml6030_channels[] = {
>>  		.type = IIO_LIGHT,
>>  		.channel = CH_ALS,
>>  		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |
>> -				BIT(IIO_CHAN_INFO_PROCESSED) |
>> -				BIT(IIO_CHAN_INFO_INT_TIME) |
>> -				BIT(IIO_CHAN_INFO_SCALE),
>> +				BIT(IIO_CHAN_INFO_PROCESSED),
>> +		.info_mask_shared_by_all = BIT(IIO_CHAN_INFO_INT_TIME) |
>> +					       BIT(IIO_CHAN_INFO_SCALE),
> This bit is an ABI change and technically old code wasn't a bug, so
> we don't really have a good enough reason to change it.  So Please
> leave these as separate.
> 
>> +		.info_mask_shared_by_all_available = BIT(IIO_CHAN_INFO_INT_TIME) |
>> +						     BIT(IIO_CHAN_INFO_SCALE),
> That doesn't stop us sharing the available as that always was shared
> in the attribute naming above.
> 
>>  		.event_spec = veml6030_event_spec,
>>  		.num_event_specs = ARRAY_SIZE(veml6030_event_spec),
>>  	},
>> @@ -210,6 +211,10 @@ static const struct iio_chan_spec veml6030_channels[] = {
>>  		.channel2 = IIO_MOD_LIGHT_BOTH,
>>  		.info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |
>>  				BIT(IIO_CHAN_INFO_PROCESSED),
>> +		.info_mask_shared_by_all = BIT(IIO_CHAN_INFO_INT_TIME) |
>> +					       BIT(IIO_CHAN_INFO_SCALE),
> This confuses me.  Is it fixing a bug by effectively adding attributes for this
> channel that were previously missing? If so we'll have to go with searpte
> even though they are shared to avoid breaking the ABI for other channel.
> 
>> +		.info_mask_shared_by_all_available = BIT(IIO_CHAN_INFO_INT_TIME) |
>> +						     BIT(IIO_CHAN_INFO_SCALE),
>>  	},
>>  };
>>  
> 
> 

This confused me as well, because even though the attributes where
defined as separate for the ALS channel, modifying their values affected
the values from the WHITE channel.

The integration time and the scale affect both channels, and therefore I
thought they should be shared attributes. But in that case, and to avoid
breaking the ABI for the other channel, I will make them separate even
though writing to one of them will change the value of the other as well.

Thanks and best regards,
Javier Carrasco


  reply	other threads:[~2024-09-29 18:45 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-22 22:17 [PATCH v2 00/10] iio: light: veml6030: fix issues and add support for veml6035 Javier Carrasco
2024-09-22 22:17 ` [PATCH v2 01/10] iio: light: veml6030: fix ALS sensor resolution Javier Carrasco
2024-09-28 16:12   ` Jonathan Cameron
2024-09-22 22:17 ` [PATCH v2 02/10] iio: light: veml6030: add set up delay after any power on sequence Javier Carrasco
2024-09-28 16:13   ` Jonathan Cameron
2024-09-22 22:17 ` [PATCH v2 03/10] iio: light: veml6030: use dev_err_probe() Javier Carrasco
2024-09-22 22:17 ` [PATCH v2 04/10] dt-bindings: iio: light: veml6030: add vdd-supply property Javier Carrasco
2024-09-24 10:06   ` Krzysztof Kozlowski
2024-09-27 18:02     ` Javier Carrasco
2024-09-22 22:17 ` [PATCH v2 05/10] iio: light: veml6030: add support for a regulator Javier Carrasco
2024-09-22 22:17 ` [PATCH v2 06/10] iio: light: veml6030: use read_avail() for available attributes Javier Carrasco
2024-09-28 16:19   ` Jonathan Cameron
2024-09-29 18:45     ` Javier Carrasco [this message]
2024-09-30  8:45       ` Jonathan Cameron
2024-09-22 22:17 ` [PATCH v2 07/10] iio: light: veml6030: drop processed info for white channel Javier Carrasco
2024-09-28 16:20   ` Jonathan Cameron
2024-09-22 22:17 ` [PATCH v2 08/10] iio: light: veml6030: power off device in probe error paths Javier Carrasco
2024-09-28 16:22   ` Jonathan Cameron
2024-09-22 22:17 ` [PATCH v2 09/10] dt-bindings: iio: light: veml6030: add veml6035 Javier Carrasco
2024-09-22 22:17 ` [PATCH v2 10/10] iio: light: veml6030: add support for veml6035 Javier Carrasco
2024-09-28 16:25   ` Jonathan Cameron

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=b4a72e65-b8b0-41da-ac6e-372371f3943a@gmail.com \
    --to=javier.carrasco.cruz@gmail.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gupt21@gmail.com \
    --cc=jic23@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh@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 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).