xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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