Documentation / devicetree / bindings / net / can / nxp,sja1000.yaml


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 EST.

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