2018-05-06 08:03:30

by Pavel Machek

[permalink] [raw]
Subject: [PATCH] media: i2c: lm3560: use conservative defaults


If no pdata is found, we should use lowest current settings, not highest.

Signed-off-by: Pavel Machek <[email protected]>

diff --git a/drivers/media/i2c/lm3560.c b/drivers/media/i2c/lm3560.c
index b600e03a..c4e5ed5 100644
--- a/drivers/media/i2c/lm3560.c
+++ b/drivers/media/i2c/lm3560.c
@@ -420,14 +434,14 @@ static int lm3560_probe(struct i2c_client *client,
pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
if (pdata == NULL)
return -ENODEV;
- pdata->peak = LM3560_PEAK_3600mA;
- pdata->max_flash_timeout = LM3560_FLASH_TOUT_MAX;
+ pdata->peak = LM3560_PEAK_1600mA;
+ pdata->max_flash_timeout = LM3560_FLASH_TOUT_MIN;
/* led 1 */
- pdata->max_flash_brt[LM3560_LED0] = LM3560_FLASH_BRT_MAX;
- pdata->max_torch_brt[LM3560_LED0] = LM3560_TORCH_BRT_MAX;
+ pdata->max_flash_brt[LM3560_LED0] = LM3560_FLASH_BRT_MIN;
+ pdata->max_torch_brt[LM3560_LED0] = LM3560_TORCH_BRT_MIN;
/* led 2 */
- pdata->max_flash_brt[LM3560_LED1] = LM3560_FLASH_BRT_MAX;
- pdata->max_torch_brt[LM3560_LED1] = LM3560_TORCH_BRT_MAX;
+ pdata->max_flash_brt[LM3560_LED1] = LM3560_FLASH_BRT_MIN;
+ pdata->max_torch_brt[LM3560_LED1] = LM3560_TORCH_BRT_MIN;
}
flash->pdata = pdata;
flash->dev = &client->dev;

--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html


Attachments:
(No filename) (1.36 kB)
signature.asc (188.00 B)
Digital signature
Download all attachments

2018-07-16 09:09:13

by Pavel Machek

[permalink] [raw]
Subject: [PATCH v2] media: i2c: lm3560: use conservative defaults

If no pdata is found, we should use lowest current settings, not highest.

Signed-off-by: Pavel Machek <[email protected]>

---

v2: I got notification from patchwork that patch no longer applies, so
I'm rediffing the patch.

diff --git a/drivers/media/i2c/lm3560.c b/drivers/media/i2c/lm3560.c
index b600e03a..c4e5ed5 100644
--- a/drivers/media/i2c/lm3560.c
+++ b/drivers/media/i2c/lm3560.c
@@ -420,14 +434,14 @@ static int lm3560_probe(struct i2c_client *client,
pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
if (pdata == NULL)
return -ENODEV;
- pdata->peak = LM3560_PEAK_3600mA;
- pdata->max_flash_timeout = LM3560_FLASH_TOUT_MAX;
+ pdata->peak = LM3560_PEAK_1600mA;
+ pdata->max_flash_timeout = LM3560_FLASH_TOUT_MIN;
/* led 1 */
- pdata->max_flash_brt[LM3560_LED0] = LM3560_FLASH_BRT_MAX;
- pdata->max_torch_brt[LM3560_LED0] = LM3560_TORCH_BRT_MAX;
+ pdata->max_flash_brt[LM3560_LED0] = LM3560_FLASH_BRT_MIN;
+ pdata->max_torch_brt[LM3560_LED0] = LM3560_TORCH_BRT_MIN;
/* led 2 */
- pdata->max_flash_brt[LM3560_LED1] = LM3560_FLASH_BRT_MAX;
- pdata->max_torch_brt[LM3560_LED1] = LM3560_TORCH_BRT_MAX;
+ pdata->max_flash_brt[LM3560_LED1] = LM3560_FLASH_BRT_MIN;
+ pdata->max_torch_brt[LM3560_LED1] = LM3560_TORCH_BRT_MIN;
}
flash->pdata = pdata;
flash->dev = &client->dev;



--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html


Attachments:
(No filename) (1.47 kB)
signature.asc (188.00 B)
Digital signature
Download all attachments

2018-08-11 06:12:16

by Daniel Jeong

[permalink] [raw]
Subject: Re: [PATCH v2] media: i2c: lm3560: use conservative defaults

Hi Pavel,

I think if there is not exist pdata, it should be set to the value of power on reset (POR) to sync with the chip.

According to the LM3560 datasheet, Flash Timeout is 512ms, Flash current is 875mA and Torch Current is 93.75mA.

Daniel Jeong.

On 07/016/2018 18:08 PM, Pavel Machek wrote:

> If no pdata is found, we should use lowest current settings, not highest.
>
> Signed-off-by: Pavel Machek <[email protected]>
>
> ---
>
> v2: I got notification from patchwork that patch no longer applies, so
> I'm rediffing the patch.
>
> diff --git a/drivers/media/i2c/lm3560.c b/drivers/media/i2c/lm3560.c
> index b600e03a..c4e5ed5 100644
> --- a/drivers/media/i2c/lm3560.c
> +++ b/drivers/media/i2c/lm3560.c
> @@ -420,14 +434,14 @@ static int lm3560_probe(struct i2c_client *client,
> pdata = devm_kzalloc(&client->dev, sizeof(*pdata), GFP_KERNEL);
> if (pdata == NULL)
> return -ENODEV;
> - pdata->peak = LM3560_PEAK_3600mA;
> - pdata->max_flash_timeout = LM3560_FLASH_TOUT_MAX;
> + pdata->peak = LM3560_PEAK_1600mA;
> + pdata->max_flash_timeout = LM3560_FLASH_TOUT_MIN;
> /* led 1 */
> - pdata->max_flash_brt[LM3560_LED0] = LM3560_FLASH_BRT_MAX;
> - pdata->max_torch_brt[LM3560_LED0] = LM3560_TORCH_BRT_MAX;
> + pdata->max_flash_brt[LM3560_LED0] = LM3560_FLASH_BRT_MIN;
> + pdata->max_torch_brt[LM3560_LED0] = LM3560_TORCH_BRT_MIN;
> /* led 2 */
> - pdata->max_flash_brt[LM3560_LED1] = LM3560_FLASH_BRT_MAX;
> - pdata->max_torch_brt[LM3560_LED1] = LM3560_TORCH_BRT_MAX;
> + pdata->max_flash_brt[LM3560_LED1] = LM3560_FLASH_BRT_MIN;
> + pdata->max_torch_brt[LM3560_LED1] = LM3560_TORCH_BRT_MIN;
> }
> flash->pdata = pdata;
> flash->dev = &client->dev;
>
>
>


2018-08-11 09:45:07

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v2] media: i2c: lm3560: use conservative defaults

On Sat, Aug 11, 2018 at 9:10 AM, Daniel Jeong <[email protected]> wrote:
> Hi Pavel,
>
> I think if there is not exist pdata, it should be set to the value of power
> on reset (POR) to sync with the chip.
>
> According to the LM3560 datasheet, Flash Timeout is 512ms, Flash current is
> 875mA and Torch Current is 93.75mA.

Can't we simple read back?

--
With Best Regards,
Andy Shevchenko