Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
ecdcc4f
Import ESP32-P4 support files from florianL21/esp32p4-support
pmnxis Apr 12, 2026
e32739a
Add esp32p4 feature and update memory.x for P4X (chip rev v3.x)
pmnxis Apr 12, 2026
a19cdff
ESP32-P4X v3.x alignment: clocks, CLIC, PSRAM HEX, Zcmp workaround
pmnxis Apr 20, 2026
6c5ffb2
Merge upstream/main into pmnxis/esp32p4x
pmnxis Apr 20, 2026
35b3f78
Reformat with cargo xtask fmt-packages
pmnxis Apr 20, 2026
b9d606d
Revert modification tooling of esp-hal by clippy
pmnxis Apr 21, 2026
0250e7a
Addressing comment avoid DW DMA
pmnxis Apr 21, 2026
b1545b0
Remove redundant interrupt provides from esp32p4.x PAC
pmnxis Apr 21, 2026
6a788e9
Addressing comment USB and wrong metadata P4
pmnxis Apr 22, 2026
4381c33
P4 cpu_wait_mode_on, per-core WAITI_ICG_EN read.
pmnxis Apr 22, 2026
e68b4ac
Remove some reference tracking comment (p4)
pmnxis Apr 26, 2026
aa9c0dd
Tyding to latest esp-hal (b2905c3)
pmnxis Apr 26, 2026
b0b003d
Addressing comment about crc and md5 rom
pmnxis Apr 29, 2026
87acd4a
Tyding esp32p4 rom ld for eco5 and idf 6.0.1
pmnxis Apr 29, 2026
5767684
Merge branch 'main' into pmnxis/esp32p4x
pmnxis Apr 30, 2026
a3fcece
PSRAM porting for P4X
pmnxis May 3, 2026
db7914d
Remove uselesss comment
pmnxis May 3, 2026
b6500bc
Tyding to latest clock code #5461
pmnxis May 3, 2026
48176ce
Cleanup esp32p4x branch from useless modification
pmnxis May 3, 2026
61fde81
Annotate P4 PAC drift sites with esp-pacs TODO markers
pmnxis May 3, 2026
05fbcfc
formatting for new esp32p4 support files
pmnxis May 3, 2026
1b0834e
To passing Machete cicd
pmnxis May 3, 2026
a8c86ee
Lint for P4X, but not fix them all
pmnxis May 3, 2026
a6fd7e5
Add better comment on clic.rs
pmnxis May 4, 2026
a1cc3ad
Delete p4 radio clk and fix right l2mem cfg comment
pmnxis May 4, 2026
1b91a7e
Important note about clic.rs
pmnxis May 4, 2026
11c6c5d
Merge branch 'main' into pmnxis/esp32p4x
pmnxis May 4, 2026
ccf1641
Tyding to latest #5473
pmnxis May 4, 2026
9b9772e
Merge branch 'esp-rs:main' into pmnxis/esp32p4x
pmnxis May 4, 2026
23adb5d
Apply ChangeLog considering cicd
pmnxis May 4, 2026
4f1d754
Consider fmt-packages for P4
pmnxis May 4, 2026
da5cc24
Merge branch 'main' into pmnxis/esp32p4x
pmnxis May 4, 2026
7030d87
Fix esp-println and enable the hello_world examples
bugadani May 4, 2026
da20b34
Enable the GPIO example
bugadani May 4, 2026
2d84eb7
Merge branch 'main' into pmnxis/esp32p4x
pmnxis May 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@
Bare-metal (`no_std`) hardware abstraction layer for Espressif devices. Currently supports the following devices:

- ESP32 Series: _ESP32_
- ESP32-C Series: _ESP32-C2, ESP32-C3, ESP32-C6_
- ESP32-C Series: _ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61_
- ESP32-H Series: _ESP32-H2_
- ESP32-P Series: _ESP32-P4_
Comment on lines -19 to +21
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this is out of scope. But touched.
Because when I look on the code and add P4 here, looks like C5/C61 is already supported in esp-hal

- ESP32-S Series: _ESP32-S2, ESP32-S3_

Additionally provides support for programming the low-power RISC-V cores found on the _ESP32-C6_, _ESP32-S2_, and _ESP32-S3_ via the [esp-lp-hal] package.
Expand Down
1 change: 1 addition & 0 deletions esp-backtrace/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- Initial ESP32-P4 (chip revision v3.0+) support (#5400)

### Changed

Expand Down
1 change: 1 addition & 0 deletions esp-backtrace/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ esp32c5 = ["esp-println?/esp32c5", "esp-metadata-generated/esp32c5"]
esp32c6 = ["esp-println?/esp32c6", "esp-metadata-generated/esp32c6"]
esp32c61 = ["esp-println?/esp32c61", "esp-metadata-generated/esp32c61"]
esp32h2 = ["esp-println?/esp32h2", "esp-metadata-generated/esp32h2"]
esp32p4 = ["esp-println?/esp32p4", "esp-metadata-generated/esp32p4"]
esp32s2 = ["esp-println?/esp32s2", "esp-metadata-generated/esp32s2", "semihosting?/openocd-semihosting"]
esp32s3 = ["esp-println?/esp32s3", "esp-metadata-generated/esp32s3", "semihosting?/openocd-semihosting", "print-float-registers"]

Expand Down
1 change: 1 addition & 0 deletions esp-bootloader-esp-idf/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Changed

- ESP32-P4: Use ROM CRC32 / MD5 functions instead of the software fallback (#5400)

### Fixed

Expand Down
2 changes: 2 additions & 0 deletions esp-bootloader-esp-idf/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,8 @@ esp32c61 = ["esp-rom-sys/esp32c61", "esp-metadata-generated/esp32c61", "esp-ha
##
esp32h2 = ["esp-rom-sys/esp32h2", "esp-metadata-generated/esp32h2", "esp-hal/esp32h2"]
##
esp32p4 = ["esp-rom-sys/esp32p4", "esp-metadata-generated/esp32p4", "esp-hal/esp32p4"]
##
esp32 = ["esp-rom-sys/esp32", "esp-metadata-generated/esp32", "esp-hal/esp32"]
##
esp32s2 = ["esp-rom-sys/esp32s2", "esp-metadata-generated/esp32s2", "esp-hal/esp32s2"]
Expand Down
7 changes: 7 additions & 0 deletions esp-bootloader-esp-idf/src/partitions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,13 @@ impl<'a> PartitionTable<'a> {
let paddr = unsafe {
((0x600c5000 as *const u32).read_volatile() & 0xff) << 16
};
} else if #[cfg(feature = "esp32p4")] {
// DR_REG_FLASH_SPI0_BASE : 0x5008C000 = DR_REG_HPPERIPH0_BASE + 0x8C000
// TODO: verify MSPI register for partition physical address read
let paddr = unsafe {
((0x5008C000 + 0x380) as *mut u32).write_volatile(0); // SPI_MEM_C_MMU_ITEM_INDEX_REG
(((0x5008C000 + 0x37c) as *const u32).read_volatile() & 0xff) << 16 // SPI_MEM_C_MMU_ITEM_CONTENT_REG
};
} else if #[cfg(any(feature = "esp32c5", feature = "esp32c6", feature = "esp32c61", feature = "esp32h2"))] {
let paddr = unsafe {
((0x60002000 + 0x380) as *mut u32).write_volatile(0);
Expand Down
3 changes: 3 additions & 0 deletions esp-hal/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- C5 and C61: Enable RTC timekeeping (#5449)
- C61: usb-serial-jtag and debug-assist (#5427)
- C61: dedicated gpio (#5426)
- Initial ESP32-P4 (chip revision v3.0+) support (#5400)
- P4: Initial peripheral support for GPIO, UART, I2C, SPI, DMA, USB Serial/JTAG, eFuse, SYSTIMER (#5400)
- P4: AP-HEX PSRAM driver stub with configurable HP L2MEM cache/RAM split via `ESP_HAL_CONFIG_L2_CACHE_SIZE` (#5400)

### Changed

Expand Down
19 changes: 19 additions & 0 deletions esp-hal/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,10 @@ esp32c61 = { version = "0.3", features = ["critical-section", "rt"], optional =
esp32h2 = { version = "0.19", features = ["critical-section", "rt"], optional = true }
esp32s2 = { version = "0.31", features = ["critical-section", "rt"], optional = true }
esp32s3 = { version = "0.35", features = ["critical-section", "rt"], optional = true }
# ESP32-P4 PAC: use git rev fc3e6d4 (matching firmware consumers) -- the
# crates.io release of esp32p4 0.2 doesn't match this revision's generated
# register layout, so we intentionally stick with the git dep here.
esp32p4 = { version = "0.2", features = ["critical-section", "rt"], optional = true, git = "https://github.com/esp-rs/esp-pacs", rev = "fc3e6d4" }

[target.'cfg(target_arch = "riscv32")'.dependencies]
riscv = { version = "0.15.0" }
Expand Down Expand Up @@ -154,6 +158,7 @@ rt = [
"esp32c2?/rt",
"esp32c3?/rt",
"esp32c6?/rt",
"esp32p4?/rt",
"esp32h2?/rt",
"esp32s2?/rt",
"esp32s3?/rt",
Expand Down Expand Up @@ -231,6 +236,20 @@ esp32c6 = [
"esp-sync/esp32c6",
"esp-metadata-generated/esp32c6",
]
## ESP32-P4 (chip revision v3.x / eco5 only, RISC-V dual-core HP + LP core)
## NOTE: This targets P4X (ESP32-P4NRW16X/32X) with chip revision >= v3.0.
## NRND variants (without X suffix) are NOT supported.
## Based on TRM v0.5 (Pre-release) and Chip Revision v3.x User Guide v1.0.
esp32p4 = [
"dep:esp32p4",
"esp-riscv-rt/rtc-ram",
"esp-riscv-rt/clic-48",
"procmacros/rtc-fast",
"procmacros/has-lp-core",
"esp-rom-sys/esp32p4",
"esp-sync/esp32p4",
"esp-metadata-generated/esp32p4",
]
##
esp32c61 = [
"dep:esp32c61",
Expand Down
Loading
Loading