@@ -201,16 +201,17 @@ static int tmp108_attr_set(const struct device *dev,
201
201
const struct sensor_value * val )
202
202
{
203
203
struct tmp108_data * drv_data = dev -> data ;
204
- uint16_t mode = 0 ;
205
- uint16_t reg_value = 0 ;
204
+ __maybe_unused uint16_t reg_value ;
205
+ __maybe_unused int32_t uval ;
206
+ uint16_t mode ;
206
207
int result = 0 ;
207
- int32_t uval ;
208
208
209
209
if (chan != SENSOR_CHAN_AMBIENT_TEMP && chan != SENSOR_CHAN_ALL ) {
210
210
return - ENOTSUP ;
211
211
}
212
212
213
213
switch ((int ) attr ) {
214
+ #ifdef CONFIG_TMP108_ALERT_INTERRUPTS
214
215
case SENSOR_ATTR_HYSTERESIS :
215
216
if (TI_TMP108_HYSTER_0_C (dev ) == TI_TMP108_CONF_NA ) {
216
217
LOG_WRN ("AS621x Series lacks Hysterisis setttings" );
@@ -260,6 +261,18 @@ static int tmp108_attr_set(const struct device *dev,
260
261
reg_value );
261
262
break ;
262
263
264
+ case SENSOR_ATTR_TMP108_ALERT_POLARITY :
265
+ if (val -> val1 == 1 ) {
266
+ mode = TI_TMP108_CONF_POL_HIGH (dev );
267
+ } else {
268
+ mode = TI_TMP108_CONF_POL_LOW (dev );
269
+ }
270
+ result = tmp108_write_config (dev ,
271
+ TI_TMP108_CONF_POL_MASK (dev ),
272
+ mode );
273
+ break ;
274
+ #endif /* CONFIG_TMP108_ALERT_INTERRUPTS */
275
+
263
276
case SENSOR_ATTR_SAMPLING_FREQUENCY :
264
277
if (val -> val1 < 1 ) {
265
278
mode = TI_TMP108_FREQ_4_SECS (dev );
@@ -296,17 +309,6 @@ static int tmp108_attr_set(const struct device *dev,
296
309
drv_data -> one_shot_mode = true;
297
310
break ;
298
311
299
- case SENSOR_ATTR_TMP108_ALERT_POLARITY :
300
- if (val -> val1 == 1 ) {
301
- mode = TI_TMP108_CONF_POL_HIGH (dev );
302
- } else {
303
- mode = TI_TMP108_CONF_POL_LOW (dev );
304
- }
305
- result = tmp108_write_config (dev ,
306
- TI_TMP108_CONF_POL_MASK (dev ),
307
- mode );
308
- break ;
309
-
310
312
default :
311
313
return - ENOTSUP ;
312
314
}
@@ -323,7 +325,9 @@ static DEVICE_API(sensor, tmp108_driver_api) = {
323
325
.attr_get = tmp108_attr_get ,
324
326
.sample_fetch = tmp108_sample_fetch ,
325
327
.channel_get = tmp108_channel_get ,
328
+ #ifdef CONFIG_TMP108_ALERT_INTERRUPTS
326
329
.trigger_set = tmp_108_trigger_set ,
330
+ #endif
327
331
};
328
332
329
333
#ifdef CONFIG_TMP108_ALERT_INTERRUPTS
@@ -371,18 +375,19 @@ static int setup_interrupts(const struct device *dev)
371
375
static int tmp108_init (const struct device * dev )
372
376
{
373
377
const struct tmp108_config * cfg = dev -> config ;
374
- struct tmp108_data * drv_data = dev -> data ;
375
378
int result = 0 ;
376
379
377
380
if (!device_is_ready (cfg -> i2c_spec .bus )) {
378
381
LOG_ERR ("I2C dev %s not ready" , cfg -> i2c_spec .bus -> name );
379
382
return - ENODEV ;
380
383
}
381
384
385
+ #ifdef CONFIG_TMP108_ALERT_INTERRUPTS
386
+ struct tmp108_data * drv_data = dev -> data ;
387
+
382
388
/* save this driver instance for passing to other functions */
383
389
drv_data -> tmp108_dev = dev ;
384
390
385
- #ifdef CONFIG_TMP108_ALERT_INTERRUPTS
386
391
result = setup_interrupts (dev );
387
392
388
393
if (result < 0 ) {
@@ -396,22 +401,16 @@ static int tmp108_init(const struct device *dev)
396
401
return result ;
397
402
}
398
403
399
- #define TMP108_DEFINE (inst , t ) \
400
- static struct tmp108_data tmp108_prv_data_##inst##t; \
401
- static const struct tmp108_config tmp108_config_##inst##t = { \
402
- .i2c_spec = I2C_DT_SPEC_INST_GET(inst), \
403
- .alert_gpio = GPIO_DT_SPEC_INST_GET_OR(inst, \
404
- alert_gpios, { 0 }),\
405
- .reg_def = t##_CONF \
406
- }; \
407
- SENSOR_DEVICE_DT_INST_DEFINE(inst, \
408
- &tmp108_init, \
409
- NULL, \
410
- &tmp108_prv_data_##inst##t, \
411
- &tmp108_config_##inst##t, \
412
- POST_KERNEL, \
413
- CONFIG_SENSOR_INIT_PRIORITY, \
414
- &tmp108_driver_api);
404
+ #define TMP108_DEFINE (inst , t ) \
405
+ static struct tmp108_data tmp108_prv_data_##inst##t; \
406
+ static const struct tmp108_config tmp108_config_##inst##t = { \
407
+ .i2c_spec = I2C_DT_SPEC_INST_GET(inst), \
408
+ IF_ENABLED(CONFIG_TMP108_ALERT_INTERRUPTS, \
409
+ (.alert_gpio = GPIO_DT_SPEC_INST_GET(inst, alert_gpios),)) \
410
+ .reg_def = t##_CONF}; \
411
+ SENSOR_DEVICE_DT_INST_DEFINE(inst, &tmp108_init, NULL, &tmp108_prv_data_##inst##t, \
412
+ &tmp108_config_##inst##t, POST_KERNEL, \
413
+ CONFIG_SENSOR_INIT_PRIORITY, &tmp108_driver_api);
415
414
416
415
#define TMP108_INIT (n ) TMP108_DEFINE(n, TI_TMP108)
417
416
#undef DT_DRV_COMPAT
0 commit comments