summaryrefslogtreecommitdiffstats
path: root/bsps/arm/atsam/include/bsp/atsam-i2c.h
diff options
context:
space:
mode:
authorChristian Mauderer <christian.mauderer@embedded-brains.de>2022-02-03 09:38:40 +0100
committerChristian Mauderer <christian.mauderer@embedded-brains.de>2022-02-10 09:08:03 +0100
commit0074c9ecf3fafcceaf8a84d60304153cec7eed68 (patch)
tree938f6dc4cb0a2f270b401b879c652bb877814abf /bsps/arm/atsam/include/bsp/atsam-i2c.h
parentbsp/atsam/i2c: Simplify driver (diff)
downloadrtems-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.h12
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;