# Common fields for CAN controllers

include: base.yaml

properties:
  bus-speed:
    type: int
    required: true
    description: |
      Initial bitrate in bit/s.
  sample-point:
    type: int
    description: |
      Initial sample point in per mille (e.g. 875 equals 87.5%).

      This property is required unless the timing is specified using time quanta based properties
      (`sjw`, `prop-seg`, `phase-seg1`, and `phase-seg2`).

      If this property is present, the time quanta based timing properties are ignored.
  sjw:
    type: int
    deprecated: true
    default: 1
    description: |
      Initial time quanta of resynchronization jump width (ISO 11898-1).

      Deprecated in favor of automatic calculation of a suitable default SJW based on existing
      timing parameters. Default of 1 matches the default value previously used for all in-tree CAN
      controller devicetree instances.

      Applications can still manually set the SJW using the CAN timing APIs.
  prop-seg:
    type: int
    deprecated: true
    description: |
      Initial time quanta of propagation segment (ISO 11898-1). Deprecated in favor of setting
      advanced timing parameters from the application.
  phase-seg1:
    type: int
    deprecated: true
    description: |
      Initial time quanta of phase buffer 1 segment (ISO 11898-1). Deprecated in favor of setting
      advanced timing parameters from the application.
  phase-seg2:
    type: int
    deprecated: true
    description: |
      Initial time quanta of phase buffer 2 segment (ISO 11898-1). Deprecated in favor of setting
      advanced timing parameters from the application.
  phys:
    type: phandle
    description: |
      Actively controlled CAN transceiver.

      Example:
        transceiver0: can-phy0 {
          compatible = "nxp,tja1040", "can-transceiver-gpio";
          standby-gpios = <gpioa 0 GPIO_ACTIVE_HIGH>;
          max-bitrate = <1000000>;
          #phy-cells = <0>;
        };

        &can0 {
          status = "okay";

          phys = <&transceiver0>;
        };

child-binding:
  description: |
    Passive CAN transceiver. The child node must be named "can-transceiver".

    Example:
      &can0 {
        status = "okay";

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

  properties:
    max-bitrate:
      type: int
      required: true
      description: |
        The maximum bitrate supported by the CAN transceiver in bits/s.
