153 lines
4.0 KiB
YAML
153 lines
4.0 KiB
YAML
|
# 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
|
||
|
|
||
|
required:
|
||
|
- compatible
|
||
|
- reg
|
||
|
- reg-names
|
||
|
- interrupts
|
||
|
- interrupt-names
|
||
|
- clocks
|
||
|
- clock-names
|
||
|
- bosch,mram-cfg
|
||
|
|
||
|
additionalProperties: false
|
||
|
|
||
|
examples:
|
||
|
- |
|
||
|
#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>;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
...
|