1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/soc/qcom/qcom,smd.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm Shared Memory Driver 8 9maintainers: 10 - Andy Gross <agross@kernel.org> 11 - Bjorn Andersson <bjorn.andersson@linaro.org> 12 - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> 13 14description: 15 The Qualcomm Shared Memory Driver is a FIFO based communication channel for 16 sending data between the various subsystems in Qualcomm platforms. 17 18properties: 19 compatible: 20 const: qcom,smd 21 22patternProperties: 23 "^.*-edge|rpm$": 24 type: object 25 description: 26 Each subnode of the SMD node represents a remote subsystem or a remote 27 processor of some sort - or in SMD language an "edge". The name of the 28 edges are not important. 29 30 properties: 31 interrupts: 32 maxItems: 1 33 34 label: 35 $ref: /schemas/types.yaml#/definitions/string 36 description: 37 Name of the edge, used for debugging and identification purposes. The 38 node name will be used if this is not present. 39 40 mboxes: 41 maxItems: 1 42 description: 43 Reference to the mailbox representing the outgoing doorbell in APCS for 44 this client. 45 46 qcom,ipc: 47 $ref: /schemas/types.yaml#/definitions/phandle-array 48 items: 49 - items: 50 - description: phandle to a syscon node representing the APCS registers 51 - description: u32 representing offset to the register within the syscon 52 - description: u32 representing the ipc bit within the register 53 description: 54 Three entries specifying the outgoing ipc bit used for signaling the 55 remote processor. 56 57 qcom,smd-edge: 58 $ref: /schemas/types.yaml#/definitions/uint32 59 description: 60 The identifier of the remote processor in the smd channel allocation 61 table. 62 63 qcom,remote-pid: 64 $ref: /schemas/types.yaml#/definitions/uint32 65 description: 66 The identifier for the remote processor as known by the rest of the 67 system. 68 69 rpm-requests: 70 type: object 71 description: 72 In turn, subnodes of the "edges" represent devices tied to SMD 73 channels on that "edge". The names of the devices are not 74 important. The properties of these nodes are defined by the 75 individual bindings for the SMD devices. 76 77 properties: 78 qcom,smd-channels: 79 $ref: /schemas/types.yaml#/definitions/string-array 80 minItems: 1 81 maxItems: 32 82 description: 83 A list of channels tied to this device, used for matching the 84 device to channels. 85 86 required: 87 - compatible 88 - qcom,smd-channels 89 90 additionalProperties: true 91 92 required: 93 - interrupts 94 - qcom,smd-edge 95 96 oneOf: 97 - required: 98 - mboxes 99 - required: 100 - qcom,ipc 101 102 additionalProperties: false 103 104required: 105 - compatible 106 107additionalProperties: false 108 109examples: 110 # The following example represents a smd node, with one edge representing the 111 # "rpm" subsystem. For the "rpm" subsystem we have a device tied to the 112 # "rpm_request" channel. 113 - | 114 #include <dt-bindings/interrupt-controller/arm-gic.h> 115 116 shared-memory { 117 compatible = "qcom,smd"; 118 119 rpm { 120 interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>; 121 qcom,ipc = <&apcs 8 0>; 122 qcom,smd-edge = <15>; 123 124 rpm-requests { 125 compatible = "qcom,rpm-msm8974"; 126 qcom,smd-channels = "rpm_requests"; 127 128 clock-controller { 129 compatible = "qcom,rpmcc-msm8974", "qcom,rpmcc"; 130 #clock-cells = <1>; 131 }; 132 133 }; 134 }; 135 }; 136