1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/can/nxp,sja1000.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Memory mapped SJA1000 CAN controller from NXP (formerly Philips)
8
9maintainers:
10  - Wolfgang Grandegger <wg@grandegger.com>
11
12properties:
13  compatible:
14    oneOf:
15      - enum:
16          - nxp,sja1000
17          - technologic,sja1000
18      - items:
19          - enum:
20              - renesas,r9a06g032-sja1000 # RZ/N1D
21              - renesas,r9a06g033-sja1000 # RZ/N1S
22          - const: renesas,rzn1-sja1000 # RZ/N1
23
24  reg:
25    maxItems: 1
26
27  interrupts:
28    maxItems: 1
29
30  clocks:
31    maxItems: 1
32
33  power-domains:
34    maxItems: 1
35
36  reg-io-width:
37    description: I/O register width (in bytes) implemented by this device
38    default: 1
39    enum: [ 1, 2, 4 ]
40
41  nxp,external-clock-frequency:
42    $ref: /schemas/types.yaml#/definitions/uint32
43    default: 16000000
44    description: |
45      Frequency of the external oscillator clock in Hz.
46      The internal clock frequency used by the SJA1000 is half of that value.
47
48  nxp,tx-output-mode:
49    $ref: /schemas/types.yaml#/definitions/uint32
50    enum: [ 0, 1, 2, 3 ]
51    default: 1
52    description: |
53      operation mode of the TX output control logic. Valid values are:
54        <0> : bi-phase output mode
55        <1> : normal output mode (default)
56        <2> : test output mode
57        <3> : clock output mode
58
59  nxp,tx-output-config:
60    $ref: /schemas/types.yaml#/definitions/uint32
61    default: 0x02
62    description: |
63      TX output pin configuration. Valid values are any one of the below
64      or combination of TX0 and TX1:
65        <0x01> : TX0 invert
66        <0x02> : TX0 pull-down (default)
67        <0x04> : TX0 pull-up
68        <0x06> : TX0 push-pull
69        <0x08> : TX1 invert
70        <0x10> : TX1 pull-down
71        <0x20> : TX1 pull-up
72        <0x30> : TX1 push-pull
73
74  nxp,clock-out-frequency:
75    $ref: /schemas/types.yaml#/definitions/uint32
76    description: |
77      clock frequency in Hz on the CLKOUT pin.
78      If not specified or if the specified value is 0, the CLKOUT pin
79      will be disabled.
80
81  nxp,no-comparator-bypass:
82    type: boolean
83    description: Allows to disable the CAN input comparator.
84
85required:
86  - compatible
87  - reg
88  - interrupts
89
90allOf:
91  - $ref: can-controller.yaml#
92  - if:
93      properties:
94        compatible:
95          contains:
96            enum:
97              - technologic,sja1000
98              - renesas,rzn1-sja1000
99    then:
100      required:
101        - reg-io-width
102  - if:
103      properties:
104        compatible:
105          contains:
106            const: renesas,rzn1-sja1000
107    then:
108      required:
109        - clocks
110        - power-domains
111
112unevaluatedProperties: false
113
114examples:
115  - |
116    can@1a000 {
117        compatible = "technologic,sja1000";
118        reg = <0x1a000 0x100>;
119        interrupts = <1>;
120        reg-io-width = <2>;
121        nxp,tx-output-config = <0x06>;
122        nxp,external-clock-frequency = <24000000>;
123    };
124
125  - |
126    #include <dt-bindings/interrupt-controller/arm-gic.h>
127    #include <dt-bindings/clock/r9a06g032-sysctrl.h>
128
129    can@52104000 {
130        compatible = "renesas,r9a06g032-sja1000", "renesas,rzn1-sja1000";
131        reg = <0x52104000 0x800>;
132        reg-io-width = <4>;
133        interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
134        clocks = <&sysctrl R9A06G032_HCLK_CAN0>;
135        power-domains = <&sysctrl>;
136    };
137