* Add a derive procmacro to implement the Builder Lite pattern for a struct
* Add `#[non_exhaustive]` and derive `BuilderLite` where necessary in I2C module
* Add `#[non_exhaustive]` and derive `BuilderLite` where necessary in UART module
* Add `#[non_exhaustive]` and derive `BuilderLite` where necessary in SPI module
* Update `CHANGELOG.md`
* Fix build errors in HIL tests
* Fix generated doc comments
* Return a `ParseError` rather than panicking
* Add a method to set the value to `None` for `Option` types
* Remove hidden public SPI API
* Fix in_progress flags not being set
* Remove redundant checks, fix full-duplex flag
* Remove now-redundant Send impl
* apply_config
* SetConfig
* Return ConfigError
* Unwrap config result in ctor
* Print panic messages using semihosting
* Don't use defmt's asserts
* Make RA_OFFSET available without panic-handler
* Re-add defmt imports where missing
* Revert unintended test change
* Initialise hal in critical-section test
* Disable defmt in tests by default
* Cfg features, not devices
* Remove InterruptBinder
* Clean up allow(declare_interior_mutable_const)
* Small embassy cleanup
* Enable dma-macros for 32 and S2
* Use MEM2MEM1 on C2
* Remove esp32-specific code from test
* Remove type erased gpio structs
* Implement Peripheral for ErasedPin
* Simpler type erasing, accept ErasedPin in pin drivers, remove type erased drivers
* Reformulate pin drivers using Flex
* Erase gpio types by default
* Accept any pin in AnyPin
* Add changelog and migration guide
* Fix tests and examples
* Undo rename of clone_unchecked
* i2c hil test
* pin
* fmt
* Test
* WIP (gpio test left)
* Finalize the CODE part (to be cleaned up)
fmt
* Smaller cleanup
* cleanup
* rebase
* fix
* getting last chips ready
* Addressing reviews
* Rework hal initialization
* Turn sw interrupt control into a virtual peripheral
* Return a tuple instead of a named struct
* Fix docs
* Remove SystemClockControl
* Move software interrupts under interrupt
* Re-document what's left in system
* Update time docs
* Update sw int docs
* Introduce Config
* Fix tests
* Remove redundant inits
* Doc
* Clean up examples&tests
* Update tests
* Add changelog entry
* Start migration guide
* Restore some convenience-imports
* Remove Config from prelude
* use `State` for both blocking and async operations, remove async version of SpiDmaBus in favour of being generic over the mode
* reuse wait_for_idle more
* changelog
* rename generic params for consistency
* Add duplex mode to SpiDmaBus
* implement HalfDuplexReadWrite for SpiDmaBus
* Docs on new async APIs
* Limit half duplex transfers to the capacity of the DmaBuf
* docs
* rebase tests
* address review comments
* remove duplex traits from spi
* fix tests
* spi docs rejig
* s/InUse/TemporarilyRemoved/g