summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/net/can/st,stm32-bxcan.yaml
blob: 769fa5c27b76ee427a46daeef2055a516f29268f (plain)
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
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/can/st,stm32-bxcan.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: STMicroelectronics bxCAN controller

description: STMicroelectronics BxCAN controller for CAN bus

maintainers:
  - Dario Binacchi <dario.binacchi@amarulasolutions.com>

allOf:
  - $ref: can-controller.yaml#

properties:
  compatible:
    enum:
      - st,stm32f4-bxcan

  st,can-primary:
    description:
      Primary and secondary mode of the bxCAN peripheral is only relevant
      if the chip has two CAN peripherals. In that case they share some
      of the required logic.
      To avoid misunderstandings, it should be noted that ST documentation
      uses the terms master/slave instead of primary/secondary.
    type: boolean

  reg:
    maxItems: 1

  interrupts:
    items:
      - description: transmit interrupt
      - description: FIFO 0 receive interrupt
      - description: FIFO 1 receive interrupt
      - description: status change error interrupt

  interrupt-names:
    items:
      - const: tx
      - const: rx0
      - const: rx1
      - const: sce

  resets:
    maxItems: 1

  clocks:
    maxItems: 1

  st,gcan:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description:
      The phandle to the gcan node which allows to access the 512-bytes
      SRAM memory shared by the two bxCAN cells (CAN1 primary and CAN2
      secondary) in dual CAN peripheral configuration.

required:
  - compatible
  - reg
  - interrupts
  - resets
  - clocks
  - st,gcan

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/stm32fx-clock.h>
    #include <dt-bindings/mfd/stm32f4-rcc.h>

    can1: can@40006400 {
        compatible = "st,stm32f4-bxcan";
        reg = <0x40006400 0x200>;
        interrupts = <19>, <20>, <21>, <22>;
        interrupt-names = "tx", "rx0", "rx1", "sce";
        resets = <&rcc STM32F4_APB1_RESET(CAN1)>;
        clocks = <&rcc 0 STM32F4_APB1_CLOCK(CAN1)>;
        st,can-primary;
        st,gcan = <&gcan>;
    };