mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 11:56:58 +00:00
The pins associated with m_can have to have a special configuration to be able to wakeup the SoC from some system states. This configuration is described in the wakeup pinctrl state while the default state describes the default configuration. Also add the sleep state which is already in use by some devicetrees. Also m_can can be a wakeup-source if capable of wakeup. Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp@baylibre.com> Reviewed-by: Dhruva Gole <d-gole@ti.com> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Link: https://patch.msgid.link/20251001-topic-mcan-wakeup-source-v6-12-v10-1-4ab508ac5d1e@baylibre.com Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
201 lines
5.3 KiB
YAML
201 lines
5.3 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
|
|
|
|
resets:
|
|
maxItems: 1
|
|
|
|
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
|
|
|
|
pinctrl-0:
|
|
description: Default pinctrl state
|
|
|
|
pinctrl-1:
|
|
description: Can be "sleep" or "wakeup" pinctrl state
|
|
|
|
pinctrl-2:
|
|
description: Can be "sleep" or "wakeup" pinctrl state
|
|
|
|
pinctrl-names:
|
|
description:
|
|
When present should contain at least "default" describing the default pin
|
|
states. Other states are "sleep" which describes the pinstate when
|
|
sleeping and "wakeup" describing the pins if wakeup is enabled.
|
|
minItems: 1
|
|
items:
|
|
- const: default
|
|
- enum: [ sleep, wakeup ]
|
|
- const: wakeup
|
|
|
|
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
|
|
|
|
wakeup-source:
|
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|
description:
|
|
List of phandles to system idle states in which mcan can wakeup the system.
|
|
|
|
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>;
|
|
};
|
|
};
|
|
|
|
...
|