WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Conversation

@ArthurHeymans
Copy link
Contributor

If the host decides to halt an operation we want to get back into a state
where we can accept further commands.

ArthurHeymans and others added 5 commits December 17, 2025 10:19
This increases readability as indentation is reduced.

Signed-off-by: Arthur Heymans <[email protected]>
…board

Replace the static `Serprog` struct with a trait-based approach where
SPI pins are only configured as outputs during actual SPI operations:

- Add `SpiDeviceProvider` trait for on-demand SPI device creation
- Add `SpiCsGuard` trait for guards that provide SPI+CS access
- Add `LedProvider` trait with blanket impl for any `OutputPin`
- Replace `Serprog::run_loop()` with free function `run_loop()`
- Store SPI frequency and pass to provider on each acquire

Pin cleanup on drop:
- Embassy SPI/Output do NOT auto-reset pins to input mode
- Each platform implements custom guard with explicit pin reset
- RP2040: Set funcsel to NULL and reset pad control
- STM32: Use Flex drop to set pins to analog mode

This prevents the serprog microcontroller from driving the SPI pins
when idle, allowing the target mainboard to boot normally with the
programmer attached.

🤖 Generated with [eca](https://eca.dev)

Co-Authored-By: eca <[email protected]>
If the host decides to halt an operation previously we needed to reset
the device. Now we have a reasonable timeout upon which the device goes
back to a state in which it can accept further commands.

Signed-off-by: Arthur Heymans <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants