diff mbox

media: adv7180: increase delay after reset to 5ms

Message ID 1447162740-28096-1-git-send-email-ulrich.hecht+renesas@gmail.com (mailing list archive)
State Accepted
Delegated to: Geert Uytterhoeven
Headers show

Commit Message

Ulrich Hecht Nov. 10, 2015, 1:39 p.m. UTC
Initialization of the ADV7180 chip fails on the Renesas R8A7790-based
Lager board about 50% of the time.  This patch resolves the issue by
increasing the minimum delay after reset from 2 ms to 5 ms, following the
recommendation in the ADV7180 datasheet:

"Executing a software reset takes approximately 2 ms. However, it is
recommended to wait 5 ms before any further I2C writes are performed."

Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
---
 drivers/media/i2c/adv7180.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Laurent Pinchart Nov. 11, 2015, 11:10 p.m. UTC | #1
Hi Ulrich,

(CC'ing Lars-Peter Clausen)

Thank you for the patch.

On Tuesday 10 November 2015 14:39:00 Ulrich Hecht wrote:
> Initialization of the ADV7180 chip fails on the Renesas R8A7790-based
> Lager board about 50% of the time.  This patch resolves the issue by
> increasing the minimum delay after reset from 2 ms to 5 ms, following the
> recommendation in the ADV7180 datasheet:
> 
> "Executing a software reset takes approximately 2 ms. However, it is
> recommended to wait 5 ms before any further I2C writes are performed."
> 
> Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>

Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Lars, would you like to take this in your tree with other Analog Devices 
patches, or should I take it ?

> ---
>  drivers/media/i2c/adv7180.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
> index f82c8aa..3c3c4bf 100644
> --- a/drivers/media/i2c/adv7180.c
> +++ b/drivers/media/i2c/adv7180.c
> @@ -1112,7 +1112,7 @@ static int init_device(struct adv7180_state *state)
>  	mutex_lock(&state->mutex);
> 
>  	adv7180_write(state, ADV7180_REG_PWR_MAN, ADV7180_PWR_MAN_RES);
> -	usleep_range(2000, 10000);
> +	usleep_range(5000, 10000);
> 
>  	ret = state->chip_info->init(state);
>  	if (ret)
Geert Uytterhoeven Nov. 12, 2015, 10:13 a.m. UTC | #2
On Thu, Nov 12, 2015 at 12:10 AM, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> (CC'ing Lars-Peter Clausen)
>
> Thank you for the patch.
>
> On Tuesday 10 November 2015 14:39:00 Ulrich Hecht wrote:
>> Initialization of the ADV7180 chip fails on the Renesas R8A7790-based
>> Lager board about 50% of the time.  This patch resolves the issue by
>> increasing the minimum delay after reset from 2 ms to 5 ms, following the
>> recommendation in the ADV7180 datasheet:
>>
>> "Executing a software reset takes approximately 2 ms. However, it is
>> recommended to wait 5 ms before any further I2C writes are performed."
>>
>> Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
>
> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
> Lars, would you like to take this in your tree with other Analog Devices
> patches, or should I take it ?

Which tree is this? Should I include it in renesas-drivers?
Does it contain more fixes?

During the s2ram suspend phase, the lockdep_assert_held() in adv7180_write()
is triggered on r8a7791/koelsch.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Lars-Peter Clausen Nov. 12, 2015, 10:21 a.m. UTC | #3
On 11/12/2015 12:10 AM, Laurent Pinchart wrote:
> Hi Ulrich,
> 
> (CC'ing Lars-Peter Clausen)
> 
> Thank you for the patch.
> 
> On Tuesday 10 November 2015 14:39:00 Ulrich Hecht wrote:
>> Initialization of the ADV7180 chip fails on the Renesas R8A7790-based
>> Lager board about 50% of the time.  This patch resolves the issue by
>> increasing the minimum delay after reset from 2 ms to 5 ms, following the
>> recommendation in the ADV7180 datasheet:
>>
>> "Executing a software reset takes approximately 2 ms. However, it is
>> recommended to wait 5 ms before any further I2C writes are performed."
>>
>> Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
> 
> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> 
> Lars, would you like to take this in your tree with other Analog Devices 
> patches, or should I take it ?

I don't have a tree, usually Hans applies the patches directly.

Patch looks good, thanks.

Acked-by: Lars-Peter Clausen <lars@metafoo.de>

> 
>> ---
>>  drivers/media/i2c/adv7180.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
>> index f82c8aa..3c3c4bf 100644
>> --- a/drivers/media/i2c/adv7180.c
>> +++ b/drivers/media/i2c/adv7180.c
>> @@ -1112,7 +1112,7 @@ static int init_device(struct adv7180_state *state)
>>  	mutex_lock(&state->mutex);
>>
>>  	adv7180_write(state, ADV7180_REG_PWR_MAN, ADV7180_PWR_MAN_RES);
>> -	usleep_range(2000, 10000);
>> +	usleep_range(5000, 10000);
>>
>>  	ret = state->chip_info->init(state);
>>  	if (ret)
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
index f82c8aa..3c3c4bf 100644
--- a/drivers/media/i2c/adv7180.c
+++ b/drivers/media/i2c/adv7180.c
@@ -1112,7 +1112,7 @@  static int init_device(struct adv7180_state *state)
 	mutex_lock(&state->mutex);
 
 	adv7180_write(state, ADV7180_REG_PWR_MAN, ADV7180_PWR_MAN_RES);
-	usleep_range(2000, 10000);
+	usleep_range(5000, 10000);
 
 	ret = state->chip_info->init(state);
 	if (ret)