# Copyright (c) 2023 Cypress Semiconductor Corporation (an Infineon company) or
# an affiliate of Cypress Semiconductor Corporation
#
# SPDX-License-Identifier: Apache-2.0

description: |

  Infineon XMC4XXX I2C

  This driver configures the USIC as an I2C device.

  Example devicetree configuration with an adt7420 temperature sensor
  connected on the bus:

  &usic1ch1 {
      compatible = "infineon,xmc4xxx-i2c";
      status = "okay";

      pinctrl-0 = <&i2c_scl_p0_13_u1c1 &i2c_sda_p3_15_u1c1>;
      pinctrl-names = "default";
      scl-src = "DX1B";
      sda-src = "DX0A";
      interrupts = <94 1>;

      #address-cells = <1>;
      #size-cells = <0>;

      clock-frequency = <I2C_BITRATE_STANDARD>;
      adt7420@48 {
          compatible = "adi,adt7420";
          reg = <0x48>;
      };
  };

  The pinctrl nodes need to be configured as open-drain and
  hwctrl should be disabled:

  &i2c_scl_p0_13_u1c1 {
      drive-strength = "strong-sharp-edge";
      drive-open-drain;
      hwctrl = "disabled";
  };

  &i2c_sda_p3_15_u1c1 {
      drive-strength = "strong-soft-edge";
      drive-open-drain;
      hwctrl = "disabled";
  };

compatible: "infineon,xmc4xxx-i2c"

include: [i2c-controller.yaml, pinctrl-device.yaml]

properties:
  reg:
    type: array
    required: true

  scl-src:
    description: |
      Connects the I2C clock line (USIC DX1 input) to a specific GPIO pin.
      The USIC DX1 input is a multiplexer which connects to different GPIO pins.
      Refer to the XMC4XXX reference manual for the GPIO pin/mux mappings.
    type: string
    required: true
    enum:
      - "DX1A"
      - "DX1B"
      - "DX1C"
      - "DX1D"
      - "DX1E"
      - "DX1F"
      - "DX1G"

  sda-src:
    description: |
      Connects the I2C data line (USIC DX0 input) to a specific GPIO pin.
      The USIC DX0 input is a multiplexer which connects to different GPIO pins.
      Refer to the XMC4XXX reference manual for the GPIO pin/mux mappings.
    type: string
    required: true
    enum:
      - "DX0A"
      - "DX0B"
      - "DX0C"
      - "DX0D"
      - "DX0E"
      - "DX0F"
      - "DX0G"

  interrupts:
    required: true
    description: |
      IRQ number and priority to use for interrupt driven by I2C.
      Each USIC must use a certain interrupt range:
      USIC0 = [84, 89]
      USIC1 = [90, 95]
      USIC2 = [96, 101]

  pinctrl-0:
    description: |
      PORT pin configuration for SCL, SDA signals.
      We expect that the phandles will reference pinctrl nodes. These
      nodes will have a nodelabel that matches the Infineon SoC Pinctrl
      defines and have following
      format: i2c_<signal>_p<port>_<pin>_<peripheral inst>

      Examples:
        pinctrl-0 = <&i2c_scl_p5_2_u2c0 &i2c_sda_p5_0_u2c0>;

      The pins should set to open-drain and hwctrl should be disabled.

      &i2c_scl_p5_2_u2c0 {
          drive-strength = "strong-sharp-edge";
          drive-open-drain;
          hwctrl = "disabled";
      };

      In the above example, the pin is both an input and output (as is
      required for I2C setup). It is internally connected to both DX0
      and DOUT0 of USIC2 channel 0. (See XMC4700/4800 reference manual
      page 18-110, Figure 18-50 for more details).
      This limits the number of pins that can be used for the I2C module.

      To get around this pin limitation, it is possible to use pins
      that do not have this internal connection, and instead connect the
      pins externally on the board.
      For example, for the SDA line on USIC2 channel 0, P3.8 may be used
      for DOUT0 and P6.5 for DX0. These type of pinctrl nodes will have
      labels:
      i2c_sda_dout0_p3_8_u2c0 and i2c_sda_dx0_p6_5_u2c0.
      The generalized format is: i2c_<signal>_<type>_p<port>_<pin>_<peripheral inst>

      An example for SCL and SDA signals on the xmc4700:
      pinctrl-0 = <&i2c_sda_dout0_p3_8_u2c0 &i2c_sda_dx0_p6_5_u2c0
                  &i2c_scl_dout1_p3_9_u2c0 &i2c_scl_p5_2_u2c0>;

      Externally P3.8 should be connected to P6.5; P3.9 should be connected
      to P5.2.

      Note that any pins that do not have dout0/dx0 or dout1/dx1 can have either
      function. Thus node i2c_scl_p5_0_u2c0 can be both dout1 and dx1.

      For the pin configurations, the output pins (dout0 and dout1) should be set
      to open-drain while the input pins (dx0 and dx1) should not include this setting.

      &i2c_sda_dout0_p3_8_u2c0 {
          drive-strength = "strong-sharp-edge";
          drive-open-drain;
          hwctrl = "disabled";
      };

      &i2c_scl_dout1_p3_9_u2c0 {
          drive-strength = "strong-sharp-edge";
          drive-open-drain;
          hwctrl = "disabled";
      };

      &i2c_sda_dx0_p6_5_u2c0 {   /* will require USIC setting sda-src = DX0D */
          hwctrl = "disabled";
      };

      &i2c_scl_p5_2_u2c0 {  /* will require USIC scl-src = DX1A */
          hwctrl = "disabled";
      };

    required: true

  pinctrl-names:
    required: true
