Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 19 additions & 18 deletions os/hal/lib/fallback/I2C/hal_i2c_lld.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,17 +95,10 @@ static inline void i2c_delay(I2CDriver *i2cp) {
}

static inline msg_t i2c_check_arbitration(I2CDriver *i2cp) {
#if (SW_I2C_USE_OPENDRAIN == FALSE)
palSetLineMode(i2cp->config->sda, PAL_MODE_INPUT);
#endif
i2c_delay(i2cp);
if (palReadLine(i2cp->config->sda) == PAL_LOW) {
i2cp->errors |= I2C_ARBITRATION_LOST;
return MSG_RESET;
}
#if (SW_I2C_USE_OPENDRAIN == FALSE)
palSetLineMode(i2cp->config->sda, PAL_MODE_OUTPUT_PUSHPULL);
#endif
return MSG_OK;
}

Expand All @@ -121,9 +114,6 @@ static inline msg_t i2c_check_timeout(I2CDriver *i2cp) {
}

static msg_t i2c_wait_clock(I2CDriver *i2cp) {
#if (SW_I2C_USE_OPENDRAIN == FALSE)
palSetLineMode(i2cp->config->scl, PAL_MODE_INPUT);
#endif
i2c_delay(i2cp);

while (palReadLine(i2cp->config->scl) == PAL_LOW) {
Expand All @@ -133,9 +123,6 @@ static msg_t i2c_wait_clock(I2CDriver *i2cp) {
}
i2c_delay(i2cp);
}
#if (SW_I2C_USE_OPENDRAIN == FALSE)
palSetLineMode(i2cp->config->scl, PAL_MODE_OUTPUT_PUSHPULL);
#endif
return MSG_OK;
}

Expand Down Expand Up @@ -213,7 +200,9 @@ static msg_t i2c_write_bit(I2CDriver *i2cp, unsigned bit) {
static msg_t i2c_read_bit(I2CDriver *i2cp) {
msg_t bit;
#if (SW_I2C_USE_OPENDRAIN == FALSE)
palSetLineMode(i2cp->config->sda, PAL_MODE_INPUT);
palSetLineMode(i2cp->config->sda, PAL_MODE_INPUT_PULLUP);
#else
palSetLine(i2cp->config->sda);
#endif
i2c_delay(i2cp);
palSetLine(i2cp->config->scl);
Expand All @@ -225,10 +214,12 @@ static msg_t i2c_read_bit(I2CDriver *i2cp) {

bit = palReadLine(i2cp->config->sda);
#if (SW_I2C_USE_OPENDRAIN == FALSE)
palClearLine(i2cp->config->scl);
palClearLine(i2cp->config->sda); /* Pre-set output register low */
palSetLineMode(i2cp->config->sda, PAL_MODE_OUTPUT_PUSHPULL);
#endif
#else
palClearLine(i2cp->config->scl);
i2c_delay(i2cp);
#endif

return bit;
}
Expand Down Expand Up @@ -347,8 +338,18 @@ void i2c_lld_init(void) {
*/
void i2c_lld_start(I2CDriver *i2cp) {

/* Does nothing.*/
(void)i2cp;
#if (SW_I2C_USE_OPENDRAIN == FALSE)
/* Push-pull mode with INPUT switching */
palSetLine(i2cp->config->sda);
palSetLine(i2cp->config->scl);
palSetLineMode(i2cp->config->sda, PAL_MODE_OUTPUT_PUSHPULL);
palSetLineMode(i2cp->config->scl, PAL_MODE_OUTPUT_PUSHPULL);
#else
palSetLine(i2cp->config->sda);
palSetLine(i2cp->config->scl);
palSetLineMode(i2cp->config->sda, PAL_MODE_OUTPUT_OPENDRAIN);
palSetLineMode(i2cp->config->scl, PAL_MODE_OUTPUT_OPENDRAIN);
#endif
}

/**
Expand Down
6 changes: 3 additions & 3 deletions os/hal/ports/GD/GD32VF103/I2Cv1/driver.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ ifeq ($(USE_HAL_I2C_FALLBACK),yes)
# Fallback SW driver.
ifeq ($(USE_SMART_BUILD),yes)
ifneq ($(findstring HAL_USE_I2C TRUE,$(HALCONF)),)
PLATFORMSRC_CONTRIB += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC_CONTRIB += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
else
PLATFORMSRC_CONTRIB += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC_CONTRIB += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
PLATFORMINC_CONTRIB += $(CHIBIOS)/os/hal/lib/fallback/I2C
PLATFORMINC_CONTRIB += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C
else
# Default HW driver.
ifeq ($(USE_SMART_BUILD),yes)
Expand Down
6 changes: 3 additions & 3 deletions os/hal/ports/KINETIS/LLD/I2Cv1/driver.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ ifeq ($(USE_HAL_I2C_FALLBACK),yes)
# Fallback SW driver.
ifeq ($(USE_SMART_BUILD),yes)
ifneq ($(findstring HAL_USE_I2C TRUE,$(HALCONF)),)
PLATFORMSRC_CONTRIB += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC_CONTRIB += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
else
PLATFORMSRC_CONTRIB += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC_CONTRIB += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
PLATFORMINC_CONTRIB += $(CHIBIOS)/os/hal/lib/fallback/I2C
PLATFORMINC_CONTRIB += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C
else
ifeq ($(USE_SMART_BUILD),yes)
ifneq ($(findstring HAL_USE_I2C TRUE,$(HALCONF)),)
Expand Down
6 changes: 3 additions & 3 deletions os/hal/ports/NUMICRO/LLD/I2Cv1/driver.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ ifeq ($(USE_HAL_I2C_FALLBACK),yes)
# Fallback SW driver.
ifeq ($(USE_SMART_BUILD),yes)
ifneq ($(findstring HAL_USE_I2C TRUE,$(HALCONF)),)
PLATFORMSRC += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
else
PLATFORMSRC += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
PLATFORMINC += $(CHIBIOS)/os/hal/lib/fallback/I2C
PLATFORMINC += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C
else
ifeq ($(USE_SMART_BUILD),yes)
ifneq ($(findstring HAL_USE_I2C TRUE,$(HALCONF)),)
Expand Down
6 changes: 3 additions & 3 deletions os/hal/ports/RP/LLD/I2Cv1/driver.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ ifeq ($(USE_HAL_I2C_FALLBACK),yes)
# Fallback SW driver.
ifeq ($(USE_SMART_BUILD),yes)
ifneq ($(findstring HAL_USE_I2C TRUE,$(HALCONF)),)
PLATFORMSRC += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
else
PLATFORMSRC += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
PLATFORMINC += $(CHIBIOS)/os/hal/lib/fallback/I2C
PLATFORMINC += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C
else
ifeq ($(USE_SMART_BUILD),yes)
ifneq ($(findstring HAL_USE_I2C TRUE,$(HALCONF)),)
Expand Down
6 changes: 3 additions & 3 deletions os/hal/ports/TIVA/LLD/I2C/driver.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ ifeq ($(USE_HAL_I2C_FALLBACK),yes)
# Fallback SW driver.
ifeq ($(USE_SMART_BUILD),yes)
ifneq ($(findstring HAL_USE_I2C TRUE,$(HALCONF)),)
PLATFORMSRC += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
else
PLATFORMSRC += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
PLATFORMINC += $(CHIBIOS)/os/hal/lib/fallback/I2C
PLATFORMINC += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C
else
ifeq ($(USE_SMART_BUILD),yes)
ifneq ($(findstring HAL_USE_I2C TRUE,$(HALCONF)),)
Expand Down
6 changes: 3 additions & 3 deletions os/hal/ports/WB32/LLD/I2Cv1/driver.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ ifeq ($(USE_HAL_I2C_FALLBACK),yes)
# Fallback SW driver.
ifeq ($(USE_SMART_BUILD),yes)
ifneq ($(findstring HAL_USE_I2C TRUE,$(HALCONF)),)
PLATFORMSRC_CONTRIB += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC_CONTRIB += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
else
PLATFORMSRC_CONTRIB += $(CHIBIOS)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
PLATFORMSRC_CONTRIB += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C/hal_i2c_lld.c
endif
PLATFORMINC_CONTRIB += $(CHIBIOS)/os/hal/lib/fallback/I2C
PLATFORMINC_CONTRIB += $(CHIBIOS_CONTRIB)/os/hal/lib/fallback/I2C
else
# Default HW driver.
ifeq ($(USE_SMART_BUILD),yes)
Expand Down
Loading