fix: protect usb console pins
This commit is contained in:
@@ -51,7 +51,8 @@ static bool pin_is_allowed_impl(int pin,
|
|||||||
const char *allowlist_csv,
|
const char *allowlist_csv,
|
||||||
int min_pin,
|
int min_pin,
|
||||||
int max_pin,
|
int max_pin,
|
||||||
bool block_esp32_flash_pins)
|
bool block_esp32_flash_pins,
|
||||||
|
bool block_esp32s3_usb_pins)
|
||||||
{
|
{
|
||||||
bool in_policy;
|
bool in_policy;
|
||||||
|
|
||||||
@@ -64,6 +65,11 @@ static bool pin_is_allowed_impl(int pin,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* USB Serial/JTAG uses GPIO19/20 on ESP32-S3 */
|
||||||
|
if (block_esp32s3_usb_pins && (pin == 19 || pin == 20)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (allowlist_csv && allowlist_csv[0] != '\0') {
|
if (allowlist_csv && allowlist_csv[0] != '\0') {
|
||||||
in_policy = pin_in_allowlist(pin, allowlist_csv);
|
in_policy = pin_in_allowlist(pin, allowlist_csv);
|
||||||
} else {
|
} else {
|
||||||
@@ -81,10 +87,13 @@ bool gpio_policy_pin_is_allowed(int pin)
|
|||||||
{
|
{
|
||||||
#if defined(CONFIG_IDF_TARGET_ESP32)
|
#if defined(CONFIG_IDF_TARGET_ESP32)
|
||||||
return pin_is_allowed_impl(pin, MIMI_GPIO_ALLOWED_CSV,
|
return pin_is_allowed_impl(pin, MIMI_GPIO_ALLOWED_CSV,
|
||||||
MIMI_GPIO_MIN_PIN, MIMI_GPIO_MAX_PIN, true);
|
MIMI_GPIO_MIN_PIN, MIMI_GPIO_MAX_PIN, true, false);
|
||||||
|
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
|
||||||
|
return pin_is_allowed_impl(pin, MIMI_GPIO_ALLOWED_CSV,
|
||||||
|
MIMI_GPIO_MIN_PIN, MIMI_GPIO_MAX_PIN, false, true);
|
||||||
#else
|
#else
|
||||||
return pin_is_allowed_impl(pin, MIMI_GPIO_ALLOWED_CSV,
|
return pin_is_allowed_impl(pin, MIMI_GPIO_ALLOWED_CSV,
|
||||||
MIMI_GPIO_MIN_PIN, MIMI_GPIO_MAX_PIN, false);
|
MIMI_GPIO_MIN_PIN, MIMI_GPIO_MAX_PIN, false, false);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,6 +106,13 @@ bool gpio_policy_pin_forbidden_hint(int pin, char *result, size_t result_len)
|
|||||||
pin);
|
pin);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
|
||||||
|
if (pin == 19 || pin == 20) {
|
||||||
|
snprintf(result, result_len,
|
||||||
|
"Error: pin %d is reserved for ESP32-S3 USB Serial/JTAG (GPIO19/20); choose a different pin",
|
||||||
|
pin);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
(void)pin;
|
(void)pin;
|
||||||
(void)result;
|
(void)result;
|
||||||
|
|||||||
Reference in New Issue
Block a user