177 lines · yaml
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)2%YAML 1.23---4$id: http://devicetree.org/schemas/net/can/fsl,flexcan.yaml#5$schema: http://devicetree.org/meta-schemas/core.yaml#6 7title:8 Flexcan CAN controller on Freescale's ARM and PowerPC system-on-a-chip (SOC).9 10maintainers:11 - Marc Kleine-Budde <mkl@pengutronix.de>12 13allOf:14 - $ref: can-controller.yaml#15 16properties:17 compatible:18 oneOf:19 - enum:20 - fsl,imx95-flexcan21 - fsl,imx93-flexcan22 - fsl,imx8qm-flexcan23 - fsl,imx8mp-flexcan24 - fsl,imx6q-flexcan25 - fsl,imx28-flexcan26 - fsl,imx25-flexcan27 - fsl,p1010-flexcan28 - fsl,vf610-flexcan29 - fsl,ls1021ar2-flexcan30 - fsl,lx2160ar1-flexcan31 - items:32 - enum:33 - fsl,imx53-flexcan34 - fsl,imx35-flexcan35 - const: fsl,imx25-flexcan36 - items:37 - enum:38 - fsl,imx7d-flexcan39 - fsl,imx6ul-flexcan40 - fsl,imx6sx-flexcan41 - const: fsl,imx6q-flexcan42 - items:43 - enum:44 - fsl,ls1028ar1-flexcan45 - const: fsl,lx2160ar1-flexcan46 47 reg:48 maxItems: 149 50 interrupts:51 maxItems: 152 53 clocks:54 maxItems: 255 56 clock-names:57 items:58 - const: ipg59 - const: per60 61 clock-frequency:62 description: |63 The oscillator frequency driving the flexcan device, filled in by the64 boot loader. This property should only be used the used operating system65 doesn't support the clocks and clock-names property.66 67 power-domains:68 maxItems: 169 70 xceiver-supply:71 description: Regulator that powers the CAN transceiver.72 73 big-endian:74 $ref: /schemas/types.yaml#/definitions/flag75 description: |76 This means the registers of FlexCAN controller are big endian. This is77 optional property.i.e. if this property is not present in device tree78 node then controller is assumed to be little endian. If this property is79 present then controller is assumed to be big endian.80 81 can-transceiver:82 $ref: can-transceiver.yaml#83 unevaluatedProperties: false84 85 fsl,stop-mode:86 description: |87 Register bits of stop mode control.88 89 The format should be as follows:90 <gpr req_gpr req_bit>91 gpr is the phandle to general purpose register node.92 req_gpr is the gpr register offset of CAN stop request.93 req_bit is the bit offset of CAN stop request.94 $ref: /schemas/types.yaml#/definitions/phandle-array95 items:96 - items:97 - description: The 'gpr' is the phandle to general purpose register node.98 - description: The 'req_gpr' is the gpr register offset of CAN stop request.99 maximum: 0xff100 - description: The 'req_bit' is the bit offset of CAN stop request.101 maximum: 0x1f102 103 fsl,clk-source:104 description: |105 Select the clock source to the CAN Protocol Engine (PE). It's SoC106 implementation dependent. Refer to RM for detailed definition. If this107 property is not set in device tree node then driver selects clock source 1108 by default.109 0: clock source 0 (oscillator clock)110 1: clock source 1 (peripheral clock)111 $ref: /schemas/types.yaml#/definitions/uint8112 default: 1113 minimum: 0114 maximum: 1115 116 wakeup-source:117 $ref: /schemas/types.yaml#/definitions/flag118 description:119 Enable CAN remote wakeup.120 121 fsl,scu-index:122 description: |123 The scu index of CAN instance.124 For SoCs with SCU support, need setup stop mode via SCU firmware, so this125 property can help indicate a resource. It supports up to 3 CAN instances126 now.127 $ref: /schemas/types.yaml#/definitions/uint8128 minimum: 0129 maximum: 2130 131 termination-gpios: true132 termination-ohms: true133 134required:135 - compatible136 - reg137 - interrupts138 139additionalProperties: false140 141examples:142 - |143 can@1c000 {144 compatible = "fsl,p1010-flexcan";145 reg = <0x1c000 0x1000>;146 interrupts = <48 0x2>;147 interrupt-parent = <&mpic>;148 clock-frequency = <200000000>;149 fsl,clk-source = /bits/ 8 <0>;150 };151 - |152 #include <dt-bindings/interrupt-controller/irq.h>153 154 can@2090000 {155 compatible = "fsl,imx6q-flexcan";156 reg = <0x02090000 0x4000>;157 interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>;158 clocks = <&clks 1>, <&clks 2>;159 clock-names = "ipg", "per";160 fsl,stop-mode = <&gpr 0x34 28>;161 fsl,scu-index = /bits/ 8 <1>;162 };163 - |164 #include <dt-bindings/interrupt-controller/irq.h>165 #include <dt-bindings/gpio/gpio.h>166 167 can@2090000 {168 compatible = "fsl,imx6q-flexcan";169 reg = <0x02090000 0x4000>;170 interrupts = <0 110 IRQ_TYPE_LEVEL_HIGH>;171 clocks = <&clks 1>, <&clks 2>;172 clock-names = "ipg", "per";173 fsl,stop-mode = <&gpr 0x34 28>;174 termination-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;175 termination-ohms = <120>;176 };177