o Support for transfers > 32 bytes
o Fix slave address setting
Details
Details
- Reviewers
manu mmel - Group Reviewers
arm64 - Commits
- rG38e7025a60b2: o Fix i2c read operation for large transfers (more than 32 bytes).
Diff Detail
Diff Detail
- Lint
Lint Skipped - Unit
Tests Skipped
Event Timeline
sys/arm64/rockchip/rk_i2c.c | ||
---|---|---|
535 | Mhm, that should be | LSB I think. |
sys/arm64/rockchip/rk_i2c.c | ||
---|---|---|
535 | yes, but does not matter, since controller sets this bit internally depending on mode |
sys/arm64/rockchip/rk_i2c.c | ||
---|---|---|
363 | That will not work if the transfer is not for a multiple of 32. |
sys/arm64/rockchip/rk_i2c.c | ||
---|---|---|
363 | why? |
sys/arm64/rockchip/rk_i2c.c | ||
---|---|---|
363 | If I understand correctly if you try to do a transfer with a len of 48 bytes the first 32 bytes will be transmitted first (as it's the max length that this controller can support) but on the second transfer instead of setting TXCOUNT to 16 we will set it to 32 as you check sc->msg->len and not taking into account what have been transmitted already. |
Comment Actions
o Consider amount of bytes already transferred
o Add a small delay (not sure why it is needed, maybe another bug)
sys/arm64/rockchip/rk_i2c.c | ||
---|---|---|
363 | You are right, thanks! |