Merge tag 'v5.8-rc1' into fixes
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / net / can / bosch,m_can.yaml
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
7 title: Bosch MCAN controller Bindings
8
9 description: Bosch MCAN controller for CAN bus
10
11 maintainers:
12   - Sriram Dash <sriram.dash@samsung.com>
13
14 properties:
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     $ref: /schemas/types.yaml#/definitions/int32-array
80     items:
81       items:
82         - description: The 'offset' is an address offset of the Message RAM where
83             the following elements start from. This is usually set to 0x0 if
84             you're using a private Message RAM.
85           default: 0
86         - description: 11-bit Filter 0-128 elements / 0-128 words
87           minimum: 0
88           maximum: 128
89         - description: 29-bit Filter 0-64 elements / 0-128 words
90           minimum: 0
91           maximum: 64
92         - description: Rx FIFO 0 0-64 elements / 0-1152 words
93           minimum: 0
94           maximum: 64
95         - description: Rx FIFO 1 0-64 elements / 0-1152 words
96           minimum: 0
97           maximum: 64
98         - description: Rx Buffers 0-64 elements / 0-1152 words
99           minimum: 0
100           maximum: 64
101         - description: Tx Event FIFO 0-32 elements / 0-64 words
102           minimum: 0
103           maximum: 32
104         - description: Tx Buffers 0-32 elements / 0-576 words
105           minimum: 0
106           maximum: 32
107     maxItems: 1
108
109   can-transceiver:
110     $ref: can-transceiver.yaml#
111
112 required:
113   - compatible
114   - reg
115   - reg-names
116   - interrupts
117   - interrupt-names
118   - clocks
119   - clock-names
120   - bosch,mram-cfg
121
122 additionalProperties: false
123
124 examples:
125   - |
126     #include <dt-bindings/clock/imx6sx-clock.h>
127     can@20e8000 {
128       compatible = "bosch,m_can";
129       reg = <0x020e8000 0x4000>, <0x02298000 0x4000>;
130       reg-names = "m_can", "message_ram";
131       interrupts = <0 114 0x04>, <0 114 0x04>;
132       interrupt-names = "int0", "int1";
133       clocks = <&clks IMX6SX_CLK_CANFD>,
134                <&clks IMX6SX_CLK_CANFD>;
135       clock-names = "hclk", "cclk";
136       bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>;
137
138       can-transceiver {
139         max-bitrate = <5000000>;
140       };
141     };
142
143 ...