# Copyright (c) 2020 Gerson Fernando Budke <nandojve@gmail.com>
# SPDX-License-Identifier: Apache-2.0

description: |
  Atmel SAM4L Family I2C (TWIM) node

  The Atmel Two-wire Master Interface (TWIM) interconnects components on a
  unique two-wire bus, made up of one clock line and one data line with speeds
  of up to 3.4 Mbit/s, based on a byte-oriented transfer format.  The TWIM is
  always a bus master and can transfer sequential or single bytes.  Multiple
  master capability is supported.  Arbitration of the bus is performed
  internally and relinquishes the bus automatically if the bus arbitration is
  lost.

  When using speeds above standard mode, user may need adjust clock and data
  lines slew and strength parameters.  In general, slew 0 and minimal strength
  is enougth for short buses and light loads.  As reference, the below
  is the lowest power configuration:

    std-clk-slew-lim = <0>;
    std-clk-strength-low = "0.5";
    std-data-slew-lim = <0>;
    std-data-strength-low = "0.5";

    hs-clk-slew-lim = <0>;
    hs-clk-strength-high = "0.5";
    hs-clk-strength-low = "0.5";
    hs-data-slew-lim = <0>;
    hs-data-strength-low = "0.5";

  For best performances, user can tune the slope curves using an osciloscope.
  The tuning should be performed by groups defined <mode>-<line>.  The prefix
  std-<line> configures fast/fast-plus mode speeds and hs-<line> selects the
  high speed mode.  The tune should be performed for both clock and data lines
  on both speed modes.


compatible: "atmel,sam-i2c-twim"

include:
  - name: i2c-controller.yaml
  - name: pinctrl-device.yaml

properties:
  reg:
    required: true

  interrupts:
    required: true

  peripheral-id:
    type: int
    required: true
    description: peripheral ID

  std-clk-slew-lim:
    type: int
    required: true
    description: |
      Slew limit of the TWCK output buffer.  This should be adjusted with
      std-clk-strength-low to fine tune the TWCK slope.
    enum:
      - 0
      - 1
      - 2
      - 3

  std-clk-strength-low:
    type: string
    required: true
    description: |
      Pull-down drive strength of the TWCK output buffer in fast/fast plus
      mode.  This should be adjusted to provide proper TWCK line fall time.
      The value represents the port output current in mA when signal on
      low level.
    enum:
      - "0.5"
      - "1.0"
      - "1.6"
      - "3.1"
      - "6.2"
      - "9.3"
      - "15.5"
      - "21.8"

  std-data-slew-lim:
    type: int
    required: true
    description: |
      Slew limit of the TWD output buffer.  This should be adjusted with
      std-data-strength-low to fine tune the TWD slope.
    enum:
      - 0
      - 1
      - 2
      - 3

  std-data-strength-low:
    type: string
    required: true
    description: |
      Pull-down drive strength of the TWD output buffer in fast/fast plus
      mode.  This should be adjusted to provide proper TWD line fall time.
      The value represents the port output current in mA when signal on
      low level.
    enum:
      - "0.5"
      - "1.0"
      - "1.6"
      - "3.1"
      - "6.2"
      - "9.3"
      - "15.5"
      - "21.8"

  hs-clk-slew-lim:
    type: int
    required: true
    description: |
      Slew limit of the TWCK output buffer in high speed mode.  This
      should be adjusted with both hs-clk-strength-high and
      hs-clk-strength-low to fine tune the TWCK slope.
    enum:
      - 0
      - 1
      - 2
      - 3

  hs-clk-strength-high:
    type: string
    required: true
    description: |
      Pull-up drive strength of the TWCK output buffer in high speed
      mode.  This should be adjusted to provide proper TWCK line rise time.
      The value represents the port output current in mA when signal on
      high level.
    enum:
      - "0.5"
      - "1.0"
      - "1.5"
      - "3.0"

  hs-clk-strength-low:
    type: string
    required: true
    description: |
      Pull-down drive strength of the TWCK output buffer in high speed
      mode.  This should be adjusted to provide proper TWCK line fall time.
      The value represents the port output current in mA when signal on
      low level.
    enum:
      - "0.5"
      - "1.0"
      - "1.6"
      - "3.1"
      - "6.2"
      - "9.3"
      - "15.5"
      - "21.8"

  hs-data-slew-lim:
    type: int
    required: true
    description: |
      Slew limit of the TWD output buffer in high speed mode.  This
      should be adjusted with hs-data-strength-low to fine tune the TWD
      slope.
    enum:
      - 0
      - 1
      - 2
      - 3

  hs-data-strength-low:
    type: string
    description: |
      Pull-down drive strength of the TWD output buffer in high speed
      mode.  This should be adjusted to provide proper TWD line fall time.
      The value represents the port output current in mA when signal on
      low level.
    enum:
      - "0.5"
      - "1.0"
      - "1.6"
      - "3.1"
      - "6.2"
      - "9.3"
      - "15.5"
      - "21.8"

  hs-master-code:
    type: int
    required: true
    description: |
      3-bit code to be prefixed with 0b00001 to form a unique
      8-bit HS-mode master code (0000 1XXX)
    enum:
      - 0   # 000
      - 1   # 001
      - 2   # 010
      - 3   # 011
      - 4   # 100
      - 5   # 101
      - 6   # 110
      - 7   # 111
