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 784e85359SKrzysztof Kozlowskititle: Bosch MCAN controller 8824674b5SBenjamin Gaignard 9824674b5SBenjamin Gaignarddescription: Bosch MCAN controller for CAN bus 10824674b5SBenjamin Gaignard 11824674b5SBenjamin Gaignardmaintainers: 12edd056a1SMarc Kleine-Budde - Chandrasekar Ramakrishnan <rcsekar@samsung.com> 13824674b5SBenjamin Gaignard 1458212e03SMarc Kleine-BuddeallOf: 1558212e03SMarc Kleine-Budde - $ref: can-controller.yaml# 1658212e03SMarc Kleine-Budde 17824674b5SBenjamin Gaignardproperties: 18824674b5SBenjamin Gaignard compatible: 19824674b5SBenjamin Gaignard const: bosch,m_can 20824674b5SBenjamin Gaignard 21824674b5SBenjamin Gaignard reg: 22824674b5SBenjamin Gaignard items: 23824674b5SBenjamin Gaignard - description: M_CAN registers map 24824674b5SBenjamin Gaignard - description: message RAM 25824674b5SBenjamin Gaignard 26824674b5SBenjamin Gaignard reg-names: 27824674b5SBenjamin Gaignard items: 28824674b5SBenjamin Gaignard - const: m_can 29824674b5SBenjamin Gaignard - const: message_ram 30824674b5SBenjamin Gaignard 31824674b5SBenjamin Gaignard interrupts: 32824674b5SBenjamin Gaignard items: 33824674b5SBenjamin Gaignard - description: interrupt line0 34824674b5SBenjamin Gaignard - description: interrupt line1 35824674b5SBenjamin Gaignard minItems: 1 36824674b5SBenjamin Gaignard 37824674b5SBenjamin Gaignard interrupt-names: 38824674b5SBenjamin Gaignard items: 39824674b5SBenjamin Gaignard - const: int0 40824674b5SBenjamin Gaignard - const: int1 41824674b5SBenjamin Gaignard minItems: 1 42824674b5SBenjamin Gaignard 43824674b5SBenjamin Gaignard clocks: 44824674b5SBenjamin Gaignard items: 45824674b5SBenjamin Gaignard - description: peripheral clock 46824674b5SBenjamin Gaignard - description: bus clock 47824674b5SBenjamin Gaignard 48824674b5SBenjamin Gaignard clock-names: 49824674b5SBenjamin Gaignard items: 50824674b5SBenjamin Gaignard - const: hclk 51824674b5SBenjamin Gaignard - const: cclk 52824674b5SBenjamin Gaignard 53824674b5SBenjamin Gaignard bosch,mram-cfg: 54824674b5SBenjamin Gaignard description: | 55824674b5SBenjamin Gaignard Message RAM configuration data. 56824674b5SBenjamin Gaignard Multiple M_CAN instances can share the same Message RAM 57824674b5SBenjamin Gaignard and each element(e.g Rx FIFO or Tx Buffer and etc) number 58824674b5SBenjamin Gaignard in Message RAM is also configurable, so this property is 59824674b5SBenjamin Gaignard telling driver how the shared or private Message RAM are 60824674b5SBenjamin Gaignard used by this M_CAN controller. 61824674b5SBenjamin Gaignard 62824674b5SBenjamin Gaignard The format should be as follows: 63824674b5SBenjamin Gaignard <offset sidf_elems xidf_elems rxf0_elems rxf1_elems rxb_elems txe_elems txb_elems> 64824674b5SBenjamin Gaignard The 'offset' is an address offset of the Message RAM where 65824674b5SBenjamin Gaignard the following elements start from. This is usually set to 66824674b5SBenjamin Gaignard 0x0 if you're using a private Message RAM. The remain cells 67824674b5SBenjamin Gaignard are used to specify how many elements are used for each FIFO/Buffer. 68824674b5SBenjamin Gaignard 69824674b5SBenjamin Gaignard M_CAN includes the following elements according to user manual: 70824674b5SBenjamin Gaignard 11-bit Filter 0-128 elements / 0-128 words 71824674b5SBenjamin Gaignard 29-bit Filter 0-64 elements / 0-128 words 72824674b5SBenjamin Gaignard Rx FIFO 0 0-64 elements / 0-1152 words 73824674b5SBenjamin Gaignard Rx FIFO 1 0-64 elements / 0-1152 words 74824674b5SBenjamin Gaignard Rx Buffers 0-64 elements / 0-1152 words 75824674b5SBenjamin Gaignard Tx Event FIFO 0-32 elements / 0-64 words 76824674b5SBenjamin Gaignard Tx Buffers 0-32 elements / 0-576 words 77824674b5SBenjamin Gaignard 78824674b5SBenjamin Gaignard Please refer to 2.4.1 Message RAM Configuration in Bosch 79824674b5SBenjamin Gaignard M_CAN user manual for details. 803d21a460SRob Herring $ref: /schemas/types.yaml#/definitions/int32-array 81824674b5SBenjamin Gaignard 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 10759dfdc13SDinh Nguyen minItems: 1 108824674b5SBenjamin Gaignard 109d85165b2SAswath Govindraju power-domains: 110d85165b2SAswath Govindraju description: 111d85165b2SAswath Govindraju Power domain provider node and an args specifier containing 112d85165b2SAswath Govindraju the can device id value. 113d85165b2SAswath Govindraju maxItems: 1 114d85165b2SAswath Govindraju 115824674b5SBenjamin Gaignard can-transceiver: 116824674b5SBenjamin Gaignard $ref: can-transceiver.yaml# 117824674b5SBenjamin Gaignard 1189c0e7ccdSFaiz Abbas phys: 1199c0e7ccdSFaiz Abbas maxItems: 1 1209c0e7ccdSFaiz Abbas 121824674b5SBenjamin Gaignardrequired: 122824674b5SBenjamin Gaignard - compatible 123824674b5SBenjamin Gaignard - reg 124824674b5SBenjamin Gaignard - reg-names 125824674b5SBenjamin Gaignard - clocks 126824674b5SBenjamin Gaignard - clock-names 127824674b5SBenjamin Gaignard - bosch,mram-cfg 128824674b5SBenjamin Gaignard 129824674b5SBenjamin GaignardunevaluatedProperties: false 130824674b5SBenjamin Gaignard 131824674b5SBenjamin Gaignardexamples: 132824674b5SBenjamin Gaignard - | 133*bb410c03SJudith Mendez // Example with interrupts 134824674b5SBenjamin Gaignard #include <dt-bindings/clock/imx6sx-clock.h> 135824674b5SBenjamin Gaignard can@20e8000 { 136824674b5SBenjamin Gaignard compatible = "bosch,m_can"; 137824674b5SBenjamin Gaignard reg = <0x020e8000 0x4000>, <0x02298000 0x4000>; 138824674b5SBenjamin Gaignard reg-names = "m_can", "message_ram"; 139824674b5SBenjamin Gaignard interrupts = <0 114 0x04>, <0 114 0x04>; 140824674b5SBenjamin Gaignard interrupt-names = "int0", "int1"; 141824674b5SBenjamin Gaignard clocks = <&clks IMX6SX_CLK_CANFD>, 142824674b5SBenjamin Gaignard <&clks IMX6SX_CLK_CANFD>; 143824674b5SBenjamin Gaignard clock-names = "hclk", "cclk"; 144824674b5SBenjamin Gaignard bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>; 145824674b5SBenjamin Gaignard 146824674b5SBenjamin Gaignard can-transceiver { 147824674b5SBenjamin Gaignard max-bitrate = <5000000>; 148824674b5SBenjamin Gaignard }; 149824674b5SBenjamin Gaignard }; 150824674b5SBenjamin Gaignard 151*bb410c03SJudith Mendez - | 152*bb410c03SJudith Mendez // Example with timer polling 153*bb410c03SJudith Mendez #include <dt-bindings/clock/imx6sx-clock.h> 154*bb410c03SJudith Mendez can@20e8000 { 155*bb410c03SJudith Mendez compatible = "bosch,m_can"; 156*bb410c03SJudith Mendez reg = <0x020e8000 0x4000>, <0x02298000 0x4000>; 157*bb410c03SJudith Mendez reg-names = "m_can", "message_ram"; 158*bb410c03SJudith Mendez clocks = <&clks IMX6SX_CLK_CANFD>, 159*bb410c03SJudith Mendez <&clks IMX6SX_CLK_CANFD>; 160*bb410c03SJudith Mendez clock-names = "hclk", "cclk"; 161*bb410c03SJudith Mendez bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>; 162*bb410c03SJudith Mendez 163*bb410c03SJudith Mendez can-transceiver { 164*bb410c03SJudith Mendez max-bitrate = <5000000>; 165*bb410c03SJudith Mendez }; 166*bb410c03SJudith Mendez }; 167*bb410c03SJudith Mendez 168824674b5SBenjamin Gaignard... 169