# Copyright (c) 2019 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

description: |
  Nordic nRF family TWIM (TWI master with EasyDMA).

  This binding can be used for nodes which can represent TWIM
  peripherals. A single SoC peripheral ID is often associated with
  multiple I2C peripherals, like a TWIM and a TWIS. You can choose
  TWIM by setting the node's "compatible" to "nordic,nrf-twim"
  and "status" to "okay", e.g. using an overlay file like this one:

      /* This is for TWIM0 -- change to "i2c1" for TWIM1, etc. */
      &i2c0 {
              compatible = "nordic,nrf-twim";
              status = "okay";
              /* other property settings can go here */
      };

  This works on any supported SoC, for all TWIM instances.

  Note: on nRF51 SoCs, use the "nordic,nrf-twi" binding instead.

compatible: "nordic,nrf-twim"

include: nordic,nrf-twi-common.yaml

properties:
    zephyr,concat-buf-size:
        type: int
        required: false
        description:
            If concatenation buffer size is set, then multiple messages in the
            same direction will be concatenated into single transfers as long
            as there is space in buffer and no restart or stop flag is set.

            This property must be provided when interacting with devices like
            the SSD1306 display that cannot tolerate a repeated start and
            address appearing on the bus between message fragments.  For many
            devices a concatenation buffer is not necessary.
