Fix platform_rmt_allocate for esp32-S3
By not relying on ifdefing for specific targets, but instead using the SOC_RMT_xxx macros to figure it out.
This commit is contained in:
parent
1b38d8e6eb
commit
7155d7197a
|
@ -24,19 +24,19 @@ static bool rmt_channel_check( uint8_t channel, uint8_t num_mem )
|
||||||
return rmt_channel_check( channel-1, num_mem-1);
|
return rmt_channel_check( channel-1, num_mem-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_IDF_TARGET_ESP32C3)
|
|
||||||
int platform_rmt_allocate( uint8_t num_mem, rmt_mode_t mode )
|
int platform_rmt_allocate( uint8_t num_mem, rmt_mode_t mode )
|
||||||
#else
|
|
||||||
int platform_rmt_allocate( uint8_t num_mem, rmt_mode_t mode __attribute__((unused)))
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
int channel;
|
int channel;
|
||||||
int alloc_min;
|
int alloc_min;
|
||||||
int alloc_max;
|
int alloc_max;
|
||||||
uint8_t tag = 1;
|
uint8_t tag = 1;
|
||||||
|
|
||||||
#if defined(CONFIG_IDF_TARGET_ESP32C3)
|
#if SOC_RMT_TX_CANDIDATES_PER_GROUP == SOC_RMT_CHANNELS_PER_GROUP
|
||||||
/* The ESP32-C3 is limited to TX on channel 0-1 and RX on channel 2-3. */
|
alloc_min = 0;
|
||||||
|
alloc_max = RMT_CHANNEL_MAX - 1;
|
||||||
|
#else
|
||||||
|
/* On platforms where channels cannot do both TX and RX, the TX ones always
|
||||||
|
seem to start at index 0, and are then followed by the RX channels. */
|
||||||
if( mode==RMT_MODE_TX ) {
|
if( mode==RMT_MODE_TX ) {
|
||||||
alloc_min = 0;
|
alloc_min = 0;
|
||||||
alloc_max = SOC_RMT_TX_CANDIDATES_PER_GROUP - 1;
|
alloc_max = SOC_RMT_TX_CANDIDATES_PER_GROUP - 1;
|
||||||
|
@ -44,10 +44,6 @@ int platform_rmt_allocate( uint8_t num_mem, rmt_mode_t mode __attribute__((unuse
|
||||||
alloc_min = RMT_CHANNEL_MAX - SOC_RMT_RX_CANDIDATES_PER_GROUP;
|
alloc_min = RMT_CHANNEL_MAX - SOC_RMT_RX_CANDIDATES_PER_GROUP;
|
||||||
alloc_max = RMT_CHANNEL_MAX - 1;
|
alloc_max = RMT_CHANNEL_MAX - 1;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
/* The other ESP32 devices can do RX and TX on all channels. */
|
|
||||||
alloc_min = 0;
|
|
||||||
alloc_max = RMT_CHANNEL_MAX - 1;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (channel = alloc_max; channel >= alloc_min; channel--) {
|
for (channel = alloc_max; channel >= alloc_min; channel--) {
|
||||||
|
|
Loading…
Reference in New Issue