3a70013d4e
- don't set DIR(INPUT) in i2c_wait_for_scl() because it could cause unexpected stop condition in SCL=H, SDL=L and DIR(OUTPUT) case, and DIR() should be used only to switch SDA direction, not SCL that is always output on the master device (I'm not sure if reading SCL on the master is defined in the I2C spec) - set SDA right after SCL H->L edge on Tx, fetch SDA at SCL L->H edge on Rx, and make sure not to change SDA during SCL=H except start/stop conditions so that we don't have to rely on data setup time which might be critical - don't set DIR(OUTPUT) during SDA bit read in i2c_bitbang_read_byte() - explicitly specify both SDA and SCL bits in SETBITS() for readability - sprinkle comments Fixes "tl0: error reading Ethernet address" problem on tl(4). |
||
---|---|---|
.. | ||
adm1030.c | ||
adm1030var.h | ||
adt7463.c | ||
adt7463reg.h | ||
adt7467.c | ||
adt7467var.h | ||
at24cxx.c | ||
at24cxxvar.h | ||
ddc.c | ||
ddcreg.h | ||
ddcvar.h | ||
ds1307.c | ||
ds1307reg.h | ||
files.i2c | ||
i2c_bitbang.c | ||
i2c_bitbang.h | ||
i2c_exec.c | ||
i2c_io.h | ||
i2c.c | ||
i2cvar.h | ||
lm75.c | ||
lm75reg.h | ||
m41st84.c | ||
m41st84reg.h | ||
m41t00.c | ||
m41t00reg.h | ||
max6900.c | ||
max6900reg.h | ||
pcf8583.c | ||
pcf8583reg.h | ||
pcf8583var.h | ||
pic16lc.c | ||
pic16lcreg.h | ||
r2025.c | ||
r2025reg.h | ||
rs5c372.c | ||
rs5c372reg.h | ||
sgsmix.c | ||
sgsmixvar.h | ||
spdmem.c | ||
spdmemreg.h | ||
spdmemvar.h | ||
x1226.c | ||
x1226reg.h | ||
xbseeprom.c |