)]}'
{
  "commit": "8ad1ca0088c6c427fe98c2bdb7bfe663c0879d6f",
  "tree": "826ac312506d77d0152db2cb2e8cd08bce453915",
  "parents": [
    "7d8cffc88e54aa68acadfb07f2cae2397e4746c4"
  ],
  "author": {
    "name": "Steven Lee",
    "email": "steven_lee@aspeedtech.com",
    "time": "Thu Jun 04 13:57:06 2026 +0800"
  },
  "committer": {
    "name": "Steven Lee",
    "email": "steven_lee@aspeedtech.com",
    "time": "Fri Jul 24 12:41:07 2026 +0800"
  },
  "message": "Rework I3C driver to runtime-bus model with register facade\n\nOne driver type now manages all four bus instances: the Instance\ntype-parameter and its per-bus impl macro are removed, and the bus is\nselected at runtime in I3cRegisters::new(bus), mirroring the SmcRegisters\nshape. All I3C MMIO unsafe (pointer derefs) is confined to the new\nregisters.rs; hardware.rs accesses the blocks through safe delegates.\n\nIRQ ownership moves to the integration layer: enable_irq/disable_irq are\ndropped from the hardware traits and the driver only exposes\ndispatch_i3c_irq plus an i3c_bus_interrupt(bus) mapping for the NVIC line\nthe kernel owns. The per-bus handler registry becomes single-shot\n(typed Busy on a second claim) and panic-free (UnsafeCell + critical\nsection, same rationale as the IBI rings, whose closure-based access is\nalso replaced by leaf push/pop helpers).\n\nThe controller is rebuilt around an ISR-shared I3cCore pinned at a\n\u0027static address, so the trampoline pointer\u0027s validity is type-guaranteed\nrather than a convention, with a light two-state lifecycle\n(Uninitialized -\u003e start() -\u003e Ready) matching the SMC precedent. Tests\nconstruct the core via cortex_m::singleton!, which also moves the large\nconfig off the 2 KiB bootstrap stack, and unmask the NVIC line\nthemselves after start().\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6e49c22b0113da1fcdf5b95a1ba182fb2d47df59",
      "old_mode": 33188,
      "old_path": "target/ast10x0/peripherals/BUILD.bazel",
      "new_id": "09db01be985b76e9ca8e9aed0b97221db8667746",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "98ed7a1b22c03656faf8321c2380c882a6080e68",
      "old_mode": 33188,
      "old_path": "target/ast10x0/peripherals/i3c/controller.rs",
      "new_id": "71cd71bef229d77d876a26cd27130bea19e3a1c8",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/controller.rs"
    },
    {
      "type": "modify",
      "old_id": "5371ea097ae45683b68e7bb4998b5166d3c1ca88",
      "old_mode": 33188,
      "old_path": "target/ast10x0/peripherals/i3c/error.rs",
      "new_id": "ae34a3debba175c22eaddaeea063a67058029cd7",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/error.rs"
    },
    {
      "type": "modify",
      "old_id": "4924c9689effcdb6b6f22cc6ccd850572c81cab2",
      "old_mode": 33188,
      "old_path": "target/ast10x0/peripherals/i3c/hardware.rs",
      "new_id": "7463987b1a73e52875926f38babbdc8362c93f46",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/hardware.rs"
    },
    {
      "type": "modify",
      "old_id": "1c382d5e19e7bbf4e27b0640a6beb22e9016e489",
      "old_mode": 33188,
      "old_path": "target/ast10x0/peripherals/i3c/ibi.rs",
      "new_id": "e44de6cc339a6169bf858f4ed0dc3b01e59bc50e",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/ibi.rs"
    },
    {
      "type": "modify",
      "old_id": "2ebe6dececdda8779b990366f4c7adb6cff360ff",
      "old_mode": 33188,
      "old_path": "target/ast10x0/peripherals/i3c/mod.rs",
      "new_id": "f96ce5e0d7c030ec6f757553411cd55d288bd1a9",
      "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": "7292e02ee82095d206263bd25a7e647c17175421",
      "new_mode": 33188,
      "new_path": "target/ast10x0/peripherals/i3c/registers.rs"
    },
    {
      "type": "modify",
      "old_id": "14300267020cd1bd92aab51bf710a84b7b5d053e",
      "old_mode": 33188,
      "old_path": "target/ast10x0/tests/peripherals/i3c/i3c_init/BUILD.bazel",
      "new_id": "8be8d5d34cf37fedee065d212ca81f153341e042",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_init/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "4b2fe7a17c1e13f3f67818580dc3ab1efc55d48e",
      "old_mode": 33188,
      "old_path": "target/ast10x0/tests/peripherals/i3c/i3c_init/target.rs",
      "new_id": "a5807ce0bc232cb3f8cc46ed3f0c128c8b4596a6",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_init/target.rs"
    },
    {
      "type": "modify",
      "old_id": "8428ddcb942687056c748077fb6a5508e922617d",
      "old_mode": 33188,
      "old_path": "target/ast10x0/tests/peripherals/i3c/i3c_irq/BUILD.bazel",
      "new_id": "f1193cacaa5493bd31d67fcb98cbef6cce0acba4",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_irq/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "301c820c3cec4d851437baa0e276098f2415900b",
      "old_mode": 33188,
      "old_path": "target/ast10x0/tests/peripherals/i3c/i3c_irq/slave_target.rs",
      "new_id": "af22bced5251986192bed4aba9a49eaf882ee9b6",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_irq/slave_target.rs"
    },
    {
      "type": "modify",
      "old_id": "f9de2847d0341a6b4a9c36ddf6701e4b33bb3467",
      "old_mode": 33188,
      "old_path": "target/ast10x0/tests/peripherals/i3c/i3c_irq/target.rs",
      "new_id": "095f0a80d9898ef89c60da22bdfe02d716a151ac",
      "new_mode": 33188,
      "new_path": "target/ast10x0/tests/peripherals/i3c/i3c_irq/target.rs"
    }
  ]
}
