Re: [PATCH 0/9] riscv: ultrarisc: add DP1000 SoC DT and pinctrl support
From: Jia Wang
Date: Thu May 21 2026 - 05:53:20 EST
On 2026-05-15 11:05 +0100, Conor Dooley wrote:
> Hey,
>
> On Fri, May 15, 2026 at 09:17:56AM +0800, Jia Wang wrote:
> > This series adds initial Devicetree support for the UltraRISC DP1000 RISC-V
> > SoC and two DP1000-based boards (Milk-V Titan and Rongda M0).
> >
> > The series introduces the required DT bindings, adds the DP1000 pinctrl
> > driver, and provides the initial SoC/board DTS files.
> >
> > Notes:
> > - Clocks are configured and enabled by firmware before Linux boots. Linux
> > does not manage clock rates or gating at runtime on this platform.
> > Therefore the initial DT only models the fixed clocks required by
> > standard drivers, and no clock controller/driver is provided.
>
> I really disagree with this approach. In my experience it never ends up
> working out and ends up being disruptive, because it is either an over
> simplification of the clock tree and condenses multiple different clocks
> into one where rates are similar or because firmware changes mean clock
> rate changes down the line. I would much rather you modelled the clocks
> accurately, even if that just means that a read-only clock controller is
> implemented. Alternatively, if firmware does all of your clock control,
> you can implement this using rpmi/mpoxy using clk-rpmi.c
>
Understood. I'll implement a read-only clock controller in v2.
> > - The DP1000 pinctrl binding supports two child node styles under the same
> > controller compatible:
> > * legacy DP1000-specific nodes using phandle-array properties
> > "pinctrl-pins" and "pinconf-pins"
> > * generic pinctrl nodes using "pins", "function" and generic pin
> > configuration properties
> > The legacy form is kept for compatibility with existing vendor DTs.
>
> Why would we want "legacy" stuff in mainline when this is a brand new
> platform? "legacy" vendor devicetrees are not something that mainline
> cares about, sorry.
>
I'll drop the legacy pinctrl node format and keep only the generic pinctrl
bindings in v2.
> Additionally, these pinctrl patches should be sent standalone to the
> pinctrl maintainers, they're likely to go through lots of revisions and
> a different maintainer applies them.
>
Just to confirm — for v2, should I completely remove the pinctrl
binding/driver from this series and send them as a standalone pinctrl
series, while keeping only the pinctrl references in the DTS?
> > - The bindings for "ultrarisc,dp1000-uart" and "ultrarisc,dp1000-pcie" are
> > being reviewed in separate series, since the DP1000 SoC DTS introduced
> > here uses those compatibles:
> > * Link: https://lore.kernel.org/lkml/20260429-ultrarisc-serial-v7-3-e475cce9e274@xxxxxxxxxxxxx/
> > * Link: https://lore.kernel.org/lkml/20260427-ultrarisc-pcie-v4-2-98935f6cdfb5@xxxxxxxxxxxxx/
> > - ARCH_ULTRARISC support is being reviewed separately:
> > * Link: https://lore.kernel.org/lkml/20260427-ultrarisc-pcie-v4-1-98935f6cdfb5@xxxxxxxxxxxxx/
>
> IMO, this patch needs to be in this series so that it compiles.
>
I’ll move the ARCH_ULTRARISC Kconfig patch into this series. Thanks for
pointing this out.
> Cheers,
> Conor.
>
Best Regards,
Jia Wang
> >
> > Testing:
> > - dt_binding_check and yamllint (all new/modified binding YAMLs)
> > - dtbs_check and dtbs (RISC-V, including dp1000-milkv-titan.dtb and
> > dp1000-rongda-m0.dtb)
> > - Kernel build for RISC-V and boot-tested on DP1000 (Milk-V Titan and
> > Rongda M0)
> >
> > Signed-off-by: Jia Wang <wangjia@xxxxxxxxxxxxx>
> > ---
> > Jia Wang (9):
> > dt-bindings: vendor-prefixes: add Rongda
> > dt-bindings: riscv: cpus: Add UltraRISC CP100 compatible
> > dt-bindings: riscv: Add UltraRISC DP1000 bindings
> > dt-bindings: pinctrl: Add UltraRISC DP1000 pinctrl bindings
> > riscv: dts: ultrarisc: Add initial device tree for UltraRISC DP1000
> > pinctrl: ultrarisc: Add UltraRISC DP1000 pinctrl driver
> > riscv: dts: ultrarisc: add Rongda M0 board device tree
> > riscv: dts: ultrarisc: add Milk-V Titan board device tree
> > riscv: defconfig: enable ARCH_ULTRARISC
> >
> > .../bindings/pinctrl/ultrarisc,dp1000-pinctrl.yaml | 168 ++++
> > Documentation/devicetree/bindings/riscv/cpus.yaml | 1 +
> > .../devicetree/bindings/riscv/ultrarisc.yaml | 27 +
> > .../devicetree/bindings/vendor-prefixes.yaml | 2 +
> > MAINTAINERS | 15 +
> > arch/riscv/boot/dts/Makefile | 1 +
> > arch/riscv/boot/dts/ultrarisc/Makefile | 3 +
> > .../dts/ultrarisc/dp1000-milkv-titan-pinctrl.dtsi | 107 +++
> > .../boot/dts/ultrarisc/dp1000-milkv-titan.dts | 182 +++++
> > .../dts/ultrarisc/dp1000-rongda-m0-pinctrl.dtsi | 85 ++
> > arch/riscv/boot/dts/ultrarisc/dp1000-rongda-m0.dts | 111 +++
> > arch/riscv/boot/dts/ultrarisc/dp1000.dtsi | 851 +++++++++++++++++++++
> > arch/riscv/configs/defconfig | 1 +
> > drivers/pinctrl/Kconfig | 1 +
> > drivers/pinctrl/Makefile | 1 +
> > drivers/pinctrl/ultrarisc/Kconfig | 23 +
> > drivers/pinctrl/ultrarisc/Makefile | 4 +
> > drivers/pinctrl/ultrarisc/pinctrl-dp1000.c | 112 +++
> > drivers/pinctrl/ultrarisc/pinctrl-ultrarisc.c | 746 ++++++++++++++++++
> > drivers/pinctrl/ultrarisc/pinctrl-ultrarisc.h | 71 ++
> > .../dt-bindings/pinctrl/ultrarisc,dp1000-pinctrl.h | 65 ++
> > 21 files changed, 2577 insertions(+)
> > ---
> > base-commit: 50897c955902c93ae71c38698abb910525ebdc89
> > change-id: 20260316-ultrarisc-pinctrl-efa6e24c4803
> >
> > Best regards,
> > --
> > Jia Wang <wangjia@xxxxxxxxxxxxx>
> >