Add i3c module with pointer-based architecture and minimal coupling Integrate i3c controller from aspeed-rust into peripherals crate with: - Raw pointer architecture: Replace generic Instance trait with direct *const pointers to i3c and i3cglobal register blocks - Yield closure pattern: Use Y: FnMut(u32) for cooperative polling instead of blocking DelayNs trait calls - No SCU coupling: Remove all SCU reset/clock operations; caller responsible for pre-initialization - No Logger coupling: Remove Logger trait; provide no-op stubs in common.rs - Aligned with i2c module design: Minimal hardware abstraction layer with safe helper methods for register access Complete build with all tests passing. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
The OpenPRoT Technical Charter can be found at https://github.com/OpenPRoT/.github/blob/main/GOVERNANCE.md
NOTE: We are converting our build system to bazel. We recommend installing bazelisk to automatically manage bazel versions.
You can run tasks using the Pigweed workflow launcher pw or bazel.
./pw presubmit - Run presubmit checks: formatting, license checks, C/C++ header checks and clippy../pw format - Run the code formatters.bazel test //... - Run all tests.bazel build //docs - Build documentation.The project is structured as a bazel module.
No additional tools are required - all dependencies are managed by bazel.