[RESEND PATCH v2] iio: imu: lsm6dsx: Fix mount matrix retrieval

Alejandro Tafalla posted 1 patch 2 years, 7 months ago
There is a newer version of this series
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
[RESEND PATCH v2] iio: imu: lsm6dsx: Fix mount matrix retrieval
Posted by Alejandro Tafalla 2 years, 7 months ago
The function lsm6dsx_get_acpi_mount_matrix should return an error when ACPI
support is not enabled to allow executing iio_read_mount_matrix in the
probe function.

Fixes: dc3d25f22b88 ("iio: imu: lsm6dsx: Add ACPI mount matrix retrieval")

Signed-off-by: Alejandro Tafalla <atafalla@dnyon.com>
---
Changes in v2:
- Use of error codes instead of true/false

 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
index 6a18b363cf73..1a4752c95601 100644
--- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
+++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
@@ -2687,7 +2687,7 @@ static int lsm6dsx_get_acpi_mount_matrix(struct device *dev,
 static int lsm6dsx_get_acpi_mount_matrix(struct device *dev,
 					  struct iio_mount_matrix *orientation)
 {
-	return false;
+	return -EOPNOTSUPP;
 }
 
 #endif
@@ -2767,11 +2767,11 @@ int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
 	}
 
 	err = lsm6dsx_get_acpi_mount_matrix(hw->dev, &hw->orientation);
-	if (err) {
+	if (err == -EOPNOTSUPP)
 		err = iio_read_mount_matrix(hw->dev, &hw->orientation);
-		if (err)
-			return err;
-	}
+
+	if (err)
+		return err;
 
 	for (i = 0; i < ST_LSM6DSX_ID_MAX; i++) {
 		if (!hw->iio_devs[i])
-- 
2.41.0
Re: [RESEND PATCH v2] iio: imu: lsm6dsx: Fix mount matrix retrieval
Posted by Lorenzo Bianconi 2 years, 7 months ago
On Jul 13, Alejandro Tafalla wrote:
> The function lsm6dsx_get_acpi_mount_matrix should return an error when ACPI
> support is not enabled to allow executing iio_read_mount_matrix in the
> probe function.
> 
> Fixes: dc3d25f22b88 ("iio: imu: lsm6dsx: Add ACPI mount matrix retrieval")
> 
> Signed-off-by: Alejandro Tafalla <atafalla@dnyon.com>
> ---
> Changes in v2:
> - Use of error codes instead of true/false
> 
>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
> index 6a18b363cf73..1a4752c95601 100644
> --- a/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
> +++ b/drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
> @@ -2687,7 +2687,7 @@ static int lsm6dsx_get_acpi_mount_matrix(struct device *dev,
>  static int lsm6dsx_get_acpi_mount_matrix(struct device *dev,
>  					  struct iio_mount_matrix *orientation)
>  {
> -	return false;
> +	return -EOPNOTSUPP;
>  }
>  
>  #endif
> @@ -2767,11 +2767,11 @@ int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,
>  	}
>  
>  	err = lsm6dsx_get_acpi_mount_matrix(hw->dev, &hw->orientation);
> -	if (err) {
> +	if (err == -EOPNOTSUPP)

why do you need this extra check? According to the previous codebase, even if
lsm6dsx_get_acpi_mount_matrix() fails we want to fallback to
iio_read_mount_matrix(), right?

Regards,
Lorenzo

>  		err = iio_read_mount_matrix(hw->dev, &hw->orientation);
> -		if (err)
> -			return err;
> -	}
> +
> +	if (err)
> +		return err;
>  
>  	for (i = 0; i < ST_LSM6DSX_ID_MAX; i++) {
>  		if (!hw->iio_devs[i])
> -- 
> 2.41.0
> 
> 
> 
> 
> 
> 
>