1824674b5SBenjamin Gaignard# SPDX-License-Identifier: GPL-2.0
2824674b5SBenjamin Gaignard%YAML 1.2
3824674b5SBenjamin Gaignard---
4824674b5SBenjamin Gaignard$id: http://devicetree.org/schemas/net/can/bosch,m_can.yaml#
5824674b5SBenjamin Gaignard$schema: http://devicetree.org/meta-schemas/core.yaml#
6824674b5SBenjamin Gaignard
7824674b5SBenjamin Gaignardtitle: Bosch MCAN controller Bindings
8824674b5SBenjamin Gaignard
9824674b5SBenjamin Gaignarddescription: Bosch MCAN controller for CAN bus
10824674b5SBenjamin Gaignard
11824674b5SBenjamin Gaignardmaintainers:
12824674b5SBenjamin Gaignard  - Sriram Dash <sriram.dash@samsung.com>
13824674b5SBenjamin Gaignard
14824674b5SBenjamin Gaignardproperties:
15824674b5SBenjamin Gaignard  compatible:
16824674b5SBenjamin Gaignard    const: bosch,m_can
17824674b5SBenjamin Gaignard
18824674b5SBenjamin Gaignard  reg:
19824674b5SBenjamin Gaignard    items:
20824674b5SBenjamin Gaignard      - description: M_CAN registers map
21824674b5SBenjamin Gaignard      - description: message RAM
22824674b5SBenjamin Gaignard
23824674b5SBenjamin Gaignard  reg-names:
24824674b5SBenjamin Gaignard    items:
25824674b5SBenjamin Gaignard      - const: m_can
26824674b5SBenjamin Gaignard      - const: message_ram
27824674b5SBenjamin Gaignard
28824674b5SBenjamin Gaignard  interrupts:
29824674b5SBenjamin Gaignard    items:
30824674b5SBenjamin Gaignard      - description: interrupt line0
31824674b5SBenjamin Gaignard      - description: interrupt line1
32824674b5SBenjamin Gaignard    minItems: 1
33824674b5SBenjamin Gaignard    maxItems: 2
34824674b5SBenjamin Gaignard
35824674b5SBenjamin Gaignard  interrupt-names:
36824674b5SBenjamin Gaignard    items:
37824674b5SBenjamin Gaignard      - const: int0
38824674b5SBenjamin Gaignard      - const: int1
39824674b5SBenjamin Gaignard    minItems: 1
40824674b5SBenjamin Gaignard    maxItems: 2
41824674b5SBenjamin Gaignard
42824674b5SBenjamin Gaignard  clocks:
43824674b5SBenjamin Gaignard    items:
44824674b5SBenjamin Gaignard      - description: peripheral clock
45824674b5SBenjamin Gaignard      - description: bus clock
46824674b5SBenjamin Gaignard
47824674b5SBenjamin Gaignard  clock-names:
48824674b5SBenjamin Gaignard    items:
49824674b5SBenjamin Gaignard      - const: hclk
50824674b5SBenjamin Gaignard      - const: cclk
51824674b5SBenjamin Gaignard
52824674b5SBenjamin Gaignard  bosch,mram-cfg:
53824674b5SBenjamin Gaignard    description: |
54824674b5SBenjamin Gaignard      Message RAM configuration data.
55824674b5SBenjamin Gaignard      Multiple M_CAN instances can share the same Message RAM
56824674b5SBenjamin Gaignard      and each element(e.g Rx FIFO or Tx Buffer and etc) number
57824674b5SBenjamin Gaignard      in Message RAM is also configurable, so this property is
58824674b5SBenjamin Gaignard      telling driver how the shared or private Message RAM are
59824674b5SBenjamin Gaignard      used by this M_CAN controller.
60824674b5SBenjamin Gaignard
61824674b5SBenjamin Gaignard      The format should be as follows:
62824674b5SBenjamin Gaignard      <offset sidf_elems xidf_elems rxf0_elems rxf1_elems rxb_elems txe_elems txb_elems>
63824674b5SBenjamin Gaignard      The 'offset' is an address offset of the Message RAM where
64824674b5SBenjamin Gaignard      the following elements start from. This is usually set to
65824674b5SBenjamin Gaignard      0x0 if you're using a private Message RAM. The remain cells
66824674b5SBenjamin Gaignard      are used to specify how many elements are used for each FIFO/Buffer.
67824674b5SBenjamin Gaignard
68824674b5SBenjamin Gaignard      M_CAN includes the following elements according to user manual:
69824674b5SBenjamin Gaignard      11-bit Filter	0-128 elements / 0-128 words
70824674b5SBenjamin Gaignard      29-bit Filter	0-64 elements / 0-128 words
71824674b5SBenjamin Gaignard      Rx FIFO 0	0-64 elements / 0-1152 words
72824674b5SBenjamin Gaignard      Rx FIFO 1	0-64 elements / 0-1152 words
73824674b5SBenjamin Gaignard      Rx Buffers	0-64 elements / 0-1152 words
74824674b5SBenjamin Gaignard      Tx Event FIFO	0-32 elements / 0-64 words
75824674b5SBenjamin Gaignard      Tx Buffers	0-32 elements / 0-576 words
76824674b5SBenjamin Gaignard
77824674b5SBenjamin Gaignard      Please refer to 2.4.1 Message RAM Configuration in Bosch
78824674b5SBenjamin Gaignard      M_CAN user manual for details.
793d21a460SRob Herring    $ref: /schemas/types.yaml#/definitions/int32-array
80824674b5SBenjamin Gaignard    items:
813d21a460SRob Herring      items:
823d21a460SRob Herring        - description: The 'offset' is an address offset of the Message RAM where
833d21a460SRob Herring            the following elements start from. This is usually set to 0x0 if
843d21a460SRob Herring            you're using a private Message RAM.
85824674b5SBenjamin Gaignard          default: 0
86824674b5SBenjamin Gaignard        - description: 11-bit Filter 0-128 elements / 0-128 words
87824674b5SBenjamin Gaignard          minimum: 0
88824674b5SBenjamin Gaignard          maximum: 128
89824674b5SBenjamin Gaignard        - description: 29-bit Filter 0-64 elements / 0-128 words
90824674b5SBenjamin Gaignard          minimum: 0
91824674b5SBenjamin Gaignard          maximum: 64
92824674b5SBenjamin Gaignard        - description: Rx FIFO 0 0-64 elements / 0-1152 words
93824674b5SBenjamin Gaignard          minimum: 0
94824674b5SBenjamin Gaignard          maximum: 64
95824674b5SBenjamin Gaignard        - description: Rx FIFO 1 0-64 elements / 0-1152 words
96824674b5SBenjamin Gaignard          minimum: 0
97824674b5SBenjamin Gaignard          maximum: 64
98824674b5SBenjamin Gaignard        - description: Rx Buffers 0-64 elements / 0-1152 words
99824674b5SBenjamin Gaignard          minimum: 0
100824674b5SBenjamin Gaignard          maximum: 64
101824674b5SBenjamin Gaignard        - description: Tx Event FIFO 0-32 elements / 0-64 words
102824674b5SBenjamin Gaignard          minimum: 0
103824674b5SBenjamin Gaignard          maximum: 32
104824674b5SBenjamin Gaignard        - description: Tx Buffers 0-32 elements / 0-576 words
105824674b5SBenjamin Gaignard          minimum: 0
106824674b5SBenjamin Gaignard          maximum: 32
107824674b5SBenjamin Gaignard    maxItems: 1
108824674b5SBenjamin Gaignard
109824674b5SBenjamin Gaignard  can-transceiver:
110824674b5SBenjamin Gaignard    $ref: can-transceiver.yaml#
111824674b5SBenjamin Gaignard
112824674b5SBenjamin Gaignardrequired:
113824674b5SBenjamin Gaignard  - compatible
114824674b5SBenjamin Gaignard  - reg
115824674b5SBenjamin Gaignard  - reg-names
116824674b5SBenjamin Gaignard  - interrupts
117824674b5SBenjamin Gaignard  - interrupt-names
118824674b5SBenjamin Gaignard  - clocks
119824674b5SBenjamin Gaignard  - clock-names
120824674b5SBenjamin Gaignard  - bosch,mram-cfg
121824674b5SBenjamin Gaignard
122824674b5SBenjamin GaignardadditionalProperties: false
123824674b5SBenjamin Gaignard
124824674b5SBenjamin Gaignardexamples:
125824674b5SBenjamin Gaignard  - |
126824674b5SBenjamin Gaignard    #include <dt-bindings/clock/imx6sx-clock.h>
127824674b5SBenjamin Gaignard    can@20e8000 {
128824674b5SBenjamin Gaignard      compatible = "bosch,m_can";
129824674b5SBenjamin Gaignard      reg = <0x020e8000 0x4000>, <0x02298000 0x4000>;
130824674b5SBenjamin Gaignard      reg-names = "m_can", "message_ram";
131824674b5SBenjamin Gaignard      interrupts = <0 114 0x04>, <0 114 0x04>;
132824674b5SBenjamin Gaignard      interrupt-names = "int0", "int1";
133824674b5SBenjamin Gaignard      clocks = <&clks IMX6SX_CLK_CANFD>,
134824674b5SBenjamin Gaignard               <&clks IMX6SX_CLK_CANFD>;
135824674b5SBenjamin Gaignard      clock-names = "hclk", "cclk";
136824674b5SBenjamin Gaignard      bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>;
137824674b5SBenjamin Gaignard
138824674b5SBenjamin Gaignard      can-transceiver {
139824674b5SBenjamin Gaignard        max-bitrate = <5000000>;
140824674b5SBenjamin Gaignard      };
141824674b5SBenjamin Gaignard    };
142824674b5SBenjamin Gaignard
143824674b5SBenjamin Gaignard...
144