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