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.
79824674b5SBenjamin Gaignard    allOf:
80824674b5SBenjamin Gaignard      - $ref: /schemas/types.yaml#/definitions/int32-array
81824674b5SBenjamin Gaignard      - items:
82824674b5SBenjamin Gaignard         items:
83824674b5SBenjamin Gaignard           - description: The 'offset' is an address offset of the Message RAM
84824674b5SBenjamin Gaignard                          where the following elements start from. This is usually
85824674b5SBenjamin Gaignard                          set to 0x0 if you're using a private Message RAM.
86824674b5SBenjamin Gaignard             default: 0
87824674b5SBenjamin Gaignard           - description: 11-bit Filter 0-128 elements / 0-128 words
88824674b5SBenjamin Gaignard             minimum: 0
89824674b5SBenjamin Gaignard             maximum: 128
90824674b5SBenjamin Gaignard           - description: 29-bit Filter 0-64 elements / 0-128 words
91824674b5SBenjamin Gaignard             minimum: 0
92824674b5SBenjamin Gaignard             maximum: 64
93824674b5SBenjamin Gaignard           - description: Rx FIFO 0 0-64 elements / 0-1152 words
94824674b5SBenjamin Gaignard             minimum: 0
95824674b5SBenjamin Gaignard             maximum: 64
96824674b5SBenjamin Gaignard           - description: Rx FIFO 1 0-64 elements / 0-1152 words
97824674b5SBenjamin Gaignard             minimum: 0
98824674b5SBenjamin Gaignard             maximum: 64
99824674b5SBenjamin Gaignard           - description: Rx Buffers 0-64 elements / 0-1152 words
100824674b5SBenjamin Gaignard             minimum: 0
101824674b5SBenjamin Gaignard             maximum: 64
102824674b5SBenjamin Gaignard           - description: Tx Event FIFO 0-32 elements / 0-64 words
103824674b5SBenjamin Gaignard             minimum: 0
104824674b5SBenjamin Gaignard             maximum: 32
105824674b5SBenjamin Gaignard           - description: Tx Buffers 0-32 elements / 0-576 words
106824674b5SBenjamin Gaignard             minimum: 0
107824674b5SBenjamin Gaignard             maximum: 32
108824674b5SBenjamin Gaignard        maxItems: 1
109824674b5SBenjamin Gaignard
110824674b5SBenjamin Gaignard  can-transceiver:
111824674b5SBenjamin Gaignard    $ref: can-transceiver.yaml#
112824674b5SBenjamin Gaignard
113824674b5SBenjamin Gaignardrequired:
114824674b5SBenjamin Gaignard  - compatible
115824674b5SBenjamin Gaignard  - reg
116824674b5SBenjamin Gaignard  - reg-names
117824674b5SBenjamin Gaignard  - interrupts
118824674b5SBenjamin Gaignard  - interrupt-names
119824674b5SBenjamin Gaignard  - clocks
120824674b5SBenjamin Gaignard  - clock-names
121824674b5SBenjamin Gaignard  - bosch,mram-cfg
122824674b5SBenjamin Gaignard
123824674b5SBenjamin GaignardadditionalProperties: false
124824674b5SBenjamin Gaignard
125824674b5SBenjamin Gaignardexamples:
126824674b5SBenjamin Gaignard  - |
127824674b5SBenjamin Gaignard    #include <dt-bindings/clock/imx6sx-clock.h>
128824674b5SBenjamin Gaignard    can@20e8000 {
129824674b5SBenjamin Gaignard      compatible = "bosch,m_can";
130824674b5SBenjamin Gaignard      reg = <0x020e8000 0x4000>, <0x02298000 0x4000>;
131824674b5SBenjamin Gaignard      reg-names = "m_can", "message_ram";
132824674b5SBenjamin Gaignard      interrupts = <0 114 0x04>, <0 114 0x04>;
133824674b5SBenjamin Gaignard      interrupt-names = "int0", "int1";
134824674b5SBenjamin Gaignard      clocks = <&clks IMX6SX_CLK_CANFD>,
135824674b5SBenjamin Gaignard               <&clks IMX6SX_CLK_CANFD>;
136824674b5SBenjamin Gaignard      clock-names = "hclk", "cclk";
137824674b5SBenjamin Gaignard      bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>;
138824674b5SBenjamin Gaignard
139824674b5SBenjamin Gaignard      can-transceiver {
140824674b5SBenjamin Gaignard        max-bitrate = <5000000>;
141824674b5SBenjamin Gaignard      };
142824674b5SBenjamin Gaignard    };
143824674b5SBenjamin Gaignard
144824674b5SBenjamin Gaignard...
145