Changes from v2:
- Added new "qcom,pmk8350-pon" compatible string as per Krysztof's
advice
- Updated dt logic to use comptaible strings to decide constraints
as per Krysztof's comment
- Added new patch (v3 2/2) to support new compatible string
Changes from v1:
- Updated path which was missing Documentation/devicetree prefix
- Updated CC list
New patch series to seperate this patch from applied patches.
Comments from original patch can be found
https://lore.kernel.org/linux-arm-msm/[email protected]/
David Collins (1):
dt-bindings: power: reset: qcom-pon: update "reg" property details
Anjelique Melendez (1):
power: reset: qcom-pon: add support for qcom,pmk8350-pon compatible string
Documentation/devicetree/bindings/power/reset/qcom,pon.yaml | 73 ++++++++++++++++++++++++++++--
drivers/power/reset/qcom-pon.c | 1 +
2 file changed, 70 insertions(+), 4 deletions(-)
--
2.35.1
Add support for the new "qcom,pmk8350-pon" comptaible string.
Signed-off-by: Anjelique Melendez <[email protected]>
---
drivers/power/reset/qcom-pon.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/power/reset/qcom-pon.c b/drivers/power/reset/qcom-pon.c
index 4a688741a88a..16bc01738be9 100644
--- a/drivers/power/reset/qcom-pon.c
+++ b/drivers/power/reset/qcom-pon.c
@@ -82,6 +82,7 @@ static const struct of_device_id pm8916_pon_id_table[] = {
{ .compatible = "qcom,pm8916-pon", .data = (void *)GEN1_REASON_SHIFT },
{ .compatible = "qcom,pms405-pon", .data = (void *)GEN1_REASON_SHIFT },
{ .compatible = "qcom,pm8998-pon", .data = (void *)GEN2_REASON_SHIFT },
+ { .compatible = "qcom,pmk8350-pon", .data = (void *)GEN2_REASON_SHIFT },
{ }
};
MODULE_DEVICE_TABLE(of, pm8916_pon_id_table);
--
2.35.1
From: David Collins <[email protected]>
Update the description of "reg" property to add the PON_PBS base
address along with PON_HLOS base address. Also add "reg-names"
property description.
Signed-off-by: David Collins <[email protected]>
Signed-off-by: Anjelique Melendez <[email protected]>
---
Documentation/devicetree/bindings/power/reset/qcom,pon.yaml | 73 ++++++++++++++++++++++++++++--
1 file changed, 69 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
index 353f155d..562fe308 100644
--- a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
+++ b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
@@ -15,18 +15,26 @@ description: |
This DT node has pwrkey and resin as sub nodes.
-allOf:
- - $ref: reboot-mode.yaml#
-
properties:
compatible:
enum:
- qcom,pm8916-pon
- qcom,pms405-pon
- qcom,pm8998-pon
+ - qcom,pmk8350-pon
reg:
- maxItems: 1
+ description: |
+ Specifies the SPMI base address for the PON (power-on) peripheral. For
+ PMICs that have the PON peripheral (GEN3) split into PON_HLOS and PON_PBS
+ (e.g. PMK8350), this can hold addresses of both PON_HLOS and PON_PBS
+ peripherals. In that case, the PON_PBS address needs to be specified to
+ facilitate software debouncing on some PMIC.
+
+ reg-names:
+ description: |
+ For PON GEN1 and GEN2, it should be "pon". For PON GEN3 it should include
+ "hlos" and optionally "pbs".
pwrkey:
type: object
@@ -42,6 +50,63 @@ required:
unevaluatedProperties: false
+allOf:
+ - $ref: reboot-mode.yaml#
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: qcom,pm8916-pon
+ then:
+ properties:
+ reg:
+ maxItems: 1
+ reg-names:
+ items:
+ - const: pon
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: qcom,pms405-pon
+ then:
+ properties:
+ reg:
+ maxItems: 1
+ reg-names:
+ items:
+ - const: pon
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: qcom,pm8998-pon
+ then:
+ properties:
+ reg:
+ maxItems: 1
+ reg-names:
+ items:
+ - const: pon
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: qcom,pmk8350-pon
+ then:
+ properties:
+ reg:
+ minItems: 1
+ maxItems: 2
+ reg-names:
+ minItems: 1
+ items:
+ - const: hlos
+ - const: pbs
+
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
--
2.35.1
On 13/07/2022 21:33, Anjelique Melendez wrote:
> From: David Collins <[email protected]>
>
> Update the description of "reg" property to add the PON_PBS base
> address along with PON_HLOS base address. Also add "reg-names"
> property description.
>
> Signed-off-by: David Collins <[email protected]>
> Signed-off-by: Anjelique Melendez <[email protected]>
> ---
> Documentation/devicetree/bindings/power/reset/qcom,pon.yaml | 73 ++++++++++++++++++++++++++++--
> 1 file changed, 69 insertions(+), 4 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
> index 353f155d..562fe308 100644
> --- a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
> +++ b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
> @@ -15,18 +15,26 @@ description: |
>
> This DT node has pwrkey and resin as sub nodes.
>
> -allOf:
> - - $ref: reboot-mode.yaml#
> -
> properties:
> compatible:
> enum:
> - qcom,pm8916-pon
> - qcom,pms405-pon
> - qcom,pm8998-pon
> + - qcom,pmk8350-pon
>
> reg:
> - maxItems: 1
> + description: |
> + Specifies the SPMI base address for the PON (power-on) peripheral. For
> + PMICs that have the PON peripheral (GEN3) split into PON_HLOS and PON_PBS
> + (e.g. PMK8350), this can hold addresses of both PON_HLOS and PON_PBS
> + peripherals. In that case, the PON_PBS address needs to be specified to
> + facilitate software debouncing on some PMIC.
You miss here min and maxItems
> +
> + reg-names:
> + description: |
> + For PON GEN1 and GEN2, it should be "pon". For PON GEN3 it should include
> + "hlos" and optionally "pbs".
Skip description. You miss here min and maxItems.
See
https://elixir.bootlin.com/linux/v5.19-rc6/source/Documentation/devicetree/bindings/clock/samsung,exynos7-clock.yaml#L57
for examples.
>
> pwrkey:
> type: object
> @@ -42,6 +50,63 @@ required:
>
> unevaluatedProperties: false
>
> +allOf:
> + - $ref: reboot-mode.yaml#
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: qcom,pm8916-pon
> + then:
> + properties:
> + reg:
> + maxItems: 1
> + reg-names:
> + items:
> + - const: pon
> +
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: qcom,pms405-pon
> + then:
> + properties:
> + reg:
> + maxItems: 1
> + reg-names:
> + items:
> + - const: pon
> +
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: qcom,pm8998-pon
> + then:
> + properties:
> + reg:
> + maxItems: 1
> + reg-names:
> + items:
> + - const: pon
No clue why you made three if statements. This is one if for all three
variants.
> +
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: qcom,pmk8350-pon
> + then:
> + properties:
> + reg:
> + minItems: 1
> + maxItems: 2
> + reg-names:
> + minItems: 1
> + items:
> + - const: hlos
> + - const: pbs
> +
> examples:
> - |
> #include <dt-bindings/interrupt-controller/irq.h>
Best regards,
Krzysztof
Hi,
On Wed, Jul 13, 2022 at 12:33:51PM -0700, Anjelique Melendez wrote:
> Add support for the new "qcom,pmk8350-pon" comptaible string.
>
> Signed-off-by: Anjelique Melendez <[email protected]>
> ---
> drivers/power/reset/qcom-pon.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/power/reset/qcom-pon.c b/drivers/power/reset/qcom-pon.c
> index 4a688741a88a..16bc01738be9 100644
> --- a/drivers/power/reset/qcom-pon.c
> +++ b/drivers/power/reset/qcom-pon.c
> @@ -82,6 +82,7 @@ static const struct of_device_id pm8916_pon_id_table[] = {
> { .compatible = "qcom,pm8916-pon", .data = (void *)GEN1_REASON_SHIFT },
> { .compatible = "qcom,pms405-pon", .data = (void *)GEN1_REASON_SHIFT },
> { .compatible = "qcom,pm8998-pon", .data = (void *)GEN2_REASON_SHIFT },
> + { .compatible = "qcom,pmk8350-pon", .data = (void *)GEN2_REASON_SHIFT },
> { }
> };
> MODULE_DEVICE_TABLE(of, pm8916_pon_id_table);
No handling of the second register? Why is it needed in DT in the
first place?
-- Sebastian
On 7/16/2022 2:58 PM, Sebastian Reichel wrote:
> Hi,
>
> On Wed, Jul 13, 2022 at 12:33:51PM -0700, Anjelique Melendez wrote:
>> Add support for the new "qcom,pmk8350-pon" comptaible string.
>>
>> Signed-off-by: Anjelique Melendez <[email protected]>
>> ---
>> drivers/power/reset/qcom-pon.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/power/reset/qcom-pon.c b/drivers/power/reset/qcom-pon.c
>> index 4a688741a88a..16bc01738be9 100644
>> --- a/drivers/power/reset/qcom-pon.c
>> +++ b/drivers/power/reset/qcom-pon.c
>> @@ -82,6 +82,7 @@ static const struct of_device_id pm8916_pon_id_table[] = {
>> { .compatible = "qcom,pm8916-pon", .data = (void *)GEN1_REASON_SHIFT },
>> { .compatible = "qcom,pms405-pon", .data = (void *)GEN1_REASON_SHIFT },
>> { .compatible = "qcom,pm8998-pon", .data = (void *)GEN2_REASON_SHIFT },
>> + { .compatible = "qcom,pmk8350-pon", .data = (void *)GEN2_REASON_SHIFT },
>> { }
>> };
>> MODULE_DEVICE_TABLE(of, pm8916_pon_id_table);
>
> No handling of the second register? Why is it needed in DT in the
> first place?
>
> -- Sebastian
Hi Sebastian,
The handling of the second register takes place in drivers/input/misc/pm8941-pwrkey.c.
The patch that handles this change can be found at:
https://lore.kernel.org/linux-arm-msm/[email protected]/.
This patch has been applied.
Krzystof and I discuss the need for a new compatible string here:
https://lore.kernel.org/all/[email protected]/.
In short, the gen1/gen2/gen3 children pon devices will use the "reg" address(es) defined
from their parent. Currently, "qcom,pm8998-pon" is too generic as it is being used for
both gen1/gen2 and gen3 children. So we must add the new "qcom,pmk8350-pon" compatible
string to be used for gen3 children so that the second register can be defined.
Thanks,
Anjelique
On 7/14/2022 4:48 AM, Krzysztof Kozlowski wrote:
> On 13/07/2022 21:33, Anjelique Melendez wrote:
>> From: David Collins <[email protected]>
>>
>> Update the description of "reg" property to add the PON_PBS base
>> address along with PON_HLOS base address. Also add "reg-names"
>> property description.
>>
>> Signed-off-by: David Collins <[email protected]>
>> Signed-off-by: Anjelique Melendez <[email protected]>
>> ---
>> Documentation/devicetree/bindings/power/reset/qcom,pon.yaml | 73 ++++++++++++++++++++++++++++--
>> 1 file changed, 69 insertions(+), 4 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
>> index 353f155d..562fe308 100644
>> --- a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
>> +++ b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
>> @@ -15,18 +15,26 @@ description: |
>>
>> This DT node has pwrkey and resin as sub nodes.
>>
>> -allOf:
>> - - $ref: reboot-mode.yaml#
>> -
>> properties:
>> compatible:
>> enum:
>> - qcom,pm8916-pon
>> - qcom,pms405-pon
>> - qcom,pm8998-pon
>> + - qcom,pmk8350-pon
>>
>> reg:
>> - maxItems: 1
>> + description: |
>> + Specifies the SPMI base address for the PON (power-on) peripheral. For
>> + PMICs that have the PON peripheral (GEN3) split into PON_HLOS and PON_PBS
>> + (e.g. PMK8350), this can hold addresses of both PON_HLOS and PON_PBS
>> + peripherals. In that case, the PON_PBS address needs to be specified to
>> + facilitate software debouncing on some PMIC.
>
> You miss here min and maxItems
ACK
>
>> +
>> + reg-names:
>> + description: |
>> + For PON GEN1 and GEN2, it should be "pon". For PON GEN3 it should include
>> + "hlos" and optionally "pbs".
>
> Skip description. You miss here min and maxItems.
>
> See
> https://elixir.bootlin.com/linux/v5.19-rc6/source/Documentation/devicetree/bindings/clock/samsung,exynos7-clock.yaml#L57
> for examples.
ACK
>
>
>>
>> pwrkey:
>> type: object
>> @@ -42,6 +50,63 @@ required:
>>
>> unevaluatedProperties: false
>>
>> +allOf:
>> + - $ref: reboot-mode.yaml#
>> + - if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: qcom,pm8916-pon
>> + then:
>> + properties:
>> + reg:
>> + maxItems: 1
>> + reg-names:
>> + items:
>> + - const: pon
>> +
>> + - if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: qcom,pms405-pon
>> + then:
>> + properties:
>> + reg:
>> + maxItems: 1
>> + reg-names:
>> + items:
>> + - const: pon
>> +
>> + - if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: qcom,pm8998-pon
>> + then:
>> + properties:
>> + reg:
>> + maxItems: 1
>> + reg-names:
>> + items:
>> + - const: pon
>
> No clue why you made three if statements. This is one if for all three
> variants.
>
Sorry about that was not sure how to combine the if statements originally.
Found that you could do:
- if:
properties:
compatible:
contains:
enum:
- qcom,pm8916-pon
- qcom,pms405-pon
- qcom,pm8998-pon
then:
...
I was wondering if for the "qcom,pmk8350-pon" compatible would you rather
have the if statement the way it is or have it follow the same pattern as
above i.e.
contains:
const: qcom,pmk8350-pon
vs
contains:
enum:
- qcom,pmk8350-pon
>> +
>> + - if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: qcom,pmk8350-pon
>> + then:
>> + properties:
>> + reg:
>> + minItems: 1
>> + maxItems: 2
>> + reg-names:
>> + minItems: 1
>> + items:
>> + - const: hlos
>> + - const: pbs
>> +
>> examples:
>> - |
>> #include <dt-bindings/interrupt-controller/irq.h>
>
>
> Best regards,
> Krzysztof
Thanks,
Anjelique
On Mon, Jul 18, 2022 at 12:57:09PM -0700, Anjelique Melendez wrote:
>
>
> On 7/14/2022 4:48 AM, Krzysztof Kozlowski wrote:
> > On 13/07/2022 21:33, Anjelique Melendez wrote:
> >> From: David Collins <[email protected]>
> >>
> >> Update the description of "reg" property to add the PON_PBS base
> >> address along with PON_HLOS base address. Also add "reg-names"
> >> property description.
> >>
> >> Signed-off-by: David Collins <[email protected]>
> >> Signed-off-by: Anjelique Melendez <[email protected]>
> >> ---
> >> Documentation/devicetree/bindings/power/reset/qcom,pon.yaml | 73 ++++++++++++++++++++++++++++--
> >> 1 file changed, 69 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
> >> index 353f155d..562fe308 100644
> >> --- a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
> >> +++ b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml
> >> @@ -15,18 +15,26 @@ description: |
> >>
> >> This DT node has pwrkey and resin as sub nodes.
> >>
> >> -allOf:
> >> - - $ref: reboot-mode.yaml#
> >> -
> >> properties:
> >> compatible:
> >> enum:
> >> - qcom,pm8916-pon
> >> - qcom,pms405-pon
> >> - qcom,pm8998-pon
> >> + - qcom,pmk8350-pon
> >>
> >> reg:
> >> - maxItems: 1
> >> + description: |
> >> + Specifies the SPMI base address for the PON (power-on) peripheral. For
> >> + PMICs that have the PON peripheral (GEN3) split into PON_HLOS and PON_PBS
> >> + (e.g. PMK8350), this can hold addresses of both PON_HLOS and PON_PBS
> >> + peripherals. In that case, the PON_PBS address needs to be specified to
> >> + facilitate software debouncing on some PMIC.
> >
> > You miss here min and maxItems
> ACK
> >
> >> +
> >> + reg-names:
> >> + description: |
> >> + For PON GEN1 and GEN2, it should be "pon". For PON GEN3 it should include
> >> + "hlos" and optionally "pbs".
> >
> > Skip description. You miss here min and maxItems.
> >
> > See
> > https://elixir.bootlin.com/linux/v5.19-rc6/source/Documentation/devicetree/bindings/clock/samsung,exynos7-clock.yaml#L57
> > for examples.
> ACK
> >
> >
> >>
> >> pwrkey:
> >> type: object
> >> @@ -42,6 +50,63 @@ required:
> >>
> >> unevaluatedProperties: false
> >>
> >> +allOf:
> >> + - $ref: reboot-mode.yaml#
> >> + - if:
> >> + properties:
> >> + compatible:
> >> + contains:
> >> + const: qcom,pm8916-pon
> >> + then:
> >> + properties:
> >> + reg:
> >> + maxItems: 1
> >> + reg-names:
> >> + items:
> >> + - const: pon
> >> +
> >> + - if:
> >> + properties:
> >> + compatible:
> >> + contains:
> >> + const: qcom,pms405-pon
> >> + then:
> >> + properties:
> >> + reg:
> >> + maxItems: 1
> >> + reg-names:
> >> + items:
> >> + - const: pon
> >> +
> >> + - if:
> >> + properties:
> >> + compatible:
> >> + contains:
> >> + const: qcom,pm8998-pon
> >> + then:
> >> + properties:
> >> + reg:
> >> + maxItems: 1
> >> + reg-names:
> >> + items:
> >> + - const: pon
> >
> > No clue why you made three if statements. This is one if for all three
> > variants.
> >
> Sorry about that was not sure how to combine the if statements originally.
> Found that you could do:
>
> - if:
> properties:
> compatible:
> contains:
> enum:
> - qcom,pm8916-pon
> - qcom,pms405-pon
> - qcom,pm8998-pon
> then:
> ...
>
> I was wondering if for the "qcom,pmk8350-pon" compatible would you rather
> have the if statement the way it is or have it follow the same pattern as
> above i.e.
>
> contains:
> const: qcom,pmk8350-pon
>
> vs
>
> contains:
> enum:
> - qcom,pmk8350-pon
The former. If only 1 possibility, use 'const'.
Rob