diff options
author | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2022-02-03 09:38:40 +0100 |
---|---|---|
committer | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2022-02-10 09:08:03 +0100 |
commit | 0074c9ecf3fafcceaf8a84d60304153cec7eed68 (patch) | |
tree | 938f6dc4cb0a2f270b401b879c652bb877814abf /bsps/arm/atsam/include/bsp/atsam-i2c.h | |
parent | bsp/atsam/i2c: Simplify driver (diff) | |
download | rtems-0074c9ecf3fafcceaf8a84d60304153cec7eed68.tar.bz2 |
bsp/atsam/i2c: Add error return and fix edge cases
The driver didn't return with an error on (for example) a NACK on the
bus. This adds the expected error return. Due to the new case that a
transfer can be interrupted on an error, there were some new edge cases.
This patch therefore also fixes these edge cases by removing the
transfer_state that more or less duplicated the interrupt states.
Fixes #4592
Diffstat (limited to 'bsps/arm/atsam/include/bsp/atsam-i2c.h')
-rw-r--r-- | bsps/arm/atsam/include/bsp/atsam-i2c.h | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/bsps/arm/atsam/include/bsp/atsam-i2c.h b/bsps/arm/atsam/include/bsp/atsam-i2c.h index 532be1dae5..a6a9c27d48 100644 --- a/bsps/arm/atsam/include/bsp/atsam-i2c.h +++ b/bsps/arm/atsam/include/bsp/atsam-i2c.h @@ -28,14 +28,6 @@ extern "C" { #define TWI_AMOUNT_PINS 2 -typedef enum { - TX_SEND_DATA, - TX_CONT_MESSAGE_NEEDED, - RX_SEND_DATA, - RX_CONT_MESSAGE_NEEDED, - TX_RX_STOP_SENT -}transfer_state; - typedef struct { i2c_bus base; Twihs *regs; @@ -46,10 +38,12 @@ typedef struct { /* Information about the current transfer. */ bool stop_request; - transfer_state trans_state; uint32_t current_msg_todo; uint8_t *current_msg_byte; + /* Error information that can be returned to the task */ + uint32_t err; + uint32_t output_clock; rtems_binary_semaphore sem; rtems_vector_number irq; |