Move I3C register operations into the I3cRegisters facade

Complete the SmcRegisters alignment: instead of only confining the
pointer derefs, every register operation now goes through an
intent-named method on I3cRegisters (enable_controller_primary,
assert_all_queue_resets, dat_program_addr, ...), so hardware.rs is pure
protocol logic with zero PAC register types and zero MMIO unsafe. Its
remaining unsafe is non-MMIO only: the IRQ-registry critical-section
leaves, the forwarded constructor gate, the curr_xfer handoff cast, and
the transfer buffer re-slicing.

The per-bus I3C-global reg0/reg1 dispatch and the eight-slot DAT
dispatch move into private macros inside the facade (the bus index
already lives there), deleting the macro layer from hardware.rs along
with its unreachable fallback arms. The FIFO word loops sink into the
facade as tx_fifo_write/rx_fifo_read/rx_fifo_drain/ibi_fifo_*, which
also retires the closure-taking rd_fifo/drain_fifo trait methods.
2 files changed
tree: 7c67c9c14baa9412d9f97d98c71c0466a7980d22
  1. .github/
  2. docs/
  3. drivers/
  4. hal/
  5. openprot/
  6. platform/
  7. presubmit/
  8. services/
  9. target/
  10. third_party/
  11. tools/
  12. util/
  13. .bazelignore
  14. .bazelrc
  15. .bazelversion
  16. .clang-format
  17. .gitignore
  18. .semgrepignore
  19. BUILD.bazel
  20. CONTRIBUTING.md
  21. LICENSE
  22. MODULE.bazel
  23. MODULE.bazel.lock
  24. pw
  25. README.md
  26. rust-toolchain.toml
  27. workflows.json
README.md

OpenPRoT

Technical Charter

The OpenPRoT Technical Charter can be found at https://github.com/OpenPRoT/.github/blob/main/GOVERNANCE.md

Getting Started

NOTE: We are converting our build system to bazel. We recommend installing bazelisk to automatically manage bazel versions.

Available Tasks

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.

Development

The project is structured as a bazel module.

Requirements

  • Bazel. We recommend installing bazelisk to automatically manage bazel versions.

No additional tools are required - all dependencies are managed by bazel.