@@ -57,6 +57,8 @@ LOG_MODULE_REGISTER(adc_stm32);
57
57
* ADC_VER_V5_V90 -> STM32H72x/H73x
58
58
* ADC_VER_V5_X -> STM32H74x/H75x && U5
59
59
* ADC_VER_V5_3 -> STM32H7Ax/H7Bx
60
+ * compat st_stm32f1_adc -> STM32F1, F37x (ADC1_V2_5)
61
+ * compat st_stm32f4_adc -> STM32F2, F4, F7, L1
60
62
*/
61
63
62
64
#define ANY_NUM_COMMON_SAMPLING_TIME_CHANNELS_IS (value ) \
@@ -308,20 +310,14 @@ static void adc_stm32_start_conversion(const struct device *dev)
308
310
LOG_DBG ("Starting conversion" );
309
311
310
312
#if !defined(CONFIG_SOC_SERIES_STM32F1X ) && \
311
- !defined(CONFIG_SOC_SERIES_STM32F2X ) && \
312
- !defined(CONFIG_SOC_SERIES_STM32F4X ) && \
313
- !defined(CONFIG_SOC_SERIES_STM32F7X ) && \
314
- !defined(CONFIG_SOC_SERIES_STM32L1X )
313
+ !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f4_adc )
315
314
LL_ADC_REG_StartConversion (adc );
316
315
#else
317
316
LL_ADC_REG_StartConversionSWStart (adc );
318
317
#endif
319
318
}
320
319
321
- #if !defined(CONFIG_SOC_SERIES_STM32F2X ) && \
322
- !defined(CONFIG_SOC_SERIES_STM32F4X ) && \
323
- !defined(CONFIG_SOC_SERIES_STM32F7X ) && \
324
- !defined(CONFIG_SOC_SERIES_STM32L1X )
320
+ #if !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f4_adc )
325
321
326
322
/* Number of ADC clock cycles to wait before of after starting calibration */
327
323
#if defined(LL_ADC_DELAY_CALIB_ENABLE_ADC_CYCLES )
@@ -375,8 +371,7 @@ static void adc_stm32_calib(const struct device *dev)
375
371
LL_ADC_StartCalibration (adc , LL_ADC_SINGLE_ENDED );
376
372
#elif defined(CONFIG_SOC_SERIES_STM32C0X ) || \
377
373
defined(CONFIG_SOC_SERIES_STM32F0X ) || \
378
- defined(CONFIG_SOC_SERIES_STM32F1X ) || \
379
- defined(STM32F3X_ADC_V2_5 ) || \
374
+ DT_HAS_COMPAT_STATUS_OKAY (st_stm32f1_adc ) || \
380
375
defined(CONFIG_SOC_SERIES_STM32G0X ) || \
381
376
defined(CONFIG_SOC_SERIES_STM32L0X ) || \
382
377
defined(CONFIG_SOC_SERIES_STM32WLX )
@@ -408,12 +403,8 @@ static void adc_stm32_disable(ADC_TypeDef *adc)
408
403
* the ADC is completely stopped.
409
404
*/
410
405
411
- #if !defined(CONFIG_SOC_SERIES_STM32F2X ) && \
412
- !defined(CONFIG_SOC_SERIES_STM32F4X ) && \
413
- !defined(CONFIG_SOC_SERIES_STM32F7X ) && \
414
- !defined(CONFIG_SOC_SERIES_STM32F1X ) && \
415
- !defined(STM32F3X_ADC_V2_5 ) && \
416
- !defined(CONFIG_SOC_SERIES_STM32L1X )
406
+ #if !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f1_adc ) && \
407
+ !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f4_adc )
417
408
if (LL_ADC_REG_IsConversionOngoing (adc )) {
418
409
LL_ADC_REG_StopConversion (adc );
419
410
while (LL_ADC_REG_IsConversionOngoing (adc )) {
@@ -423,14 +414,10 @@ static void adc_stm32_disable(ADC_TypeDef *adc)
423
414
424
415
#if !defined(CONFIG_SOC_SERIES_STM32C0X ) && \
425
416
!defined(CONFIG_SOC_SERIES_STM32F0X ) && \
426
- !defined(CONFIG_SOC_SERIES_STM32F1X ) && \
427
- !defined(STM32F3X_ADC_V2_5 ) && \
428
- !defined(CONFIG_SOC_SERIES_STM32F2X ) && \
429
- !defined(CONFIG_SOC_SERIES_STM32F4X ) && \
430
- !defined(CONFIG_SOC_SERIES_STM32F7X ) && \
417
+ !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f1_adc ) && \
418
+ !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f4_adc ) && \
431
419
!defined(CONFIG_SOC_SERIES_STM32G0X ) && \
432
420
!defined(CONFIG_SOC_SERIES_STM32L0X ) && \
433
- !defined(CONFIG_SOC_SERIES_STM32L1X ) && \
434
421
!defined(CONFIG_SOC_SERIES_STM32WLX )
435
422
if (LL_ADC_INJ_IsConversionOngoing (adc )) {
436
423
LL_ADC_INJ_StopConversion (adc );
@@ -450,11 +437,8 @@ static void adc_stm32_disable(ADC_TypeDef *adc)
450
437
451
438
#if !defined(CONFIG_SOC_SERIES_STM32F0X ) && \
452
439
!defined(CONFIG_SOC_SERIES_STM32F1X ) && \
453
- !defined(CONFIG_SOC_SERIES_STM32F2X ) && \
454
440
!defined(CONFIG_SOC_SERIES_STM32F3X ) && \
455
- !defined(CONFIG_SOC_SERIES_STM32F4X ) && \
456
- !defined(CONFIG_SOC_SERIES_STM32F7X ) && \
457
- !defined(CONFIG_SOC_SERIES_STM32L1X )
441
+ !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f4_adc )
458
442
459
443
#ifdef LL_ADC_OVS_RATIO_2
460
444
/* table for shifting oversampling mostly for ADC3 != ADC_VER_V5_V90 */
@@ -560,12 +544,8 @@ static int adc_stm32_enable(ADC_TypeDef *adc)
560
544
return 0 ;
561
545
}
562
546
563
- #if !defined(STM32F3X_ADC_V2_5 ) && \
564
- !defined(CONFIG_SOC_SERIES_STM32F1X ) && \
565
- !defined(CONFIG_SOC_SERIES_STM32F2X ) && \
566
- !defined(CONFIG_SOC_SERIES_STM32F4X ) && \
567
- !defined(CONFIG_SOC_SERIES_STM32F7X ) && \
568
- !defined(CONFIG_SOC_SERIES_STM32L1X )
547
+ #if !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f1_adc ) && \
548
+ !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f4_adc )
569
549
LL_ADC_ClearFlag_ADRDY (adc );
570
550
LL_ADC_Enable (adc );
571
551
@@ -700,11 +680,11 @@ static void dma_callback(const struct device *dev, void *user_data,
700
680
LOG_DBG ("dma callback" );
701
681
702
682
if (channel == data -> dma .channel ) {
703
- #if !defined( CONFIG_SOC_SERIES_STM32F1X ) && !defined( STM32F3X_ADC_V2_5 )
683
+ #if !DT_HAS_COMPAT_STATUS_OKAY ( st_stm32f1_adc )
704
684
if (LL_ADC_IsActiveFlag_OVR (adc ) || (status >= 0 )) {
705
685
#else
706
686
if (status >= 0 ) {
707
- #endif /* !defined(CONFIG_SOC_SERIES_STM32F1X) && !defined(STM32F3X_ADC_V2_5 ) */
687
+ #endif /* !DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_adc ) */
708
688
data -> samples_count = data -> channel_count ;
709
689
data -> buffer += data -> channel_count ;
710
690
/* Stop the DMA engine, only to start it again when the callback returns
@@ -713,9 +693,9 @@ static void dma_callback(const struct device *dev, void *user_data,
713
693
* within adc_context_start_sampling
714
694
*/
715
695
dma_stop (data -> dma .dma_dev , data -> dma .channel );
716
- #if !defined( CONFIG_SOC_SERIES_STM32F1X ) && !defined( STM32F3X_ADC_V2_5 )
696
+ #if !DT_HAS_COMPAT_STATUS_OKAY ( st_stm32f1_adc )
717
697
LL_ADC_ClearFlag_OVR (adc );
718
- #endif /* !defined(CONFIG_SOC_SERIES_STM32F1X) && !defined(STM32F3X_ADC_V2_5 ) */
698
+ #endif /* !DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_adc ) */
719
699
/* No need to invalidate the cache because it's assumed that
720
700
* the address is in a non-cacheable SRAM region.
721
701
*/
@@ -926,11 +906,8 @@ static int start_read(const struct device *dev,
926
906
927
907
#if !defined(CONFIG_SOC_SERIES_STM32F0X ) && \
928
908
!defined(CONFIG_SOC_SERIES_STM32F1X ) && \
929
- !defined(CONFIG_SOC_SERIES_STM32F2X ) && \
930
909
!defined(CONFIG_SOC_SERIES_STM32F3X ) && \
931
- !defined(CONFIG_SOC_SERIES_STM32F4X ) && \
932
- !defined(CONFIG_SOC_SERIES_STM32F7X ) && \
933
- !defined(CONFIG_SOC_SERIES_STM32L1X )
910
+ !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f4_adc )
934
911
935
912
switch (sequence -> oversampling ) {
936
913
case 0 :
@@ -982,12 +959,8 @@ static int start_read(const struct device *dev,
982
959
#endif
983
960
984
961
if (sequence -> calibrate ) {
985
- #if !defined(CONFIG_SOC_SERIES_STM32F2X ) && \
986
- !defined(CONFIG_SOC_SERIES_STM32F4X ) && \
987
- !defined(CONFIG_SOC_SERIES_STM32F7X ) && \
988
- !defined(CONFIG_SOC_SERIES_STM32F1X ) && \
989
- !defined(STM32F3X_ADC_V2_5 ) && \
990
- !defined(CONFIG_SOC_SERIES_STM32L1X )
962
+ #if !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f1_adc ) && \
963
+ !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f4_adc )
991
964
992
965
/* we cannot calibrate the ADC while the ADC is enabled */
993
966
adc_stm32_disable (adc );
@@ -1005,18 +978,14 @@ static int start_read(const struct device *dev,
1005
978
*/
1006
979
adc_stm32_enable (adc );
1007
980
1008
- #if !defined( CONFIG_SOC_SERIES_STM32F1X ) && !defined( STM32F3X_ADC_V2_5 )
981
+ #if !DT_HAS_COMPAT_STATUS_OKAY ( st_stm32f1_adc )
1009
982
LL_ADC_ClearFlag_OVR (adc );
1010
- #endif /* !defined(CONFIG_SOC_SERIES_STM32F1X) && !defined(STM32F3X_ADC_V2_5 ) */
983
+ #endif /* !DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_adc ) */
1011
984
1012
985
#if !defined(CONFIG_ADC_STM32_DMA )
1013
- #if defined(CONFIG_SOC_SERIES_STM32F2X ) || \
1014
- defined(CONFIG_SOC_SERIES_STM32F4X ) || \
1015
- defined(CONFIG_SOC_SERIES_STM32F7X ) || \
1016
- defined(CONFIG_SOC_SERIES_STM32L1X )
986
+ #if DT_HAS_COMPAT_STATUS_OKAY (st_stm32f4_adc )
1017
987
LL_ADC_EnableIT_EOCS (adc );
1018
- #elif defined(STM32F3X_ADC_V2_5 ) || \
1019
- defined(CONFIG_SOC_SERIES_STM32F1X )
988
+ #elif DT_HAS_COMPAT_STATUS_OKAY (st_stm32f1_adc )
1020
989
LL_ADC_EnableIT_EOS (adc );
1021
990
#else
1022
991
LL_ADC_EnableIT_EOC (adc );
@@ -1321,12 +1290,8 @@ static int adc_stm32_init(const struct device *dev)
1321
1290
* any enable or calibration actions.
1322
1291
*/
1323
1292
#if !defined(CONFIG_SOC_SERIES_STM32F0X ) && \
1324
- !defined(CONFIG_SOC_SERIES_STM32F1X ) && \
1325
- !defined(CONFIG_SOC_SERIES_STM32F2X ) && \
1326
- !defined(CONFIG_SOC_SERIES_STM32F4X ) && \
1327
- !defined(CONFIG_SOC_SERIES_STM32F7X ) && \
1328
- !defined(STM32F3X_ADC_V2_5 ) && \
1329
- !defined(CONFIG_SOC_SERIES_STM32L1X )
1293
+ !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f1_adc ) && \
1294
+ !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f4_adc )
1330
1295
LL_ADC_EnableInternalRegulator (adc );
1331
1296
k_busy_wait (LL_ADC_DELAY_INTERNAL_REGUL_STAB_US );
1332
1297
#endif
@@ -1362,16 +1327,13 @@ static int adc_stm32_init(const struct device *dev)
1362
1327
LL_ADC_CLOCK_ASYNC_DIV4 );
1363
1328
#endif
1364
1329
1365
- #if !defined(CONFIG_SOC_SERIES_STM32F2X ) && \
1366
- !defined(CONFIG_SOC_SERIES_STM32F4X ) && \
1367
- !defined(CONFIG_SOC_SERIES_STM32F7X ) && \
1368
- !defined(CONFIG_SOC_SERIES_STM32L1X )
1330
+ #if !DT_HAS_COMPAT_STATUS_OKAY (st_stm32f4_adc )
1369
1331
1370
- #if !defined( CONFIG_SOC_SERIES_STM32F1X ) && !defined( STM32F3X_ADC_V2_5 )
1332
+ #if !DT_HAS_COMPAT_STATUS_OKAY ( st_stm32f1_adc )
1371
1333
adc_stm32_disable (adc );
1372
1334
adc_stm32_calib (dev );
1373
1335
adc_stm32_calib_delay (dev );
1374
- #endif /* !defined(CONFIG_SOC_SERIES_STM32F1X) && !defined(STM32F3X_ADC_V2_5 ) */
1336
+ #endif /* !DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_adc ) */
1375
1337
#endif
1376
1338
1377
1339
err = adc_stm32_enable (adc );
@@ -1381,11 +1343,11 @@ static int adc_stm32_init(const struct device *dev)
1381
1343
1382
1344
config -> irq_cfg_func ();
1383
1345
1384
- #if defined( CONFIG_SOC_SERIES_STM32F1X ) || defined( STM32F3X_ADC_V2_5 )
1346
+ #if DT_HAS_COMPAT_STATUS_OKAY ( st_stm32f1_adc )
1385
1347
adc_stm32_calib_delay (dev );
1386
1348
adc_stm32_calib (dev );
1387
1349
LL_ADC_REG_SetTriggerSource (adc , LL_ADC_REG_TRIG_SOFTWARE );
1388
- #endif /* !defined(CONFIG_SOC_SERIES_STM32F1X) && !defined(STM32F3X_ADC_V2_5 ) */
1350
+ #endif /* DT_HAS_COMPAT_STATUS_OKAY(st_stm32f1_adc ) */
1389
1351
1390
1352
#ifdef CONFIG_SOC_SERIES_STM32H7X
1391
1353
/*
0 commit comments