Commit cf107e98 authored by Manivannan Sadhasivam's avatar Manivannan Sadhasivam Committed by Bjorn Andersson
Browse files

dt-bindings: remoteproc: qcom: pas: Convert binding to YAML

parent 34c4da6d
Loading
Loading
Loading
Loading
+0 −228
Original line number Diff line number Diff line
Qualcomm ADSP Peripheral Image Loader

This document defines the binding for a component that loads and boots firmware
on the Qualcomm ADSP Hexagon core.

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be one of:
		    "qcom,msm8974-adsp-pil"
		    "qcom,msm8996-adsp-pil"
		    "qcom,msm8996-slpi-pil"
		    "qcom,msm8998-adsp-pas"
		    "qcom,msm8998-slpi-pas"
		    "qcom,qcs404-adsp-pas"
		    "qcom,qcs404-cdsp-pas"
		    "qcom,qcs404-wcss-pas"
		    "qcom,sc7180-mpss-pas"
		    "qcom,sdm845-adsp-pas"
		    "qcom,sdm845-cdsp-pas"
                    "qcom,sdx55-mpss-pas"
		    "qcom,sm8150-adsp-pas"
		    "qcom,sm8150-cdsp-pas"
		    "qcom,sm8150-mpss-pas"
		    "qcom,sm8150-slpi-pas"
		    "qcom,sm8250-adsp-pas"
		    "qcom,sm8250-cdsp-pas"
		    "qcom,sm8250-slpi-pas"
		    "qcom,sm8350-adsp-pas"
		    "qcom,sm8350-cdsp-pas"
		    "qcom,sm8350-slpi-pas"
		    "qcom,sm8350-mpss-pas"

- interrupts-extended:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: reference to the interrupts that match interrupt-names

- interrupt-names:
	Usage: required
	Value type: <stringlist>
	Definition: The interrupts needed depends on the compatible
		    string:
	qcom,msm8974-adsp-pil:
	qcom,msm8996-adsp-pil:
	qcom,msm8996-slpi-pil:
	qcom,msm8998-adsp-pas:
	qcom,msm8998-slpi-pas:
	qcom,qcs404-adsp-pas:
	qcom,qcs404-cdsp-pas:
	qcom,sdm845-adsp-pas:
	qcom,sdm845-cdsp-pas:
	qcom,sm8150-adsp-pas:
	qcom,sm8150-cdsp-pas:
	qcom,sm8150-slpi-pas:
	qcom,sm8250-adsp-pas:
	qcom,sm8250-cdsp-pas:
	qcom,sm8250-slpi-pas:
	qcom,sm8350-adsp-pas:
	qcom,sm8350-cdsp-pas:
	qcom,sm8350-slpi-pas:
		    must be "wdog", "fatal", "ready", "handover", "stop-ack"
	qcom,qcs404-wcss-pas:
	qcom,sc7180-mpss-pas:
        qcom,sdx55-mpss-pas:
	qcom,sm8150-mpss-pas:
	qcom,sm8350-mpss-pas:
		    must be "wdog", "fatal", "ready", "handover", "stop-ack",
		    "shutdown-ack"

- firmware-name:
	Usage: optional
	Value type: <string>
	Definition: must list the relative firmware image path for the
		    Hexagon Core.

- clocks:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: reference to the xo clock and optionally aggre2 clock to be
		    held on behalf of the booting Hexagon core

- clock-names:
	Usage: required
	Value type: <stringlist>
	Definition: must be "xo" and optionally include "aggre2"

- cx-supply:
	Usage: required
	Value type: <phandle>
	Definition: reference to the regulator to be held on behalf of the
		    booting Hexagon core

- px-supply:
	Usage: required
	Value type: <phandle>
	Definition: reference to the px regulator to be held on behalf of the
		    booting Hexagon core

- power-domains:
	Usage: required
	Value type: <phandle>
	Definition: reference to power-domains that match the power-domain-names

- power-domain-names:
	Usage: required
	Value type: <stringlist>
	Definition: The power-domains needed depend on the compatible string:
	qcom,msm8974-adsp-pil:
	qcom,msm8996-adsp-pil:
	qcom,msm8998-adsp-pas:
		    must be "cx"
	qcom,msm8996-slpi-pil:
		    must be "ss_cx"
	qcom,msm8998-slpi-pas:
		    must be "ssc_cx"
	qcom,qcs404-adsp-pas:
		    must be "lpi_cx"
	qcom,qcs404-cdsp-pas:
	qcom,qcs404-wcss-pas:
		    must be "mx"
	qcom,sdm845-adsp-pas:
	qcom,sdm845-cdsp-pas:
	qcom,sm8150-adsp-pas:
	qcom,sm8150-cdsp-pas:
	qcom,sm8250-cdsp-pas:
	qcom,sm8350-cdsp-pas:
		    must be "cx", "load_state"
	qcom,sc7180-mpss-pas:
	qcom,sm8150-mpss-pas:
	qcom,sm8350-mpss-pas:
		    must be "cx", "load_state", "mss"
        qcom,sdx55-mpss-pas:
                    must be "cx", "mss"
	qcom,sm8250-adsp-pas:
	qcom,sm8350-adsp-pas:
	qcom,sm8150-slpi-pas:
	qcom,sm8250-slpi-pas:
	qcom,sm8350-slpi-pas:
		    must be "lcx", "lmx", "load_state"

- memory-region:
	Usage: required
	Value type: <phandle>
	Definition: reference to the reserved-memory for the ADSP

- qcom,smem-states:
	Usage: required
	Value type: <phandle>
	Definition: reference to the smem state for requesting the ADSP to
		    shut down

- qcom,smem-state-names:
	Usage: required
	Value type: <stringlist>
	Definition: must be "stop"


= SUBNODES
The adsp node may have an subnode named either "smd-edge" or "glink-edge" that
describes the communication edge, channels and devices related to the ADSP.
See ../soc/qcom/qcom,smd.txt and ../soc/qcom/qcom,glink.txt for details on how
to describe these.


= EXAMPLE
The following example describes the resources needed to boot control the
ADSP, as it is found on MSM8974 boards.

	adsp {
		compatible = "qcom,msm8974-adsp-pil";

		interrupts-extended = <&intc 0 162 IRQ_TYPE_EDGE_RISING>,
				      <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
				      <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
				      <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
				      <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
		interrupt-names = "wdog",
				  "fatal",
				  "ready",
				  "handover",
				  "stop-ack";

		clocks = <&rpmcc RPM_CXO_CLK>;
		clock-names = "xo";

		cx-supply = <&pm8841_s2>;

		memory-region = <&adsp_region>;

		qcom,smem-states = <&adsp_smp2p_out 0>;
		qcom,smem-state-names = "stop";

		smd-edge {
			interrupts = <0 156 IRQ_TYPE_EDGE_RISING>;

			qcom,ipc = <&apcs 8 8>;
			qcom,smd-edge = <1>;
		};
	};

The following example describes the resources needed to boot control the
SLPI, as it is found on MSM8996 boards.

	slpi {
		compatible = "qcom,msm8996-slpi-pil";
		interrupts-extended = <&intc 0 390 IRQ_TYPE_EDGE_RISING>,
				      <&slpi_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
				      <&slpi_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
				      <&slpi_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
				      <&slpi_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
		interrupt-names = "wdog",
				  "fatal",
				  "ready",
				  "handover",
				  "stop-ack";

		clocks = <&rpmcc MSM8996_RPM_SMD_XO_CLK_SRC>,
		         <&rpmcc MSM8996_RPM_SMD_AGGR2_NOC_CLK>;
		clock-names = "xo", "aggre2";

		cx-supply = <&pm8994_l26>;
		px-supply = <&pm8994_lvs2>;

		memory-region = <&slpi_region>;
		qcom,smem-states = <&slpi_smp2p_out 0>;
		qcom,smem-state-names = "stop";
        };
+534 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/qcom,adsp.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm ADSP Peripheral Image Loader binding

maintainers:
  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>

description:
  This document defines the binding for a component that loads and boots
  firmware on the Qualcomm ADSP Hexagon core.

properties:
  compatible:
    enum:
      - qcom,msm8974-adsp-pil
      - qcom,msm8996-adsp-pil
      - qcom,msm8996-slpi-pil
      - qcom,msm8998-adsp-pas
      - qcom,msm8998-slpi-pas
      - qcom,qcs404-adsp-pas
      - qcom,qcs404-cdsp-pas
      - qcom,qcs404-wcss-pas
      - qcom,sc7180-mpss-pas
      - qcom,sdm845-adsp-pas
      - qcom,sdm845-cdsp-pas
      - qcom,sdx55-mpss-pas
      - qcom,sm8150-adsp-pas
      - qcom,sm8150-cdsp-pas
      - qcom,sm8150-mpss-pas
      - qcom,sm8150-slpi-pas
      - qcom,sm8250-adsp-pas
      - qcom,sm8250-cdsp-pas
      - qcom,sm8250-slpi-pas
      - qcom,sm8350-adsp-pas
      - qcom,sm8350-cdsp-pas
      - qcom,sm8350-slpi-pas
      - qcom,sm8350-mpss-pas

  reg:
    maxItems: 1

  clocks:
    minItems: 1
    maxItems: 8

  clock-names:
    minItems: 1
    maxItems: 8

  interrupts:
    minItems: 5
    maxItems: 6

  interrupt-names:
    minItems: 5
    maxItems: 6

  resets:
    minItems: 1
    maxItems: 3

  reset-names:
    minItems: 1
    maxItems: 3

  cx-supply:
    description: Phandle to the CX regulator

  px-supply:
    description: Phandle to the PX regulator

  power-domains:
    minItems: 1
    maxItems: 3

  power-domain-names:
    minItems: 1
    maxItems: 3

  firmware-name:
    $ref: /schemas/types.yaml#/definitions/string
    description: Firmware name for the Hexagon core

  memory-region:
    maxItems: 1
    description: Reference to the reserved-memory for the Hexagon core

  qcom,smem-states:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: States used by the AP to signal the Hexagon core
    items:
      - description: Stop the modem

  qcom,smem-state-names:
    $ref: /schemas/types.yaml#/definitions/string-array
    description: The names of the state bits used for SMP2P output
    items:
      - const: stop

  qcom,halt-regs:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description:
      Phandle reference to a syscon representing TCSR followed by the
      three offsets within syscon for q6, modem and nc halt registers.

  smd-edge:
    type: object
    description:
      Qualcomm Shared Memory subnode which represents communication edge,
      channels and devices related to the ADSP.

  glink-edge:
    type: object
    description:
      Qualcomm G-Link subnode which represents communication edge, channels
      and devices related to the ADSP.

required:
  - compatible
  - clocks
  - clock-names
  - interrupts
  - interrupt-names
  - memory-region
  - qcom,smem-states
  - qcom,smem-state-names

additionalProperties: false

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8974-adsp-pil
              - qcom,msm8996-adsp-pil
              - qcom,msm8996-slpi-pil
              - qcom,msm8998-adsp-pas
              - qcom,qcs404-adsp-pas
              - qcom,qcs404-wcss-pas
              - qcom,sdm845-adsp-pas
              - qcom,sdm845-cdsp-pas
              - qcom,sm8150-adsp-pas
              - qcom,sm8150-cdsp-pas
              - qcom,sm8150-mpss-pas
              - qcom,sm8150-slpi-pas
              - qcom,sm8250-adsp-pas
              - qcom,sm8250-cdsp-pas
              - qcom,sm8250-slpi-pas
              - qcom,sm8350-adsp-pas
              - qcom,sm8350-cdsp-pas
              - qcom,sm8350-slpi-pas
              - qcom,sm8350-mpss-pas
    then:
      properties:
        clocks:
          items:
            - description: XO clock
        clock-names:
          items:
            - const: xo

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8998-slpi-pas
    then:
      properties:
        clocks:
          items:
            - description: XO clock
            - description: AGGRE2 clock
        clock-names:
          items:
            - const: xo
            - const: aggre2

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,qcs404-cdsp-pas
    then:
      properties:
        clocks:
          items:
            - description: XO clock
            - description: SWAY clock
            - description: TBU clock
            - description: BIMC clock
            - description: AHB AON clock
            - description: Q6SS SLAVE clock
            - description: Q6SS MASTER clock
            - description: Q6 AXIM clock
        clock-names:
          items:
            - const: xo
            - const: sway
            - const: tbu
            - const: bimc
            - const: ahb_aon
            - const: q6ss_slave
            - const: q6ss_master
            - const: q6_axim

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sc7180-mpss-pas
    then:
      properties:
        clocks:
          items:
            - description: XO clock
            - description: IFACE clock
            - description: BUS clock
            - description: NAC clock
            - description: SNOC AXI clock
            - description: MNOC AXI clock
        clock-names:
          items:
            - const: xo
            - const: iface
            - const: bus
            - const: nav
            - const: snoc_axi
            - const: mnoc_axi

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8974-adsp-pil
              - qcom,msm8996-adsp-pil
              - qcom,msm8996-slpi-pil
              - qcom,msm8998-adsp-pas
              - qcom,msm8998-slpi-pas
              - qcom,qcs404-adsp-pas
              - qcom,qcs404-cdsp-pas
              - qcom,qcs404-wcss-pas
              - qcom,sdm845-adsp-pas
              - qcom,sdm845-cdsp-pas
              - qcom,sm8150-adsp-pas
              - qcom,sm8150-cdsp-pas
              - qcom,sm8150-slpi-pas
              - qcom,sm8250-adsp-pas
              - qcom,sm8250-cdsp-pas
              - qcom,sm8250-slpi-pas
              - qcom,sm8350-adsp-pas
              - qcom,sm8350-cdsp-pas
              - qcom,sm8350-slpi-pas
    then:
      properties:
        interrupts:
          items:
            - description: Watchdog interrupt
            - description: Fatal interrupt
            - description: Ready interrupt
            - description: Handover interrupt
            - description: Stop acknowledge interrupt
        interrupt-names:
          items:
            - const: wdog
            - const: fatal
            - const: ready
            - const: handover
            - const: stop-ack

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sc7180-mpss-pas
              - qcom,sdx55-mpss-pas
              - qcom,sm8150-mpss-pas
              - qcom,sm8350-mpss-pas
    then:
      properties:
        interrupts:
          items:
            - description: Watchdog interrupt
            - description: Fatal interrupt
            - description: Ready interrupt
            - description: Handover interrupt
            - description: Stop acknowledge interrupt
            - description: Shutdown acknowledge interrupt
        interrupt-names:
          items:
            - const: wdog
            - const: fatal
            - const: ready
            - const: handover
            - const: stop-ack
            - const: shutdown-ack

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8974-adsp-pil
    then:
      required:
        - cx-supply

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8998-adsp-pas
    then:
      properties:
        power-domains:
          items:
            - description: CX power domain
        power-domain-names:
          items:
           - const: cx

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8998-slpi-pas
    then:
      properties:
        power-domains:
          items:
            - description: SSC-CX power domain
        power-domain-names:
          items:
           - const: ssc_cx
      required:
        - px-supply

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sc7180-mpss-pas
    then:
      properties:
        power-domains:
          items:
            - description: Load State power domain
            - description: CX power domain
            - description: MX power domain
            - description: MSS power domain
        power-domain-names:
          items:
           - const: load_state
           - const: cx
           - const: mx
           - const: mss

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sm8150-adsp-pas
              - qcom,sm8150-cdsp-pas
    then:
      properties:
        power-domains:
          items:
            - description: Load State power domain
            - description: CX power domain
        power-domain-names:
          items:
           - const: load_state
           - const: cx

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sm8150-mpss-pas
              - qcom,sm8350-mpss-pas
    then:
      properties:
        power-domains:
          items:
            - description: Load State power domain
            - description: CX power domain
            - description: MSS power domain
        power-domain-names:
          items:
           - const: load_state
           - const: cx
           - const: mss

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sdx55-mpss-pas
    then:
      properties:
        power-domains:
          items:
            - description: CX power domain
            - description: MSS power domain
        power-domain-names:
          items:
           - const: cx
           - const: mss

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sm8150-slpi-pas
              - qcom,sm8250-adsp-pas
              - qcom,sm8250-slpi-pas
              - qcom,sm8350-adsp-pas
              - qcom,sm8350-slpi-pas
    then:
      properties:
        power-domains:
          items:
            - description: Load State power domain
            - description: LCX power domain
            - description: LMX power domain
        power-domain-names:
          items:
           - const: load_state
           - const: lcx
           - const: lmx

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sm8350-cdsp-pas
    then:
      properties:
        power-domains:
          items:
            - description: Load State power domain
            - description: CX power domain
            - description: MXC power domain
        power-domain-names:
          items:
           - const: load_state
           - const: cx
           - const: mxc

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,qcs404-cdsp-pas
    then:
      properties:
        resets:
          items:
            - description: CDSP restart
        reset-names:
          items:
            - const: restart

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sc7180-mpss-pas
    then:
      properties:
        resets:
          items:
            - description: MSS restart
            - description: PDC reset
        reset-names:
          items:
            - const: mss_restart
            - const: pdc_reset

examples:
  - |
    #include <dt-bindings/clock/qcom,rpmcc.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    adsp {
        compatible = "qcom,msm8974-adsp-pil";

        interrupts-extended = <&intc 0 162 IRQ_TYPE_EDGE_RISING>,
                      <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
                      <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
                      <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
                      <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
        interrupt-names = "wdog",
                  "fatal",
                  "ready",
                  "handover",
                  "stop-ack";

        clocks = <&rpmcc RPM_CXO_CLK>;
        clock-names = "xo";

        cx-supply = <&pm8841_s2>;

        memory-region = <&adsp_region>;

        qcom,smem-states = <&adsp_smp2p_out 0>;
        qcom,smem-state-names = "stop";

        smd-edge {
            interrupts = <0 156 IRQ_TYPE_EDGE_RISING>;

            qcom,ipc = <&apcs 8 8>;
            qcom,smd-edge = <1>;
        };
    };