8000 esp32/machine_pwm: Add LEDC_USE_PLL_DIV_CLK clock source. · micropython/micropython@e848554 · GitHub
[go: up one dir, main page]

Skip to content

Commit e848554

Browse files
committed
esp32/machine_pwm: Add LEDC_USE_PLL_DIV_CLK clock source.
Add LEDC_USE_PLL_DIV_CLK clock source for ESP32-C6 support. Reordering clock source list. Signed-off-by: Yoann Darche <yoannd@hotmail.com>
1 parent 85c3ec7 commit e848554

File tree

1 file changed

+35
-9
lines changed

1 file changed

+35
-9
lines changed

ports/esp32/machine_pwm.c

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,9 @@ static ledc_timer_config_t timers[PWM_TIMER_MAX];
116116
// Clock alias values (used by clock parameter)
117117
// PWM_LAST_CLK_IDX is not clock by a maker to identify outofindex values
118118
// PWM_AUTO_CLK is used in order to auto determinate the clock (no specific clock has been required)
119-
enum { PWM_APB_CLK, PWM_RC_FAST_CLK, PWM_REF_TICK, PWM_XTAL_CLK, PWM_AUTO_CLK, _PWM_LAST_CLK_IDX };
119+
enum { PWM_AUTO_CLK, PWM_APB_CLK, PWM_RC_FAST_CLK, PWM_REF_TICK, PWM_XTAL_CLK, PWM_PLL_CLK, _PWM_LAST_CLK_IDX };
120120
static const ledc_clk_cfg_t clk_source_map[] = {
121+
-2,
121122
LEDC_USE_APB_CLK,
122123
LEDC_USE_RC_FAST_CLK, // LEDC_USE_RC_FAST_CLK == LEDC_USE_RTC8M_CLK
123124
#if SOC_LEDC_SUPPORT_REF_TICK
@@ -126,9 +127,14 @@ static const ledc_clk_cfg_t clk_source_map[] = {
126127
-1,
127128
#endif
128129
#if SOC_LEDC_SUPPORT_XTAL_CLOCK
129-
LEDC_USE_XTAL_CLK
130+
LEDC_USE_XTAL_CLK,
130131
#else
131-
-1
132+
-1,
133+
#endif
134+
#if SOC_LEDC_SUPPORT_PLL_DIV_CLOCK
135+
LEDC_USE_PLL_DIV_CLK,
136+
#else
137+
-1,
132138
#endif
133139
};
134140

@@ -489,6 +495,11 @@ static int find_clock_in_use() {
489495
return PWM_XTAL_CLK;
490496
}
491497
#endif
498+
#if SOC_LEDC_SUPPORT_PLL_DIV_CLOCK
499+
else if (found_clk == LEDC_USE_PLL_DIV_CLK) {
500+
return PWM_PLL_CLK;
501+
}
502+
#endif
492503

493504
return PWM_AUTO_CLK;
494505
}
@@ -555,6 +566,11 @@ static void mp_machine_pwm_print(const mp_print_t *print, mp_obj_t self_in, mp_p
555566
mp_printf(print, ", clock=PWM_REF_TICK(%d)", PWM_REF_TICK);
556567
}
557568
#endif
569+
#if SOC_LEDC_SUPPORT_PLL_DIV_CLOCK
570+
else if (clk_src == LEDC_USE_PLL_DIV_CLK) {
571+
mp_printf(print, ", clock=PWM_PLL_CLK(%d)", PWM_PLL_CLK);
572+
}
573+
#endif
558574
else {
559575
mp_printf(print, ", clock=UNKNOWN");
560576
}
@@ -621,16 +637,26 @@ static void mp_machine_pwm_init_helper(machine_pwm_obj_t *self,
621637
if (pwm_clk != PWM_AUTO_CLK) {
622638
DFAF pwm_src_clock = pwm_clk;
623639
} else {
640+
#if SOC_LEDC_SUPPORT_PLL_DIV_CLOCK
641+
pwm_src_clock = PWM_PLL_CLK;
642+
#endif
643+
#if SOC_LEDC_SUPPORT_APB_CLOCK
624644
pwm_src_clock = PWM_APB_CLK;
645+
#endif
625646
}
626647
#else
627-
pwm_src_clock = PWM_APB_CLK;
648+
#if SOC_LEDC_SUPPORT_PLL_DIV_CLOCK
649+
pwm_src_clock = PWM_PLL_CLK;
650+
#endif
651+
#if SOC_LEDC_SUPPORT_APB_CLOCK
652+
pwm_src_clock = PWM_APB_CLK;
653+
#endif
628654

629-
#if SOC_LEDC_SUPPORT_REF_TICK
630-
if (freq < EMPIRIC_FREQ) {
631-
pwm_src_clock = PWM_REF_TICK; // 1 MHz
632-
}
633-
#endif
655+
#if SOC_LEDC_SUPPORT_REF_TICK
656+
if (freq < EMPIRIC_FREQ) {
657+
pwm_src_clock = PWM_REF_TICK; // 1 MHz
658+
}
659+
#endif
634660
#endif
635661
}
636662
#if !(PWM_SUPPORT_INDEP_CLOCK_SRC)

0 commit comments

Comments
 (0)
0