1# SPDX-License-Identifier: GPL-2.0 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/net/can/bosch,m_can.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Bosch MCAN controller 8 9description: Bosch MCAN controller for CAN bus 10 11maintainers: 12 - Chandrasekar Ramakrishnan <rcsekar@samsung.com> 13 14allOf: 15 - $ref: can-controller.yaml# 16 17properties: 18 compatible: 19 const: bosch,m_can 20 21 reg: 22 items: 23 - description: M_CAN registers map 24 - description: message RAM 25 26 reg-names: 27 items: 28 - const: m_can 29 - const: message_ram 30 31 interrupts: 32 items: 33 - description: interrupt line0 34 - description: interrupt line1 35 minItems: 1 36 37 interrupt-names: 38 items: 39 - const: int0 40 - const: int1 41 minItems: 1 42 43 clocks: 44 items: 45 - description: peripheral clock 46 - description: bus clock 47 48 clock-names: 49 items: 50 - const: hclk 51 - const: cclk 52 53 bosch,mram-cfg: 54 description: | 55 Message RAM configuration data. 56 Multiple M_CAN instances can share the same Message RAM 57 and each element(e.g Rx FIFO or Tx Buffer and etc) number 58 in Message RAM is also configurable, so this property is 59 telling driver how the shared or private Message RAM are 60 used by this M_CAN controller. 61 62 The format should be as follows: 63 <offset sidf_elems xidf_elems rxf0_elems rxf1_elems rxb_elems txe_elems txb_elems> 64 The 'offset' is an address offset of the Message RAM where 65 the following elements start from. This is usually set to 66 0x0 if you're using a private Message RAM. The remain cells 67 are used to specify how many elements are used for each FIFO/Buffer. 68 69 M_CAN includes the following elements according to user manual: 70 11-bit Filter 0-128 elements / 0-128 words 71 29-bit Filter 0-64 elements / 0-128 words 72 Rx FIFO 0 0-64 elements / 0-1152 words 73 Rx FIFO 1 0-64 elements / 0-1152 words 74 Rx Buffers 0-64 elements / 0-1152 words 75 Tx Event FIFO 0-32 elements / 0-64 words 76 Tx Buffers 0-32 elements / 0-576 words 77 78 Please refer to 2.4.1 Message RAM Configuration in Bosch 79 M_CAN user manual for details. 80 $ref: /schemas/types.yaml#/definitions/int32-array 81 items: 82 - description: The 'offset' is an address offset of the Message RAM where 83 the following elements start from. This is usually set to 0x0 if 84 you're using a private Message RAM. 85 default: 0 86 - description: 11-bit Filter 0-128 elements / 0-128 words 87 minimum: 0 88 maximum: 128 89 - description: 29-bit Filter 0-64 elements / 0-128 words 90 minimum: 0 91 maximum: 64 92 - description: Rx FIFO 0 0-64 elements / 0-1152 words 93 minimum: 0 94 maximum: 64 95 - description: Rx FIFO 1 0-64 elements / 0-1152 words 96 minimum: 0 97 maximum: 64 98 - description: Rx Buffers 0-64 elements / 0-1152 words 99 minimum: 0 100 maximum: 64 101 - description: Tx Event FIFO 0-32 elements / 0-64 words 102 minimum: 0 103 maximum: 32 104 - description: Tx Buffers 0-32 elements / 0-576 words 105 minimum: 0 106 maximum: 32 107 minItems: 1 108 109 power-domains: 110 description: 111 Power domain provider node and an args specifier containing 112 the can device id value. 113 maxItems: 1 114 115 can-transceiver: 116 $ref: can-transceiver.yaml# 117 118 phys: 119 maxItems: 1 120 121required: 122 - compatible 123 - reg 124 - reg-names 125 - clocks 126 - clock-names 127 - bosch,mram-cfg 128 129unevaluatedProperties: false 130 131examples: 132 - | 133 // Example with interrupts 134 #include <dt-bindings/clock/imx6sx-clock.h> 135 can@20e8000 { 136 compatible = "bosch,m_can"; 137 reg = <0x020e8000 0x4000>, <0x02298000 0x4000>; 138 reg-names = "m_can", "message_ram"; 139 interrupts = <0 114 0x04>, <0 114 0x04>; 140 interrupt-names = "int0", "int1"; 141 clocks = <&clks IMX6SX_CLK_CANFD>, 142 <&clks IMX6SX_CLK_CANFD>; 143 clock-names = "hclk", "cclk"; 144 bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>; 145 146 can-transceiver { 147 max-bitrate = <5000000>; 148 }; 149 }; 150 151 - | 152 // Example with timer polling 153 #include <dt-bindings/clock/imx6sx-clock.h> 154 can@20e8000 { 155 compatible = "bosch,m_can"; 156 reg = <0x020e8000 0x4000>, <0x02298000 0x4000>; 157 reg-names = "m_can", "message_ram"; 158 clocks = <&clks IMX6SX_CLK_CANFD>, 159 <&clks IMX6SX_CLK_CANFD>; 160 clock-names = "hclk", "cclk"; 161 bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>; 162 163 can-transceiver { 164 max-bitrate = <5000000>; 165 }; 166 }; 167 168... 169