refactor(ledc): refactor ledc periph signal define

This commit is contained in:
Song Ruo Jing
2026-04-02 15:48:07 +08:00
parent 25d8f3c269
commit 16f4d275e4
14 changed files with 144 additions and 15 deletions

View File

@@ -808,7 +808,7 @@ static esp_err_t _ledc_set_pin(int gpio_num, bool out_inv, ledc_mode_t speed_mod
if (old_gpio_rsv_mask & BIT64(gpio_num)) {
ESP_LOGW(LEDC_TAG, "GPIO %d is not usable, maybe conflict with others", gpio_num);
}
gpio_matrix_output(gpio_num, ledc_periph_signal[0].speed_mode[speed_mode].sig_out0_idx + channel, out_inv, false);
gpio_matrix_output(gpio_num, ledc_periph_signal[0].speed_mode[speed_mode].sig_out_idx[channel], out_inv, false);
portENTER_CRITICAL(&ledc_spinlock);
p_ledc_obj[speed_mode]->occupied_pin_mask[channel] |= BIT64(gpio_num);
portEXIT_CRITICAL(&ledc_spinlock);

View File

@@ -14,8 +14,30 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_HS_SIG_OUT0_IDX },
[1] = { .sig_out0_idx = LEDC_LS_SIG_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_HS_SIG_OUT0_IDX,
LEDC_HS_SIG_OUT1_IDX,
LEDC_HS_SIG_OUT2_IDX,
LEDC_HS_SIG_OUT3_IDX,
LEDC_HS_SIG_OUT4_IDX,
LEDC_HS_SIG_OUT5_IDX,
LEDC_HS_SIG_OUT6_IDX,
LEDC_HS_SIG_OUT7_IDX,
}
},
[1] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT0_IDX,
LEDC_LS_SIG_OUT1_IDX,
LEDC_LS_SIG_OUT2_IDX,
LEDC_LS_SIG_OUT3_IDX,
LEDC_LS_SIG_OUT4_IDX,
LEDC_LS_SIG_OUT5_IDX,
LEDC_LS_SIG_OUT6_IDX,
LEDC_LS_SIG_OUT7_IDX,
}
},
},
}
};

View File

@@ -14,7 +14,16 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_LS_SIG_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT0_IDX,
LEDC_LS_SIG_OUT1_IDX,
LEDC_LS_SIG_OUT2_IDX,
LEDC_LS_SIG_OUT3_IDX,
LEDC_LS_SIG_OUT4_IDX,
LEDC_LS_SIG_OUT5_IDX,
}
},
},
}
};

View File

@@ -14,7 +14,16 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_LS_SIG_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT0_IDX,
LEDC_LS_SIG_OUT1_IDX,
LEDC_LS_SIG_OUT2_IDX,
LEDC_LS_SIG_OUT3_IDX,
LEDC_LS_SIG_OUT4_IDX,
LEDC_LS_SIG_OUT5_IDX,
}
},
},
}
};

View File

@@ -15,7 +15,16 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_LS_SIG_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT0_IDX,
LEDC_LS_SIG_OUT1_IDX,
LEDC_LS_SIG_OUT2_IDX,
LEDC_LS_SIG_OUT3_IDX,
LEDC_LS_SIG_OUT4_IDX,
LEDC_LS_SIG_OUT5_IDX,
}
},
},
}
};

View File

@@ -15,7 +15,16 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_LS_SIG_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT0_IDX,
LEDC_LS_SIG_OUT1_IDX,
LEDC_LS_SIG_OUT2_IDX,
LEDC_LS_SIG_OUT3_IDX,
LEDC_LS_SIG_OUT4_IDX,
LEDC_LS_SIG_OUT5_IDX,
}
},
},
}
};

View File

@@ -15,7 +15,16 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_LS_SIG_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT0_IDX,
LEDC_LS_SIG_OUT1_IDX,
LEDC_LS_SIG_OUT2_IDX,
LEDC_LS_SIG_OUT3_IDX,
LEDC_LS_SIG_OUT4_IDX,
LEDC_LS_SIG_OUT5_IDX,
}
},
},
}
};

View File

@@ -15,7 +15,16 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_LS_SIG_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT0_IDX,
LEDC_LS_SIG_OUT1_IDX,
LEDC_LS_SIG_OUT2_IDX,
LEDC_LS_SIG_OUT3_IDX,
LEDC_LS_SIG_OUT4_IDX,
LEDC_LS_SIG_OUT5_IDX,
}
},
},
}
};

View File

@@ -15,7 +15,16 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_LS_SIG_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT0_IDX,
LEDC_LS_SIG_OUT1_IDX,
LEDC_LS_SIG_OUT2_IDX,
LEDC_LS_SIG_OUT3_IDX,
LEDC_LS_SIG_OUT4_IDX,
LEDC_LS_SIG_OUT5_IDX,
}
},
},
}
};

View File

@@ -15,7 +15,18 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_LS_SIG_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT0_IDX,
LEDC_LS_SIG_OUT1_IDX,
LEDC_LS_SIG_OUT2_IDX,
LEDC_LS_SIG_OUT3_IDX,
LEDC_LS_SIG_OUT4_IDX,
LEDC_LS_SIG_OUT5_IDX,
LEDC_LS_SIG_OUT6_IDX,
LEDC_LS_SIG_OUT7_IDX,
}
},
},
}
};

View File

@@ -15,7 +15,18 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_LS_SIG_OUT_PAD_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT_PAD_OUT0_IDX,
LEDC_LS_SIG_OUT_PAD_OUT1_IDX,
LEDC_LS_SIG_OUT_PAD_OUT2_IDX,
LEDC_LS_SIG_OUT_PAD_OUT3_IDX,
LEDC_LS_SIG_OUT_PAD_OUT4_IDX,
LEDC_LS_SIG_OUT_PAD_OUT5_IDX,
LEDC_LS_SIG_OUT_PAD_OUT6_IDX,
LEDC_LS_SIG_OUT_PAD_OUT7_IDX,
}
},
},
}
};

View File

@@ -14,7 +14,18 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_LS_SIG_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT0_IDX,
LEDC_LS_SIG_OUT1_IDX,
LEDC_LS_SIG_OUT2_IDX,
LEDC_LS_SIG_OUT3_IDX,
LEDC_LS_SIG_OUT4_IDX,
LEDC_LS_SIG_OUT5_IDX,
LEDC_LS_SIG_OUT6_IDX,
LEDC_LS_SIG_OUT7_IDX,
}
},
},
}
};

View File

@@ -14,7 +14,18 @@ const ledc_signal_conn_t ledc_periph_signal[1] = {
{
.irq_id = ETS_LEDC_INTR_SOURCE,
.speed_mode = {
[0] = { .sig_out0_idx = LEDC_LS_SIG_OUT0_IDX },
[0] = {
.sig_out_idx = {
LEDC_LS_SIG_OUT0_IDX,
LEDC_LS_SIG_OUT1_IDX,
LEDC_LS_SIG_OUT2_IDX,
LEDC_LS_SIG_OUT3_IDX,
LEDC_LS_SIG_OUT4_IDX,
LEDC_LS_SIG_OUT5_IDX,
LEDC_LS_SIG_OUT6_IDX,
LEDC_LS_SIG_OUT7_IDX,
}
},
},
}
};

View File

@@ -28,7 +28,7 @@ extern "C" {
typedef struct {
const int irq_id;
struct {
const int sig_out0_idx;
const int sig_out_idx[SOC_LEDC_CHANNEL_NUM];
} speed_mode[LEDC_SPEED_MODE_MAX];
} ledc_signal_conn_t;