Commit 824674b5 authored by Benjamin Gaignard's avatar Benjamin Gaignard Committed by Rob Herring
Browse files

dt-bindings: net: can: Convert M_CAN to json-schema



Convert M_CAN bindings to json-schema

Signed-off-by: default avatarBenjamin Gaignard <benjamin.gaignard@st.com>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 2f384801
Loading
Loading
Loading
Loading
+144 −0
Original line number Diff line number Diff line
# 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 Bindings

description: Bosch MCAN controller for CAN bus

maintainers:
  -  Sriram Dash <sriram.dash@samsung.com>

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
    maxItems: 2

  interrupt-names:
    items:
      - const: int0
      - const: int1
    minItems: 1
    maxItems: 2

  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.
    allOf:
      - $ref: /schemas/types.yaml#/definitions/int32-array
      - items:
         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
        maxItems: 1

  can-transceiver:
    $ref: can-transceiver.yaml#

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>;
      };
    };

...
+0 −75
Original line number Diff line number Diff line
Bosch MCAN controller Device Tree Bindings
-------------------------------------------------

Required properties:
- compatible		: Should be "bosch,m_can" for M_CAN controllers
- reg			: physical base address and size of the M_CAN
			  registers map and Message RAM
- reg-names		: Should be "m_can" and "message_ram"
- interrupts		: Should be the interrupt number of M_CAN interrupt
			  line 0 and line 1, could be same if sharing
			  the same interrupt.
- interrupt-names	: Should contain "int0" and "int1"
- clocks		: Clocks used by controller, should be host clock
			  and CAN clock.
- clock-names		: Should contain "hclk" and "cclk"
- pinctrl-<n>		: Pinctrl states as described in bindings/pinctrl/pinctrl-bindings.txt
- pinctrl-names 	: Names corresponding to the numbered pinctrl states
- bosch,mram-cfg	: 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.

Optional Subnode:
- can-transceiver	: Can-transceiver subnode describing maximum speed
			  that can be used for CAN/CAN-FD modes. See
			  Documentation/devicetree/bindings/net/can/can-transceiver.txt
			  for details.
Example:
SoC dtsi:
m_can1: 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>;
};

Board dts:
&m_can1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_m_can1>;
	status = "enabled";

	can-transceiver {
		max-bitrate = <5000000>;
	};
};