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