2336 Commits

Author SHA1 Message Date
Scott Mabin
e620244dfa
use new pac releases (#3797) 2025-07-15 11:13:57 +00:00
Dániel Buga
906fa56435
Update PAC (#3794) 2025-07-15 10:38:29 +00:00
Scott Mabin
6db771c80e
(re-)introduce the rt feature on esp-hal (#3706)
Adds the `rt` feature which disables `esp_hal::init` and removes
runtime symbols from the global name space.

Disabling the `rt` feature is the recommended way to use esp-hal as a
library.
2025-07-15 09:20:26 +00:00
Dániel Buga
978f9083a6
Use array-ified TWAI DATA registers (#3793) 2025-07-15 09:07:26 +00:00
Dániel Buga
9e5e643bb0
Disable USB pads before connecting a function (#3795) 2025-07-15 08:02:30 +00:00
Dániel Buga
496aeb864b
More touching up of generated code (#3791)
* Document remaining macros, update gpio syntax

* Update if_pin_is_type syntax, simplify impl

* Remove impl_for_pin_type

* Remove if_pin_is_type

* Remove the gpio macro
2025-07-14 13:05:27 +00:00
Dániel Buga
40fc4f2c6c
Make sure repeated matchers in for_each macros don't overlap (#3790)
* Allow generating separate repeat branches

* Generate separate repeated matchers for simple/expanded signals
2025-07-14 13:04:51 +00:00
Dániel Buga
df7ba7d427
Document esp-metadata-generated (#3787)
* Try to make it more obvious how to update e-m-g

* Document top level, ensure build-script docs are present

* Document Chip, hide Config
2025-07-11 12:48:25 +00:00
Dániel Buga
9e20bc3807
Fix, simplify and ignore PSRAM doc example (#3789)
* Run doctests with all needed features

* Fix, simplify and ignore PSRAM doc example
2025-07-11 12:47:20 +00:00
Björn Quentin
1e611aaf80
More doc replace (#3788)
* Allow macros for `doc_replace`

* Use `doc_replace` for the DMA macros

* Cleanup
2025-07-11 12:04:56 +00:00
Dániel Buga
3a5aa72c4e
Define analog/LP functions (#3781)
* Shorten name

* Define analog/rtc functions

* Try to make the data useable

* Remove general pin attributes

* Do not generate unnecessary expanded matchers

* Remove expanded GPIO cases

* Move simplified io_type to where it is used

* Fix RTC IO with resistors calls

* Hide macros on H2

* Define rtcio pins for C2/C3

* Fix S2

* Compare against the correct GPIO number

* Deduplicate

* Restore one waker per pin

* Remove case that is no longer needed, avoid inline(always)
2025-07-11 09:41:50 +00:00
Björn Quentin
5d1472d73e
Use doc_replace more (#3786)
* Use `doc_replace` more

* Fix

* Fix
2025-07-11 09:32:12 +00:00
Chris Mumford
d585f75997
Add configuration option to pin the RMT driver in RAM (#3778)
* Add configuration option to pin the RMT driver in RAM

Allow the RMT driver to pinned in RAM. Doing so avoids
a costly load from flash as using the RMT peripheral is often
a very time senstive operation.

Controlled by the `ESP_HAL_CONFIG_PLACE_RMT_DRIVER_IN_RAM`
environment variable.

* Update esp-config/CHANGELOG.md

* Add PR's

* Remove ESP_HAL_PLACE_RMT_DRIVER_IN_RAM from esp-config/README.md

* Make internal functions inline

This also results in a smaller executable. With a release build:

|           | In RAM    |   inline  |
|-----------|----------:|----------:|
| File size | 1,108,028 | 1,104,956 |
| .rwtext   | 0016d0    | 00153c    |
2025-07-11 09:29:18 +00:00
mennovf
b2c3b1d9bb
ESP32-S2: Go into hibernation if there's only Ext1 WakeupSource (#3785)
* Don't request rtc_perip power up in ext1 and enable hold for pad in case of rtc_peri power down.

* Update CHANGELOG.md with pull-request id

---------

Co-authored-by: Dániel Buga <bugadani@gmail.com>
2025-07-11 08:00:35 +00:00
Dániel Buga
547afd5cb9
Fix warnings, lint esp-hal without unstable (#3782)
* Prevent warnings

* Test esp-hal with no features enabled

* Update wording of error variants

* Re-generate semver baseline
2025-07-11 07:14:59 +00:00
Dániel Buga
c907645422
Add downcast to AnyPeripherals (#3784) 2025-07-10 14:10:28 +00:00
Dániel Buga
fbac30993a
Add AnyPin::downcast (#3783) 2025-07-10 12:53:30 +00:00
Juraj Sadel
cbdb4f05ba
Fix nightly CI (#3755)
* fix nightly ci

* reviews
2025-07-10 11:00:14 +00:00
Björn Quentin
3700497d7a
Better deal with multiple config files (#3774)
* Better deal with multiple config files

* Improve key handling

* Apply suggestion from review
2025-07-09 12:47:02 +00:00
Sergio Gasquez Arcos
3bc667ee4f
Add missing c-examples (#3770)
* docs: Add missing c-examples

* feat: Config docflags for `run doc-tests`

* docs: Update before/after macro and format code in docs

* docs: Improve chip! example

* docs: Fix format and error

* feat: Add ESP_HAL_DOCTEST environment variable for documentation tests
2025-07-09 12:46:22 +00:00
Dániel Buga
7343929d0e
Fix ADC resolution variant name (#3777)
* Fix ADC resolution variant

* Update esp-hal/src/analog/adc/xtensa.rs

Co-authored-by: Juraj Sadel <jurajsadel@gmail.com>

---------

Co-authored-by: Juraj Sadel <jurajsadel@gmail.com>
2025-07-09 09:38:31 +00:00
Simon Neuenhausen
3d6e522cbc
Allow splitting control over modem clocks. (#3687)
* Minimal architecture for split RCC.

* Removed critical section.

* Add all modem clock controllers and adjust esp-ieee802154.

* Fixed incorrect cfg.

* Fixed unstable attribute usage.

* Replaced AtomicU8 with Cell<u8>

* Reverted example channel back to 15

* Added unstable attribute to ModemClockController impls.

* Remember to actually increase the ref count.

* Experimentally removed RadioClockController

* Merged ref counters and made decrease panic if zero is reached.

* Removed RADIO_CLK peripheral.

* Removed RADIO_CLK again.

* Revert "Removed RADIO_CLK again."

This reverts commit 6da2d2834850068aa21bc52b141de2cfd8154acc.

* Removed RADIO_CLK without reformatting the files.

* Applied changes to examples and hil-tests.

* Fixed OS adapter for C2 and H2

* Adjusted docs and used unwrap!

* Fixed comments.

* Added changelog.

* Fixed esp-wifi for esp32h2.

* Changed comment for PHY_CLOCK_REF_COUNTER.

* Fixed lint for esp32c2.

* Update esp-hal/src/clock/mod.rs

Co-authored-by: Dániel Buga <bugadani@gmail.com>

* Update esp-hal/src/clock/mod.rs

Co-authored-by: Dániel Buga <bugadani@gmail.com>

* Removed unnecessary comments and made init_radio_clocks unstable.

* Update esp-hal/src/clock/mod.rs

Co-authored-by: Dániel Buga <bugadani@gmail.com>

* Fixed lint.

* Removed clocks_ll functions for chips that don't have those peripherals.

* fmt

* Changed modem clock controller stealing.

* Added lifetime

* fixed peripheral stealing again

* Made modem_clock_controller not const.

* Used type alias instead of function for peripheral stealing.

* fmt

* Adjusted remaining comments.

* Added note about coex.

* fmt

* misc

* Revert "misc"

This reverts commit d8740421e0dff84af605160939e246f2308a48e1.

* Regenerated esp metadata

---------

Co-authored-by: Dániel Buga <bugadani@gmail.com>
2025-07-08 17:23:55 +00:00
Dániel Buga
1a9b4bafe0
Calculate max input/output signal ID automatically (#3773) 2025-07-08 13:39:00 +00:00
Björn Quentin
41fed590c2
Requires unstable feature (#3772)
* Add `requires-unstable` feature

* Docs

* CHANGELOG.md

* Advise for library authors
2025-07-08 11:40:06 +00:00
Dániel Buga
3537b5ecae
Use indexmap to ensure stable iteration order (#3771) 2025-07-08 09:51:43 +00:00
Björn Quentin
8b810c43bc
Move rtc_clk_xtal_freq_get impl to esp-rom-sys (#3769)
* Move `rtc_clk_xtal_freq_get` impl to esp-rom-sys

* Fix comment
2025-07-08 08:18:11 +00:00
Dániel Buga
940f318b68
Remove some unnecessary caches (#3768) 2025-07-08 07:43:09 +00:00
Dániel Buga
692a768b3a
Introduce esp-metadata-generated (#3754)
* Move macros to new crate

* Generate a single file

* Pre-generate esp-metadata-generated

* Move saving code to xtask

* Format with both rustfmt and prettyplease

* Fix doc build

* Unhide macros

* Fix doc string

* Update semver-check baseline
2025-07-07 15:37:05 +00:00
Sergio Gasquez Arcos
d28bf16777
Resolve C-EXAMPLE: Gpio and I2c (#3746)
* docs: C-example for i2c

* docs: C-example for gpio

* feat: Mark Flex as unstable

* docs: Remove outdate fixmes

* fix: Clippy lint

* docs: Add time doc examples

* docs: Dont hide imports

* docs: Add link to Peripheral section

* docs: Avoid unsafe when posible

* feat: Generate api baseline
2025-07-07 14:21:05 +00:00
Dániel Buga
ad445752ae
Add clean and build timings to xtask (#3759)
* Add --timings

* Add alias to clean all packages

* Update readme

* Add alias
2025-07-07 13:03:39 +00:00
Dániel Buga
9b59942824
Use MD5 from ROM (#3758) 2025-07-07 12:12:19 +00:00
Sergio Gasquez Arcos
4f7b46df27
docs: Add app desc macro examples (#3750) 2025-07-04 12:48:56 +00:00
Dániel Buga
86e006b601
Rework how peripheral singletons are generated (#3747)
* Handle GPIOs as stable peripherals

* Define interrupts in create_peripheral

* Remove the rest of paste from the peripherals macro

* Move create_peripheral calls out of peripherals!

* Merge macros

* Merge peripherals files

* Delete the peripheral module

* Replace the peripherals macro with for_each generated code

* Do not generate code directly in GPIO metadata
2025-07-04 12:15:12 +00:00
Dániel Buga
68b992f6d6
Add macro to let rustfmt format code blocks in doc comments (#3744)
* Add insert_doc_snippet proc macro

* Replace placeholders

* Allow defining (conditional) replacements

* Use unstable features for module-level docs

* Document the new macro

* Rename macro

* Lint

* Remove nonsense code block check, change syntax

* Remove redundant doc_switch macro
2025-07-04 08:25:37 +00:00
Scott Mabin
ce469d3fd2
make peripheral module private (#3745)
* make peripheral module private

* update api baseline
2025-07-03 15:57:42 +00:00
Dániel Buga
c6df02190b
Use 1.88 & bump HAL MSRV (#3742)
* Update MSRV to 1.88

* Clean up lints

* Generate new baseline

* Bump MSRV of xtensa-lx-rt

* Do not try to replace in semver baseline, bump dependent msrvs

* Changelog
2025-07-03 13:44:27 +00:00
Dániel Buga
583be70559
Allow hooking into the executor (#3737)
* Allow hooking into the executor

* Attempt to test that the callback API is not dysfunctional
2025-07-03 09:17:34 +00:00
Sergio Gasquez Arcos
f8b43a9ca9
Resolve C-EXAMPLE: Spi (#3743)
* docs: Resolve C-example for spi

* style: Update format
2025-07-03 09:15:51 +00:00
Dániel Buga
517b5ccbe2
Make cargo xfmt respect the format config (#3739)
* Make cargo xfmt respect the format config

* Make sure comments and doc code have the same width
2025-07-03 08:18:02 +00:00
Dániel Buga
9146407573
Fix and extend pin layouts (#3726)
* Fix ESP32 pin layout

Co-authored-by: rmsyn <github@weathered-steel.dev>

* Tabulate ESP32

* Fix C2 pin layout

* Fix C3 pin layout

* Fix C6 pin layout

Co-authored-by: rmsyn <github@weathered-steel.dev>

* Note AF availability on IoMuxSignal

* Add mising AFs to H2

* Remove unavailable pins

* Add mising signals to S2

* Add mising signals to S3

* Changelog

* Update semver baseline

---------

Co-authored-by: rmsyn <github@weathered-steel.dev>
2025-07-02 13:16:48 +00:00
Dániel Buga
a7798f6902
Tweak config table (#3734)
* Tweak config table

* Restore active condition on xtal-frequenc

* Print values using display hint

* Fix clippy lints
2025-07-02 10:11:54 +00:00
Björn Quentin
b76a738263
Improve esp-wifi cfg docs (#3733) 2025-07-02 08:53:48 +00:00
Dániel Buga
21f1d89f15
Generate peripherals macro call & remove paste (#3713)
* Expand peripheral metadata

* Generate peripherals macro call

* Remove paste from peripherals

* Add missing peris

* Fix ETM and TRACE0 naming

* Remove redundant tsens symbol

* Remove RTCIO stuff from h2

* Rename S2 RTC_CNTL

* Add missing SYSCON back to S2

* Do not mark the GPIO singleton stable

* Treat unlisted drivers as not available

* Assign stability based on driver info

* Fmt

* Remove unused info
2025-07-01 19:31:21 +00:00
Björn Quentin
54c073fcd2
Prepare changelog (#3731)
* Prepare changelog

* Check for esp-rom-sys CHANGELOG
2025-07-01 16:03:45 +00:00
Björn Quentin
8fffa6ccec
esp-config TUI (#3649)
* Introduce esp-config TUI

* Validate more

* Improve chip-selection, support alternate config.toml files

* Minor improvements

* Clippy --fix

* Do crate-level checks on every change

* de-dup

* Address review comments

* Address review comments

* Remove the safety-belt
2025-07-01 15:14:26 +00:00
Dániel Buga
8c4878cb03
Refactor AssistDebug symbols (#3730) 2025-07-01 14:42:27 +00:00
Dániel Buga
d315816680
Fix broken link (#3729) 2025-07-01 14:08:49 +00:00
Dániel Buga
745cfd71b6
de-paste! the any_peripheral macro (#3699)
* Stop using paste in any_peripheral

* Drop unused macro

* Generate a delegate macro for any-peripheral dispatching

* Fix up PDMA
2025-07-01 13:48:40 +00:00
Björn Quentin
cc2083fd1a
Introduce esp-rom-sys crate (#3688)
* Move ROM function definitions to esp-hal-rom crate

* Patch ESP32 ROM-functions, use it in esp-storage

* Allow placing additional code in IRAM

* esp-storage depends on esp-hal-rom

* Move ROM function wrappers from esp-hal to esp-hal-rom

* Make bootloader-support crate use CRC ROM function

* Minor polishing

* changelogs

* Make CI green

* Define (some) spiflash ROM functions in esp-hal-rom

* Lint

* Avoid duplicate definition of `__assert_func`

* Rename to `esp-rom-sys`

* Mention versioning this crate in the README

* Fixes

* Check self-version

* Docs

* Clippy

* Check if version bump is allowed

* Unconditionally place spiflash ROM function patches (if present) in rwtext

* Cleanup

* Change how unacceptable version bump requests are detected

* Initial version 0.1.0

* Docs

* Use correct version

* Force esp-rom-sys bumps to patch

* Fix
esp-rom-sys-v0.1.0
2025-07-01 13:05:01 +00:00
Sergio Gasquez Arcos
f0913769d4
Resolve C-EXAMPLE: Uart (#3712)
* feat: Add examples to Uart

* feat: Simplify doc examples based on review comments

* feat: Use `uart` as variable name and use UART0

* feat: Remove empty lines

* feat: Include initialization lines

* docs: Add general into_blocking/async examples
2025-07-01 12:49:15 +00:00