drivers/sensors: Switch adxl362 driver to new SPI API
Replacing legacy API calls by news ones. Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
This commit is contained in:
parent
eb7af5527d
commit
94d7c9f23e
3 changed files with 47 additions and 63 deletions
|
@ -8,7 +8,6 @@
|
|||
menuconfig ADXL362
|
||||
bool "ADXL362 sensor"
|
||||
depends on SPI
|
||||
select SPI_LEGACY_API
|
||||
default n
|
||||
help
|
||||
Enable driver for ADXL362 Three-Axis Digital Accelerometers.
|
||||
|
|
|
@ -20,68 +20,61 @@
|
|||
|
||||
static struct adxl362_data adxl362_data;
|
||||
|
||||
static int adxl362_set_reg(struct device *dev, u16_t register_value,
|
||||
u8_t register_address, u8_t count)
|
||||
static int adxl362_reg_access(struct adxl362_data *ctx, u8_t cmd,
|
||||
u8_t reg_addr, void *data, size_t length)
|
||||
{
|
||||
struct adxl362_data *adxl362_data = dev->driver_data;
|
||||
u8_t buffer[4];
|
||||
int ret;
|
||||
u8_t access[2] = { cmd, reg_addr };
|
||||
const struct spi_buf buf[2] = {
|
||||
{
|
||||
.buf = access,
|
||||
.len = 2
|
||||
},
|
||||
{
|
||||
.buf = data,
|
||||
.len = length
|
||||
}
|
||||
};
|
||||
struct spi_buf_set tx = {
|
||||
.buffers = buf,
|
||||
};
|
||||
|
||||
buffer[0] = ADXL362_WRITE_REG;
|
||||
buffer[1] = register_address;
|
||||
buffer[2] = (register_value & 0x00FF);
|
||||
buffer[3] = (register_value >> 8);
|
||||
if (cmd == ADXL362_READ_REG) {
|
||||
const struct spi_buf_set rx = {
|
||||
.buffers = buf,
|
||||
.count = 2
|
||||
};
|
||||
|
||||
ret = spi_slave_select(adxl362_data->spi,
|
||||
adxl362_data->spi_slave);
|
||||
if (ret) {
|
||||
SYS_LOG_DBG("spi_slave_select FAIL %d\n", ret);
|
||||
return ret;
|
||||
tx.count = 1;
|
||||
|
||||
return spi_transceive(ctx->spi, &ctx->spi_cfg, &tx, &rx);
|
||||
}
|
||||
|
||||
ret = spi_transceive(adxl362_data->spi, buffer, count + 2,
|
||||
buffer, count + 2);
|
||||
if (ret) {
|
||||
SYS_LOG_DBG("spi_transceive FAIL %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
tx.count = 2;
|
||||
|
||||
return 0;
|
||||
return spi_write(ctx->spi, &ctx->spi_cfg, &tx);
|
||||
}
|
||||
|
||||
static int adxl362_get_reg(struct device *dev, u8_t *read_buf,
|
||||
u8_t register_address, u8_t count)
|
||||
static inline int adxl362_set_reg(struct device *dev, u16_t register_value,
|
||||
u8_t register_address, u8_t count)
|
||||
{
|
||||
struct adxl362_data *adxl362_data = dev->driver_data;
|
||||
u8_t buffer[4];
|
||||
u8_t index;
|
||||
int ret;
|
||||
|
||||
buffer[0] = ADXL362_READ_REG;
|
||||
buffer[1] = register_address;
|
||||
for (index = 0; index < count; index++) {
|
||||
buffer[index + 2] = read_buf[index];
|
||||
}
|
||||
return adxl362_reg_access(adxl362_data,
|
||||
ADXL362_WRITE_REG,
|
||||
register_address,
|
||||
®ister_value,
|
||||
count);
|
||||
}
|
||||
|
||||
ret = spi_slave_select(adxl362_data->spi,
|
||||
adxl362_data->spi_slave);
|
||||
if (ret) {
|
||||
SYS_LOG_DBG("spi_slave_select FAIL %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
static inline int adxl362_get_reg(struct device *dev, u8_t *read_buf,
|
||||
u8_t register_address, u8_t count)
|
||||
{
|
||||
struct adxl362_data *adxl362_data = dev->driver_data;
|
||||
|
||||
ret = spi_transceive(adxl362_data->spi, buffer, count + 2,
|
||||
buffer, count + 2);
|
||||
if (ret) {
|
||||
SYS_LOG_DBG("spi_transceive FAIL %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
for (index = 0; index < count; index++) {
|
||||
read_buf[index] = buffer[index + 2];
|
||||
}
|
||||
|
||||
return 0;
|
||||
return adxl362_reg_access(adxl362_data,
|
||||
ADXL362_READ_REG,
|
||||
register_address,
|
||||
read_buf, count);
|
||||
}
|
||||
|
||||
static int adxl362_software_reset(struct device *dev)
|
||||
|
@ -576,7 +569,6 @@ static int adxl362_chip_init(struct device *dev)
|
|||
static int adxl362_init(struct device *dev)
|
||||
{
|
||||
struct adxl362_data *data = dev->driver_data;
|
||||
struct spi_config spi_config;
|
||||
u8_t value;
|
||||
int ret;
|
||||
|
||||
|
@ -587,17 +579,10 @@ static int adxl362_init(struct device *dev)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
spi_config.config = SPI_WORD(8) | SPI_TRANSFER_MSB | SPI_MODE_CPOL |
|
||||
SPI_MODE_CPHA;
|
||||
spi_config.max_sys_freq = 4;
|
||||
ret = spi_configure(data->spi, &spi_config);
|
||||
if (ret) {
|
||||
SYS_LOG_DBG("SPI configuration error %s %d\n",
|
||||
CONFIG_ADXL362_SPI_DEV_NAME, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
data->spi_slave = CONFIG_ADXL362_SPI_DEV_SLAVE;
|
||||
data->spi_cfg.operation = SPI_WORD_SET(8) | SPI_TRANSFER_MSB |
|
||||
SPI_MODE_CPOL | SPI_MODE_CPHA;
|
||||
data->spi_cfg.frequency = 8000000;
|
||||
data->spi_cfg.slave = CONFIG_ADXL362_SPI_DEV_SLAVE;
|
||||
|
||||
adxl362_software_reset(dev);
|
||||
|
||||
|
|
|
@ -156,11 +156,11 @@
|
|||
|
||||
struct adxl362_data {
|
||||
struct device *spi;
|
||||
struct spi_config spi_cfg;
|
||||
s32_t acc_x;
|
||||
s32_t acc_y;
|
||||
s32_t acc_z;
|
||||
s32_t temp;
|
||||
u8_t spi_slave;
|
||||
u8_t selected_range;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue