Re: [PATCH v5 1/4] media: i2c: imx412: Fix reset GPIO polarity

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Bryan,

On Fri, 2022-04-15 at 12:59 +0100, Bryan O'Donoghue wrote:
> The imx412/imx577 sensor has a reset line that is active low not active
> high. Currently the logic for this is inverted.
> 
> The right way to define the reset line is to declare it active low in the
> DTS and invert the logic currently contained in the driver.
> 
> The DTS should represent the hardware does i.e. reset is active low.
> So:
> +               reset-gpios = <&tlmm 78 GPIO_ACTIVE_LOW>;
> not:
> -               reset-gpios = <&tlmm 78 GPIO_ACTIVE_HIGH>;
> 
> I was a bit reticent about changing this logic since I thought it might
> negatively impact @intel.com users. Googling a bit though I believe this
> sensor is used on "Keem Bay" which is clearly a DTS based system and is not
> upstream yet.

Thanks for the fix and sorry for the late reply (I've been off for the
last 2 weeks).

The fix looks good to me and it will not negatively affect us (I
appreciate the consideration!).

Reviewed-by: Daniele Alessandrelli <daniele.alessandrelli@xxxxxxxxx>

> 
> Fixes: 9214e86c0cc1 ("media: i2c: Add imx412 camera sensor driver")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>
> ---
>  drivers/media/i2c/imx412.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/media/i2c/imx412.c b/drivers/media/i2c/imx412.c
> index be3f6ea55559..e6be6b4250f5 100644
> --- a/drivers/media/i2c/imx412.c
> +++ b/drivers/media/i2c/imx412.c
> @@ -1011,7 +1011,7 @@ static int imx412_power_on(struct device *dev)
>         struct imx412 *imx412 = to_imx412(sd);
>         int ret;
>  
> -       gpiod_set_value_cansleep(imx412->reset_gpio, 1);
> +       gpiod_set_value_cansleep(imx412->reset_gpio, 0);
>  
>         ret = clk_prepare_enable(imx412->inclk);
>         if (ret) {
> @@ -1024,7 +1024,7 @@ static int imx412_power_on(struct device *dev)
>         return 0;
>  
>  error_reset:
> -       gpiod_set_value_cansleep(imx412->reset_gpio, 0);
> +       gpiod_set_value_cansleep(imx412->reset_gpio, 1);
>  
>         return ret;
>  }
> @@ -1040,7 +1040,7 @@ static int imx412_power_off(struct device *dev)
>         struct v4l2_subdev *sd = dev_get_drvdata(dev);
>         struct imx412 *imx412 = to_imx412(sd);
>  
> -       gpiod_set_value_cansleep(imx412->reset_gpio, 0);
> +       gpiod_set_value_cansleep(imx412->reset_gpio, 1);
>  
>         clk_disable_unprepare(imx412->inclk);
>  





[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux