Commit 1c46589d authored by David Heidelberg's avatar David Heidelberg Committed by Bjorn Andersson
Browse files

dt-bindings: firmware: convert Qualcomm SCM binding to the yaml



Convert Qualcomm SCM firmware binding to the yaml format.

This commit also:
 - adds qcom,scm-mdm9607 into list which has only core clock
 - adds qcom,scm-sm6125, qcom,scm-ipq6018
 - #reset-cells, because the property is already used

Signed-off-by: default avatarDavid Heidelberg <david@ixit.cz>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Acked-by: default avatarGuru Das Srinagesh <quic_gurus@quicinc.com>
Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
Link: https://lore.kernel.org/r/20220708090431.30437-1-david@ixit.cz
parent 5257841a
Loading
Loading
Loading
Loading
+0 −61
Original line number Diff line number Diff line
QCOM Secure Channel Manager (SCM)

Qualcomm processors include an interface to communicate to the secure firmware.
This interface allows for clients to request different types of actions.  These
can include CPU power up/down, HDCP requests, loading of firmware, and other
assorted actions.

Required properties:
- compatible: must contain one of the following:
 * "qcom,scm-apq8064"
 * "qcom,scm-apq8084"
 * "qcom,scm-ipq4019"
 * "qcom,scm-ipq806x"
 * "qcom,scm-ipq8074"
 * "qcom,scm-mdm9607"
 * "qcom,scm-msm8226"
 * "qcom,scm-msm8660"
 * "qcom,scm-msm8916"
 * "qcom,scm-msm8953"
 * "qcom,scm-msm8960"
 * "qcom,scm-msm8974"
 * "qcom,scm-msm8976"
 * "qcom,scm-msm8994"
 * "qcom,scm-msm8996"
 * "qcom,scm-msm8998"
 * "qcom,scm-qcs404"
 * "qcom,scm-sc7180"
 * "qcom,scm-sc7280"
 * "qcom,scm-sm6125"
 * "qcom,scm-sdm845"
 * "qcom,scm-sdx55"
 * "qcom,scm-sdx65"
 * "qcom,scm-sm6350"
 * "qcom,scm-sm8150"
 * "qcom,scm-sm8250"
 * "qcom,scm-sm8350"
 * "qcom,scm-sm8450"
 and:
 * "qcom,scm"
- clocks: Specifies clocks needed by the SCM interface, if any:
 * core clock required for "qcom,scm-apq8064", "qcom,scm-msm8660" and
   "qcom,scm-msm8960"
 * core, iface and bus clocks required for "qcom,scm-apq8084",
   "qcom,scm-msm8916", "qcom,scm-msm8953", "qcom,scm-msm8974" and "qcom,scm-msm8976"
- clock-names: Must contain "core" for the core clock, "iface" for the interface
  clock and "bus" for the bus clock per the requirements of the compatible.
- qcom,dload-mode: phandle to the TCSR hardware block and offset of the
		   download mode control register (optional)
- interconnects: Specifies the bandwidth requirements of the SCM interface (optional)

Example for MSM8916:

	firmware {
		scm {
			compatible = "qcom,msm8916", "qcom,scm";
			clocks = <&gcc GCC_CRYPTO_CLK> ,
				 <&gcc GCC_CRYPTO_AXI_CLK>,
				 <&gcc GCC_CRYPTO_AHB_CLK>;
			clock-names = "core", "bus", "iface";
		};
	};
+147 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/firmware/qcom,scm.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: QCOM Secure Channel Manager (SCM)

description: |
  Qualcomm processors include an interface to communicate to the secure firmware.
  This interface allows for clients to request different types of actions.
  These can include CPU power up/down, HDCP requests, loading of firmware,
  and other assorted actions.

maintainers:
  - Bjorn Andersson <bjorn.andersson@linaro.org>
  - Robert Marko <robimarko@gmail.com>
  - Guru Das Srinagesh <quic_gurus@quicinc.com>

properties:
  compatible:
    items:
      - enum:
          - qcom,scm-apq8064
          - qcom,scm-apq8084
          - qcom,scm-ipq4019
          - qcom,scm-ipq6018
          - qcom,scm-ipq806x
          - qcom,scm-ipq8074
          - qcom,scm-mdm9607
          - qcom,scm-msm8226
          - qcom,scm-msm8660
          - qcom,scm-msm8916
          - qcom,scm-msm8953
          - qcom,scm-msm8960
          - qcom,scm-msm8974
          - qcom,scm-msm8976
          - qcom,scm-msm8994
          - qcom,scm-msm8996
          - qcom,scm-msm8998
          - qcom,scm-sc7180
          - qcom,scm-sc7280
          - qcom,scm-sc8280xp
          - qcom,scm-sdm845
          - qcom,scm-sdx55
          - qcom,scm-sdx65
          - qcom,scm-sm6125
          - qcom,scm-sm6350
          - qcom,scm-sm8150
          - qcom,scm-sm8250
          - qcom,scm-sm8350
          - qcom,scm-sm8450
          - qcom,scm-qcs404
      - const: qcom,scm

  clocks:
    minItems: 1
    maxItems: 3

  clock-names:
    minItems: 1
    maxItems: 3

  interconnects:
    maxItems: 1

  interconnect-names:
    maxItems: 1

  '#reset-cells':
    const: 1

  qcom,dload-mode:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      - items:
          - description: phandle to TCSR hardware block
          - description: offset of the download mode control register
    description: TCSR hardware block

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,scm-apq8064
              - qcom,scm-msm8660
              - qcom,scm-msm8960
    then:
      properties:
        clock-names:
          items:
            - const: core

        clocks:
          maxItems: 1

      required:
        - clocks
        - clock-names

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,scm-apq8084
              - qcom,scm-mdm9607
              - qcom,scm-msm8916
              - qcom,scm-msm8953
              - qcom,scm-msm8974
              - qcom,scm-msm8976
    then:
      properties:
        clock-names:
          items:
            - const: core
            - const: bus
            - const: iface

        clocks:
          minItems: 3
          maxItems: 3

      required:
        - clocks
        - clock-names

required:
  - compatible

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/qcom,gcc-msm8916.h>

    firmware {
        scm {
            compatible = "qcom,scm-msm8916", "qcom,scm";
            clocks = <&gcc GCC_CRYPTO_CLK>,
                     <&gcc GCC_CRYPTO_AXI_CLK>,
                     <&gcc GCC_CRYPTO_AHB_CLK>;
            clock-names = "core", "bus", "iface";
        };
    };