)]}'
{
  "commit": "266cb8cca7e7c05548ccdcaad90370c74709ed14",
  "tree": "3b1947d371fe5d4528125c7aa955a62b8d30fe96",
  "parents": [
    "06ab198c9105c49c0eb955f93651b67ad4627a10"
  ],
  "author": {
    "name": "Steven Lee",
    "email": "steven_lee@aspeedtech.com",
    "time": "Wed Jun 03 10:20:04 2026 +0800"
  },
  "committer": {
    "name": "Steven Lee",
    "email": "steven_lee@aspeedtech.com",
    "time": "Fri Jul 24 12:41:07 2026 +0800"
  },
  "message": "ast10x0: add I3C peripheral driver (port of aspeed-rust i3c)\n\nPort the AST1060 I3C controller/target driver from aspeed-rust\n(src/i3c @ ce3b567) into the ast10x0_peripherals crate, mirroring the\nexisting I2C port and following the pac-design-patterns conventions.\n\nDriver (peripherals/i3c/): ccc, config, constants, controller, error,\nhardware, ibi, mod, types. hal_impl is folded into controller as\ninherent methods (proposed_traits is unavailable in openprot and\nembedded-hal has no I3C trait).\n\nDesign-pattern conformance:\n- Confined-`unsafe` MMIO facade: raw `*const` register pointers, a single\n  `unsafe fn new`, private `\u0026\u0027static` derefs, `!Sync`; no unsafe or PAC\n  types leak above the facade.\n- Cooperative-yield bounded poll: an injected `Y: FnMut(u32)` yield\n  closure replaces embedded-hal DelayNs, type-erased at the poll loops.\n- Borrow-arbitrated exclusivity for per-call state; the global IBI/IRQ\n  plane is kept (documented delta) since an ISR cannot borrow a\n  stack-owned device.\n\nNotable deltas: drop the Logger generic and the `#[no_mangle]` ISR\nsymbol exports (kernel owns the vector and calls dispatch_i3c_irq);\nheapless 0.9 SPSC with edition-2024 `addr_of_mut!`; reachable\ntransfer/clock paths hardened to be panic-free (no_panics_test) without\nchanging success-path behavior.\n\nAlso: add scu pinctrl groups (PINCTRL_I3C0..3 / PINCTRL_HVI3C0..3, the\nHV groups clearing the conflicting LV pad bits); wire critical-section\nand cortex-m `critical-section-single-core` into the crate universe; add\ni3c_init and i3c_irq tests, the latter a faithful controller/target IBI\npair mirroring aspeed-rust tests-hw on I3C2 HV.\n\nSee target/ast10x0/peripherals/i3c/plans/goal.md for the behavioral\nparity plan, authority pin, and deltas ledger.\n\nSigned-off-by: Steven Lee \u003csteven_lee@aspeedtech.com\u003e\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6322f58fdcb6c487a5314b33ebc65025ded2e0c3",
      "old_mode": 33188,
      "old_path": "target/ast10x0/peripherals/BUILD.bazel",
      "new_id": "6e49c22b0113da1fcdf5b95a1ba182fb2d47df59",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "33190ba70eb40d7f873e93f02a64d6f3bae49a91",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/ccc.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c8ab9632db1cf10d24f2c9e86240978c12ebc5e9",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/config.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d98e96519434857b84ee12d25e416997e778bc3c",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/constants.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "18710197bff009c7b3173ec768a161dfcdebb60a",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/controller.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5371ea097ae45683b68e7bb4998b5166d3c1ca88",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/error.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "169dbe3bc762b7f9929a55d6a854abf3cb2e2320",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/hardware.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1fdba4591bd6a14913a5361569bff0556393b2db",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/ibi.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "809b4a4dbd8d2b59e406f8079855f30f0a616b60",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/mod.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4b230b80ede43a411eebbd828ddeb02065dab48c",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/plans/goal.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5201cad4e6952da1715cf441fa7f121e78d27fe8",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/plans/i3c-reference/PINNED_COMMIT.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6955a7c90e210d110cab247c5b18580cc503782c",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/types.rs"
    },
    {
      "type": "modify",
      "old_id": "cac4abcf54fee3ba4fae312417fdbfc2957ae136",
      "old_mode": 33188,
      "old_path": "target/ast10x0/peripherals/lib.rs",
      "new_id": "0e497a0b3c043616906c84d2894073df64e3a2a1",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "203fe2acaa9974c18b5659a5661b3e95aeb5a7ed",
      "old_mode": 33188,
      "old_path": "target/ast10x0/peripherals/scu/pinctrl.rs",
      "new_id": "b411e1387a567616870c63ae8fa0bf16fa12ec6c",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/scu/pinctrl.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "14300267020cd1bd92aab51bf710a84b7b5d053e",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_init/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cc31d8d56f5f170fdec3b6ebfb7035d0ee9a7048",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_init/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "40e635a41c8dc280bcca76f3d6264f49ce191110",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_init/system.json5"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1fc95a53d433fb4d358b12d763554fd42353f78a",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_init/target.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dd5f0bf7e855f864c5a91c3a9d85c732f305da14",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_irq/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "77d37019c3171fbac5f48389877ec2729d2ce5d0",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_irq/slave_system.json5"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "732fcefc2b7b9b718918642ebb18fd1ee9c98873",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_irq/slave_target.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3ecb32ce64cbd39c41efc0148c65f9118e310f7f",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_irq/system.json5"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dfa801dfc482866bb1648c40336128b0d5d02893",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_irq/target.rs"
    },
    {
      "type": "modify",
      "old_id": "0707859c5c6600bc3e38eb794b27848610030fb5",
      "old_mode": 33188,
      "old_path": "third_party/crates_io/Cargo.lock",
      "new_id": "3af825cfdb31ddb23d7ef5482b2a4d34f9baf322",
      "new_mode": 33188,
      "new_path": "third_party/crates_io/Cargo.lock"
    },
    {
      "type": "modify",
      "old_id": "a373d13210e3c372d20a508b0c0d63e35d0f6f6d",
      "old_mode": 33188,
      "old_path": "third_party/crates_io/Cargo.toml",
      "new_id": "7833db310cff04dbaabc914085f36e493a076ce6",
      "new_mode": 33188,
      "new_path": "third_party/crates_io/Cargo.toml"
    }
  ]
}
