This adds the hardware spinlock of the D1 and T113. The sun6i driver already handles this block, but it looks up its clock and reset by name, which the binding doesn't allow, so a node written to the binding never probes. Patch 1 fixes the driver, as suggested when this came up for the A64 [1]. Patch 3 needs it for the device to probe.
Wilken asked then for testing with Crust running [2], as Crust owns part of this block on the SoCs it supports. That doesn't apply here: Crust doesn't run on the D1 or T113, no devicetree in mainline has this node for any other SoC, and patch 1 changes only how the clock and reset are found, not when the driver enables or asserts them. I tested it on a MangoPi MQ-Dual (T113-S3), not only between the two Cortex-A7 cores but also against FreeRTOS on the HiFi4 DSP, the other side this block is there for: - the driver finds 32 locks; - for each lock, while Linux or the DSP held it, the other side was refused, and got it once it was freed; - both A7 cores and the DSP each added 1 to a shared counter a million times under one lock, and the total was exact in every run. Without the lock, over a third of the updates were lost. I have no D1 board to test on. [1] https://lore.kernel.org/[email protected] [2] https://lore.kernel.org/[email protected] Nguyen Minh Tien (3): hwspinlock: sun6i: Get the clock and the reset without names dt-bindings: hwlock: sun6i: Add compatible for Allwinner D1 riscv: dts: allwinner: d1-t113: Add the hardware spinlock .../bindings/hwlock/allwinner,sun6i-a31-hwspinlock.yaml | 7 ++++++- arch/riscv/boot/dts/allwinner/sunxi-d1-t113.dtsi | 9 +++++++++ drivers/hwspinlock/sun6i_hwspinlock.c | 4 ++-- 3 files changed, 17 insertions(+), 3 deletions(-) base-commit: 165768bb70265b5c38cf0b73fafd75be235f8b14 -- 2.34.1

