arm64: dts: qcom: sm8550: add TRNG node
[linux-modified.git] / Documentation / devicetree / bindings / net / can / fsl,flexcan.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/net/can/fsl,flexcan.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title:
8   Flexcan CAN controller on Freescale's ARM and PowerPC system-on-a-chip (SOC).
9
10 maintainers:
11   - Marc Kleine-Budde <mkl@pengutronix.de>
12
13 allOf:
14   - $ref: can-controller.yaml#
15
16 properties:
17   compatible:
18     oneOf:
19       - enum:
20           - fsl,imx93-flexcan
21           - fsl,imx8qm-flexcan
22           - fsl,imx8mp-flexcan
23           - fsl,imx6q-flexcan
24           - fsl,imx28-flexcan
25           - fsl,imx25-flexcan
26           - fsl,p1010-flexcan
27           - fsl,vf610-flexcan
28           - fsl,ls1021ar2-flexcan
29           - fsl,lx2160ar1-flexcan
30       - items:
31           - enum:
32               - fsl,imx53-flexcan
33               - fsl,imx35-flexcan
34           - const: fsl,imx25-flexcan
35       - items:
36           - enum:
37               - fsl,imx7d-flexcan
38               - fsl,imx6ul-flexcan
39               - fsl,imx6sx-flexcan
40           - const: fsl,imx6q-flexcan
41       - items:
42           - enum:
43               - fsl,ls1028ar1-flexcan
44           - const: fsl,lx2160ar1-flexcan
45
46   reg:
47     maxItems: 1
48
49   interrupts:
50     maxItems: 1
51
52   clocks:
53     maxItems: 2
54
55   clock-names:
56     items:
57       - const: ipg
58       - const: per
59
60   clock-frequency:
61     description: |
62       The oscillator frequency driving the flexcan device, filled in by the
63       boot loader. This property should only be used the used operating system
64       doesn't support the clocks and clock-names property.
65
66   power-domains:
67     maxItems: 1
68
69   xceiver-supply:
70     description: Regulator that powers the CAN transceiver.
71
72   big-endian:
73     $ref: /schemas/types.yaml#/definitions/flag
74     description: |
75       This means the registers of FlexCAN controller are big endian. This is
76       optional property.i.e. if this property is not present in device tree
77       node then controller is assumed to be little endian. If this property is
78       present then controller is assumed to be big endian.
79
80   fsl,stop-mode:
81     description: |
82       Register bits of stop mode control.
83
84       The format should be as follows:
85       <gpr req_gpr req_bit>
86       gpr is the phandle to general purpose register node.
87       req_gpr is the gpr register offset of CAN stop request.
88       req_bit is the bit offset of CAN stop request.
89     $ref: /schemas/types.yaml#/definitions/phandle-array
90     items:
91       - items:
92           - description: The 'gpr' is the phandle to general purpose register node.
93           - description: The 'req_gpr' is the gpr register offset of CAN stop request.
94             maximum: 0xff
95           - description: The 'req_bit' is the bit offset of CAN stop request.
96             maximum: 0x1f
97
98   fsl,clk-source:
99     description: |
100       Select the clock source to the CAN Protocol Engine (PE). It's SoC
101       implementation dependent. Refer to RM for detailed definition. If this
102       property is not set in device tree node then driver selects clock source 1
103       by default.
104       0: clock source 0 (oscillator clock)
105       1: clock source 1 (peripheral clock)
106     $ref: /schemas/types.yaml#/definitions/uint8
107     default: 1
108     minimum: 0
109     maximum: 1
110
111   wakeup-source:
112     $ref: /schemas/types.yaml#/definitions/flag
113     description:
114       Enable CAN remote wakeup.
115
116   fsl,scu-index:
117     description: |
118       The scu index of CAN instance.
119       For SoCs with SCU support, need setup stop mode via SCU firmware, so this
120       property can help indicate a resource. It supports up to 3 CAN instances
121       now.
122     $ref: /schemas/types.yaml#/definitions/uint8
123     minimum: 0
124     maximum: 2
125
126   termination-gpios: true
127   termination-ohms: true
128
129 required:
130   - compatible
131   - reg
132   - interrupts
133
134 additionalProperties: false
135
136 examples:
137   - |
138     can@1c000 {
139         compatible = "fsl,p1010-flexcan";
140         reg = <0x1c000 0x1000>;
141         interrupts = <48 0x2>;
142         interrupt-parent = <&mpic>;
143         clock-frequency = <200000000>;
144         fsl,clk-source = /bits/ 8 <0>;
145     };
146   - |
147     #include <dt-bindings/interrupt-controller/irq.h>
148
149     can@2090000 {
150         compatible = "fsl,imx6q-flexcan";
151         reg = <0x02090000 0x4000>;
152         interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>;
153         clocks = <&clks 1>, <&clks 2>;
154         clock-names = "ipg", "per";
155         fsl,stop-mode = <&gpr 0x34 28>;
156         fsl,scu-index = /bits/ 8 <1>;
157     };
158   - |
159     #include <dt-bindings/interrupt-controller/irq.h>
160     #include <dt-bindings/gpio/gpio.h>
161
162     can@2090000 {
163         compatible = "fsl,imx6q-flexcan";
164         reg = <0x02090000 0x4000>;
165         interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>;
166         clocks = <&clks 1>, <&clks 2>;
167         clock-names = "ipg", "per";
168         fsl,stop-mode = <&gpr 0x34 28>;
169         termination-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
170         termination-ohms = <120>;
171     };