lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240928171922.0caccaf3@jic23-huawei>
Date: Sat, 28 Sep 2024 17:19:22 +0100
From: Jonathan Cameron <jic23@...nel.org>
To: Javier Carrasco <javier.carrasco.cruz@...il.com>
Cc: Lars-Peter Clausen <lars@...afoo.de>, Rob Herring <robh@...nel.org>,
 Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley
 <conor+dt@...nel.org>, Rishi Gupta <gupt21@...il.com>,
 linux-iio@...r.kernel.org, devicetree@...r.kernel.org,
 linux-kernel@...r.kernel.org, Jonathan Cameron
 <Jonathan.Cameron@...wei.com>
Subject: Re: [PATCH v2 06/10] iio: light: veml6030: use read_avail() for
 available attributes

On Mon, 23 Sep 2024 00:17:54 +0200
Javier Carrasco <javier.carrasco.cruz@...il.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@...il.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),
>  	},
>  };
>  



Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ