From ae6b398f5114047d437aaf7106c0c9573687f77c Mon Sep 17 00:00:00 2001 From: Lucas Tamborrino Date: Tue, 4 Apr 2023 15:35:38 -0300 Subject: [PATCH] dts: xtensa: espressif: esp32s3: add USB CDC support Enable USB CDC with self stack support for esp32s3. Signed-off-by: Lucas Tamborrino --- boards/xtensa/esp32s3_devkitm/doc/index.rst | 2 ++ boards/xtensa/esp32s3_devkitm/esp32s3_devkitm.dts | 4 ++++ drivers/serial/serial_esp32_usb.c | 12 +++++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/boards/xtensa/esp32s3_devkitm/doc/index.rst b/boards/xtensa/esp32s3_devkitm/doc/index.rst index 72a04369ed4..6236b8fd745 100644 --- a/boards/xtensa/esp32s3_devkitm/doc/index.rst +++ b/boards/xtensa/esp32s3_devkitm/doc/index.rst @@ -106,6 +106,8 @@ Current Zephyr's ESP32-S3-DevKitM board supports the following features: +------------+------------+-------------------------------------+ | GDMA | on-chip | dma | +------------+------------+-------------------------------------+ +| USB-CDC | on-chip | serial | ++------------+------------+-------------------------------------+ Prerequisites ------------- diff --git a/boards/xtensa/esp32s3_devkitm/esp32s3_devkitm.dts b/boards/xtensa/esp32s3_devkitm/esp32s3_devkitm.dts index d912c0f6d48..253821bea32 100644 --- a/boards/xtensa/esp32s3_devkitm/esp32s3_devkitm.dts +++ b/boards/xtensa/esp32s3_devkitm/esp32s3_devkitm.dts @@ -117,6 +117,10 @@ status = "okay"; }; +&usb_serial { + status = "disabled"; +}; + &flash0 { status = "okay"; partitions { diff --git a/drivers/serial/serial_esp32_usb.c b/drivers/serial/serial_esp32_usb.c index 83914ecc740..4a2fe243248 100644 --- a/drivers/serial/serial_esp32_usb.c +++ b/drivers/serial/serial_esp32_usb.c @@ -13,11 +13,21 @@ #include #include #include +#if defined(CONFIG_SOC_ESP32C3) #include +#else +#include +#endif #include #include #include +#ifdef CONFIG_SOC_ESP32C3 +#define ISR_HANDLER isr_handler_t +#else +#define ISR_HANDLER intr_handler_t +#endif + #define USBSERIAL_TIMEOUT_MAX_US 50000 static int s_usbserial_timeout; @@ -90,7 +100,7 @@ static int serial_esp32_usb_init(const struct device *dev) int ret = clock_control_on(config->clock_dev, config->clock_subsys); #ifdef CONFIG_UART_INTERRUPT_DRIVEN - data->irq_line = esp_intr_alloc(config->irq_source, 0, (isr_handler_t)serial_esp32_usb_isr, + data->irq_line = esp_intr_alloc(config->irq_source, 0, (ISR_HANDLER)serial_esp32_usb_isr, (void *)dev, NULL); #endif return ret;