
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