Skip to content

Commit 28b5933

Browse files
authored
Merge pull request #9612 from tannewt/esp32p4
Add support for the ESP32-P4
2 parents 64505f3 + ac2e099 commit 28b5933

File tree

23 files changed

+443
-28
lines changed

23 files changed

+443
-28
lines changed

ports/espressif/Makefile

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ CROSS_COMPILE = riscv32-esp-elf-
1212
else ifeq ($(IDF_TARGET),esp32c3)
1313
IDF_TARGET_ARCH = riscv
1414
CROSS_COMPILE = riscv32-esp-elf-
15+
else ifeq ($(IDF_TARGET),esp32p4)
16+
IDF_TARGET_ARCH = riscv
17+
CROSS_COMPILE = riscv32-esp-elf-
1518
else ifeq ($(IDF_TARGET),esp32c6)
1619
IDF_TARGET_ARCH = riscv
1720
CROSS_COMPILE = riscv32-esp-elf-
@@ -215,7 +218,13 @@ ifeq ($(IDF_TARGET_ARCH),xtensa)
215218

216219
CFLAGS += -mlongcalls -isystem esp-idf/components/xtensa/deprecated_include/ -Wno-error=cpp
217220
else ifeq ($(IDF_TARGET_ARCH),riscv)
221+
222+
ifeq ($(IDF_TARGET),esp32p4)
223+
CFLAGS += -march=rv32imafc_zicsr_zifencei_xesppie -mabi=ilp32f
224+
else
218225
CFLAGS += -march=rv32imac_zicsr_zifencei
226+
endif
227+
219228
LDFLAGS += \
220229
-Lesp-idf/components/riscv/ld \
221230
-Trom.api.ld
@@ -285,6 +294,16 @@ LDFLAGS += \
285294
-Tesp32c6.rom.wdt.ld
286295

287296

297+
CHIP_COMPONENTS = \
298+
esp_driver_tsens
299+
300+
else ifeq ($(IDF_TARGET),esp32p4)
301+
LDFLAGS += \
302+
-Tesp32p4.rom.newlib.ld \
303+
-Tesp32p4.rom.systimer.ld \
304+
-Tesp32p4.rom.wdt.ld
305+
306+
288307
CHIP_COMPONENTS = \
289308
esp_driver_tsens
290309

@@ -338,6 +357,8 @@ else ifeq ($(IDF_TARGET),esp32c3)
338357
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_ESP32C3
339358
else ifeq ($(IDF_TARGET),esp32c6)
340359
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_ESP32C6
360+
else ifeq ($(IDF_TARGET),esp32p4)
361+
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_ESP32P4
341362
else ifeq ($(IDF_TARGET),esp32h2)
342363
CFLAGS += -DCFG_TUSB_MCU=OPT_MCU_ESP32H2
343364
else ifeq ($(IDF_TARGET),esp32s2)
@@ -578,7 +599,10 @@ update-board-sdkconfig: $(BUILD)/esp-idf/config/sdkconfig.h
578599
python tools/update_sdkconfig.py --board=$(BOARD) --debug=$(DEBUG)
579600

580601
BINARY_WIFI_BLOBS = libcore.a libespnow.a libnet80211.a libpp.a libsmartconfig.a
581-
BINARY_BLOBS = esp-idf/components/esp_phy/lib/$(IDF_TARGET)/libphy.a
602+
603+
ifneq ($(IDF_TARGET),esp32p4)
604+
BINARY_BLOBS = esp-idf/components/esp_phy/lib/$(IDF_TARGET)/libphy.a
605+
endif
582606
ifneq ($(CIRCUITPY_WIFI),0)
583607
BINARY_BLOBS += esp-idf/components/esp_coex/lib/$(IDF_TARGET)/libcoexist.a $(addprefix esp-idf/components/esp_wifi/lib/$(IDF_TARGET)/, $(BINARY_WIFI_BLOBS))
584608
ifneq ($(IDF_TARGET),esp32c2)
@@ -590,9 +614,9 @@ ifeq ($(IDF_TARGET),esp32)
590614
BINARY_BLOBS += esp-idf/components/esp_phy/lib/$(IDF_TARGET)/librtc.a
591615
endif
592616

593-
ESP_IDF_COMPONENTS_LINK = $(IDF_TARGET_ARCH) $(CHIP_COMPONENTS) app_update bootloader_support driver esp_driver_gpio esp_driver_gptimer esp_driver_ledc esp_driver_spi esp_driver_uart efuse esp_adc esp_app_format esp_common esp_event esp_hw_support esp_mm esp_partition esp_phy esp_pm esp_ringbuf esp_rom esp_system esp_timer freertos hal heap log newlib nvs_flash pthread soc spi_flash vfs esp_vfs_console
617+
ESP_IDF_COMPONENTS_LINK = $(IDF_TARGET_ARCH) $(CHIP_COMPONENTS) app_update bootloader_support driver esp_driver_gpio esp_driver_gptimer esp_driver_ledc esp_driver_spi esp_driver_uart efuse esp_adc esp_app_format esp_common esp_event esp_hw_support esp_mm esp_partition esp_pm esp_ringbuf esp_rom esp_system esp_timer freertos hal heap log newlib nvs_flash pthread soc spi_flash vfs esp_vfs_console
594618
ifneq ($(CIRCUITPY_WIFI),0)
595-
ESP_IDF_COMPONENTS_LINK += esp_coex esp_netif esp-tls esp_wifi lwip mbedtls mdns wpa_supplicant
619+
ESP_IDF_COMPONENTS_LINK += esp_coex esp_netif esp-tls esp_wifi lwip mbedtls mdns wpa_supplicant esp_phy
596620
endif
597621
ifneq ($(CIRCUITPY_BLEIO),0)
598622
BLE_IMPL_esp32 := esp32
@@ -603,7 +627,7 @@ ifneq ($(CIRCUITPY_BLEIO),0)
603627
BLE_IMPL_esp32h2 := libble
604628
BLE_IMPL = $(BLE_IMPL_$(IDF_TARGET))
605629

606-
ESP_IDF_COMPONENTS_LINK += bt
630+
ESP_IDF_COMPONENTS_LINK += bt esp_phy
607631
ifeq ($(BLE_IMPL),esp32)
608632
# BLE will hang the ESP32 and trigger an interrupt watchdog without this undefined symbol at
609633
# link because a weak version of the interrupt that BLE uses will be linked incorrectly.
@@ -665,6 +689,8 @@ else ifeq ($(IDF_TARGET),esp32c3)
665689
BOOTLOADER_OFFSET = 0x0
666690
else ifeq ($(IDF_TARGET),esp32c6)
667691
BOOTLOADER_OFFSET = 0x0
692+
else ifeq ($(IDF_TARGET),esp32p4)
693+
BOOTLOADER_OFFSET = 0x2000
668694
else ifeq ($(IDF_TARGET),esp32s3)
669695
BOOTLOADER_OFFSET = 0x0
670696
else ifeq ($(IDF_TARGET),esp32s2)

ports/espressif/README.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Support Status:
1414
ESP32-C2, "alpha"
1515
ESP32-C3, "beta"
1616
ESP32-C6, "alpha"
17+
ESP32-P4, "alpha"
1718
ESP32-S2, "stable"
1819
ESP32-S3, "stable"
1920

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#include "supervisor/board.h"
8+
9+
// Use the MP_WEAK supervisor/shared/board.c versions of routines not defined here.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2019 Scott Shawcroft for Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#pragma once
8+
9+
// Micropython setup
10+
11+
#define MICROPY_HW_BOARD_NAME "ESP32-P4-Function-EV"
12+
#define MICROPY_HW_MCU_NAME "ESP32P4"
13+
14+
#define CIRCUITPY_BOOT_BUTTON (&pin_GPIO0)
15+
16+
#define DEFAULT_UART_BUS_RX (&pin_GPIO38)
17+
#define DEFAULT_UART_BUS_TX (&pin_GPIO37)
18+
19+
#define CIRCUITPY_CONSOLE_UART_TX DEFAULT_UART_BUS_TX
20+
#define CIRCUITPY_CONSOLE_UART_RX DEFAULT_UART_BUS_RX
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# USB_VID = 0x303A
2+
# USB_PID = 0x7003
3+
# USB_PRODUCT = "ESP32-P4-Function-EV"
4+
# USB_MANUFACTURER = "Espressif"
5+
6+
IDF_TARGET = esp32p4
7+
8+
CIRCUITPY_ESP_FLASH_SIZE = 16MB
9+
CIRCUITPY_ESP_FLASH_MODE = opi
10+
CIRCUITPY_ESP_FLASH_FREQ = 80m
11+
12+
CIRCUITPY_ESP_PSRAM_SIZE = 32MB
13+
CIRCUITPY_ESP_PSRAM_MODE = opi
14+
CIRCUITPY_ESP_PSRAM_FREQ = 80m
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// This file is part of the CircuitPython project: https://circuitpython.org
2+
//
3+
// SPDX-FileCopyrightText: Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
4+
//
5+
// SPDX-License-Identifier: MIT
6+
7+
#include "shared-bindings/board/__init__.h"
8+
9+
static const mp_rom_map_elem_t board_module_globals_table[] = {
10+
CIRCUITPYTHON_BOARD_DICT_STANDARD_ITEMS
11+
12+
{ MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_GPIO0) },
13+
{ MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_GPIO1) },
14+
{ MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_GPIO2) },
15+
{ MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_GPIO3) },
16+
{ MP_ROM_QSTR(MP_QSTR_IO4), MP_ROM_PTR(&pin_GPIO4) },
17+
{ MP_ROM_QSTR(MP_QSTR_IO5), MP_ROM_PTR(&pin_GPIO5) },
18+
{ MP_ROM_QSTR(MP_QSTR_IO6), MP_ROM_PTR(&pin_GPIO6) },
19+
{ MP_ROM_QSTR(MP_QSTR_IO7), MP_ROM_PTR(&pin_GPIO7) },
20+
{ MP_ROM_QSTR(MP_QSTR_IO8), MP_ROM_PTR(&pin_GPIO8) },
21+
{ MP_ROM_QSTR(MP_QSTR_IO9), MP_ROM_PTR(&pin_GPIO9) },
22+
{ MP_ROM_QSTR(MP_QSTR_IO10), MP_ROM_PTR(&pin_GPIO10) },
23+
{ MP_ROM_QSTR(MP_QSTR_IO11), MP_ROM_PTR(&pin_GPIO11) },
24+
{ MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_GPIO12) },
25+
{ MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_GPIO13) },
26+
{ MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_GPIO14) },
27+
{ MP_ROM_QSTR(MP_QSTR_IO15), MP_ROM_PTR(&pin_GPIO15) },
28+
{ MP_ROM_QSTR(MP_QSTR_IO16), MP_ROM_PTR(&pin_GPIO16) },
29+
{ MP_ROM_QSTR(MP_QSTR_IO17), MP_ROM_PTR(&pin_GPIO17) },
30+
{ MP_ROM_QSTR(MP_QSTR_IO18), MP_ROM_PTR(&pin_GPIO18) },
31+
{ MP_ROM_QSTR(MP_QSTR_IO19), MP_ROM_PTR(&pin_GPIO19) },
32+
{ MP_ROM_QSTR(MP_QSTR_IO20), MP_ROM_PTR(&pin_GPIO20) },
33+
{ MP_ROM_QSTR(MP_QSTR_IO21), MP_ROM_PTR(&pin_GPIO21) },
34+
{ MP_ROM_QSTR(MP_QSTR_IO35), MP_ROM_PTR(&pin_GPIO35) },
35+
{ MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_GPIO36) },
36+
{ MP_ROM_QSTR(MP_QSTR_IO37), MP_ROM_PTR(&pin_GPIO37) },
37+
{ MP_ROM_QSTR(MP_QSTR_IO38), MP_ROM_PTR(&pin_GPIO38) },
38+
{ MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_GPIO39) },
39+
{ MP_ROM_QSTR(MP_QSTR_IO40), MP_ROM_PTR(&pin_GPIO40) },
40+
{ MP_ROM_QSTR(MP_QSTR_IO41), MP_ROM_PTR(&pin_GPIO41) },
41+
{ MP_ROM_QSTR(MP_QSTR_IO42), MP_ROM_PTR(&pin_GPIO42) },
42+
{ MP_ROM_QSTR(MP_QSTR_IO43), MP_ROM_PTR(&pin_GPIO43) },
43+
{ MP_ROM_QSTR(MP_QSTR_IO44), MP_ROM_PTR(&pin_GPIO44) },
44+
{ MP_ROM_QSTR(MP_QSTR_IO45), MP_ROM_PTR(&pin_GPIO45) },
45+
{ MP_ROM_QSTR(MP_QSTR_IO46), MP_ROM_PTR(&pin_GPIO46) },
46+
{ MP_ROM_QSTR(MP_QSTR_IO47), MP_ROM_PTR(&pin_GPIO47) },
47+
{ MP_ROM_QSTR(MP_QSTR_IO48), MP_ROM_PTR(&pin_GPIO48) },
48+
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_GPIO48) },
49+
50+
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO43) },
51+
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO44) },
52+
53+
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
54+
};
55+
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);

ports/espressif/boards/espressif_esp32p4_function_ev/sdkconfig

Whitespace-only changes.

ports/espressif/common-hal/analogbufio/BufferedIn.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
#elif defined(CONFIG_IDF_TARGET_ESP32S2)
3434
#define ADC_RESULT_BYTE 2
3535
#define ADC_CONV_LIMIT_EN 0
36-
#elif defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2)
36+
#elif defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32H2) || defined(CONFIG_IDF_TARGET_ESP32P4)
3737
#define ADC_RESULT_BYTE 4
3838
#define ADC_CONV_LIMIT_EN 0
3939
#elif defined(CONFIG_IDF_TARGET_ESP32S3)

ports/espressif/common-hal/analogio/AnalogIn.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
#define DATA_WIDTH ADC_BITWIDTH_12
3333
#elif defined(CONFIG_IDF_TARGET_ESP32C6)
3434
#define DATA_WIDTH ADC_BITWIDTH_12
35+
#elif defined(CONFIG_IDF_TARGET_ESP32P4)
36+
#define DATA_WIDTH ADC_BITWIDTH_12
3537
#elif defined(CONFIG_IDF_TARGET_ESP32S2)
3638
#define DATA_WIDTH ADC_BITWIDTH_13
3739
#elif defined(CONFIG_IDF_TARGET_ESP32S3)
@@ -84,9 +86,10 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
8486

8587
adc_cali_scheme_ver_t supported_schemes;
8688
adc_cali_check_scheme(&supported_schemes);
89+
#ifndef CONFIG_IDF_TARGET_ESP32P4
8790
adc_cali_scheme_ver_t calibration_scheme = 0;
8891
adc_cali_handle_t calibration;
89-
92+
#endif
9093
#if defined(ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED) && ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED
9194
adc_cali_curve_fitting_config_t config = {
9295
.unit_id = self->pin->adc_index,
@@ -134,8 +137,11 @@ uint16_t common_hal_analogio_analogin_get_value(analogio_analogin_obj_t *self) {
134137

135138
// This corrects non-linear regions of the ADC range with a LUT, so it's a better reading than raw
136139
int voltage;
140+
#ifdef CONFIG_IDF_TARGET_ESP32P4
141+
voltage = 0;
142+
#else
137143
adc_cali_raw_to_voltage(calibration, adc_reading, &voltage);
138-
144+
#endif
139145

140146
#if defined(ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED) && ADC_CALI_SCHEME_CURVE_FITTING_SUPPORTED
141147
if (calibration_scheme == ADC_CALI_SCHEME_VER_CURVE_FITTING) {

ports/espressif/common-hal/espidf/__init__.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@
2727
static size_t psram_size_usable(void) {
2828
#ifdef CONFIG_SPIRAM
2929
/* PSRAM chip may be larger than the size we can map into address space */
30+
#ifdef CONFIG_IDF_TARGET_ESP32P4
31+
size_t s = esp_psram_get_size();
32+
#else
3033
size_t s = MIN(esp_psram_get_size(), SOC_EXTRAM_DATA_SIZE);
34+
#endif
3135
return s - esp_himem_reserved_area_size();
3236
#else
3337
return 0;

ports/espressif/common-hal/microcontroller/Pin.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,26 @@ static const uint64_t pin_mask_reset_forbidden =
171171
#endif
172172
#endif // ESP32H2
173173

174+
#if defined(CONFIG_IDF_TARGET_ESP32P4)
175+
// Never ever reset pins used to communicate with the SPI flash.
176+
GPIO_SEL_28 |
177+
GPIO_SEL_29 |
178+
GPIO_SEL_30 |
179+
GPIO_SEL_32 |
180+
GPIO_SEL_33 |
181+
GPIO_SEL_34 |
182+
#if CIRCUITPY_ESP_USB_SERIAL_JTAG
183+
// Never ever reset serial/JTAG communication pins.
184+
GPIO_SEL_50 | // USB D-
185+
GPIO_SEL_51 | // USB D+
186+
#endif
187+
#if defined(CONFIG_ESP_CONSOLE_UART_DEFAULT) && CONFIG_ESP_CONSOLE_UART_DEFAULT && CONFIG_ESP_CONSOLE_UART_NUM == 0
188+
// Never reset debug UART/console pins.
189+
GPIO_SEL_37 |
190+
GPIO_SEL_38 |
191+
#endif
192+
#endif // ESP32P4
193+
174194
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
175195
#if CIRCUITPY_USB_DEVICE
176196
// Never ever reset USB pins.

ports/espressif/common-hal/microcontroller/Processor.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,14 @@ void common_hal_mcu_processor_set_frequency(mcu_processor_obj_t *self, uint32_t
107107
}
108108
#endif
109109

110+
#ifndef CONFIG_IDF_TARGET_ESP32P4
110111
static uint8_t swap_nibbles(uint8_t v) {
111112
return ((v << 4) | (v >> 4)) & 0xff;
112113
}
114+
#endif
113115

114116
void common_hal_mcu_processor_get_uid(uint8_t raw_id[]) {
117+
#ifndef CONFIG_IDF_TARGET_ESP32P4
115118
memset(raw_id, 0, COMMON_HAL_MCU_PROCESSOR_UID_LENGTH);
116119

117120
uint8_t *ptr = &raw_id[COMMON_HAL_MCU_PROCESSOR_UID_LENGTH - 1];
@@ -149,6 +152,10 @@ void common_hal_mcu_processor_get_uid(uint8_t raw_id[]) {
149152
*ptr-- = swap_nibbles(mac_address_part & 0xff);
150153
mac_address_part >>= 8;
151154
*ptr-- = swap_nibbles(mac_address_part & 0xff);
155+
#else
156+
// TODO: Get UID for ESP32-P4.
157+
return;
158+
#endif
152159
}
153160

154161
mcu_reset_reason_t common_hal_mcu_processor_get_reset_reason(void) {

ports/espressif/common-hal/microcontroller/__init__.c

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
#elif defined(CONFIG_IDF_TARGET_ESP32C6)
3737
#include "soc/lp_aon_reg.h"
3838
#include "esp32c6/rom/rtc.h"
39+
#elif defined(CONFIG_IDF_TARGET_ESP32P4)
40+
#include "esp32p4/rom/rtc.h"
3941
#elif defined(CONFIG_IDF_TARGET_ESP32S2)
4042
#include "soc/rtc_cntl_reg.h"
4143
#include "esp32s2/rom/rtc.h"
@@ -93,18 +95,22 @@ void common_hal_mcu_on_next_reset(mcu_runmode_t runmode) {
9395
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
9496
REG_WRITE(RTC_RESET_CAUSE_REG, 0); // reset uf2
9597
#endif
96-
#ifdef SOC_LP_AON_SUPPORTED
98+
#if defined(CONFIG_IDF_TARGET_ESP32P4)
99+
REG_WRITE(LP_SYSTEM_REG_LP_STORE15_REG, 0);
100+
#elif defined(SOC_LP_AON_SUPPORTED)
97101
REG_WRITE(LP_AON_STORE0_REG, 0); // reset safe mode
98102
#else
99103
REG_WRITE(RTC_CNTL_STORE0_REG, 0); // reset safe mode
100104
#endif
101-
#if !defined(CONFIG_IDF_TARGET_ESP32)
102-
#ifdef SOC_LP_AON_SUPPORTED
105+
#if defined(CONFIG_IDF_TARGET_ESP32)
106+
// No UF2 bootloader.
107+
#elif defined(CONFIG_IDF_TARGET_ESP32P4)
108+
REG_WRITE(LP_SYSTEM_REG_SYS_CTRL_REG, 0);
109+
#elif defined(SOC_LP_AON_SUPPORTED)
103110
REG_WRITE(LP_AON_SYS_CFG_REG, 0); // reset bootloader
104111
#else
105112
REG_WRITE(RTC_CNTL_OPTION1_REG, 0); // reset bootloader
106113
#endif
107-
#endif
108114
break;
109115
case RUNMODE_SAFE_MODE:
110116
// enter safe mode on next boot
@@ -118,7 +124,10 @@ void common_hal_mcu_on_next_reset(mcu_runmode_t runmode) {
118124
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32S3)
119125
chip_usb_set_persist_flags(USBDC_BOOT_DFU);
120126
#endif
121-
#ifdef SOC_LP_AON_SUPPORTED
127+
128+
#if defined(CONFIG_IDF_TARGET_ESP32P4)
129+
REG_WRITE(LP_SYSTEM_REG_SYS_CTRL_REG, LP_SYSTEM_REG_FORCE_DOWNLOAD_BOOT);
130+
#elif defined(SOC_LP_AON_SUPPORTED)
122131
REG_WRITE(LP_AON_SYS_CFG_REG, LP_AON_FORCE_DOWNLOAD_BOOT);
123132
#else
124133
REG_WRITE(RTC_CNTL_OPTION1_REG, RTC_CNTL_FORCE_DOWNLOAD_BOOT);
@@ -314,5 +323,23 @@ static const mp_rom_map_elem_t mcu_pin_global_dict_table[] = {
314323
#ifdef GPIO48_EXISTS
315324
{ MP_ROM_QSTR(MP_QSTR_GPIO48), MP_ROM_PTR(&pin_GPIO48) },
316325
#endif
326+
#ifdef GPIO49_EXISTS
327+
{ MP_ROM_QSTR(MP_QSTR_GPIO49), MP_ROM_PTR(&pin_GPIO49) },
328+
#endif
329+
#ifdef GPIO50_EXISTS
330+
{ MP_ROM_QSTR(MP_QSTR_GPIO50), MP_ROM_PTR(&pin_GPIO50) },
331+
#endif
332+
#ifdef GPIO51_EXISTS
333+
{ MP_ROM_QSTR(MP_QSTR_GPIO51), MP_ROM_PTR(&pin_GPIO51) },
334+
#endif
335+
#ifdef GPIO52_EXISTS
336+
{ MP_ROM_QSTR(MP_QSTR_GPIO52), MP_ROM_PTR(&pin_GPIO52) },
337+
#endif
338+
#ifdef GPIO53_EXISTS
339+
{ MP_ROM_QSTR(MP_QSTR_GPIO53), MP_ROM_PTR(&pin_GPIO53) },
340+
#endif
341+
#ifdef GPIO54_EXISTS
342+
{ MP_ROM_QSTR(MP_QSTR_GPIO54), MP_ROM_PTR(&pin_GPIO54) },
343+
#endif
317344
};
318345
MP_DEFINE_CONST_DICT(mcu_pin_globals, mcu_pin_global_dict_table);

ports/espressif/esp-idf-config/sdkconfig-esp32p4.defaults

Whitespace-only changes.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# CONFIG_SPIRAM_TYPE_AUTO is not set
2+
# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set
3+
# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
4+
CONFIG_SPIRAM_TYPE_AUTO=y

0 commit comments

Comments
 (0)