devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
Cc: Bjorn Andersson <andersson@kernel.org>,
	Mathieu Poirier <mathieu.poirier@linaro.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Manivannan Sadhasivam <mani@kernel.org>,
	aiqun.yu@oss.qualcomm.com, tingwei.zhang@oss.qualcomm.com,
	trilok.soni@oss.qualcomm.com, yijie.yang@oss.qualcomm.com,
	linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	Sibi Sankar <sibi.sankar@oss.qualcomm.com>
Subject: Re: [PATCH v2 3/7] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms
Date: Wed, 29 Oct 2025 08:22:12 -0500	[thread overview]
Message-ID: <20251029132212.GA662078-robh@kernel.org> (raw)
In-Reply-To: <20251029-knp-remoteproc-v2-3-6c81993b52ea@oss.qualcomm.com>

On Wed, Oct 29, 2025 at 01:05:41AM -0700, Jingyi Wang wrote:
> Document the component used to boot SoCCP on Kaanapali SoC and add
> compatible for Glymur SoCCP which could fallback to Kaanapali. Extend
> the "qcom,smem-states" and "qcom,smem-state-names" properties and
> add conditions for the "interrupts" and "interrupt-names" properties
> in the pas-common.
> 
> Co-developed-by: Sibi Sankar <sibi.sankar@oss.qualcomm.com>
> Signed-off-by: Sibi Sankar <sibi.sankar@oss.qualcomm.com>
> Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
> ---
>  .../remoteproc/qcom,kaanapali-soccp-pas.yaml       | 134 +++++++++++++++++++++
>  .../bindings/remoteproc/qcom,pas-common.yaml       |  83 +++++++++----
>  2 files changed, 194 insertions(+), 23 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,kaanapali-soccp-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,kaanapali-soccp-pas.yaml
> new file mode 100644
> index 000000000000..6b53121eede1
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,kaanapali-soccp-pas.yaml
> @@ -0,0 +1,134 @@
> +# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/remoteproc/qcom,kaanapali-soccp-pas.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Qualcomm Kaanapali SoCCP Peripheral Authentication Service
> +
> +maintainers:
> +  - Jingyi Wang <jingyi.wang@oss.qualcomm.com>
> +
> +description:
> +  The SoC Control Processor (SoCCP) is small RISC-V MCU that controls USB
> +  Type-C, battery charging and various other functions on Qualcomm SoCs, somewhat
> +  analogous to traditional PC Embedded Controllers. This document describes
> +  the Peripheral Authentication Service loads and boots firmware for SoCCP.
> +
> +properties:
> +  compatible:
> +    oneOf:
> +      - items:
> +          - enum:
> +              - qcom,glymur-soccp-pas
> +          - const: qcom,kaanapali-soccp-pas
> +      - enum:
> +          - qcom,kaanapali-soccp-pas
> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    items:
> +      - description: XO clock
> +
> +  clock-names:
> +    items:
> +      - const: xo
> +
> +  power-domains:
> +    items:
> +      - description: CX power domain
> +      - description: MX power domain
> +
> +  power-domain-names:
> +    items:
> +      - const: cx
> +      - const: mx
> +
> +  firmware-name:
> +    $ref: /schemas/types.yaml#/definitions/string-array

Already has a type. Drop.

> +    items:
> +      - description: Firmware name of the Hexagon core
> +      - description: Firmware name of the Hexagon Devicetree
> +
> +  memory-region:
> +    items:
> +      - description: Memory region for main Firmware authentication
> +      - description: Memory region for Devicetree Firmware authentication
> +
> +required:
> +  - compatible
> +  - reg
> +  - memory-region
> +  - power-domains
> +  - power-domain-names
> +
> +allOf:
> +  - $ref: /schemas/remoteproc/qcom,pas-common.yaml#
> +
> +unevaluatedProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/clock/qcom,rpmh.h>
> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +    #include <dt-bindings/mailbox/qcom-ipcc.h>
> +    #include <dt-bindings/power/qcom-rpmpd.h>
> +
> +    remoteproc@d00000 {
> +        compatible = "qcom,kaanapali-soccp-pas";
> +        reg = <0x00d00000 0x200000>;
> +
> +        clocks = <&rpmhcc RPMH_CXO_CLK>;
> +        clock-names = "xo";
> +
> +        interrupts-extended = <&intc GIC_SPI 167 IRQ_TYPE_EDGE_RISING>,
> +                              <&soccp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
> +                              <&soccp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
> +                              <&soccp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
> +                              <&soccp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>,
> +                              <&soccp_smp2p_in 9 IRQ_TYPE_EDGE_RISING>,
> +                              <&soccp_smp2p_in 10 IRQ_TYPE_EDGE_RISING>;
> +        interrupt-names = "wdog",
> +                          "fatal",
> +                          "ready",
> +                          "handover",
> +                          "stop-ack",
> +                          "pong",
> +                          "wake-ack";
> +
> +        memory-region = <&soccp_mem>,
> +                        <&soccp_dtb_mem_mem>;
> +
> +        firmware-name = "qcom/kaanapali/soccp.mbn",
> +                        "qcom/kaanapali/soccp_dtb.mbn";
> +
> +        power-domains = <&rpmhpd RPMHPD_CX>,
> +                        <&rpmhpd RPMHPD_MX>;
> +        power-domain-names = "cx",
> +                             "mx";
> +
> +        qcom,smem-states = <&soccp_smp2p_out 0>,
> +                           <&soccp_smp2p_out 10>,
> +                           <&soccp_smp2p_out 9>,
> +                           <&soccp_smp2p_out 8>;
> +        qcom,smem-state-names = "stop",
> +                                "wakeup",
> +                                "sleep",
> +                                "ping";
> +
> +        glink-edge {
> +            interrupts-extended = <&ipcc IPCC_MPROC_SOCCP
> +                                         IPCC_MPROC_SIGNAL_GLINK_QMP
> +                                         IRQ_TYPE_EDGE_RISING>;
> +            mboxes = <&ipcc IPCC_MPROC_SOCCP
> +                            IPCC_MPROC_SIGNAL_GLINK_QMP>;
> +
> +            label = "soccp";
> +            qcom,remote-pid = <19>;
> +
> +            /* ... */
> +        };
> +    };
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> index 63a82e7a8bf8..f81d088c2bad 100644
> --- a/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,pas-common.yaml
> @@ -24,26 +24,6 @@ properties:
>    interconnects:
>      maxItems: 1
>  
> -  interrupts:
> -    minItems: 5
> -    items:
> -      - description: Watchdog interrupt
> -      - description: Fatal interrupt
> -      - description: Ready interrupt
> -      - description: Handover interrupt
> -      - description: Stop acknowledge interrupt
> -      - description: Shutdown acknowledge interrupt
> -
> -  interrupt-names:
> -    minItems: 5
> -    items:
> -      - const: wdog
> -      - const: fatal
> -      - const: ready
> -      - const: handover
> -      - const: stop-ack
> -      - const: shutdown-ack
> -
>    power-domains:
>      minItems: 1
>      maxItems: 3
> @@ -55,13 +35,21 @@ properties:
>    qcom,smem-states:
>      $ref: /schemas/types.yaml#/definitions/phandle-array
>      description: States used by the AP to signal the Hexagon core
> +    minItems: 1
>      items:
> -      - description: Stop the modem
> +      - description: Stop the remoteproc
> +      - description: Wake up the remoteproc
> +      - description: Make the remoteproc sleep
> +      - description: Ping the remoteproc
>  
>    qcom,smem-state-names:
>      description: The names of the state bits used for SMP2P output
> +    minItems: 1
>      items:
>        - const: stop
> +      - const: wakeup
> +      - const: sleep
> +      - const: ping
>  
>    smd-edge:
>      $ref: /schemas/remoteproc/qcom,smd-edge.yaml#
> @@ -80,9 +68,58 @@ properties:
>  required:
>    - clocks
>    - clock-names
> -  - interrupts
> -  - interrupt-names
>    - qcom,smem-states
>    - qcom,smem-state-names
>  
> +allOf:
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - qcom,kaanapali-soccp-pas

The point of common schemas is to not have if/then/else schemas. If 
interrupts is now variable, then it is no longer common and should be 
moved out of the common schema. Or just have the widest constraints that 
covers all cases ({minItems: 5, maxItems: 7}).


> +    then:
> +      properties:
> +        interrupts:
> +          items:
> +            - description: Watchdog interrupt
> +            - description: Fatal interrupt
> +            - description: Ready interrupt
> +            - description: Handover interrupt
> +            - description: Stop acknowledge interrupt
> +            - description: Pong interrupt
> +            - description: Wake acknowledge interrupt
> +
> +        interrupt-names:
> +          items:
> +            - const: wdog
> +            - const: fatal
> +            - const: ready
> +            - const: handover
> +            - const: stop-ack
> +            - const: pong
> +            - const: wake-ack
> +
> +    else:
> +      properties:
> +        interrupts:
> +          minItems: 5
> +          items:
> +            - description: Watchdog interrupt
> +            - description: Fatal interrupt
> +            - description: Ready interrupt
> +            - description: Handover interrupt
> +            - description: Stop acknowledge interrupt
> +            - description: Shutdown acknowledge interrupt
> +
> +        interrupt-names:
> +          minItems: 5
> +          items:
> +            - const: wdog
> +            - const: fatal
> +            - const: ready
> +            - const: handover
> +            - const: stop-ack
> +            - const: shutdown-ack
> +
>  additionalProperties: true
> 
> -- 
> 2.25.1
> 

  parent reply	other threads:[~2025-10-29 13:22 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-29  8:05 [PATCH v2 0/7] Add initial remoteproc support for Kaanapali and Glymur SoCs Jingyi Wang
2025-10-29  8:05 ` [PATCH v2 1/7] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali ADSP Jingyi Wang
2025-10-29  8:05 ` [PATCH v2 2/7] dt-bindings: remoteproc: qcom,sm8550-pas: Add Kaanapali CDSP Jingyi Wang
2025-10-29  8:05 ` [PATCH v2 3/7] dt-bindings: remoteproc: qcom,pas: Document pas for SoCCP on Kaanapali and Glymur platforms Jingyi Wang
2025-10-29 11:28   ` Rob Herring (Arm)
2025-10-30  2:10     ` Jingyi Wang
2025-10-30  6:24       ` Krzysztof Kozlowski
2025-10-29 13:22   ` Rob Herring [this message]
2025-10-30  7:44     ` Jingyi Wang
2025-10-30  6:27   ` Krzysztof Kozlowski
2025-10-30  7:50     ` Jingyi Wang
2025-10-29  8:05 ` [PATCH v2 4/7] remoteproc: qcom: pas: Add late attach support for subsystems Jingyi Wang
2025-10-29 10:03   ` Stephan Gerhold
2025-10-31  9:03     ` Aiqun(Maria) Yu
2025-10-29 10:09   ` Aiqun(Maria) Yu
2025-11-01  9:53   ` kernel test robot
2025-11-01 17:49   ` kernel test robot
2025-11-01 18:34   ` Bjorn Andersson
2025-10-29  8:05 ` [PATCH v2 5/7] remoteproc: qcom_q6v5_pas: Add SoCCP node on Kaanapali Jingyi Wang
2025-10-29  8:05 ` [PATCH v2 6/7] dt-bindings: remoteproc: qcom,sm8550-pas: Document Glymur ADSP Jingyi Wang
2025-10-29 11:28   ` Rob Herring (Arm)
2025-10-29 13:23   ` Rob Herring
2025-10-29 13:28     ` Rob Herring
2025-10-29  8:05 ` [PATCH v2 7/7] dt-bindings: remoteproc: qcom,sm8550-pas: Document Glymur CDSP Jingyi Wang
2025-10-29 11:28   ` Rob Herring (Arm)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251029132212.GA662078-robh@kernel.org \
    --to=robh@kernel.org \
    --cc=aiqun.yu@oss.qualcomm.com \
    --cc=andersson@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=jingyi.wang@oss.qualcomm.com \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-remoteproc@vger.kernel.org \
    --cc=mani@kernel.org \
    --cc=mathieu.poirier@linaro.org \
    --cc=sibi.sankar@oss.qualcomm.com \
    --cc=tingwei.zhang@oss.qualcomm.com \
    --cc=trilok.soni@oss.qualcomm.com \
    --cc=yijie.yang@oss.qualcomm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).