[U-Boot] [PATCH] i2c: fix SDA contention in read_byte()

Thomas Chou thomas at wytron.com.tw
Wed Jul 14 03:29:03 CEST 2010


Reinhard Meyer wrote:
> Thomas Chou schrieb:
>> Reinhard Meyer wrote:
>>> Its even simpler, provided the  hardware can do open collector. Here
>>> was my solution for AVR32AP7000:
>>>
>> Then we could add a config for open drain similar to that of linux driver.
>>
>> # ifndef I2C_SDA
>> #  ifdef CONFIG_SOFT_I2C_GPIO_SDA_IS_OPEN_DRAIN
>> #   define I2C_SDA(bit) gpio_set_value(CONFIG_SOFT_I2C_GPIO_SDA, bit)
>> #  else
>> #   define I2C_SDA(bit) \
>>     if (bit) {                        \
>>         gpio_direction_input(CONFIG_SOFT_I2C_GPIO_SDA);    \
>>     } else {                        \
>>         gpio_direction_output(CONFIG_SOFT_I2C_GPIO_SDA, 0);\
>>     }
>> #  endif
>> # endif
> 
> Why would we need that? Since the defines reside in the board/project specific
> include/configs/*.h file, it is well known if the hardware has open drain or
> not.

We want to use common gpio framework and unify the soft i2c access. 
Please see the patches from Mike Frysinger,
[07/05] i2c: soft_i2c: add simple GPIO implementation

> 
>> BTW, will you be interested in using common gpio framework for avr32
>> family?
> 
> No, AVR32AP7000 is dead for me. Working on AT91SAM9xxx now, which already uses gpio framework...
> 

Yet, it is still at91 specific. I mean a common gpio framework like that 
of linux.

- Thomas


More information about the U-Boot mailing list