# Copyright (c) 2025 ITE Corporation. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0

config I2C_ITE_IT51XXX
	bool "ITE IT51XXX I2C driver"
	default y
	depends on DT_HAS_ITE_IT51XXX_I2C_ENABLED
	select PINCTRL
	select I2C_BITBANG
	help
	  Enable I2C support on IT51XXX series.
	  Supports nine hosts and three targets and each one able to located
	  at I2C interface0~8.
	  Three I2C targets on design A, B and C. Support 16 bytes dedicated
	  FIFO mode for read/write.
	  Supported Speeds: 50kHz, 100kHz, 400kHz and 1MHz.
	  This driver supports repeated start.

if I2C_ITE_IT51XXX

config I2C_IT51XXX_FIFO_MODE
	bool "IT51XXX I2C FIFO mode"
	default y
	help
	  This is an option to enable FIFO mode which can reduce the time
	  between each byte to improve the I2C bus clock stretching during
	  I2C transaction.
	  The I2C controller supports two 32-bytes FIFOs,
	  FIFO1 supports I2C 0, and FIFO2 supports other ports.
	  I2C FIFO mode of IT51XXX can support I2C APIs including:
	  i2c_write(), i2c_read(), i2c_burst_read.

endif # I2C_ITE_IT51XXX

if I2C_TARGET

config I2C_TARGET_IT51XXX_MAX_BUF_SIZE
	int "It is allowed to configure the dedicated FIFO size up to 256 bytes."
	default 256

config I2C_IT51XXX_MAX_SHARE_FIFO_SIZE
	int "It is allowed to configure the shared FIFO size up to 256 bytes."
	range 16 256
	default 256

config SOC_IT51XXX_CPU_IDLE_GATING
	default y
	help
	  This option is used when the I2C target shared FIFO property is enabled.

endif # I2C_TARGET
