Message ID | fcd130891cc1d52cb09b8bfc866ab7ef1ce3b2a1.1643069954.git.quic_collinsd@quicinc.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | regulator: scmi: add support for registering SCMI regulators by name | expand |
On Mon, Jan 24, 2022 at 04:27:35PM -0800, David Collins wrote: > Name based SCMI regulator specification helps ensure that an SCMI > agent doesn't need to be aware of the numbering scheme used for What is a "SCMI agent" in this context? This is changing how the DT bindings are specified, at some point things are going to need to be hard coded. > + regulator-name: true > + > + anyOf: > + - required: > + - reg > + - required: > + - regulator-name This is abusing the existing regulator-name property which is there to allow a human readable descriptive string to be attached to a regulator. It should have no effect other than being included in diagnostic output.
On 1/28/22 11:32 AM, Mark Brown wrote: > On Mon, Jan 24, 2022 at 04:27:35PM -0800, David Collins wrote: > >> Name based SCMI regulator specification helps ensure that an SCMI >> agent doesn't need to be aware of the numbering scheme used for > > What is a "SCMI agent" in this context? This is changing how the DT > bindings are specified, at some point things are going to need to be > hard coded. An SCMI agent is the entity that issues SCMI commands (i.e. the consumer). An SCMI platform is the entity that receives the SCMI commands and performs the necessary operations (i.e. the provider). This is the terminology used in the ARM SCMI spec [1]. A typical system layout could have an agent that is the application processor (running Linux) and a platform that is an embedded controller. The system layout that this patch is targeted for consists of an SCMI platform implemented in software in the primary Linux OS on the application processor and an SCMI agent in a guest VM (also running Linux). This provides paravirtualized regulator control to the guest VM where full virtualization is not supported. During the course of development of these software images, it may be necessary to add or reorder the set of SCMI voltage domains (regulators) implemented on the platform side. If the voltage domains are only identified and matched based on the ID number, then it is easy for the platform and agent to get out of sync. Using the voltage domain name instead of ID number for identification and matching provides robust assurance of correct regulator usage in the face of domains being added, removed, or reordered on the platform side. >> + regulator-name: true >> + >> + anyOf: >> + - required: >> + - reg >> + - required: >> + - regulator-name > > This is abusing the existing regulator-name property which is there to > allow a human readable descriptive string to be attached to a regulator. > It should have no effect other than being included in diagnostic output. Would you be ok with a new DT property being added in place of "regulator-name" in this patch which serves the same matching purpose (perhaps "arm,scmi-domain-name")? Thanks, David [1]: https://developer.arm.com/documentation/den0056/latest
On Fri, Jan 28, 2022 at 03:09:30PM -0800, David Collins wrote: > On 1/28/22 11:32 AM, Mark Brown wrote: > > On Mon, Jan 24, 2022 at 04:27:35PM -0800, David Collins wrote: > >> Name based SCMI regulator specification helps ensure that an SCMI > >> agent doesn't need to be aware of the numbering scheme used for > > What is a "SCMI agent" in this context? This is changing how the DT > > bindings are specified, at some point things are going to need to be > > hard coded. > The system layout that this patch is targeted for consists of an SCMI > platform implemented in software in the primary Linux OS on the > application processor and an SCMI agent in a guest VM (also running > Linux). This provides paravirtualized regulator control to the guest VM > where full virtualization is not supported. > During the course of development of these software images, it may be > necessary to add or reorder the set of SCMI voltage domains (regulators) > implemented on the platform side. If the voltage domains are only > identified and matched based on the ID number, then it is easy for the > platform and agent to get out of sync. > Using the voltage domain name instead of ID number for identification > and matching provides robust assurance of correct regulator usage in the > face of domains being added, removed, or reordered on the platform side. This seems like a scenario where the DT should be being generated at runtime along with the virtualisation of the platform? TBH a setup where this is an issue feels like it's asking for trouble. > >> + regulator-name: true > > This is abusing the existing regulator-name property which is there to > > allow a human readable descriptive string to be attached to a regulator. > > It should have no effect other than being included in diagnostic output. > Would you be ok with a new DT property being added in place of > "regulator-name" in this patch which serves the same matching purpose > (perhaps "arm,scmi-domain-name")? Yes, it needs to be a new property.
On 2/2/22 9:38 AM, Mark Brown wrote: >> The system layout that this patch is targeted for consists of an SCMI >> platform implemented in software in the primary Linux OS on the >> application processor and an SCMI agent in a guest VM (also running >> Linux). This provides paravirtualized regulator control to the guest VM >> where full virtualization is not supported. > >> During the course of development of these software images, it may be >> necessary to add or reorder the set of SCMI voltage domains (regulators) >> implemented on the platform side. If the voltage domains are only >> identified and matched based on the ID number, then it is easy for the >> platform and agent to get out of sync. > >> Using the voltage domain name instead of ID number for identification >> and matching provides robust assurance of correct regulator usage in the >> face of domains being added, removed, or reordered on the platform side. > > This seems like a scenario where the DT should be being generated at > runtime along with the virtualisation of the platform? TBH a setup > where this is an issue feels like it's asking for trouble. I'm not familiar with runtime device tree generation. Could you please point to an example of it or documentation for it? How would this handle kernel devices on the VM side which need a phandle to an scmi-regulator DT subnode in order to get a pointer to the corresponding regulator device at runtime via devm_regulator_get()? >>>> + regulator-name: true > >>> This is abusing the existing regulator-name property which is there to >>> allow a human readable descriptive string to be attached to a regulator. >>> It should have no effect other than being included in diagnostic output. > >> Would you be ok with a new DT property being added in place of >> "regulator-name" in this patch which serves the same matching purpose >> (perhaps "arm,scmi-domain-name")? > > Yes, it needs to be a new property. Ok, I'll modify the series in V2 to use a different property. Thanks, David
On Wed, Feb 02, 2022 at 04:09:43PM -0800, David Collins wrote: > On 2/2/22 9:38 AM, Mark Brown wrote: > > This seems like a scenario where the DT should be being generated at > > runtime along with the virtualisation of the platform? TBH a setup > > where this is an issue feels like it's asking for trouble. > I'm not familiar with runtime device tree generation. Could you please > point to an example of it or documentation for it? How would this > handle kernel devices on the VM side which need a phandle to an > scmi-regulator DT subnode in order to get a pointer to the corresponding > regulator device at runtime via devm_regulator_get()? I believe qemu does this for the virt machine. I'm not sure what you're seeing as particularly complex about generating regulator links in particular though?
diff --git a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml index 5c4c6782e052..bc4a84fe25d2 100644 --- a/Documentation/devicetree/bindings/firmware/arm,scmi.yaml +++ b/Documentation/devicetree/bindings/firmware/arm,scmi.yaml @@ -155,7 +155,7 @@ properties: The list of all regulators provided by this SCMI controller. patternProperties: - '^regulators@[0-9a-f]+$': + '^regulator.+$': type: object $ref: "../regulator/regulator.yaml#" @@ -164,8 +164,13 @@ properties: maxItems: 1 description: Identifier for the voltage regulator. - required: - - reg + regulator-name: true + + anyOf: + - required: + - reg + - required: + - regulator-name additionalProperties: false