cambus: Support 16-bit register address.

This commit is contained in:
Kwabena W. Agyeman 2018-04-14 20:03:37 -04:00 committed by iabdalkader
parent 25d23f113d
commit 420d7f7eeb
2 changed files with 28 additions and 0 deletions

View File

@ -105,3 +105,29 @@ int cambus_writew(uint8_t slv_addr, uint8_t reg_addr, uint16_t reg_data)
__enable_irq(); __enable_irq();
return ret; return ret;
} }
int cambus_readw2(uint8_t slv_addr, uint16_t reg_addr, uint16_t *reg_data)
{
int ret=0;
__disable_irq();
if (HAL_I2C_Mem_Read(&I2CHandle, slv_addr, reg_addr,
I2C_MEMADD_SIZE_16BIT, (uint8_t*) reg_data, 2, I2C_TIMEOUT) != HAL_OK) {
ret = -1;
}
__enable_irq();
*reg_data = (*reg_data >> 8) | (*reg_data << 8);
return ret;
}
int cambus_writew2(uint8_t slv_addr, uint16_t reg_addr, uint16_t reg_data)
{
int ret=0;
reg_data = (reg_data >> 8) | (reg_data << 8);
__disable_irq();
if (HAL_I2C_Mem_Write(&I2CHandle, slv_addr, reg_addr,
I2C_MEMADD_SIZE_16BIT, (uint8_t*) &reg_data, 2, I2C_TIMEOUT) != HAL_OK) {
ret = -1;
}
__enable_irq();
return ret;
}

View File

@ -15,4 +15,6 @@ int cambus_readb(uint8_t slv_addr, uint8_t reg_addr, uint8_t *reg_data);
int cambus_writeb(uint8_t slv_addr, uint8_t reg_addr, uint8_t reg_data); int cambus_writeb(uint8_t slv_addr, uint8_t reg_addr, uint8_t reg_data);
int cambus_readw(uint8_t slv_addr, uint8_t reg_addr, uint16_t *reg_data); int cambus_readw(uint8_t slv_addr, uint8_t reg_addr, uint16_t *reg_data);
int cambus_writew(uint8_t slv_addr, uint8_t reg_addr, uint16_t reg_data); int cambus_writew(uint8_t slv_addr, uint8_t reg_addr, uint16_t reg_data);
int cambus_readw2(uint8_t slv_addr, uint16_t reg_addr, uint16_t *reg_data);
int cambus_writew2(uint8_t slv_addr, uint16_t reg_addr, uint16_t reg_data);
#endif // __CAMBUS_H__ #endif // __CAMBUS_H__