@@ -45,11 +45,6 @@ static const char *ADC_TAG = "ADC";
45
45
//////////////////////// Locks ///////////////////////////////////////////
46
46
LOG_MODULE_REGISTER (adc_legacy , CONFIG_ADC_LOG_LEVEL );
47
47
48
- extern int rtc_spinlock ;
49
-
50
- #define RTC_ENTER_CRITICAL () do { rtc_spinlock = irq_lock(); } while(0)
51
- #define RTC_EXIT_CRITICAL () irq_unlock(rtc_spinlock);
52
-
53
48
#define DIGI_ENTER_CRITICAL ()
54
49
#define DIGI_EXIT_CRITICAL ()
55
50
@@ -142,9 +137,9 @@ esp_err_t adc2_pad_get_io_num(adc2_channel_t channel, gpio_num_t *gpio_num)
142
137
#if SOC_ADC_RTC_CTRL_SUPPORTED
143
138
esp_err_t adc_set_clk_div (uint8_t clk_div )
144
139
{
145
- DIGI_CONTROLLER_ENTER ();
140
+ unsigned int key = irq_lock ();
146
141
adc_ll_digi_set_clk_div (clk_div );
147
- DIGI_CONTROLLER_EXIT ( );
142
+ irq_unlock ( key );
148
143
return ESP_OK ;
149
144
}
150
145
@@ -196,14 +191,14 @@ esp_err_t adc_common_gpio_init(adc_unit_t adc_unit, adc_channel_t channel)
196
191
esp_err_t adc_set_data_inv (adc_unit_t adc_unit , bool inv_en )
197
192
{
198
193
if (adc_unit == ADC_UNIT_1 ) {
199
- SARADC1_ENTER ();
194
+ unsigned int key = irq_lock ();
200
195
adc_oneshot_ll_output_invert (ADC_UNIT_1 , inv_en );
201
- SARADC1_EXIT ( );
196
+ irq_unlock ( key );
202
197
}
203
198
if (adc_unit == ADC_UNIT_2 ) {
204
- SARADC2_ENTER ();
199
+ unsigned int key = irq_lock ();
205
200
adc_oneshot_ll_output_invert (ADC_UNIT_2 , inv_en );
206
- SARADC2_EXIT ( );
201
+ irq_unlock ( key );
207
202
}
208
203
209
204
return ESP_OK ;
@@ -241,14 +236,14 @@ esp_err_t adc_set_data_width(adc_unit_t adc_unit, adc_bits_width_t width_bit)
241
236
#endif
242
237
243
238
if (adc_unit == ADC_UNIT_1 ) {
244
- SARADC1_ENTER ();
239
+ unsigned int key = irq_lock ();
245
240
adc_oneshot_ll_set_output_bits (ADC_UNIT_1 , bitwidth );
246
- SARADC1_EXIT ( );
241
+ irq_unlock ( key );
247
242
}
248
243
if (adc_unit == ADC_UNIT_2 ) {
249
- SARADC2_ENTER ();
244
+ unsigned int key = irq_lock ();
250
245
adc_oneshot_ll_set_output_bits (ADC_UNIT_2 , bitwidth );
251
- SARADC2_EXIT ( );
246
+ irq_unlock ( key );
252
247
}
253
248
254
249
return ESP_OK ;
@@ -263,9 +258,9 @@ esp_err_t adc_set_data_width(adc_unit_t adc_unit, adc_bits_width_t width_bit)
263
258
#if !CONFIG_IDF_TARGET_ESP32
264
259
esp_err_t adc_rtc_reset (void )
265
260
{
266
- FSM_ENTER ();
261
+ unsigned int key = irq_lock ();
267
262
adc_ll_rtc_reset ();
268
- FSM_EXIT ( );
263
+ irq_unlock ( key );
269
264
return ESP_OK ;
270
265
}
271
266
#endif
@@ -286,10 +281,10 @@ esp_err_t adc1_config_channel_atten(adc1_channel_t channel, adc_atten_t atten)
286
281
#endif //#if SOC_ADC_DIG_CTRL_SUPPORTED && !SOC_ADC_RTC_CTRL_SUPPORTED
287
282
288
283
adc_common_gpio_init (ADC_UNIT_1 , channel );
289
- SARADC1_ENTER ();
284
+ unsigned int key = irq_lock ();
290
285
adc_rtc_chan_init (ADC_UNIT_1 );
291
286
adc_oneshot_ll_set_atten (ADC_UNIT_1 , channel , atten );
292
- SARADC1_EXIT ( );
287
+ irq_unlock ( key );
293
288
294
289
return ESP_OK ;
295
290
}
@@ -325,9 +320,9 @@ esp_err_t adc1_config_width(adc_bits_width_t width_bit)
325
320
bitwidth = ADC_BITWIDTH_12 ;
326
321
#endif
327
322
328
- SARADC1_ENTER ();
323
+ unsigned int key = irq_lock ();
329
324
adc_oneshot_ll_set_output_bits (ADC_UNIT_1 , bitwidth );
330
- SARADC1_EXIT ( );
325
+ irq_unlock ( key );
331
326
332
327
return ESP_OK ;
333
328
}
@@ -341,10 +336,10 @@ esp_err_t adc1_dma_mode_acquire(void)
341
336
342
337
sar_periph_ctrl_adc_continuous_power_acquire ();
343
338
344
- SARADC1_ENTER ();
339
+ unsigned int key = irq_lock ();
345
340
/* switch SARADC into DIG channel */
346
341
adc_ll_set_controller (ADC_UNIT_1 , ADC_LL_CTRL_DIG );
347
- SARADC1_EXIT ( );
342
+ irq_unlock ( key );
348
343
349
344
return ESP_OK ;
350
345
}
@@ -356,10 +351,10 @@ esp_err_t adc1_rtc_mode_acquire(void)
356
351
SARADC1_ACQUIRE ();
357
352
sar_periph_ctrl_adc_oneshot_power_acquire ();
358
353
359
- SARADC1_ENTER ();
354
+ unsigned int key = irq_lock ();
360
355
/* switch SARADC into RTC channel. */
361
356
adc_ll_set_controller (ADC_UNIT_1 , ADC_LL_CTRL_RTC );
362
- SARADC1_EXIT ( );
357
+ irq_unlock ( key );
363
358
364
359
return ESP_OK ;
365
360
}
@@ -386,7 +381,7 @@ int adc1_get_raw(adc1_channel_t channel)
386
381
adc_set_hw_calibration_code (ADC_UNIT_1 , atten );
387
382
#endif //SOC_ADC_CALIBRATION_V1_SUPPORTED
388
383
389
- SARADC1_ENTER ();
384
+ unsigned int key = irq_lock ();
390
385
#ifdef CONFIG_IDF_TARGET_ESP32
391
386
adc_ll_hall_disable (); //Disable other peripherals.
392
387
adc_ll_amp_disable (); //Currently the LNA is not open, close it by default.
@@ -397,7 +392,7 @@ int adc1_get_raw(adc1_channel_t channel)
397
392
#if !CONFIG_IDF_TARGET_ESP32
398
393
adc_ll_rtc_reset (); //Reset FSM of rtc controller
399
394
#endif
400
- SARADC1_EXIT ( );
395
+ irq_unlock ( key );
401
396
402
397
adc1_lock_release ();
403
398
return adc_value ;
@@ -413,7 +408,7 @@ void adc1_ulp_enable(void)
413
408
{
414
409
sar_periph_ctrl_adc_oneshot_power_acquire ();
415
410
416
- SARADC1_ENTER ();
411
+ unsigned int key = irq_lock ();
417
412
adc_ll_set_controller (ADC_UNIT_1 , ADC_LL_CTRL_ULP );
418
413
/* since most users do not need LNA and HALL with uLP, we disable them here
419
414
open them in the uLP if needed. */
@@ -422,7 +417,7 @@ void adc1_ulp_enable(void)
422
417
adc_ll_hall_disable ();
423
418
adc_ll_amp_disable ();
424
419
#endif
425
- SARADC1_EXIT ( );
420
+ irq_unlock ( key );
426
421
}
427
422
#endif
428
423
@@ -452,10 +447,10 @@ esp_err_t adc2_config_channel_atten(adc2_channel_t channel, adc_atten_t atten)
452
447
#endif
453
448
454
449
//avoid collision with other tasks
455
- SARADC2_ENTER ();
450
+ unsigned int key = irq_lock ();
456
451
adc_rtc_chan_init (ADC_UNIT_2 );
457
452
adc_oneshot_ll_set_atten (ADC_UNIT_2 , channel , atten );
458
- SARADC2_EXIT ( );
453
+ irq_unlock ( key );
459
454
460
455
#if CONFIG_IDF_TARGET_ESP32
461
456
adc_lock_release (ADC_UNIT_2 );
@@ -553,7 +548,7 @@ esp_err_t adc2_get_raw(adc2_channel_t channel, adc_bits_width_t width_bit, int *
553
548
554
549
//avoid collision with other tasks
555
550
adc2_init (); // in critical section with whole rtc module. because the PWDET use the same registers, place it here.
556
- SARADC2_ENTER ();
551
+ unsigned int key = irq_lock ();
557
552
558
553
#if SOC_ADC_ARBITER_SUPPORTED
559
554
adc_arbiter_t config = ADC_ARBITER_CONFIG_DEFAULT ();
@@ -593,7 +588,7 @@ esp_err_t adc2_get_raw(adc2_channel_t channel, adc_bits_width_t width_bit, int *
593
588
}
594
589
#endif //CONFIG_PM_ENABLE
595
590
#endif //CONFIG_IDF_TARGET_ESP32
596
- SARADC2_EXIT ( );
591
+ irq_unlock ( key );
597
592
598
593
sar_periph_ctrl_adc_oneshot_power_release ();
599
594
#if CONFIG_IDF_TARGET_ESP32
@@ -625,13 +620,13 @@ esp_err_t adc_vref_to_gpio(adc_unit_t adc_unit, gpio_num_t gpio)
625
620
626
621
sar_periph_ctrl_adc_oneshot_power_acquire ();
627
622
if (adc_unit == ADC_UNIT_1 ) {
628
- VREF_ENTER ( 1 );
623
+ unsigned int key = irq_lock ( );
629
624
adc_ll_vref_output (ADC_UNIT_1 , ch , true);
630
- VREF_EXIT ( 1 );
625
+ irq_unlock ( key );
631
626
} else if (adc_unit == ADC_UNIT_2 ) {
632
- VREF_ENTER ( 2 );
627
+ unsigned int key = irq_lock ( );
633
628
adc_ll_vref_output (ADC_UNIT_2 , ch , true);
634
- VREF_EXIT ( 2 );
629
+ irq_unlock ( key );
635
630
}
636
631
637
632
//Configure RTC gpio, Only ADC2's channels IO are supported to output reference voltage.
@@ -650,10 +645,6 @@ esp_err_t adc_vref_to_gpio(adc_unit_t adc_unit, gpio_num_t gpio)
650
645
---------------------------------------------------------------*/
651
646
#include "esp_check.h"
652
647
653
- int adc_reg_lock ;
654
- #define ADC_REG_LOCK_ENTER () do { adc_reg_lock = irq_lock(); } while(0)
655
- #define ADC_REG_LOCK_EXIT () irq_unlock(adc_reg_lock);
656
-
657
648
static adc_atten_t s_atten1_single [ADC1_CHANNEL_MAX ]; //Array saving attenuate of each channel of ADC1, used by single read API
658
649
#if (SOC_ADC_PERIPH_NUM >= 2 )
659
650
static adc_atten_t s_atten2_single [ADC2_CHANNEL_MAX ]; //Array saving attenuate of each channel of ADC2, used by single read API
@@ -718,13 +709,13 @@ esp_err_t adc_vref_to_gpio(adc_unit_t adc_unit, gpio_num_t gpio)
718
709
719
710
sar_periph_ctrl_adc_oneshot_power_acquire ();
720
711
if (adc_unit == ADC_UNIT_1 ) {
721
- RTC_ENTER_CRITICAL ();
712
+ unsigned int key = irq_lock ();
722
713
adc_ll_vref_output (ADC_UNIT_1 , channel , true);
723
- RTC_EXIT_CRITICAL ( );
714
+ irq_unlock ( key );
724
715
} else { //ADC_UNIT_2
725
- RTC_ENTER_CRITICAL ();
716
+ unsigned int key = irq_lock ();
726
717
adc_ll_vref_output (ADC_UNIT_2 , channel , true);
727
- RTC_EXIT_CRITICAL ( );
718
+ irq_unlock ( key );
728
719
}
729
720
730
721
ret = adc_digi_gpio_init (ADC_UNIT_2 , BIT (channel ));
@@ -778,10 +769,10 @@ int adc1_get_raw(adc1_channel_t channel)
778
769
adc_set_hw_calibration_code (ADC_UNIT_1 , atten );
779
770
#endif
780
771
781
- ADC_REG_LOCK_ENTER ();
772
+ unsigned int key = irq_lock ();
782
773
adc_oneshot_ll_set_atten (ADC_UNIT_1 , channel , atten );
783
774
adc_hal_convert (ADC_UNIT_1 , channel , clk_src_freq_hz , & raw_out );
784
- ADC_REG_LOCK_EXIT ( );
775
+ irq_unlock ( key );
785
776
786
777
sar_periph_ctrl_adc_oneshot_power_release ();
787
778
periph_module_disable (PERIPH_SARADC_MODULE );
@@ -834,10 +825,10 @@ esp_err_t adc2_get_raw(adc2_channel_t channel, adc_bits_width_t width_bit, int *
834
825
adc_set_hw_calibration_code (ADC_UNIT_2 , atten );
835
826
#endif
836
827
837
- ADC_REG_LOCK_ENTER ();
828
+ unsigned int key = irq_lock ();
838
829
adc_oneshot_ll_set_atten (ADC_UNIT_2 , channel , atten );
839
830
ret = adc_hal_convert (ADC_UNIT_2 , channel , clk_src_freq_hz , raw_out );
840
- ADC_REG_LOCK_EXIT ( );
831
+ irq_unlock ( key );
841
832
842
833
sar_periph_ctrl_adc_oneshot_power_release ();
843
834
periph_module_disable (PERIPH_SARADC_MODULE );
0 commit comments