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