Commit ed18a9b1 authored by Abel Vesa's avatar Abel Vesa Committed by Rob Herring
Browse files

dt-bindings: misc: fastrpc convert bindings to yaml



Convert Qualcomm FastRPC bindings to yaml format, so that we could validate
dt-entries correctly and any future additions can go into yaml format.

Use compute-cb@ subnodes instead of just cb@. Add qcom,glink-channels and
qcom,smd-channels missing properties to make sure dtbs_check doesn't fail
right off the bat. Correct the name of the parent node in the example from
smd-edge to glink-edge.

Since now the qcom,fastrpc bindings document is yaml, update the
reference to it in qcom,glink-edge and also use $ref.

Also update the MAINTAINERS file to point to the yaml version.

Co-developed-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Co-developed-by: default avatarDavid Heidelberg <david@ixit.cz>
Signed-off-by: default avatarDavid Heidelberg <david@ixit.cz>
Signed-off-by: default avatarAbel Vesa <abel.vesa@linaro.org>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20220907074301.3996021-1-abel.vesa@linaro.org


Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent d2153e4c
Loading
Loading
Loading
Loading
+0 −88
Original line number Diff line number Diff line
Qualcomm Technologies, Inc. FastRPC Driver

The FastRPC implements an IPC (Inter-Processor Communication)
mechanism that allows for clients to transparently make remote method
invocations across DSP and APPS boundaries. This enables developers
to offload tasks to the DSP and free up the application processor for
other tasks.

- compatible:
	Usage: required
	Value type: <stringlist>
	Definition: must be "qcom,fastrpc"

- label
	Usage: required
	Value type: <string>
	Definition: should specify the dsp domain name this fastrpc
	corresponds to. must be one of this: "adsp", "mdsp", "sdsp", "cdsp"

- qcom,non-secure-domain:
	Usage: required
	Value type: <boolean>
	Definition: Property to specify that dsp domain is non-secure.

- qcom,vmids:
	Usage: optional
	Value type: <u32 array>
	Definition: Virtual machine IDs for remote processor.

- #address-cells
	Usage: required
	Value type: <u32>
	Definition: Must be 1

- #size-cells
	Usage: required
	Value type: <u32>
	Definition: Must be 0

= COMPUTE BANKS
Each subnode of the Fastrpc represents compute context banks available
on the dsp.
- All Compute context banks MUST contain the following properties:

- compatible:
	Usage: required
	Value type: <stringlist>
	Definition: must be "qcom,fastrpc-compute-cb"

- reg
	Usage: required
	Value type: <u32>
	Definition: Context Bank ID.

- qcom,nsessions:
	Usage: Optional
	Value type: <u32>
	Defination: A value indicating how many sessions can share this
		    context bank. Defaults to 1 when this property
		    is not specified.

Example:

adsp-pil {
	compatible = "qcom,msm8996-adsp-pil";
	...
	smd-edge {
		label = "lpass";
		fastrpc {
			compatible = "qcom,fastrpc";
			qcom,smd-channels = "fastrpcsmd-apps-dsp";
			label = "adsp";
			#address-cells = <1>;
			#size-cells = <0>;

			cb@1 {
				compatible = "qcom,fastrpc-compute-cb";
				reg = <1>;
			};

			cb@2 {
				compatible = "qcom,fastrpc-compute-cb";
				reg = <2>;
			};
			...
		};
	};
};
+124 −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/misc/qcom,fastrpc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm FastRPC Driver

maintainers:
  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

description: |
  The FastRPC implements an IPC (Inter-Processor Communication)
  mechanism that allows for clients to transparently make remote method
  invocations across DSP and APPS boundaries. This enables developers
  to offload tasks to the DSP and free up the application processor for
  other tasks.

properties:
  compatible:
    const: qcom,fastrpc

  label:
    enum:
      - adsp
      - mdsp
      - sdsp
      - cdsp

  qcom,glink-channels:
    description:
      A list of channels tied to this function, used for matching
      the function to a set of virtual channels.
    $ref: "/schemas/types.yaml#/definitions/string-array"
    maxItems: 1

  qcom,non-secure-domain:
    description:
      Used to mark the current domain as non-secure.
    type: boolean

  qcom,smd-channels:
    description:
      Channel name used for the RPM communication
    $ref: "/schemas/types.yaml#/definitions/string-array"
    maxItems: 1

  qcom,vmids:
    description:
      Virtual machine IDs for remote processor.
    $ref: "/schemas/types.yaml#/definitions/uint32-array"

  "#address-cells":
    const: 1

  "#size-cells":
    const: 0

patternProperties:
  "(compute-)?cb@[0-9]*$":
    type: object

    description: >
      Each subnode of the Fastrpc represents compute context banks available on the dsp.

    properties:
      compatible:
        const: qcom,fastrpc-compute-cb

      reg:
        maxItems: 1

      qcom,nsession:
        $ref: /schemas/types.yaml#/definitions/uint32
        default: 1
        description: >
          A value indicating how many sessions can share this context bank.

    required:
      - compatible
      - reg

    additionalProperties: false

required:
  - compatible
  - label
  - "#address-cells"
  - "#size-cells"

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/mailbox/qcom-ipcc.h>

    glink-edge {
        interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
                                     IPCC_MPROC_SIGNAL_GLINK_QMP
                                     IRQ_TYPE_EDGE_RISING>;
        mboxes = <&ipcc IPCC_CLIENT_LPASS
                        IPCC_MPROC_SIGNAL_GLINK_QMP>;
        label = "lpass";
        qcom,remote-pid = <2>;

        fastrpc {
            compatible = "qcom,fastrpc";
            label = "adsp";
            qcom,smd-channels = "fastrpcsmd-apps-dsp";
            #address-cells = <1>;
            #size-cells = <0>;

            compute-cb@1 {
                compatible = "qcom,fastrpc-compute-cb";
                reg = <1>;
            };

            compute-cb@2 {
                compatible = "qcom,fastrpc-compute-cb";
                reg = <2>;
            };
        };
    };
+2 −2
Original line number Diff line number Diff line
@@ -23,9 +23,9 @@ properties:
      Qualcomm APR/GPR (Asynchronous/Generic Packet Router)

  fastrpc:
    type: object
    $ref: /schemas/misc/qcom,fastrpc.yaml#
    description:
      See Documentation/devicetree/bindings/misc/qcom,fastrpc.txt
      Qualcomm FastRPC

  interrupts:
    maxItems: 1
+1 −1
Original line number Diff line number Diff line
@@ -16862,7 +16862,7 @@ M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
M:	Amol Maheshwari <amahesh@qti.qualcomm.com>
L:	linux-arm-msm@vger.kernel.org
S:	Maintained
F:	Documentation/devicetree/bindings/misc/qcom,fastrpc.txt
F:	Documentation/devicetree/bindings/misc/qcom,fastrpc.yaml
F:	drivers/misc/fastrpc.c
F:	include/uapi/misc/fastrpc.h