summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/net/can/nxp,sja1000.yaml
blob: 144a3785132c31a23253dc5b11b4ea215deaf9fc (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/can/nxp,sja1000.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Memory mapped SJA1000 CAN controller from NXP (formerly Philips)

maintainers:
  - Wolfgang Grandegger <wg@grandegger.com>

properties:
  compatible:
    oneOf:
      - enum:
          - nxp,sja1000
          - technologic,sja1000
      - items:
          - enum:
              - renesas,r9a06g032-sja1000 # RZ/N1D
              - renesas,r9a06g033-sja1000 # RZ/N1S
          - const: renesas,rzn1-sja1000 # RZ/N1

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    maxItems: 1

  power-domains:
    maxItems: 1

  reg-io-width:
    description: I/O register width (in bytes) implemented by this device
    default: 1
    enum: [ 1, 2, 4 ]

  nxp,external-clock-frequency:
    $ref: /schemas/types.yaml#/definitions/uint32
    default: 16000000
    description: |
      Frequency of the external oscillator clock in Hz.
      The internal clock frequency used by the SJA1000 is half of that value.

  nxp,tx-output-mode:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [ 0, 1, 2, 3 ]
    default: 1
    description: |
      operation mode of the TX output control logic. Valid values are:
        <0> : bi-phase output mode
        <1> : normal output mode (default)
        <2> : test output mode
        <3> : clock output mode

  nxp,tx-output-config:
    $ref: /schemas/types.yaml#/definitions/uint32
    default: 0x02
    description: |
      TX output pin configuration. Valid values are any one of the below
      or combination of TX0 and TX1:
        <0x01> : TX0 invert
        <0x02> : TX0 pull-down (default)
        <0x04> : TX0 pull-up
        <0x06> : TX0 push-pull
        <0x08> : TX1 invert
        <0x10> : TX1 pull-down
        <0x20> : TX1 pull-up
        <0x30> : TX1 push-pull

  nxp,clock-out-frequency:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: |
      clock frequency in Hz on the CLKOUT pin.
      If not specified or if the specified value is 0, the CLKOUT pin
      will be disabled.

  nxp,no-comparator-bypass:
    type: boolean
    description: Allows to disable the CAN input comparator.

required:
  - compatible
  - reg
  - interrupts

allOf:
  - $ref: can-controller.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - technologic,sja1000
              - renesas,rzn1-sja1000
    then:
      required:
        - reg-io-width
  - if:
      properties:
        compatible:
          contains:
            const: renesas,rzn1-sja1000
    then:
      required:
        - clocks
        - power-domains

unevaluatedProperties: false

examples:
  - |
    can@1a000 {
        compatible = "technologic,sja1000";
        reg = <0x1a000 0x100>;
        interrupts = <1>;
        reg-io-width = <2>;
        nxp,tx-output-config = <0x06>;
        nxp,external-clock-frequency = <24000000>;
    };

  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/r9a06g032-sysctrl.h>

    can@52104000 {
        compatible = "renesas,r9a06g032-sja1000", "renesas,rzn1-sja1000";
        reg = <0x52104000 0x800>;
        reg-io-width = <4>;
        interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&sysctrl R9A06G032_HCLK_CAN0>;
        power-domains = <&sysctrl>;
    };