[U-Boot] [PATCH v3 04/23] i2c: Add TPS6586X driver
Simon Glass
sjg at chromium.org
Tue Apr 10 01:02:09 CEST 2012
+Jimmy, who wrote the original pmu code
Hi Stephen,
On Mon, Apr 9, 2012 at 2:57 PM, Stephen Warren <swarren at wwwdotorg.org> wrote:
> On 04/09/2012 03:25 PM, Simon Glass wrote:
>> Hi Stephen,
>>
>> On Mon, Apr 9, 2012 at 2:01 PM, Stephen Warren <swarren at wwwdotorg.org> wrote:
>>> On 04/02/2012 05:18 PM, Simon Glass wrote:
>>>> This power management chip supports battery charging and a large number
>>>> of power supplies. This initial driver only provides the ability to adjust
>>>> the two synchronous buck converters SM0 and SM1 in a stepwise manner.
>>>>
>>>> Signed-off-by: Simon Glass <sjg at chromium.org>
>>>
>>>> +#define MAX_I2C_RETRY 3
>>>> +int tps6586x_read(int reg)
>>> ...
>>>> + for (i = 0; i < MAX_I2C_RETRY; ++i) {
>>>> + if (!i2c_read(I2C_ADDRESS, reg, 1, &data, 1)) {
>>>> + retval = (int)data;
>>>> + goto exit;
>>>> + }
>>>> +
>>>> + /* i2c access failed, retry */
>>>> + udelay(100);
>>>> + }
>>>
>>> Why do we need this retry logic; the kernel driver doesn't appear to
>>> have this.
>>
>> We apparently have found the device to be flaky on i2c sometimes,
>> which is why this is here.
>
> Is it the device itself, or bad board layout/...? Do we need something
> similar in the kernel?
I am not sure - Jimmy do you know?
>
> In general though, if we're having problems communicating with the PMIC,
> we're pretty screwed; how do we know whether failed transactions simply
> fail (e.g. no ACK), or send bogus data to the PMIC (e.g. set some random
> register so that something gets programmed to be over-voltage)? A better
> solution might be a full system reset when you fail to communicate with
> the PMIC.
I believe the problem is that there is no ACK - it would be pretty bad
if it ACKed but didn't work :-)
Regards,
Simon
More information about the U-Boot
mailing list