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;
}