Convert pm8xxx bindings to yaml and add pmk8350 rtc binding.
satya priya (3):
rtc: pm8xxx: Add RTC support for PMIC PMK8350
dt-bindings: mfd: Convert pm8xxx bindings to yaml
dt-bindings: mfd: Add compatible for pmk8350 rtc
.../devicetree/bindings/mfd/qcom-pm8xxx.txt | 99 -------------------
.../devicetree/bindings/mfd/qcom-pm8xxx.yaml | 109 +++++++++++++++++++++
drivers/rtc/rtc-pm8xxx.c | 11 +++
3 files changed, 120 insertions(+), 99 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/mfd/qcom-pm8xxx.txt
create mode 100644 Documentation/devicetree/bindings/mfd/qcom-pm8xxx.yaml
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
@@ -53,6 +53,7 @@ patternProperties:-qcom,pm8921-rtc-qcom,pm8941-rtc-qcom,pm8018-rtc+-qcom,pmk8350-rtcreg:description:Specifies the base address of the RTC registers
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
@@ -1,99 +0,0 @@-Qualcomm PM8xxx PMIC multi-function devices--The PM8xxx family of Power Management ICs are used to provide regulated-voltages and other various functionality to Qualcomm SoCs.--= PROPERTIES--- compatible:- Usage: required- Value type: <string>- Definition: must be one of:- "qcom,pm8058"- "qcom,pm8821"- "qcom,pm8921"--- #address-cells:- Usage: required- Value type: <u32>- Definition: must be 1--- #size-cells:- Usage: required- Value type: <u32>- Definition: must be 0--- interrupts:- Usage: required- Value type: <prop-encoded-array>- Definition: specifies the interrupt that indicates a subdevice- has generated an interrupt (summary interrupt). The- format of the specifier is defined by the binding document- describing the node's interrupt parent.--- #interrupt-cells:- Usage: required- Value type : <u32>- Definition: must be 2. Specifies the number of cells needed to encode- an interrupt source. The 1st cell contains the interrupt- number. The 2nd cell is the trigger type and level flags- encoded as follows:-- 1 = low-to-high edge triggered- 2 = high-to-low edge triggered- 4 = active high level-sensitive- 8 = active low level-sensitive--- interrupt-controller:- Usage: required- Value type: <empty>- Definition: identifies this node as an interrupt controller--= SUBCOMPONENTS--The PMIC contains multiple independent functions, each described in a subnode.-The below bindings specify the set of valid subnodes.--== Real-Time Clock--- compatible:- Usage: required- Value type: <string>- Definition: must be one of:- "qcom,pm8058-rtc"- "qcom,pm8921-rtc"- "qcom,pm8941-rtc"- "qcom,pm8018-rtc"--- reg:- Usage: required- Value type: <prop-encoded-array>- Definition: single entry specifying the base address of the RTC registers--- interrupts:- Usage: required- Value type: <prop-encoded-array>- Definition: single entry specifying the RTC's alarm interrupt--- allow-set-time:- Usage: optional- Value type: <empty>- Definition: indicates that the setting of RTC time is allowed by- the host CPU--= EXAMPLE-- pmicintc: pmic@0 {- compatible = "qcom,pm8921";- interrupts = <104 8>;- #interrupt-cells = <2>;- interrupt-controller;- #address-cells = <1>;- #size-cells = <0>;-- rtc@11d {- compatible = "qcom,pm8921-rtc";- reg = <0x11d>;- interrupts = <0x27 0>;- };- };
@@ -0,0 +1,108 @@+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)+%YAML1.2+---+$id:http://devicetree.org/schemas/mfd/qcom-pm8xxx.yaml#+$schema:http://devicetree.org/meta-schemas/core.yaml#++title:Qualcomm PM8xxx PMIC multi-function devices++maintainers:+-Lee Jones <lee.jones@linaro.org>++description:|+The PM8xxx family of Power Management ICs are used to provide regulated+voltages and other various functionality to Qualcomm SoCs.++properties:+compatible:+enum:+-qcom,pm8058+-qcom,pm8821+-qcom,pm8921++reg:+maxItems:1++'#address-cells':+const:1++'#size-cells':+const:0++interrupts:+description:|+Specifies the interrupt that indicates a subdevice has generated an+interrupt (summary interrupt).++'#interrupt-cells':+description:|+Specifies the number of cells needed to encode an interrupt source.+The 1st cell contains the interrupt number. The 2nd cell is the+trigger type.+const:2++interrupt-controller:true++patternProperties:+"rtc@[0-9a-f]+$":+type:object+properties:+compatible:+enum:+-qcom,pm8058-rtc+-qcom,pm8921-rtc+-qcom,pm8941-rtc+-qcom,pm8018-rtc++reg:+description:Specifies the base address of the RTC registers++interrupts:+description:Specifies the RTC's alarm interrupts++allow-set-time:+$ref:/schemas/types.yaml#/definitions/flag+description:+Indicates that the setting of RTC time is allowed by the host CPU.++required:+-compatible+-reg+-interrupts++additionalProperties:false++required:+-compatible+-'#address-cells'+-'#size-cells'+-interrupts+-'#interrupt-cells'+-interrupt-controller++additionalProperties:false++examples:+-|+#include <dt-bindings/spmi/spmi.h>+spmi_bus:spmi@c440000 {+reg = <0x0c440000 0x1100>;+#address-cells = <2>;+#size-cells = <0>;+pmicintc:pmic@0 {+reg = <0x0 SPMI_USID>;+compatible = "qcom,pm8921";+interrupts = <104 8>;+#interrupt-cells = <2>;+interrupt-controller;+#address-cells = <1>;+#size-cells = <0>;++pm8921_rtc:rtc@11d {+compatible = "qcom,pm8921-rtc";+reg = <0x11d>;+interrupts = <0x27 0>;+};+};+};+...
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
./Documentation/devicetree/bindings/mfd/qcom-pm8xxx.yaml:27:6: [warning] wrong indentation: expected 4 but found 5 (indentation)
./Documentation/devicetree/bindings/mfd/qcom-pm8xxx.yaml:30:6: [warning] wrong indentation: expected 4 but found 5 (indentation)
dtschema/dtc warnings/errors:
See https://patchwork.ozlabs.org/patch/1450975
This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit.
@@ -1,99 +0,0 @@-Qualcomm PM8xxx PMIC multi-function devices--The PM8xxx family of Power Management ICs are used to provide regulated-voltages and other various functionality to Qualcomm SoCs.--= PROPERTIES--- compatible:- Usage: required- Value type: <string>- Definition: must be one of:- "qcom,pm8058"- "qcom,pm8821"- "qcom,pm8921"--- #address-cells:- Usage: required- Value type: <u32>- Definition: must be 1--- #size-cells:- Usage: required- Value type: <u32>- Definition: must be 0--- interrupts:- Usage: required- Value type: <prop-encoded-array>- Definition: specifies the interrupt that indicates a subdevice- has generated an interrupt (summary interrupt). The- format of the specifier is defined by the binding document- describing the node's interrupt parent.--- #interrupt-cells:- Usage: required- Value type : <u32>- Definition: must be 2. Specifies the number of cells needed to encode- an interrupt source. The 1st cell contains the interrupt- number. The 2nd cell is the trigger type and level flags- encoded as follows:-- 1 = low-to-high edge triggered- 2 = high-to-low edge triggered- 4 = active high level-sensitive- 8 = active low level-sensitive--- interrupt-controller:- Usage: required- Value type: <empty>- Definition: identifies this node as an interrupt controller--= SUBCOMPONENTS--The PMIC contains multiple independent functions, each described in a subnode.-The below bindings specify the set of valid subnodes.--== Real-Time Clock--- compatible:- Usage: required- Value type: <string>- Definition: must be one of:- "qcom,pm8058-rtc"- "qcom,pm8921-rtc"- "qcom,pm8941-rtc"- "qcom,pm8018-rtc"--- reg:- Usage: required- Value type: <prop-encoded-array>- Definition: single entry specifying the base address of the RTC registers--- interrupts:- Usage: required- Value type: <prop-encoded-array>- Definition: single entry specifying the RTC's alarm interrupt--- allow-set-time:- Usage: optional- Value type: <empty>- Definition: indicates that the setting of RTC time is allowed by- the host CPU--= EXAMPLE-- pmicintc: pmic@0 {- compatible = "qcom,pm8921";- interrupts = <104 8>;- #interrupt-cells = <2>;- interrupt-controller;- #address-cells = <1>;- #size-cells = <0>;-- rtc@11d {- compatible = "qcom,pm8921-rtc";- reg = <0x11d>;- interrupts = <0x27 0>;- };- };
@@ -0,0 +1,108 @@+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)+%YAML1.2+---+$id:http://devicetree.org/schemas/mfd/qcom-pm8xxx.yaml#+$schema:http://devicetree.org/meta-schemas/core.yaml#++title:Qualcomm PM8xxx PMIC multi-function devices++maintainers:+-Lee Jones <lee.jones@linaro.org>
While Lee is maintainer of the mfd core, it would be better if this was
someone looking out for the Qualcomm PMIC binding specifically.
+
+description: |
+ The PM8xxx family of Power Management ICs are used to provide regulated
+ voltages and other various functionality to Qualcomm SoCs.
+
+properties:
+ compatible:
+ enum:
+ - qcom,pm8058
+ - qcom,pm8821
+ - qcom,pm8921
+
+ reg:
+ maxItems: 1
+
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 0
+
+ interrupts:
+ description: |
+ Specifies the interrupt that indicates a subdevice has generated an
+ interrupt (summary interrupt).
+
+ '#interrupt-cells':
+ description: |
+ Specifies the number of cells needed to encode an interrupt source.
+ The 1st cell contains the interrupt number. The 2nd cell is the
+ trigger type.
+ const: 2
+
+ interrupt-controller: true
+
+patternProperties:
+ "rtc@[0-9a-f]+$":
Can we somehow link this to individual binding docs instead of listing
all the possible functions here?
Regards,
Bjorn
+ type: object
+ properties:
+ compatible:
+ enum:
+ - qcom,pm8058-rtc
+ - qcom,pm8921-rtc
+ - qcom,pm8941-rtc
+ - qcom,pm8018-rtc
+
+ reg:
+ description: Specifies the base address of the RTC registers
+
+ interrupts:
+ description: Specifies the RTC's alarm interrupts
+
+ allow-set-time:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description:
+ Indicates that the setting of RTC time is allowed by the host CPU.
+
+ required:
+ - compatible
+ - reg
+ - interrupts
+
+ additionalProperties: false
+
+required:
+ - compatible
+ - '#address-cells'
+ - '#size-cells'
+ - interrupts
+ - '#interrupt-cells'
+ - interrupt-controller
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/spmi/spmi.h>
+ spmi_bus: spmi@c440000 {
+ reg = <0x0c440000 0x1100>;
+ #address-cells = <2>;
+ #size-cells = <0>;
+ pmicintc: pmic@0 {
+ reg = <0x0 SPMI_USID>;
+ compatible = "qcom,pm8921";
+ interrupts = <104 8>;
+ #interrupt-cells = <2>;
+ interrupt-controller;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pm8921_rtc: rtc@11d {
+ compatible = "qcom,pm8921-rtc";
+ reg = <0x11d>;
+ interrupts = <0x27 0>;
+ };
+ };
+ };
+...
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
Reviewed-by: Bjorn Andersson <redacted>
If you add this before doing the yaml binding migration it might be
possible for the maintainer to merge the functional additions while
we're still trying to figure out the yaml...
Regards,
Bjorn
@@ -53,6 +53,7 @@ patternProperties:-qcom,pm8921-rtc-qcom,pm8941-rtc-qcom,pm8018-rtc+-qcom,pmk8350-rtcreg:description:Specifies the base address of the RTC registers
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
@@ -1,99 +0,0 @@-Qualcomm PM8xxx PMIC multi-function devices--The PM8xxx family of Power Management ICs are used to provide
regulated
-voltages and other various functionality to Qualcomm SoCs.
-
-= PROPERTIES
-
-- compatible:
- Usage: required
- Value type: <string>
- Definition: must be one of:
- "qcom,pm8058"
- "qcom,pm8821"
- "qcom,pm8921"
-
-- #address-cells:
- Usage: required
- Value type: <u32>
- Definition: must be 1
-
-- #size-cells:
- Usage: required
- Value type: <u32>
- Definition: must be 0
-
-- interrupts:
- Usage: required
- Value type: <prop-encoded-array>
- Definition: specifies the interrupt that indicates a subdevice
- has generated an interrupt (summary interrupt). The
- format of the specifier is defined by the binding document
- describing the node's interrupt parent.
-
-- #interrupt-cells:
- Usage: required
- Value type : <u32>
- Definition: must be 2. Specifies the number of cells needed to
encode
- an interrupt source. The 1st cell contains the interrupt
- number. The 2nd cell is the trigger type and level flags
- encoded as follows:
-
- 1 = low-to-high edge triggered
- 2 = high-to-low edge triggered
- 4 = active high level-sensitive
- 8 = active low level-sensitive
-
-- interrupt-controller:
- Usage: required
- Value type: <empty>
- Definition: identifies this node as an interrupt controller
-
-= SUBCOMPONENTS
-
-The PMIC contains multiple independent functions, each described in a
subnode.
-The below bindings specify the set of valid subnodes.
-
-== Real-Time Clock
-
-- compatible:
- Usage: required
- Value type: <string>
- Definition: must be one of:
- "qcom,pm8058-rtc"
- "qcom,pm8921-rtc"
- "qcom,pm8941-rtc"
- "qcom,pm8018-rtc"
-
-- reg:
- Usage: required
- Value type: <prop-encoded-array>
- Definition: single entry specifying the base address of the RTC
registers
-
-- interrupts:
- Usage: required
- Value type: <prop-encoded-array>
- Definition: single entry specifying the RTC's alarm interrupt
-
-- allow-set-time:
- Usage: optional
- Value type: <empty>
- Definition: indicates that the setting of RTC time is allowed by
- the host CPU
-
-= EXAMPLE
-
- pmicintc: pmic@0 {
- compatible = "qcom,pm8921";
- interrupts = <104 8>;
- #interrupt-cells = <2>;
- interrupt-controller;
- #address-cells = <1>;
- #size-cells = <0>;
-
- rtc@11d {
- compatible = "qcom,pm8921-rtc";
- reg = <0x11d>;
- interrupts = <0x27 0>;
- };
- };
@@ -0,0 +1,108 @@+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)+%YAML1.2+---+$id:http://devicetree.org/schemas/mfd/qcom-pm8xxx.yaml#+$schema:http://devicetree.org/meta-schemas/core.yaml#++title:Qualcomm PM8xxx PMIC multi-function devices++maintainers:+-Lee Jones <lee.jones@linaro.org>
While Lee is maintainer of the mfd core, it would be better if this was
someone looking out for the Qualcomm PMIC binding specifically.
quoted
+
+description: |
+ The PM8xxx family of Power Management ICs are used to provide
regulated
+ voltages and other various functionality to Qualcomm SoCs.
+
+properties:
+ compatible:
+ enum:
+ - qcom,pm8058
+ - qcom,pm8821
+ - qcom,pm8921
+
+ reg:
+ maxItems: 1
+
+ '#address-cells':
+ const: 1
+
+ '#size-cells':
+ const: 0
+
+ interrupts:
+ description: |
+ Specifies the interrupt that indicates a subdevice has
generated an
+ interrupt (summary interrupt).
+
+ '#interrupt-cells':
+ description: |
+ Specifies the number of cells needed to encode an interrupt
source.
+ The 1st cell contains the interrupt number. The 2nd cell is the
+ trigger type.
+ const: 2
+
+ interrupt-controller: true
+
+patternProperties:
+ "rtc@[0-9a-f]+$":
Can we somehow link this to individual binding docs instead of listing
all the possible functions here?
you mean we should split this into two:
qcom-pm8xxx.yaml and qcom-pm8xxx-rtc.yaml
Please correct me if wrong.
Regards,
Bjorn
quoted
+ type: object
+ properties:
+ compatible:
+ enum:
+ - qcom,pm8058-rtc
+ - qcom,pm8921-rtc
+ - qcom,pm8941-rtc
+ - qcom,pm8018-rtc
+
+ reg:
+ description: Specifies the base address of the RTC registers
+
+ interrupts:
+ description: Specifies the RTC's alarm interrupts
+
+ allow-set-time:
+ $ref: /schemas/types.yaml#/definitions/flag
+ description:
+ Indicates that the setting of RTC time is allowed by the
host CPU.
+
+ required:
+ - compatible
+ - reg
+ - interrupts
+
+ additionalProperties: false
+
+required:
+ - compatible
+ - '#address-cells'
+ - '#size-cells'
+ - interrupts
+ - '#interrupt-cells'
+ - interrupt-controller
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/spmi/spmi.h>
+ spmi_bus: spmi@c440000 {
+ reg = <0x0c440000 0x1100>;
+ #address-cells = <2>;
+ #size-cells = <0>;
+ pmicintc: pmic@0 {
+ reg = <0x0 SPMI_USID>;
+ compatible = "qcom,pm8921";
+ interrupts = <104 8>;
+ #interrupt-cells = <2>;
+ interrupt-controller;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pm8921_rtc: rtc@11d {
+ compatible = "qcom,pm8921-rtc";
+ reg = <0x11d>;
+ interrupts = <0x27 0>;
+ };
+ };
+ };
+...
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a
member
of Code Aurora Forum, hosted by The Linux Foundation
On Wed 07 Apr 10:37 CDT 2021, skakit@codeaurora.org wrote:
Hi Bjorn,
On 2021-03-11 22:33, Bjorn Andersson wrote:
quoted
On Thu 11 Mar 01:29 CST 2021, satya priya wrote:
[..]
quoted
quoted
+patternProperties:
+ "rtc@[0-9a-f]+$":
Can we somehow link this to individual binding docs instead of listing
all the possible functions here?
you mean we should split this into two:
qcom-pm8xxx.yaml and qcom-pm8xxx-rtc.yaml
Please correct me if wrong.
Right, I'm worried that it will be quite hard to maintain this document
once we start adding all the various pmic blocks to it. So if we somehow
can maintain a series of qcom-pm8xxx-<func>.yaml and just ref them into
the main PMIC definition.
@Rob, can you give us some guidance on how to structure this binding,
with the various PMICs described will have some defined subset of a
larger set of hardware blocks that's often shared between versions?
Regards,
Bjorn
From: Rob Herring <robh+dt@kernel.org> Date: 2021-04-08 14:28:52
On Wed, Apr 7, 2021 at 9:37 PM Bjorn Andersson
[off-list ref] wrote:
On Wed 07 Apr 10:37 CDT 2021, skakit@codeaurora.org wrote:
quoted
Hi Bjorn,
On 2021-03-11 22:33, Bjorn Andersson wrote:
quoted
On Thu 11 Mar 01:29 CST 2021, satya priya wrote:
[..]
quoted
quoted
quoted
+patternProperties:
+ "rtc@[0-9a-f]+$":
Can we somehow link this to individual binding docs instead of listing
all the possible functions here?
you mean we should split this into two:
qcom-pm8xxx.yaml and qcom-pm8xxx-rtc.yaml
Please correct me if wrong.
Right, I'm worried that it will be quite hard to maintain this document
once we start adding all the various pmic blocks to it. So if we somehow
can maintain a series of qcom-pm8xxx-<func>.yaml and just ref them into
the main PMIC definition.
@Rob, can you give us some guidance on how to structure this binding,
with the various PMICs described will have some defined subset of a
larger set of hardware blocks that's often shared between versions?
How you suggest is good. The only other thing is just 1 complete
example rather than a bunch of <func> fragments.
Rob