@@ -43,6 +43,7 @@ static uint32_t ens210_crc7(uint32_t bitstream)
43
43
static int ens210_measure (const struct device * dev , enum sensor_channel chan )
44
44
{
45
45
struct ens210_data * drv_data = dev -> data ;
46
+ const struct ens210_config * config = dev -> config ;
46
47
uint8_t buf ;
47
48
int ret ;
48
49
const struct ens210_sens_start sense_start = {
@@ -53,9 +54,7 @@ static int ens210_measure(const struct device *dev, enum sensor_channel chan)
53
54
};
54
55
55
56
/* Start measuring */
56
- ret = i2c_reg_write_byte (drv_data -> i2c ,
57
- DT_INST_REG_ADDR (0 ),
58
- ENS210_REG_SENS_START , * (uint8_t * )& sense_start );
57
+ ret = i2c_reg_write_byte_dt (& config -> i2c , ENS210_REG_SENS_START , * (uint8_t * )& sense_start );
59
58
60
59
if (ret < 0 ) {
61
60
LOG_ERR ("Failed to set SENS_START to 0x%x" ,
@@ -66,9 +65,7 @@ static int ens210_measure(const struct device *dev, enum sensor_channel chan)
66
65
/* Wait for measurement to be completed */
67
66
do {
68
67
k_sleep (K_MSEC (2 ));
69
- ret = i2c_reg_read_byte (drv_data -> i2c ,
70
- DT_INST_REG_ADDR (0 ),
71
- ENS210_REG_SENS_START , & buf );
68
+ ret = i2c_reg_read_byte_dt (& config -> i2c , ENS210_REG_SENS_START , & buf );
72
69
73
70
if (ret < 0 ) {
74
71
LOG_ERR ("Failed to read SENS_STAT" );
@@ -83,6 +80,7 @@ static int ens210_sample_fetch(const struct device *dev,
83
80
enum sensor_channel chan )
84
81
{
85
82
struct ens210_data * drv_data = dev -> data ;
83
+ const struct ens210_config * config = dev -> config ;
86
84
struct ens210_value_data data [2 ];
87
85
int ret , cnt ;
88
86
@@ -104,8 +102,8 @@ static int ens210_sample_fetch(const struct device *dev,
104
102
#endif /* Single shot mode */
105
103
106
104
for (cnt = 0 ; cnt <= CONFIG_ENS210_MAX_READ_RETRIES ; cnt ++ ) {
107
- ret = i2c_burst_read ( drv_data -> i2c , DT_INST_REG_ADDR ( 0 ) ,
108
- ENS210_REG_T_VAL , ( uint8_t * ) & data , sizeof (data ));
105
+ ret = i2c_burst_read_dt ( & config -> i2c , ENS210_REG_T_VAL , ( uint8_t * ) & data ,
106
+ sizeof (data ));
109
107
if (ret < 0 ) {
110
108
LOG_ERR ("Failed to read data" );
111
109
continue ;
@@ -192,16 +190,15 @@ static int ens210_channel_get(const struct device *dev,
192
190
193
191
static int ens210_sys_reset (const struct device * dev )
194
192
{
195
- struct ens210_data * drv_data = dev -> data ;
193
+ const struct ens210_config * config = dev -> config ;
196
194
197
195
const struct ens210_sys_ctrl sys_ctrl = {
198
196
.low_power = 0 ,
199
197
.reset = 1
200
198
};
201
199
int ret ;
202
200
203
- ret = i2c_reg_write_byte (drv_data -> i2c , DT_INST_REG_ADDR (0 ),
204
- ENS210_REG_SYS_CTRL , * (uint8_t * )& sys_ctrl );
201
+ ret = i2c_reg_write_byte_dt (& config -> i2c , ENS210_REG_SYS_CTRL , * (uint8_t * )& sys_ctrl );
205
202
if (ret < 0 ) {
206
203
LOG_ERR ("Failed to set SYS_CTRL to 0x%x" , * (uint8_t * )& sys_ctrl );
207
204
}
@@ -210,16 +207,15 @@ static int ens210_sys_reset(const struct device *dev)
210
207
211
208
static int ens210_sys_enable (const struct device * dev , uint8_t low_power )
212
209
{
213
- struct ens210_data * drv_data = dev -> data ;
210
+ const struct ens210_config * config = dev -> config ;
214
211
215
212
const struct ens210_sys_ctrl sys_ctrl = {
216
213
.low_power = low_power ,
217
214
.reset = 0
218
215
};
219
216
int ret ;
220
217
221
- ret = i2c_reg_write_byte (drv_data -> i2c , DT_INST_REG_ADDR (0 ),
222
- ENS210_REG_SYS_CTRL , * (uint8_t * )& sys_ctrl );
218
+ ret = i2c_reg_write_byte_dt (& config -> i2c , ENS210_REG_SYS_CTRL , * (uint8_t * )& sys_ctrl );
223
219
if (ret < 0 ) {
224
220
LOG_ERR ("Failed to set SYS_CTRL to 0x%x" , * (uint8_t * )& sys_ctrl );
225
221
}
@@ -228,16 +224,14 @@ static int ens210_sys_enable(const struct device *dev, uint8_t low_power)
228
224
229
225
static int ens210_wait_boot (const struct device * dev )
230
226
{
231
- struct ens210_data * drv_data = dev -> data ;
227
+ const struct ens210_config * config = dev -> config ;
232
228
233
229
int cnt ;
234
230
int ret ;
235
231
struct ens210_sys_stat sys_stat ;
236
232
237
233
for (cnt = 0 ; cnt <= CONFIG_ENS210_MAX_STAT_RETRIES ; cnt ++ ) {
238
- ret = i2c_reg_read_byte (drv_data -> i2c , DT_INST_REG_ADDR (0 ),
239
- ENS210_REG_SYS_STAT ,
240
- (uint8_t * )& sys_stat );
234
+ ret = i2c_reg_read_byte_dt (& config -> i2c , ENS210_REG_SYS_STAT , (uint8_t * )& sys_stat );
241
235
242
236
if (ret < 0 ) {
243
237
k_sleep (K_MSEC (1 ));
@@ -273,7 +267,7 @@ static const struct sensor_driver_api en210_driver_api = {
273
267
274
268
static int ens210_init (const struct device * dev )
275
269
{
276
- struct ens210_data * drv_data = dev -> data ;
270
+ const struct ens210_config * config = dev -> config ;
277
271
const struct ens210_sens_run sense_run = {
278
272
.t_run = ENS210_T_RUN ,
279
273
.h_run = ENS210_H_RUN
@@ -290,11 +284,9 @@ static int ens210_init(const struct device *dev)
290
284
int ret ;
291
285
uint16_t part_id ;
292
286
293
- drv_data -> i2c = device_get_binding (DT_INST_BUS_LABEL (0 ));
294
- if (drv_data -> i2c == NULL ) {
295
- LOG_ERR ("Failed to get pointer to %s device!" ,
296
- DT_INST_BUS_LABEL (0 ));
297
- return - EINVAL ;
287
+ if (!device_is_ready (config -> i2c .bus )) {
288
+ LOG_ERR ("I2C bus device not ready" );
289
+ return - ENODEV ;
298
290
}
299
291
300
292
/* Wait until the device is ready. */
@@ -306,9 +298,8 @@ static int ens210_init(const struct device *dev)
306
298
/* Check Hardware ID. This is only possible after device is ready
307
299
* and active
308
300
*/
309
- ret = i2c_burst_read (drv_data -> i2c , DT_INST_REG_ADDR (0 ),
310
- ENS210_REG_PART_ID , (uint8_t * )& part_id ,
311
- sizeof (part_id ));
301
+ ret = i2c_burst_read_dt (& config -> i2c , ENS210_REG_PART_ID , (uint8_t * )& part_id ,
302
+ sizeof (part_id ));
312
303
if (ret < 0 ) {
313
304
LOG_ERR ("Failed to read Part ID register" );
314
305
return - EIO ;
@@ -326,8 +317,7 @@ static int ens210_init(const struct device *dev)
326
317
}
327
318
328
319
/* Set measurement mode*/
329
- ret = i2c_reg_write_byte (drv_data -> i2c , DT_INST_REG_ADDR (0 ),
330
- ENS210_REG_SENS_RUN , * (uint8_t * )& sense_run );
320
+ ret = i2c_reg_write_byte_dt (& config -> i2c , ENS210_REG_SENS_RUN , * (uint8_t * )& sense_run );
331
321
if (ret < 0 ) {
332
322
LOG_ERR ("Failed to set SENS_RUN to 0x%x" ,
333
323
* (uint8_t * )& sense_run );
@@ -337,8 +327,7 @@ static int ens210_init(const struct device *dev)
337
327
#if defined(CONFIG_ENS210_TEMPERATURE_CONTINUOUS ) \
338
328
|| defined(CONFIG_ENS210_HUMIDITY_CONTINUOUS )
339
329
/* Start measuring */
340
- ret = i2c_reg_write_byte (drv_data -> i2c , DT_INST_REG_ADDR (0 ),
341
- ENS210_REG_SENS_START , * (uint8_t * )& sense_start );
330
+ ret = i2c_reg_write_byte_dt (& config -> i2c , ENS210_REG_SENS_START , * (uint8_t * )& sense_start );
342
331
if (ret < 0 ) {
343
332
LOG_ERR ("Failed to set SENS_START to 0x%x" ,
344
333
* (uint8_t * )& sense_start );
@@ -348,8 +337,12 @@ static int ens210_init(const struct device *dev)
348
337
return 0 ;
349
338
}
350
339
351
- static struct ens210_data ens210_driver ;
340
+ static struct ens210_data ens210_data_inst ;
341
+
342
+ static const struct ens210_config ens210_config_inst = {
343
+ .i2c = I2C_DT_SPEC_INST_GET (0 ),
344
+ };
352
345
353
- DEVICE_DT_INST_DEFINE (0 , ens210_init , NULL , & ens210_driver ,
354
- NULL , POST_KERNEL , CONFIG_SENSOR_INIT_PRIORITY ,
355
- & en210_driver_api );
346
+ DEVICE_DT_INST_DEFINE (0 , ens210_init , NULL , & ens210_data_inst ,
347
+ & ens210_config_inst , POST_KERNEL , CONFIG_SENSOR_INIT_PRIORITY ,
348
+ & en210_driver_api );
0 commit comments