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