From e89ff42f92650b300d85bb5937dd6493103896ec Mon Sep 17 00:00:00 2001 From: Mikey Sklar Date: Mon, 26 Oct 2026 13:02:04 -0700 Subject: [PATCH] espressif: enable audiopwmio on ESP32-S3 Turn on LEDC + GPTimer PWM audio by default on the S3, as on the S2. The two S3 boards that remove audiocore or I2S audio opt out, so their builds are unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../boards/adafruit_esp32s3_camera/mpconfigboard.mk | 1 + .../seeed_xiao_esp32_s3_trmnl_diy_kit/mpconfigboard.mk | 1 + ports/espressif/mpconfigport.mk | 7 +++++-- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.mk b/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.mk index 62b6d3612b3..1eda3497585 100644 --- a/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.mk +++ b/ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.mk @@ -17,6 +17,7 @@ CIRCUITPY_ESPCAMERA = 1 CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOI2SIN = 0 +CIRCUITPY_AUDIOPWMIO = 0 CIRCUITPY_CANIO = 0 CIRCUITPY_DUALBANK = 0 CIRCUITPY_FRAMEBUFFERIO = 0 diff --git a/ports/espressif/boards/seeed_xiao_esp32_s3_trmnl_diy_kit/mpconfigboard.mk b/ports/espressif/boards/seeed_xiao_esp32_s3_trmnl_diy_kit/mpconfigboard.mk index 9a6b15aa76c..dc0e64f765a 100644 --- a/ports/espressif/boards/seeed_xiao_esp32_s3_trmnl_diy_kit/mpconfigboard.mk +++ b/ports/espressif/boards/seeed_xiao_esp32_s3_trmnl_diy_kit/mpconfigboard.mk @@ -30,3 +30,4 @@ CIRCUITPY_AUDIOCORE = 0 CIRCUITPY_AUDIOBUSIO = 0 CIRCUITPY_AUDIOBUSIO_PDMIN = 0 CIRCUITPY_AUDIOI2SIN = 0 +CIRCUITPY_AUDIOPWMIO = 0 diff --git a/ports/espressif/mpconfigport.mk b/ports/espressif/mpconfigport.mk index 4dc09f6d85b..14d8509ddce 100644 --- a/ports/espressif/mpconfigport.mk +++ b/ports/espressif/mpconfigport.mk @@ -484,6 +484,9 @@ CIRCUITPY_ESP_USB_SERIAL_JTAG ?= 0 # No DAC CIRCUITPY_AUDIOIO = 0 +# LEDC + GPTimer PWM audio, the only analog audio output without I2S hardware. +CIRCUITPY_AUDIOPWMIO ?= 1 + endif #### end chip-specific choices ######################################## @@ -552,8 +555,8 @@ USB_NUM_IN_ENDPOINTS = 5 # only thing a user needs, with no custom build. ifeq ($(IDF_TARGET),esp32s3) # It needs the TinyUSB device stack and audiocore, so leave it off for boards -# that turn either off. The S3 has no AUDIOIO and no AUDIOPWMIO, so audiocore -# follows CIRCUITPY_AUDIOBUSIO here. +# that turn either off. CIRCUITPY_AUDIOCORE is not set yet at this point, so +# boards that drop audio are recognized by CIRCUITPY_AUDIOBUSIO = 0 instead. ifeq ($(filter 0,$(CIRCUITPY_USB_DEVICE) $(CIRCUITPY_AUDIOCORE) $(CIRCUITPY_AUDIOBUSIO)),) CIRCUITPY_USB_AUDIO ?= 1 endif