I2C driver cleanup (#21273)

* remove i2c_start and i2c_stop from i2c drivers

* remove static i2c_address variable from chibios i2c driver
This commit is contained in:
David Hoelscher 2024-01-17 07:05:38 -06:00 committed by GitHub
parent 2b0965944d
commit e9bd7d7ad3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
49 changed files with 280 additions and 603 deletions

View file

@ -5,8 +5,8 @@
bool i2c_initialized = false;
void left_config(void);
uint8_t left_write(uint8_t reg, uint8_t data);
uint8_t left_read(uint8_t reg, uint8_t *data);
i2c_status_t left_write(uint8_t reg, uint8_t data);
i2c_status_t left_read(uint8_t reg, uint8_t *data);
uint8_t init_mcp23017(void)
{
@ -35,12 +35,11 @@ void left_init(void)
void left_scan(void)
{
uint8_t ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT);
i2c_status_t ret = i2c_ping_address(I2C_ADDR, HOTDOX_I2C_TIMEOUT);
if (ret == 0)
if (ret == I2C_STATUS_SUCCESS)
{
i2c_stop();
if (!i2c_initialized)
{
i2c_initialized = true;
@ -91,40 +90,29 @@ void left_config(void)
left_write(MCP23017_B0_GPIOB, 0xC0);
}
uint8_t left_write(uint8_t reg, uint8_t data)
i2c_status_t left_write(uint8_t reg, uint8_t data)
{
if (!i2c_initialized)
{
return 0;
}
uint8_t ret;
i2c_status_t ret;
ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
ret = i2c_write(reg, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
ret = i2c_write(data, HOTDOX_I2C_TIMEOUT);
ret = i2c_writeReg(I2C_ADDR, reg, &data, sizeof(data), HOTDOX_I2C_TIMEOUT);
out:
i2c_stop();
return ret;
}
uint8_t left_read(uint8_t reg, uint8_t *data)
i2c_status_t left_read(uint8_t reg, uint8_t *data)
{
if (!i2c_initialized)
{
return 0;
}
uint8_t ret = 0;
i2c_status_t ret = 0;
ret = i2c_readReg(I2C_ADDR, reg, data, 1, HOTDOX_I2C_TIMEOUT);
ret = i2c_start(I2C_ADDR_WRITE, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
ret = i2c_write(reg, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
ret = i2c_start(I2C_ADDR_READ, HOTDOX_I2C_TIMEOUT); if (ret) goto out;
*data = i2c_read_nack(HOTDOX_I2C_TIMEOUT);
out:
i2c_stop();
return ret;
}

View file

@ -10,10 +10,7 @@
#define MCP23017_A1 0
#define MCP23017_A2 0
#define I2C_ADDR (0x20)
#define I2C_ADDR_WRITE ((I2C_ADDR << 1) | I2C_WRITE)
#define I2C_ADDR_READ ((I2C_ADDR << 1) | I2C_READ)
#define I2C_ADDR ((0x20) << 1)
#define MCP23017_B0_IODIRA 0x00
#define MCP23017_B0_IODIRB 0x01
@ -40,8 +37,6 @@
#define HOTDOX_I2C_TIMEOUT 100
typedef int16_t i2c_status_t;
void left_init(void);
void left_scan(void);