i2c: add asynchronous write
authorCyprien Laplace <cyprien@cypou.net>
Sat, 17 Jun 2017 14:58:22 +0000 (10:58 -0400)
committerNathael Pajani <nathael.pajani@ed3l.fr>
Tue, 8 Nov 2022 16:03:05 +0000 (17:03 +0100)
commit8cefe33dc08dcaadbfb5d4641094dc7e77202121
tree226f279a4d0098dfbfe06375aaeabac52a93b4f2
parentd94a828f577e56a8062f3f0e23104bbc59f7e500
i2c: add asynchronous write

i2c_read() and i2c_write() are blocking functions, and their comments
have been updated to reflect this.

The new i2c_write_async() function is starting an i2c transfer, and
returns immediatly. All i2c transfer functions will now return -EAGAIN
if there is already a transfer in progress (-EBUSY was conflicting with
arbitration lost).

ssd130x_display_full_screen() has been updated to use this new
asynchronous write to start the transfer of the full screen. All
i2c_write* calls are placed in a retry loop if the call returns -EAGAIN.
drivers/i2c.c
extdrv/ssd130x_oled_driver.c
include/drivers/i2c.h