drivers: sensor: hp206c: Update driver to use i2c_dt_spec
Move driver to use i2c_dt_spec for I2C bus access. Also removed unused gpio.h header include. Signed-off-by: Kumar Gala <galak@kernel.org>
This commit is contained in:
parent
25d8b781fb
commit
fa74cadbf0
2 changed files with 20 additions and 16 deletions
|
@ -15,7 +15,6 @@
|
||||||
#include <zephyr/drivers/i2c.h>
|
#include <zephyr/drivers/i2c.h>
|
||||||
#include <zephyr/sys/byteorder.h>
|
#include <zephyr/sys/byteorder.h>
|
||||||
#include <zephyr/kernel.h>
|
#include <zephyr/kernel.h>
|
||||||
#include <zephyr/drivers/gpio.h>
|
|
||||||
#include <zephyr/logging/log.h>
|
#include <zephyr/logging/log.h>
|
||||||
|
|
||||||
#include "hp206c.h"
|
#include "hp206c.h"
|
||||||
|
@ -24,23 +23,22 @@ LOG_MODULE_REGISTER(HP206C, CONFIG_SENSOR_LOG_LEVEL);
|
||||||
|
|
||||||
static inline int hp206c_bus_config(const struct device *dev)
|
static inline int hp206c_bus_config(const struct device *dev)
|
||||||
{
|
{
|
||||||
struct hp206c_device_data *hp206c = dev->data;
|
const struct hp206c_device_config *cfg = dev->config;
|
||||||
uint32_t i2c_cfg;
|
uint32_t i2c_cfg;
|
||||||
|
|
||||||
i2c_cfg = I2C_MODE_MASTER | I2C_SPEED_SET(I2C_SPEED_STANDARD);
|
i2c_cfg = I2C_MODE_MASTER | I2C_SPEED_SET(I2C_SPEED_STANDARD);
|
||||||
|
|
||||||
return i2c_configure(hp206c->i2c, i2c_cfg);
|
return i2c_configure(cfg->i2c.bus, i2c_cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hp206c_read(const struct device *dev, uint8_t cmd, uint8_t *data,
|
static int hp206c_read(const struct device *dev, uint8_t cmd, uint8_t *data,
|
||||||
uint8_t len)
|
uint8_t len)
|
||||||
{
|
{
|
||||||
struct hp206c_device_data *hp206c = dev->data;
|
const struct hp206c_device_config *cfg = dev->config;
|
||||||
|
|
||||||
hp206c_bus_config(dev);
|
hp206c_bus_config(dev);
|
||||||
|
|
||||||
if (i2c_burst_read(hp206c->i2c, HP206C_I2C_ADDRESS,
|
if (i2c_burst_read_dt(&cfg->i2c, cmd, data, len) < 0) {
|
||||||
cmd, data, len) < 0) {
|
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,12 +56,11 @@ static int hp206c_read_reg(const struct device *dev, uint8_t reg_addr,
|
||||||
static int hp206c_write(const struct device *dev, uint8_t cmd, uint8_t *data,
|
static int hp206c_write(const struct device *dev, uint8_t cmd, uint8_t *data,
|
||||||
uint8_t len)
|
uint8_t len)
|
||||||
{
|
{
|
||||||
struct hp206c_device_data *hp206c = dev->data;
|
const struct hp206c_device_config *cfg = dev->config;
|
||||||
|
|
||||||
hp206c_bus_config(dev);
|
hp206c_bus_config(dev);
|
||||||
|
|
||||||
if (i2c_burst_write(hp206c->i2c, HP206C_I2C_ADDRESS,
|
if (i2c_burst_write_dt(&cfg->i2c, cmd, data, len) < 0) {
|
||||||
cmd, data, len) < 0) {
|
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,11 +77,11 @@ static int hp206c_write_reg(const struct device *dev, uint8_t reg_addr,
|
||||||
|
|
||||||
static int hp206c_cmd_send(const struct device *dev, uint8_t cmd)
|
static int hp206c_cmd_send(const struct device *dev, uint8_t cmd)
|
||||||
{
|
{
|
||||||
struct hp206c_device_data *hp206c = dev->data;
|
const struct hp206c_device_config *cfg = dev->config;
|
||||||
|
|
||||||
hp206c_bus_config(dev);
|
hp206c_bus_config(dev);
|
||||||
|
|
||||||
return i2c_write(hp206c->i2c, &cmd, 1, HP206C_I2C_ADDRESS);
|
return i2c_write_dt(&cfg->i2c, &cmd, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -287,10 +284,10 @@ static const struct sensor_driver_api hp206c_api = {
|
||||||
static int hp206c_init(const struct device *dev)
|
static int hp206c_init(const struct device *dev)
|
||||||
{
|
{
|
||||||
struct hp206c_device_data *hp206c = dev->data;
|
struct hp206c_device_data *hp206c = dev->data;
|
||||||
|
const struct hp206c_device_config *cfg = dev->config;
|
||||||
|
|
||||||
hp206c->i2c = device_get_binding(DT_INST_BUS_LABEL(0));
|
if (!device_is_ready(cfg->i2c.bus)) {
|
||||||
if (!hp206c->i2c) {
|
LOG_ERR("Bus device is not ready");
|
||||||
LOG_ERR("I2C master controller not found!");
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -318,6 +315,10 @@ static int hp206c_init(const struct device *dev)
|
||||||
|
|
||||||
static struct hp206c_device_data hp206c_data;
|
static struct hp206c_device_data hp206c_data;
|
||||||
|
|
||||||
|
static const struct hp206c_device_config hp206c_config = {
|
||||||
|
.i2c = I2C_DT_SPEC_INST_GET(0),
|
||||||
|
};
|
||||||
|
|
||||||
DEVICE_DT_INST_DEFINE(0, hp206c_init, NULL, &hp206c_data,
|
DEVICE_DT_INST_DEFINE(0, hp206c_init, NULL, &hp206c_data,
|
||||||
NULL, POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY,
|
&hp206c_config, POST_KERNEL, CONFIG_SENSOR_INIT_PRIORITY,
|
||||||
&hp206c_api);
|
&hp206c_api);
|
||||||
|
|
|
@ -72,8 +72,11 @@
|
||||||
#endif
|
#endif
|
||||||
/* end of default settings */
|
/* end of default settings */
|
||||||
|
|
||||||
|
struct hp206c_device_config {
|
||||||
|
struct i2c_dt_spec i2c;
|
||||||
|
};
|
||||||
|
|
||||||
struct hp206c_device_data {
|
struct hp206c_device_data {
|
||||||
const struct device *i2c;
|
|
||||||
#if CONFIG_SYS_CLOCK_TICKS_PER_SEC < 1000
|
#if CONFIG_SYS_CLOCK_TICKS_PER_SEC < 1000
|
||||||
#error "driver needs millisecond tick granularity"
|
#error "driver needs millisecond tick granularity"
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue