[PATCH v2 1/3] dt-bindings: regulator: Add RPMI voltage service bindings

Joshua Yeong joshua.yeong at starfivetech.com
Fri Sep 25 00:14:14 PDT 2026


On Fri, Sep 25, 2026 at 08:07:40AM +0200, Krzysztof Kozlowski <krzk at kernel.org> wrote:
> On 25/09/2026 04:21, Joshua Yeong wrote:
> > On Thu, Sep 24, 2026 at 10:00:06PM +0100, Mark Brown <broonie at kernel.org> wrote:
> >> On Wed, Sep 23, 2026 at 10:35:08PM +0200, Krzysztof Kozlowski wrote:
> >>> On 23/09/2026 09:00, Joshua Yeong wrote:
> >>
> >>>> +    voltage-service {
> >>
> >>> There is no such service. Don't invent names. See DT spec.
> >>
> >> Looks like it comes from the RPMI spec:
> >>
> >>    
> >> https://github.com/riscv-non-isa/riscv-rpmi/blob/main/src/srvgrp-volta
> >> ge.adoc
> >>
> >>>> +  "#voltage-domain-cells" on the provider, a consumer lists  
> >>>> + "voltage-domains = <&provider DOMAIN_ID>" and names each entry 
> >>>> + in  "voltage-domain-names", the way it names a voltage power 
> >>>> + domain. Both  properties belong to the consumer, so a consumer 
> >>>> + binding describes them
> >>>> +  itself:
> >>
> >>> And where do you explain what is that "voltage domain" and why it is 
> >>> completely different than everything else we have?
> >>
> >>> No, don't come up with your own naming for standard things.
> >>
> >> That also looks like what the spec says (some of the description is 
> >> copied pretty closely from the spec).
> > 
> > The RPMI specification uses the word voltage instead of 'regulator' in the 
> > kernel here. We need something like power-domain-cells,
> > performance-domain-cells or clock-cells that isn't supported by regulator 
> > framework. While I have no prior history on the regulator framework but 
> > the RPMI voltage service drivers trying to upstream here need some 
> > mechanism to map just the domain id to the RPMI services.
> > 
> > The driver would still work with the existing voltage device tree structure.
> > I understand other drivers may not use voltage-domain like RPMI
> > voltage service, so I only add the support for this on the RPMI
> > voltage driver and not on the framework side.
>
>
> As discussed on IRC #devicetree, that's either power-domains or
> regulator supplies. If you need anything else, you need to explain. Not we.

This is the how the existing regulator would look like this.

user-app-a {
	compatible = "...";
	vdd-supply = <&volt1>;
};

rpmi-voltage {
	mboxes = <0x0c 0x1004 0x00>;
	compatible = "riscv,rpmi-voltage";

	regulators {
		#size-cells = <0x00>;
		#address-cells = <0x01>;

		volt1: regulator at 1 {
			reg = <0x01>;
			...
		};
		...
	};
};

While the above method works but I'm trying to get the entire simplify to the following.

user-app-b {
	compatible = "...";
	voltage-domains = <&rpmi-voltage 0x01>;
};

rpmi-voltage: rpmi-voltage {
	mboxes = <0x0c 0x1004 0x00>;
	#voltage-domain-cells = <0x01>;
	compatible = "riscv,rpmi-voltage";
};

The user does not need to map any other information under /rpmi-voltage/regulators/volt1 , since the value are being decided by the platform microcontroller.
The fields like 'names', ' regulator-max-microvolt' and ' regulator-min-microvolt' are being discovered during runtime instead.


>
> Best regards,
> Krzysztof


More information about the linux-riscv mailing list