[PATCH 3/3] riscv: dts: allwinner: d1-t113: Add the hardware spinlock

Chen-Yu Tsai wens at kernel.org
Fri Oct 2 00:50:08 PDT 2026


On Fri, Oct 2, 2026 at 3:48 PM Wilken Gottwalt
<wilken.gottwalt at posteo.net> wrote:
>
> On Fri, 2 Oct 2026 08:32:51 +0100
> Conor Dooley <conor.dooley at microchip.com> wrote:
>
> > On Wed, Sep 30, 2026 at 02:05:47PM +0000, Wilken Gottwalt wrote:
> > > On Wed, 30 Sep 2026 20:02:21 +0700
> > > Nguyen Minh Tien <tien.nguyenminh at embeddedlinux.blog> wrote:
> > >
> > > > Hi Wilken,
> > > >
> > > > > Wouldn't it make more sense to add the "allwinner,sun20i-d1-hwspinlock" line to
> > > > > the driver in the sun6i_hwspinlock_ids struct, drop
> > > > > "allwinner,sun6i-a31-hwspinlock" here in the D1 device tree and update the yaml
> > > > > file accordingly?
> > > >
> > > > Thanks for looking at it. Bjorn hasn't replied yet, so I looked a bit
> > > > more at the naming. I'd like to keep the A31 fallback: it's the usual
> > > > pattern, other blocks in this dtsi do the same (timer, I2S, LED
> > > > controller), and Conor already acked the binding in 2/3. If Bjorn
> > > > prefers a driver entry instead, I'm fine to change it.
> > >
> > > Yeah, Conor was a bit quick to act here, such things happen often with patchsets
> > > made out of documentation/devicetrees and code. Though, the get clock and resets
> > > patch is fine. The driver could use some modernization.
> >
> > I dunno, was I too quick to act? The patched looked correct to me, since
> > it was using a fallback to a device that it appears to be compatible
> > with. Had the series done what you're suggesting, my review feedback
> > would have been to tell the Tien to add a fallback.
>
> I'm just not sure how to actually do it right, because so many SoCs include that
> feature. That is why I asked how you would do it having more insight as a
> subsystem maintainer. It just looks incomplete to me. In the past I actually
> verified it working with H2, H2+ and H3, none of them being
> "allwinner,sun6i-a31-hwspinlock".

Even if all the SoCs had them, if no one enabled and tested them, then they
wouldn't have entries in the binding or dtsi files.

> > > > Bjorn, what do you think? Just stay with the "allwinner,sun6i-a31-hwspinlock"
> > > > string or add all the possible combinations like
> > > > "allwinner,sun8i-h2-plus-hwspinlock" or "allwinner,sun8i-a83t-hwspinlock".
> > > > I mean, it is just a naming game and there are 10+ SoCs supporting this
> > > > spinlock register file
> >
> > All devices compatible with the a31 should use the a31 as a fallback.
> >
> > >
> > > > > Oh, and I may be able to test it against the D1, I own a Sipeed Nezha.
> > > >
> > > > That would be great. You don't need FreeRTOS for it: I tested with a
> > > > small Linux module that takes each lock and checks the status
> > > > register. I can clean it up for the single-core D1 and send it.
> > >
> > > Uhm, the Linux-only test doesn't work as a hwspinlock test, it misses the entire
> > > point of the primitive. A hwspinlock arbitrates between two independent agents,
> > > in this case, Linux running on the C906 core and FreeRTOS running on the HiFi
> > > DSP, both sharing the same memory bus and other hardware. If Linux is the only
> > > one who ever takes the locks, it is simultaneously writer and reader of the status
> > > register, so the test cannot fail even for a broken (or fake) implementation. That
> > > would basically test nothing at all, well, maybe it would be some kind of bring-up
> > > test, but overall quite useless.



More information about the linux-riscv mailing list