xref: /linux/Documentation/devicetree/bindings/net/can/fsl,flexcan.yaml (revision 1a9239bb4253f9076b5b4b2a1a4e8d7defd77a95)
1e5ab9aa7SOleksij Rempel# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2e5ab9aa7SOleksij Rempel%YAML 1.2
3e5ab9aa7SOleksij Rempel---
4e5ab9aa7SOleksij Rempel$id: http://devicetree.org/schemas/net/can/fsl,flexcan.yaml#
5e5ab9aa7SOleksij Rempel$schema: http://devicetree.org/meta-schemas/core.yaml#
6e5ab9aa7SOleksij Rempel
7e5ab9aa7SOleksij Rempeltitle:
8e5ab9aa7SOleksij Rempel  Flexcan CAN controller on Freescale's ARM and PowerPC system-on-a-chip (SOC).
9e5ab9aa7SOleksij Rempel
10e5ab9aa7SOleksij Rempelmaintainers:
11e5ab9aa7SOleksij Rempel  - Marc Kleine-Budde <mkl@pengutronix.de>
12e5ab9aa7SOleksij Rempel
13e5ab9aa7SOleksij Rempelproperties:
14e5ab9aa7SOleksij Rempel  compatible:
15e5ab9aa7SOleksij Rempel    oneOf:
16e5ab9aa7SOleksij Rempel      - enum:
173eea16baSHaibo Chen          - fsl,imx95-flexcan
18a21cee59SHaibo Chen          - fsl,imx93-flexcan
19e5ab9aa7SOleksij Rempel          - fsl,imx8qm-flexcan
20e5ab9aa7SOleksij Rempel          - fsl,imx8mp-flexcan
21e5ab9aa7SOleksij Rempel          - fsl,imx6q-flexcan
22e5ab9aa7SOleksij Rempel          - fsl,imx28-flexcan
23e5ab9aa7SOleksij Rempel          - fsl,imx25-flexcan
24e5ab9aa7SOleksij Rempel          - fsl,p1010-flexcan
25e5ab9aa7SOleksij Rempel          - fsl,vf610-flexcan
26e5ab9aa7SOleksij Rempel          - fsl,ls1021ar2-flexcan
27e5ab9aa7SOleksij Rempel          - fsl,lx2160ar1-flexcan
2851723790SCiprian Marian Costea          - nxp,s32g2-flexcan
29e5ab9aa7SOleksij Rempel      - items:
30e5ab9aa7SOleksij Rempel          - enum:
313bbb73f8SMarc Kleine-Budde              - fsl,imx53-flexcan
323bbb73f8SMarc Kleine-Budde              - fsl,imx35-flexcan
333bbb73f8SMarc Kleine-Budde          - const: fsl,imx25-flexcan
343bbb73f8SMarc Kleine-Budde      - items:
353bbb73f8SMarc Kleine-Budde          - enum:
36e5ab9aa7SOleksij Rempel              - fsl,imx7d-flexcan
37e5ab9aa7SOleksij Rempel              - fsl,imx6ul-flexcan
38e5ab9aa7SOleksij Rempel              - fsl,imx6sx-flexcan
39e5ab9aa7SOleksij Rempel          - const: fsl,imx6q-flexcan
40e5ab9aa7SOleksij Rempel      - items:
41e5ab9aa7SOleksij Rempel          - enum:
42e5ab9aa7SOleksij Rempel              - fsl,ls1028ar1-flexcan
43e5ab9aa7SOleksij Rempel          - const: fsl,lx2160ar1-flexcan
4451723790SCiprian Marian Costea      - items:
4551723790SCiprian Marian Costea          - enum:
4651723790SCiprian Marian Costea              - nxp,s32g3-flexcan
4751723790SCiprian Marian Costea          - const: nxp,s32g2-flexcan
48*958ee3d7SFrank Li      - items:
49*958ee3d7SFrank Li          - enum:
50*958ee3d7SFrank Li              - fsl,imx94-flexcan
51*958ee3d7SFrank Li          - const: fsl,imx95-flexcan
52e5ab9aa7SOleksij Rempel
53e5ab9aa7SOleksij Rempel  reg:
54e5ab9aa7SOleksij Rempel    maxItems: 1
55e5ab9aa7SOleksij Rempel
56e5ab9aa7SOleksij Rempel  interrupts:
5751723790SCiprian Marian Costea    minItems: 1
5851723790SCiprian Marian Costea    maxItems: 4
5951723790SCiprian Marian Costea
6051723790SCiprian Marian Costea  interrupt-names:
6151723790SCiprian Marian Costea    minItems: 1
6251723790SCiprian Marian Costea    maxItems: 4
63e5ab9aa7SOleksij Rempel
64e5ab9aa7SOleksij Rempel  clocks:
65e5ab9aa7SOleksij Rempel    maxItems: 2
66e5ab9aa7SOleksij Rempel
67e5ab9aa7SOleksij Rempel  clock-names:
68e5ab9aa7SOleksij Rempel    items:
69e5ab9aa7SOleksij Rempel      - const: ipg
70e5ab9aa7SOleksij Rempel      - const: per
71e5ab9aa7SOleksij Rempel
72e5ab9aa7SOleksij Rempel  clock-frequency:
73e5ab9aa7SOleksij Rempel    description: |
74e5ab9aa7SOleksij Rempel      The oscillator frequency driving the flexcan device, filled in by the
75e5ab9aa7SOleksij Rempel      boot loader. This property should only be used the used operating system
76e5ab9aa7SOleksij Rempel      doesn't support the clocks and clock-names property.
77e5ab9aa7SOleksij Rempel
78066b41a5SPeng Fan  power-domains:
79066b41a5SPeng Fan    maxItems: 1
80066b41a5SPeng Fan
81e5ab9aa7SOleksij Rempel  xceiver-supply:
82e5ab9aa7SOleksij Rempel    description: Regulator that powers the CAN transceiver.
83e5ab9aa7SOleksij Rempel
846263bad8SDimitri Fedrau  phys:
856263bad8SDimitri Fedrau    maxItems: 1
866263bad8SDimitri Fedrau
87e5ab9aa7SOleksij Rempel  big-endian:
88e5ab9aa7SOleksij Rempel    $ref: /schemas/types.yaml#/definitions/flag
89e5ab9aa7SOleksij Rempel    description: |
90e5ab9aa7SOleksij Rempel      This means the registers of FlexCAN controller are big endian. This is
91e5ab9aa7SOleksij Rempel      optional property.i.e. if this property is not present in device tree
92e5ab9aa7SOleksij Rempel      node then controller is assumed to be little endian. If this property is
93e5ab9aa7SOleksij Rempel      present then controller is assumed to be big endian.
94e5ab9aa7SOleksij Rempel
95ef5e8d34SFrank Li  can-transceiver:
96ef5e8d34SFrank Li    $ref: can-transceiver.yaml#
97ef5e8d34SFrank Li    unevaluatedProperties: false
98ef5e8d34SFrank Li
99e5ab9aa7SOleksij Rempel  fsl,stop-mode:
100e5ab9aa7SOleksij Rempel    description: |
101e5ab9aa7SOleksij Rempel      Register bits of stop mode control.
102e5ab9aa7SOleksij Rempel
103e5ab9aa7SOleksij Rempel      The format should be as follows:
104e5ab9aa7SOleksij Rempel      <gpr req_gpr req_bit>
105e5ab9aa7SOleksij Rempel      gpr is the phandle to general purpose register node.
106e5ab9aa7SOleksij Rempel      req_gpr is the gpr register offset of CAN stop request.
107e5ab9aa7SOleksij Rempel      req_bit is the bit offset of CAN stop request.
108e5ab9aa7SOleksij Rempel    $ref: /schemas/types.yaml#/definitions/phandle-array
109e5ab9aa7SOleksij Rempel    items:
11039bd2b6aSRob Herring      - items:
111e5ab9aa7SOleksij Rempel          - description: The 'gpr' is the phandle to general purpose register node.
112e5ab9aa7SOleksij Rempel          - description: The 'req_gpr' is the gpr register offset of CAN stop request.
113e5ab9aa7SOleksij Rempel            maximum: 0xff
114e5ab9aa7SOleksij Rempel          - description: The 'req_bit' is the bit offset of CAN stop request.
115e5ab9aa7SOleksij Rempel            maximum: 0x1f
116e5ab9aa7SOleksij Rempel
117e5ab9aa7SOleksij Rempel  fsl,clk-source:
118e5ab9aa7SOleksij Rempel    description: |
119e5ab9aa7SOleksij Rempel      Select the clock source to the CAN Protocol Engine (PE). It's SoC
120e5ab9aa7SOleksij Rempel      implementation dependent. Refer to RM for detailed definition. If this
121e5ab9aa7SOleksij Rempel      property is not set in device tree node then driver selects clock source 1
122e5ab9aa7SOleksij Rempel      by default.
123e5ab9aa7SOleksij Rempel      0: clock source 0 (oscillator clock)
124e5ab9aa7SOleksij Rempel      1: clock source 1 (peripheral clock)
12507b6b3e2SJoakim Zhang    $ref: /schemas/types.yaml#/definitions/uint8
126e5ab9aa7SOleksij Rempel    default: 1
127e5ab9aa7SOleksij Rempel    minimum: 0
128e5ab9aa7SOleksij Rempel    maximum: 1
129e5ab9aa7SOleksij Rempel
130e5ab9aa7SOleksij Rempel  wakeup-source:
131e5ab9aa7SOleksij Rempel    $ref: /schemas/types.yaml#/definitions/flag
132e5ab9aa7SOleksij Rempel    description:
133e5ab9aa7SOleksij Rempel      Enable CAN remote wakeup.
134e5ab9aa7SOleksij Rempel
1358b76621bSJoakim Zhang  fsl,scu-index:
1368b76621bSJoakim Zhang    description: |
1378b76621bSJoakim Zhang      The scu index of CAN instance.
1388b76621bSJoakim Zhang      For SoCs with SCU support, need setup stop mode via SCU firmware, so this
1398b76621bSJoakim Zhang      property can help indicate a resource. It supports up to 3 CAN instances
1408b76621bSJoakim Zhang      now.
1418b76621bSJoakim Zhang    $ref: /schemas/types.yaml#/definitions/uint8
1428b76621bSJoakim Zhang    minimum: 0
1438b76621bSJoakim Zhang    maximum: 2
1448b76621bSJoakim Zhang
145fe7edf24SOleksij Rempel  termination-gpios: true
146fe7edf24SOleksij Rempel  termination-ohms: true
147fe7edf24SOleksij Rempel
148e5ab9aa7SOleksij Rempelrequired:
149e5ab9aa7SOleksij Rempel  - compatible
150e5ab9aa7SOleksij Rempel  - reg
151e5ab9aa7SOleksij Rempel  - interrupts
152e5ab9aa7SOleksij Rempel
15351723790SCiprian Marian CosteaallOf:
15451723790SCiprian Marian Costea  - $ref: can-controller.yaml#
15551723790SCiprian Marian Costea  - if:
15651723790SCiprian Marian Costea      properties:
15751723790SCiprian Marian Costea        compatible:
15851723790SCiprian Marian Costea          contains:
15951723790SCiprian Marian Costea            const: nxp,s32g2-flexcan
16051723790SCiprian Marian Costea    then:
16151723790SCiprian Marian Costea      properties:
16251723790SCiprian Marian Costea        interrupts:
16351723790SCiprian Marian Costea          items:
16451723790SCiprian Marian Costea            - description: Message Buffer interrupt for mailboxes 0-7 and Enhanced RX FIFO
16551723790SCiprian Marian Costea            - description: Device state change
16651723790SCiprian Marian Costea            - description: Bus Error detection
16751723790SCiprian Marian Costea            - description: Message Buffer interrupt for mailboxes 8-127
16851723790SCiprian Marian Costea        interrupt-names:
16951723790SCiprian Marian Costea          items:
17051723790SCiprian Marian Costea            - const: mb-0
17151723790SCiprian Marian Costea            - const: state
17251723790SCiprian Marian Costea            - const: berr
17351723790SCiprian Marian Costea            - const: mb-1
17451723790SCiprian Marian Costea      required:
17551723790SCiprian Marian Costea        - interrupt-names
17651723790SCiprian Marian Costea    else:
17751723790SCiprian Marian Costea      properties:
17851723790SCiprian Marian Costea        interrupts:
17951723790SCiprian Marian Costea          maxItems: 1
18051723790SCiprian Marian Costea        interrupt-names: false
1816263bad8SDimitri Fedrau  - if:
1826263bad8SDimitri Fedrau      required:
1836263bad8SDimitri Fedrau        - xceiver-supply
1846263bad8SDimitri Fedrau    then:
1856263bad8SDimitri Fedrau      properties:
1866263bad8SDimitri Fedrau        phys: false
18751723790SCiprian Marian Costea
188e5ab9aa7SOleksij RempeladditionalProperties: false
189e5ab9aa7SOleksij Rempel
190e5ab9aa7SOleksij Rempelexamples:
191e5ab9aa7SOleksij Rempel  - |
192e5ab9aa7SOleksij Rempel    can@1c000 {
193e5ab9aa7SOleksij Rempel        compatible = "fsl,p1010-flexcan";
194e5ab9aa7SOleksij Rempel        reg = <0x1c000 0x1000>;
195e5ab9aa7SOleksij Rempel        interrupts = <48 0x2>;
196e5ab9aa7SOleksij Rempel        interrupt-parent = <&mpic>;
197e5ab9aa7SOleksij Rempel        clock-frequency = <200000000>;
19807b6b3e2SJoakim Zhang        fsl,clk-source = /bits/ 8 <0>;
199e5ab9aa7SOleksij Rempel    };
200e5ab9aa7SOleksij Rempel  - |
201e5ab9aa7SOleksij Rempel    #include <dt-bindings/interrupt-controller/irq.h>
202e5ab9aa7SOleksij Rempel
203e5ab9aa7SOleksij Rempel    can@2090000 {
204e5ab9aa7SOleksij Rempel        compatible = "fsl,imx6q-flexcan";
205e5ab9aa7SOleksij Rempel        reg = <0x02090000 0x4000>;
206e5ab9aa7SOleksij Rempel        interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>;
207e5ab9aa7SOleksij Rempel        clocks = <&clks 1>, <&clks 2>;
208e5ab9aa7SOleksij Rempel        clock-names = "ipg", "per";
209e5ab9aa7SOleksij Rempel        fsl,stop-mode = <&gpr 0x34 28>;
2108b76621bSJoakim Zhang        fsl,scu-index = /bits/ 8 <1>;
211e5ab9aa7SOleksij Rempel    };
212fe7edf24SOleksij Rempel  - |
213fe7edf24SOleksij Rempel    #include <dt-bindings/interrupt-controller/irq.h>
214fe7edf24SOleksij Rempel    #include <dt-bindings/gpio/gpio.h>
215fe7edf24SOleksij Rempel
216fe7edf24SOleksij Rempel    can@2090000 {
217fe7edf24SOleksij Rempel        compatible = "fsl,imx6q-flexcan";
218fe7edf24SOleksij Rempel        reg = <0x02090000 0x4000>;
219fe7edf24SOleksij Rempel        interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>;
220fe7edf24SOleksij Rempel        clocks = <&clks 1>, <&clks 2>;
221fe7edf24SOleksij Rempel        clock-names = "ipg", "per";
222fe7edf24SOleksij Rempel        fsl,stop-mode = <&gpr 0x34 28>;
223fe7edf24SOleksij Rempel        termination-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
224fe7edf24SOleksij Rempel        termination-ohms = <120>;
225fe7edf24SOleksij Rempel    };
226