162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/net/can/fsl,flexcan.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle:
862306a36Sopenharmony_ci  Flexcan CAN controller on Freescale's ARM and PowerPC system-on-a-chip (SOC).
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cimaintainers:
1162306a36Sopenharmony_ci  - Marc Kleine-Budde <mkl@pengutronix.de>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciallOf:
1462306a36Sopenharmony_ci  - $ref: can-controller.yaml#
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciproperties:
1762306a36Sopenharmony_ci  compatible:
1862306a36Sopenharmony_ci    oneOf:
1962306a36Sopenharmony_ci      - enum:
2062306a36Sopenharmony_ci          - fsl,imx93-flexcan
2162306a36Sopenharmony_ci          - fsl,imx8qm-flexcan
2262306a36Sopenharmony_ci          - fsl,imx8mp-flexcan
2362306a36Sopenharmony_ci          - fsl,imx6q-flexcan
2462306a36Sopenharmony_ci          - fsl,imx28-flexcan
2562306a36Sopenharmony_ci          - fsl,imx25-flexcan
2662306a36Sopenharmony_ci          - fsl,p1010-flexcan
2762306a36Sopenharmony_ci          - fsl,vf610-flexcan
2862306a36Sopenharmony_ci          - fsl,ls1021ar2-flexcan
2962306a36Sopenharmony_ci          - fsl,lx2160ar1-flexcan
3062306a36Sopenharmony_ci      - items:
3162306a36Sopenharmony_ci          - enum:
3262306a36Sopenharmony_ci              - fsl,imx53-flexcan
3362306a36Sopenharmony_ci              - fsl,imx35-flexcan
3462306a36Sopenharmony_ci          - const: fsl,imx25-flexcan
3562306a36Sopenharmony_ci      - items:
3662306a36Sopenharmony_ci          - enum:
3762306a36Sopenharmony_ci              - fsl,imx7d-flexcan
3862306a36Sopenharmony_ci              - fsl,imx6ul-flexcan
3962306a36Sopenharmony_ci              - fsl,imx6sx-flexcan
4062306a36Sopenharmony_ci          - const: fsl,imx6q-flexcan
4162306a36Sopenharmony_ci      - items:
4262306a36Sopenharmony_ci          - enum:
4362306a36Sopenharmony_ci              - fsl,ls1028ar1-flexcan
4462306a36Sopenharmony_ci          - const: fsl,lx2160ar1-flexcan
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  reg:
4762306a36Sopenharmony_ci    maxItems: 1
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  interrupts:
5062306a36Sopenharmony_ci    maxItems: 1
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  clocks:
5362306a36Sopenharmony_ci    maxItems: 2
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  clock-names:
5662306a36Sopenharmony_ci    items:
5762306a36Sopenharmony_ci      - const: ipg
5862306a36Sopenharmony_ci      - const: per
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci  clock-frequency:
6162306a36Sopenharmony_ci    description: |
6262306a36Sopenharmony_ci      The oscillator frequency driving the flexcan device, filled in by the
6362306a36Sopenharmony_ci      boot loader. This property should only be used the used operating system
6462306a36Sopenharmony_ci      doesn't support the clocks and clock-names property.
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci  power-domains:
6762306a36Sopenharmony_ci    maxItems: 1
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci  xceiver-supply:
7062306a36Sopenharmony_ci    description: Regulator that powers the CAN transceiver.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci  big-endian:
7362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
7462306a36Sopenharmony_ci    description: |
7562306a36Sopenharmony_ci      This means the registers of FlexCAN controller are big endian. This is
7662306a36Sopenharmony_ci      optional property.i.e. if this property is not present in device tree
7762306a36Sopenharmony_ci      node then controller is assumed to be little endian. If this property is
7862306a36Sopenharmony_ci      present then controller is assumed to be big endian.
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci  fsl,stop-mode:
8162306a36Sopenharmony_ci    description: |
8262306a36Sopenharmony_ci      Register bits of stop mode control.
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci      The format should be as follows:
8562306a36Sopenharmony_ci      <gpr req_gpr req_bit>
8662306a36Sopenharmony_ci      gpr is the phandle to general purpose register node.
8762306a36Sopenharmony_ci      req_gpr is the gpr register offset of CAN stop request.
8862306a36Sopenharmony_ci      req_bit is the bit offset of CAN stop request.
8962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
9062306a36Sopenharmony_ci    items:
9162306a36Sopenharmony_ci      - items:
9262306a36Sopenharmony_ci          - description: The 'gpr' is the phandle to general purpose register node.
9362306a36Sopenharmony_ci          - description: The 'req_gpr' is the gpr register offset of CAN stop request.
9462306a36Sopenharmony_ci            maximum: 0xff
9562306a36Sopenharmony_ci          - description: The 'req_bit' is the bit offset of CAN stop request.
9662306a36Sopenharmony_ci            maximum: 0x1f
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci  fsl,clk-source:
9962306a36Sopenharmony_ci    description: |
10062306a36Sopenharmony_ci      Select the clock source to the CAN Protocol Engine (PE). It's SoC
10162306a36Sopenharmony_ci      implementation dependent. Refer to RM for detailed definition. If this
10262306a36Sopenharmony_ci      property is not set in device tree node then driver selects clock source 1
10362306a36Sopenharmony_ci      by default.
10462306a36Sopenharmony_ci      0: clock source 0 (oscillator clock)
10562306a36Sopenharmony_ci      1: clock source 1 (peripheral clock)
10662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint8
10762306a36Sopenharmony_ci    default: 1
10862306a36Sopenharmony_ci    minimum: 0
10962306a36Sopenharmony_ci    maximum: 1
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci  wakeup-source:
11262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
11362306a36Sopenharmony_ci    description:
11462306a36Sopenharmony_ci      Enable CAN remote wakeup.
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci  fsl,scu-index:
11762306a36Sopenharmony_ci    description: |
11862306a36Sopenharmony_ci      The scu index of CAN instance.
11962306a36Sopenharmony_ci      For SoCs with SCU support, need setup stop mode via SCU firmware, so this
12062306a36Sopenharmony_ci      property can help indicate a resource. It supports up to 3 CAN instances
12162306a36Sopenharmony_ci      now.
12262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint8
12362306a36Sopenharmony_ci    minimum: 0
12462306a36Sopenharmony_ci    maximum: 2
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci  termination-gpios: true
12762306a36Sopenharmony_ci  termination-ohms: true
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_cirequired:
13062306a36Sopenharmony_ci  - compatible
13162306a36Sopenharmony_ci  - reg
13262306a36Sopenharmony_ci  - interrupts
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ciadditionalProperties: false
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ciexamples:
13762306a36Sopenharmony_ci  - |
13862306a36Sopenharmony_ci    can@1c000 {
13962306a36Sopenharmony_ci        compatible = "fsl,p1010-flexcan";
14062306a36Sopenharmony_ci        reg = <0x1c000 0x1000>;
14162306a36Sopenharmony_ci        interrupts = <48 0x2>;
14262306a36Sopenharmony_ci        interrupt-parent = <&mpic>;
14362306a36Sopenharmony_ci        clock-frequency = <200000000>;
14462306a36Sopenharmony_ci        fsl,clk-source = /bits/ 8 <0>;
14562306a36Sopenharmony_ci    };
14662306a36Sopenharmony_ci  - |
14762306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci    can@2090000 {
15062306a36Sopenharmony_ci        compatible = "fsl,imx6q-flexcan";
15162306a36Sopenharmony_ci        reg = <0x02090000 0x4000>;
15262306a36Sopenharmony_ci        interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>;
15362306a36Sopenharmony_ci        clocks = <&clks 1>, <&clks 2>;
15462306a36Sopenharmony_ci        clock-names = "ipg", "per";
15562306a36Sopenharmony_ci        fsl,stop-mode = <&gpr 0x34 28>;
15662306a36Sopenharmony_ci        fsl,scu-index = /bits/ 8 <1>;
15762306a36Sopenharmony_ci    };
15862306a36Sopenharmony_ci  - |
15962306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
16062306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci    can@2090000 {
16362306a36Sopenharmony_ci        compatible = "fsl,imx6q-flexcan";
16462306a36Sopenharmony_ci        reg = <0x02090000 0x4000>;
16562306a36Sopenharmony_ci        interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>;
16662306a36Sopenharmony_ci        clocks = <&clks 1>, <&clks 2>;
16762306a36Sopenharmony_ci        clock-names = "ipg", "per";
16862306a36Sopenharmony_ci        fsl,stop-mode = <&gpr 0x34 28>;
16962306a36Sopenharmony_ci        termination-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
17062306a36Sopenharmony_ci        termination-ohms = <120>;
17162306a36Sopenharmony_ci    };
172