Skip to content

Commit 04b9349

Browse files
committed
refactor(pcnt): clean up the soc_caps.h file for PCNT
1 parent 6c968ce commit 04b9349

File tree

39 files changed

+547
-678
lines changed

39 files changed

+547
-678
lines changed

components/esp_driver_dac/test_apps/dac/main/test_dac.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ TEST_CASE("DAC_dma_convert_frequency_test", "[dac]")
257257
gpio_set_direction(GPIO_NUM_4, GPIO_MODE_INPUT_OUTPUT);
258258
// The DAC conversion frequency is equal to I2S bclk.
259259
esp_rom_gpio_connect_out_signal(GPIO_NUM_4, i2s_periph_signal[0].m_tx_ws_sig, 0, 0);
260-
esp_rom_gpio_connect_in_signal(GPIO_NUM_4, pcnt_periph_signals.groups[0].units[0].channels[0].pulse_sig, 0);
260+
esp_rom_gpio_connect_in_signal(GPIO_NUM_4, soc_pcnt_signals[0].units[0].channels[0].pulse_sig_id_matrix, 0);
261261

262262
size_t len = 800;
263263
uint8_t data[len];

components/esp_driver_i2s/test_apps/i2s/main/test_i2s.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -847,7 +847,7 @@ static void i2s_test_common_sample_rate(i2s_chan_handle_t rx_chan, i2s_std_clk_c
847847
gpio_func_sel(MASTER_WS_IO, PIN_FUNC_GPIO);
848848
gpio_set_direction(MASTER_WS_IO, GPIO_MODE_INPUT_OUTPUT);
849849
esp_rom_gpio_connect_out_signal(MASTER_WS_IO, i2s_periph_signal[0].m_rx_ws_sig, 0, 0);
850-
esp_rom_gpio_connect_in_signal(MASTER_WS_IO, pcnt_periph_signals.groups[0].units[0].channels[0].pulse_sig, 0);
850+
esp_rom_gpio_connect_in_signal(MASTER_WS_IO, soc_pcnt_signals[0].units[0].channels[0].pulse_sig_id_matrix, 0);
851851

852852
const uint32_t test_freq[] = {
853853
8000, 10000, 11025, 12000, 16000, 22050,

components/esp_driver_pcnt/src/pulse_cnt.c

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,16 @@ typedef struct pcnt_chan_t pcnt_chan_t;
6868

6969
struct pcnt_platform_t {
7070
_lock_t mutex; // platform level mutex lock
71-
pcnt_group_t *groups[SOC_PCNT_GROUPS]; // pcnt group pool
72-
int group_ref_counts[SOC_PCNT_GROUPS]; // reference count used to protect group install/uninstall
71+
pcnt_group_t *groups[SOC_PCNT_ATTR(INST_NUM)]; // pcnt group pool
72+
int group_ref_counts[SOC_PCNT_ATTR(INST_NUM)]; // reference count used to protect group install/uninstall
7373
};
7474

7575
struct pcnt_group_t {
7676
int group_id; // Group ID, index from 0
7777
int intr_priority; // PCNT interrupt priority
7878
portMUX_TYPE spinlock; // to protect per-group register level concurrent access
7979
pcnt_hal_context_t hal;
80-
pcnt_unit_t *units[SOC_PCNT_UNITS_PER_GROUP]; // array of PCNT units
80+
pcnt_unit_t *units[SOC_PCNT_ATTR(UNITS_PER_INST)]; // array of PCNT units
8181
#if CONFIG_PM_ENABLE
8282
esp_pm_lock_handle_t pm_lock; // power management lock
8383
#endif
@@ -112,7 +112,7 @@ struct pcnt_unit_t {
112112
int clear_signal_gpio_num; // which gpio clear signal input
113113
int accum_value; // accumulated count value
114114
pcnt_step_interval_t step_info; // step interval info
115-
pcnt_chan_t *channels[SOC_PCNT_CHANNELS_PER_UNIT]; // array of PCNT channels
115+
pcnt_chan_t *channels[SOC_PCNT_ATTR(CHANS_PER_UNIT)]; // array of PCNT channels
116116
pcnt_watch_point_t watchers[PCNT_LL_WATCH_EVENT_MAX]; // array of PCNT watchers
117117
intr_handle_t intr; // interrupt handle
118118
pcnt_unit_fsm_t fsm; // record PCNT unit's driver state
@@ -145,12 +145,12 @@ static esp_err_t pcnt_register_to_group(pcnt_unit_t *unit)
145145
{
146146
pcnt_group_t *group = NULL;
147147
int unit_id = -1;
148-
for (int i = 0; i < SOC_PCNT_GROUPS; i++) {
148+
for (int i = 0; i < SOC_PCNT_ATTR(INST_NUM); i++) {
149149
group = pcnt_acquire_group_handle(i);
150150
ESP_RETURN_ON_FALSE(group, ESP_ERR_NO_MEM, TAG, "no mem for group (%d)", i);
151151
// loop to search free unit in the group
152152
portENTER_CRITICAL(&group->spinlock);
153-
for (int j = 0; j < SOC_PCNT_UNITS_PER_GROUP; j++) {
153+
for (int j = 0; j < SOC_PCNT_ATTR(UNITS_PER_INST); j++) {
154154
if (!group->units[j]) {
155155
unit_id = j;
156156
group->units[j] = unit;
@@ -243,7 +243,7 @@ esp_err_t pcnt_new_unit(const pcnt_unit_config_t *config, pcnt_unit_handle_t *re
243243
} else {
244244
isr_flags |= PCNT_ALLOW_INTR_PRIORITY_MASK;
245245
}
246-
ESP_GOTO_ON_ERROR(esp_intr_alloc_intrstatus(pcnt_periph_signals.groups[group_id].irq, isr_flags,
246+
ESP_GOTO_ON_ERROR(esp_intr_alloc_intrstatus(soc_pcnt_signals[group_id].irq_id, isr_flags,
247247
(uint32_t)pcnt_ll_get_intr_status_reg(group->hal.dev), PCNT_LL_UNIT_WATCH_EVENT(unit_id),
248248
pcnt_default_isr, unit, &unit->intr), err,
249249
TAG, "install interrupt service failed");
@@ -311,13 +311,13 @@ esp_err_t pcnt_del_unit(pcnt_unit_handle_t unit)
311311
int group_id = group->group_id;
312312
int unit_id = unit->unit_id;
313313

314-
for (int i = 0; i < SOC_PCNT_CHANNELS_PER_UNIT; i++) {
314+
for (int i = 0; i < SOC_PCNT_ATTR(CHANS_PER_UNIT); i++) {
315315
ESP_RETURN_ON_FALSE(!unit->channels[i], ESP_ERR_INVALID_STATE, TAG, "channel %d still in working", i);
316316
}
317317

318318
#if SOC_PCNT_SUPPORT_CLEAR_SIGNAL
319319
if (unit->clear_signal_gpio_num >= 0) {
320-
uint32_t clear_signal_idx = pcnt_periph_signals.groups[group_id].units[unit_id].clear_sig;
320+
uint32_t clear_signal_idx = soc_pcnt_signals[group_id].units[unit_id].clear_sig_id_matrix;
321321
esp_rom_gpio_connect_in_signal(GPIO_MATRIX_CONST_ZERO_INPUT, clear_signal_idx, 0);
322322
}
323323
#endif // SOC_PCNT_SUPPORT_CLEAR_SIGNAL
@@ -335,7 +335,7 @@ esp_err_t pcnt_unit_set_clear_signal(pcnt_unit_handle_t unit, const pcnt_clear_s
335335
pcnt_group_t *group = unit->group;
336336
int group_id = group->group_id;
337337
int unit_id = unit->unit_id;
338-
uint32_t clear_signal_idx = pcnt_periph_signals.groups[group_id].units[unit_id].clear_sig;
338+
uint32_t clear_signal_idx = soc_pcnt_signals[group_id].units[unit_id].clear_sig_id_matrix;
339339

340340
if (config) {
341341
int io_num = config->clear_signal_gpio_num;
@@ -534,7 +534,7 @@ esp_err_t pcnt_unit_register_event_callbacks(pcnt_unit_handle_t unit, const pcnt
534534
} else {
535535
isr_flags |= PCNT_ALLOW_INTR_PRIORITY_MASK;
536536
}
537-
ESP_RETURN_ON_ERROR(esp_intr_alloc_intrstatus(pcnt_periph_signals.groups[group_id].irq, isr_flags,
537+
ESP_RETURN_ON_ERROR(esp_intr_alloc_intrstatus(soc_pcnt_signals[group_id].irq_id, isr_flags,
538538
(uint32_t)pcnt_ll_get_intr_status_reg(group->hal.dev), PCNT_LL_UNIT_WATCH_EVENT(unit_id),
539539
pcnt_default_isr, unit, &unit->intr),
540540
TAG, "install interrupt service failed");
@@ -592,7 +592,7 @@ esp_err_t pcnt_unit_add_watch_point(pcnt_unit_handle_t unit, int watch_point)
592592
}
593593
// other threshold watch point
594594
else {
595-
int thres_num = SOC_PCNT_THRES_POINT_PER_UNIT - 1;
595+
int thres_num = SOC_PCNT_ATTR(THRES_POINT_PER_UNIT) - 1;
596596
switch (thres_num) {
597597
case 1:
598598
if (unit->watchers[PCNT_LL_WATCH_EVENT_THRES1].event_id == PCNT_LL_WATCH_EVENT_INVALID) {
@@ -779,7 +779,7 @@ esp_err_t pcnt_new_channel(pcnt_unit_handle_t unit, const pcnt_chan_config_t *co
779779
// search for a free channel
780780
int channel_id = -1;
781781
portENTER_CRITICAL(&unit->spinlock);
782-
for (int i = 0; i < SOC_PCNT_CHANNELS_PER_UNIT; i++) {
782+
for (int i = 0; i < SOC_PCNT_ATTR(CHANS_PER_UNIT); i++) {
783783
if (!unit->channels[i]) {
784784
channel_id = i;
785785
unit->channels[channel_id] = channel;
@@ -794,25 +794,25 @@ esp_err_t pcnt_new_channel(pcnt_unit_handle_t unit, const pcnt_chan_config_t *co
794794
gpio_func_sel(config->edge_gpio_num, PIN_FUNC_GPIO);
795795
gpio_input_enable(config->edge_gpio_num);
796796
esp_rom_gpio_connect_in_signal(config->edge_gpio_num,
797-
pcnt_periph_signals.groups[group_id].units[unit_id].channels[channel_id].pulse_sig,
797+
soc_pcnt_signals[group_id].units[unit_id].channels[channel_id].pulse_sig_id_matrix,
798798
config->flags.invert_edge_input);
799799
} else {
800800
// using virtual IO
801801
esp_rom_gpio_connect_in_signal(config->flags.virt_edge_io_level ? GPIO_MATRIX_CONST_ONE_INPUT : GPIO_MATRIX_CONST_ZERO_INPUT,
802-
pcnt_periph_signals.groups[group_id].units[unit_id].channels[channel_id].pulse_sig,
802+
soc_pcnt_signals[group_id].units[unit_id].channels[channel_id].pulse_sig_id_matrix,
803803
config->flags.invert_edge_input);
804804
}
805805

806806
if (config->level_gpio_num >= 0) {
807807
gpio_func_sel(config->level_gpio_num, PIN_FUNC_GPIO);
808808
gpio_input_enable(config->level_gpio_num);
809809
esp_rom_gpio_connect_in_signal(config->level_gpio_num,
810-
pcnt_periph_signals.groups[group_id].units[unit_id].channels[channel_id].control_sig,
810+
soc_pcnt_signals[group_id].units[unit_id].channels[channel_id].ctl_sig_id_matrix,
811811
config->flags.invert_level_input);
812812
} else {
813813
// using virtual IO
814814
esp_rom_gpio_connect_in_signal(config->flags.virt_level_io_level ? GPIO_MATRIX_CONST_ONE_INPUT : GPIO_MATRIX_CONST_ZERO_INPUT,
815-
pcnt_periph_signals.groups[group_id].units[unit_id].channels[channel_id].control_sig,
815+
soc_pcnt_signals[group_id].units[unit_id].channels[channel_id].ctl_sig_id_matrix,
816816
config->flags.invert_level_input);
817817
}
818818

@@ -846,12 +846,12 @@ esp_err_t pcnt_del_channel(pcnt_channel_handle_t chan)
846846

847847
if (chan->level_gpio_num >= 0) {
848848
esp_rom_gpio_connect_in_signal(GPIO_MATRIX_CONST_ONE_INPUT,
849-
pcnt_periph_signals.groups[group_id].units[unit_id].channels[channel_id].control_sig,
849+
soc_pcnt_signals[group_id].units[unit_id].channels[channel_id].ctl_sig_id_matrix,
850850
0);
851851
}
852852
if (chan->edge_gpio_num >= 0) {
853853
esp_rom_gpio_connect_in_signal(GPIO_MATRIX_CONST_ONE_INPUT,
854-
pcnt_periph_signals.groups[group_id].units[unit_id].channels[channel_id].pulse_sig,
854+
soc_pcnt_signals[group_id].units[unit_id].channels[channel_id].pulse_sig_id_matrix,
855855
0);
856856
}
857857

components/esp_driver_pcnt/test_apps/pulse_cnt/main/test_pulse_cnt.c

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@
99
#include "freertos/FreeRTOS.h"
1010
#include "freertos/task.h"
1111
#include "unity.h"
12+
#include "soc/soc_caps.h"
13+
#include "soc/pcnt_periph.h"
14+
#include "hal/pcnt_ll.h"
1215
#include "driver/pulse_cnt.h"
1316
#include "driver/gpio.h"
14-
#include "soc/soc_caps.h"
1517
#include "esp_attr.h"
1618
#include "test_pulse_cnt_board.h"
17-
#include "hal/pcnt_ll.h"
1819

1920
TEST_CASE("pcnt_unit_install_uninstall", "[pcnt]")
2021
{
@@ -23,21 +24,21 @@ TEST_CASE("pcnt_unit_install_uninstall", "[pcnt]")
2324
.high_limit = 100,
2425
.intr_priority = 0,
2526
};
26-
pcnt_unit_handle_t units[SOC_PCNT_UNITS_PER_GROUP];
27+
pcnt_unit_handle_t units[SOC_PCNT_ATTR(UNITS_PER_INST)];
2728
int count_value = 0;
2829

2930
printf("install pcnt units and check initial count\r\n");
30-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP - 1; i++) {
31+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST) - 1; i++) {
3132
TEST_ESP_OK(pcnt_new_unit(&unit_config, &units[i]));
3233
TEST_ESP_OK(pcnt_unit_get_count(units[i], &count_value));
3334
TEST_ASSERT_EQUAL(0, count_value);
3435
}
3536

3637
// unit with a different interrupt priority
3738
unit_config.intr_priority = 3;
38-
TEST_ESP_ERR(ESP_ERR_INVALID_STATE, pcnt_new_unit(&unit_config, &units[SOC_PCNT_UNITS_PER_GROUP - 1]));
39+
TEST_ESP_ERR(ESP_ERR_INVALID_STATE, pcnt_new_unit(&unit_config, &units[SOC_PCNT_ATTR(UNITS_PER_INST) - 1]));
3940
unit_config.intr_priority = 0;
40-
TEST_ESP_OK(pcnt_new_unit(&unit_config, &units[SOC_PCNT_UNITS_PER_GROUP - 1]));
41+
TEST_ESP_OK(pcnt_new_unit(&unit_config, &units[SOC_PCNT_ATTR(UNITS_PER_INST) - 1]));
4142

4243
// no more free pcnt units
4344
TEST_ASSERT_EQUAL(ESP_ERR_NOT_FOUND, pcnt_new_unit(&unit_config, &units[0]));
@@ -46,7 +47,7 @@ TEST_CASE("pcnt_unit_install_uninstall", "[pcnt]")
4647
pcnt_glitch_filter_config_t filter_config = {
4748
.max_glitch_ns = 1000,
4849
};
49-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
50+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
5051
TEST_ESP_OK(pcnt_unit_set_glitch_filter(units[i], &filter_config));
5152
}
5253
// invalid glitch configuration
@@ -56,30 +57,30 @@ TEST_CASE("pcnt_unit_install_uninstall", "[pcnt]")
5657
.on_reach = NULL,
5758
};
5859
printf("enable pcnt units\r\n");
59-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
60+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
6061
TEST_ESP_OK(pcnt_unit_register_event_callbacks(units[i], &cbs, NULL));
6162
TEST_ESP_OK(pcnt_unit_enable(units[i]));
6263
}
6364

6465
printf("start pcnt units\r\n");
65-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
66+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
6667
TEST_ESP_OK(pcnt_unit_start(units[i]));
6768
}
6869

6970
printf("stop pcnt units\r\n");
70-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
71+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
7172
TEST_ESP_OK(pcnt_unit_stop(units[i]));
7273
}
7374

7475
// can't uninstall unit before disable it
7576
TEST_ASSERT_EQUAL(ESP_ERR_INVALID_STATE, pcnt_del_unit(units[0]));
7677
printf("disable pcnt units\r\n");
77-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
78+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
7879
TEST_ESP_OK(pcnt_unit_disable(units[i]));
7980
}
8081

8182
printf("uninstall pcnt units\r\n");
82-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
83+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
8384
TEST_ESP_OK(pcnt_del_unit(units[i]));
8485
}
8586
}
@@ -96,17 +97,17 @@ TEST_CASE("pcnt_channel_install_uninstall", "[pcnt]")
9697
.edge_gpio_num = TEST_PCNT_GPIO_A, // only detect edge signal in this case
9798
.level_gpio_num = -1,
9899
};
99-
pcnt_unit_handle_t units[SOC_PCNT_UNITS_PER_GROUP];
100-
pcnt_channel_handle_t chans[SOC_PCNT_UNITS_PER_GROUP][SOC_PCNT_CHANNELS_PER_UNIT];
100+
pcnt_unit_handle_t units[SOC_PCNT_ATTR(UNITS_PER_INST)];
101+
pcnt_channel_handle_t chans[SOC_PCNT_ATTR(UNITS_PER_INST)][SOC_PCNT_ATTR(CHANS_PER_UNIT)];
101102

102103
printf("install pcnt units\r\n");
103-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
104+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
104105
TEST_ESP_OK(pcnt_new_unit(&unit_config, &units[i]));
105106
}
106107

107108
printf("install pcnt channels\r\n");
108-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
109-
for (int j = 0; j < SOC_PCNT_CHANNELS_PER_UNIT; j++) {
109+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
110+
for (int j = 0; j < SOC_PCNT_ATTR(CHANS_PER_UNIT); j++) {
110111
TEST_ESP_OK(pcnt_new_channel(units[i], &chan_config, &chans[i][j]));
111112
TEST_ESP_OK(pcnt_channel_set_edge_action(chans[i][j], PCNT_CHANNEL_EDGE_ACTION_INCREASE, PCNT_CHANNEL_EDGE_ACTION_HOLD));
112113
TEST_ESP_OK(pcnt_channel_set_level_action(chans[i][j], PCNT_CHANNEL_LEVEL_ACTION_KEEP, PCNT_CHANNEL_LEVEL_ACTION_KEEP));
@@ -117,55 +118,55 @@ TEST_CASE("pcnt_channel_install_uninstall", "[pcnt]")
117118

118119
printf("start units\r\n");
119120
int count_value = 0;
120-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
121+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
121122
// start unit
122123
TEST_ESP_OK(pcnt_unit_start(units[i]));
123124
// trigger 10 rising edge on GPIO0
124125
test_gpio_simulate_rising_edge(TEST_PCNT_GPIO_A, 10);
125126
TEST_ESP_OK(pcnt_unit_get_count(units[i], &count_value));
126127
// each channel increases to the same unit counter
127-
TEST_ASSERT_EQUAL(10 * SOC_PCNT_CHANNELS_PER_UNIT, count_value);
128+
TEST_ASSERT_EQUAL(10 * SOC_PCNT_ATTR(CHANS_PER_UNIT), count_value);
128129
}
129130

130131
printf("clear counts\r\n");
131-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
132+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
132133
TEST_ESP_OK(pcnt_unit_clear_count(units[i]));
133134
TEST_ESP_OK(pcnt_unit_get_count(units[i], &count_value));
134135
TEST_ASSERT_EQUAL(0, count_value);
135136
}
136137

137138
printf("stop unit\r\n");
138-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
139+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
139140
// stop unit
140141
TEST_ESP_OK(pcnt_unit_stop(units[i]));
141142
}
142143

143144
// trigger 10 rising edge on GPIO0 shouldn't increase the counter
144145
test_gpio_simulate_rising_edge(TEST_PCNT_GPIO_A, 10);
145-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
146+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
146147
TEST_ESP_OK(pcnt_unit_get_count(units[i], &count_value));
147148
TEST_ASSERT_EQUAL(0, count_value);
148149
}
149150

150151
printf("restart units\r\n");
151-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
152+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
152153
// start unit
153154
TEST_ESP_OK(pcnt_unit_start(units[i]));
154155
// trigger 10 rising edge on GPIO
155156
test_gpio_simulate_rising_edge(TEST_PCNT_GPIO_A, 10);
156157
TEST_ESP_OK(pcnt_unit_get_count(units[i], &count_value));
157158
// each channel increases to the same unit counter
158-
TEST_ASSERT_EQUAL(10 * SOC_PCNT_CHANNELS_PER_UNIT, count_value);
159+
TEST_ASSERT_EQUAL(10 * SOC_PCNT_ATTR(CHANS_PER_UNIT), count_value);
159160
}
160161

161162
printf("uninstall channels and units\r\n");
162-
for (int i = 0; i < SOC_PCNT_UNITS_PER_GROUP; i++) {
163+
for (int i = 0; i < SOC_PCNT_ATTR(UNITS_PER_INST); i++) {
163164
// stop unit
164165
TEST_ESP_OK(pcnt_unit_stop(units[i]));
165166
TEST_ESP_OK(pcnt_unit_disable(units[i]));
166167
// can't uninstall unit when channel is still alive
167168
TEST_ASSERT_EQUAL(ESP_ERR_INVALID_STATE, pcnt_del_unit(units[i]));
168-
for (int j = 0; j < SOC_PCNT_CHANNELS_PER_UNIT; j++) {
169+
for (int j = 0; j < SOC_PCNT_ATTR(CHANS_PER_UNIT); j++) {
169170
TEST_ESP_OK(pcnt_del_channel(chans[i][j]));
170171
}
171172
TEST_ESP_OK(pcnt_del_unit(units[i]));

components/soc/esp32/include/soc/Kconfig.soc_caps.in

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -559,22 +559,6 @@ config SOC_MPU_REGION_WO_SUPPORTED
559559
bool
560560
default n
561561

562-
config SOC_PCNT_GROUPS
563-
int
564-
default 1
565-
566-
config SOC_PCNT_UNITS_PER_GROUP
567-
int
568-
default 8
569-
570-
config SOC_PCNT_CHANNELS_PER_UNIT
571-
int
572-
default 2
573-
574-
config SOC_PCNT_THRES_POINT_PER_UNIT
575-
int
576-
default 2
577-
578562
config SOC_RMT_GROUPS
579563
int
580564
default 1

components/soc/esp32/include/soc/soc_caps.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -275,12 +275,6 @@
275275
#define SOC_MPU_REGION_RO_SUPPORTED 0
276276
#define SOC_MPU_REGION_WO_SUPPORTED 0
277277

278-
/*-------------------------- PCNT CAPS ---------------------------------------*/
279-
#define SOC_PCNT_GROUPS (1U)
280-
#define SOC_PCNT_UNITS_PER_GROUP (8)
281-
#define SOC_PCNT_CHANNELS_PER_UNIT (2)
282-
#define SOC_PCNT_THRES_POINT_PER_UNIT (2)
283-
284278
/*-------------------------- RMT CAPS ----------------------------------------*/
285279
#define SOC_RMT_GROUPS 1U /*!< One RMT group */
286280
#define SOC_RMT_TX_CANDIDATES_PER_GROUP 8 /*!< Number of channels that capable of Transmit in each group */

components/soc/esp32/include/soc/soc_caps_full.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,9 @@
2323
/*--------------------------- SDM (Sigma-Delta Modulator) ------------------------*/
2424
#define _SOC_CAPS_SDM_INST_NUM 1 // Number of SDM instances
2525
#define _SOC_CAPS_SDM_CHANS_PER_INST 8 // Number of channels in each SDM instance
26+
27+
/*--------------------------- PCNT (Pulse Counter) ------------------------*/
28+
#define _SOC_CAPS_PCNT_INST_NUM 1 // Number of PCNT instances
29+
#define _SOC_CAPS_PCNT_UNITS_PER_INST 8 // Number of units in each PCNT instance
30+
#define _SOC_CAPS_PCNT_CHANS_PER_UNIT 2 // Number of channels in each PCNT unit
31+
#define _SOC_CAPS_PCNT_THRES_POINT_PER_UNIT 2 // Number of threshold points in each PCNT unit

0 commit comments

Comments
 (0)