drivers: sensor: bmi160: Use more constants for reg access

At present register access is a mix of constants and open-coded values
in the driver. Add a few more constants to clean this up.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2020-09-18 16:09:31 -06:00 committed by Anas Nashif
parent 2c73f3ed4c
commit 5a9f389159
2 changed files with 20 additions and 6 deletions

View file

@ -56,19 +56,22 @@ static int bmi160_transceive(const struct device *dev, uint8_t reg,
int bmi160_read(const struct device *dev, uint8_t reg_addr, uint8_t *data,
uint8_t len)
{
return bmi160_transceive(dev, reg_addr | BIT(7), false, data, len);
return bmi160_transceive(dev, reg_addr | BMI160_REG_READ, false, data,
len);
}
int bmi160_byte_read(const struct device *dev, uint8_t reg_addr,
uint8_t *byte)
{
return bmi160_transceive(dev, reg_addr | BIT(7), false, byte, 1);
return bmi160_transceive(dev, reg_addr | BMI160_REG_READ, false, byte,
1);
}
static int bmi160_word_read(const struct device *dev, uint8_t reg_addr,
uint16_t *word)
{
if (bmi160_transceive(dev, reg_addr | BIT(7), false, word, 2) != 0) {
if (bmi160_transceive(dev, reg_addr | BMI160_REG_READ, false, word, 2)
!= 0) {
return -EIO;
}
@ -80,7 +83,8 @@ static int bmi160_word_read(const struct device *dev, uint8_t reg_addr,
int bmi160_byte_write(const struct device *dev, uint8_t reg_addr,
uint8_t byte)
{
return bmi160_transceive(dev, reg_addr & 0x7F, true, &byte, 1);
return bmi160_transceive(dev, reg_addr & BMI160_REG_MASK, true, &byte,
1);
}
int bmi160_word_write(const struct device *dev, uint8_t reg_addr,
@ -91,7 +95,8 @@ int bmi160_word_write(const struct device *dev, uint8_t reg_addr,
(uint8_t)(word >> 8)
};
return bmi160_transceive(dev, reg_addr & 0x7F, true, tx_word, 2);
return bmi160_transceive(dev, reg_addr & BMI160_REG_MASK, true, tx_word,
2);
}
int bmi160_reg_field_update(const struct device *dev, uint8_t reg_addr,
@ -825,7 +830,7 @@ int bmi160_init(const struct device *dev)
k_busy_wait(1000);
/* do a dummy read from 0x7F to activate SPI */
if (bmi160_byte_read(dev, 0x7F, &val) < 0) {
if (bmi160_byte_read(dev, BMI160_SPI_START, &val) < 0) {
LOG_DBG("Cannot read from 0x7F..");
return -EIO;
}

View file

@ -96,6 +96,15 @@
#define BMI160_REG_STEP_CONF1 0x7B
#define BMI160_REG_CMD 0x7E
/* This is not a real register; reading it activates SPI on the BMI160 */
#define BMI160_SPI_START 0x7F
#define BMI160_REG_COUNT 0x80
/* Indicates a read operation; bit 7 is clear on write s*/
#define BMI160_REG_READ BIT(7)
#define BMI160_REG_MASK 0x7f
/* bitfields */
/* BMI160_REG_ERR */