From 63f13283de0d63c1df37e8ed3a04f943391d40d2 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Sun, 3 Jan 2016 11:59:43 -0600 Subject: [PATCH] Upate TODO list --- TODO | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 43b4954171..84ee69a066 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,4 @@ -NuttX TODO List (Last updated December 23, 2015) +NuttX TODO List (Last updated January 3, 2016) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This file summarizes known NuttX bugs, limitations, inconsistencies with @@ -19,6 +19,7 @@ nuttx/ (6) Binary loaders (binfmt/) (11) Network (net/, drivers/net) (4) USB (drivers/usbdev, drivers/usbhost) + (1) Other drivers (drivers/) (11) Libraries (libc/, libm/) (11) File system/Generic drivers (fs/, drivers/) (8) Graphics subsystem (graphics/) @@ -1608,6 +1609,28 @@ o Build system Status: Open Priority: Low. +o Other drivers (drivers/) + ^^^^^^^^^^^^^^^^^^^^^^^^ + + Title: I2C NOT THREAD SAFE + Description: Unlike the SPI interface, the I2C interface has no method to lock + the interface. This is a problem for all non-atomic I2C operations + in a multi-tasking I2C environment: + - I2C_SETFREQUENCY: Frequency setting can be overwritten by other + I2C usage. + - I2C_SETADDRESS used with I2C_READ, I2C_WRITE, and I2C_WRITEREAD: + Similarly, address can and will be changed by other I2C usage. + - I2C_TRANSFER: This is the only interface that is properly self + contained and protected from most mult-tasking issues. But even + this interface can suffer if there are differing frequency settings. + Status: Open + Priority: Medium-High. The fix is easy but effects a lot of software. There + are two ways to fix theses problems: (1) Add a locking method such + as is provided with the SPI interface, or (2) make each interface + self-contained and atomic: Remove the I2C_FREQUENCY and I2C_ADDRESS + methods; Add frequency to all interfaces and add the address to + I2C_READ, I2C_WRITE, and I2C_WRITEREAD. + o Linux/Cywgin simulation (arch/sim) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^