#
# Copyright (c) 2017 Linaro Ltd.
#
# SPDX-License-Identifier: Apache-2.0
#

config I2C_GPIO
	bool "GPIO bit banging I2C support"
	depends on I2C
	select I2C_BITBANG
	default n
	help
	  Enable software driven (bit banging) I2C support using GPIO pins

# ---------- Port 0 ----------

config I2C_GPIO_0
	bool "Enable GPIO Bit Bang I2C device 0"
	default n
	depends on I2C_GPIO
	help
	  This tells the driver to configure the I2C device at boot, depending
	  on the additional configuration options below.

config I2C_GPIO_0_NAME
	string "GPIO Bit Bang I2C device 0 device name"
	default "I2C_0"
	depends on I2C_GPIO_0
	help
	  This is the device name for the I2C device, and is included in the
	  device struct.

config I2C_GPIO_0_GPIO
	string "Bit Bang I2C device 0 GPIO name"
	depends on I2C_GPIO_0
	help
	  This is the name of the GPIO device that controls the I2C lines.

config I2C_GPIO_0_SCL_PIN
	int "Bit Bang I2C device 0 GPIO pin number for SCL"
	depends on I2C_GPIO_0
	help
	  This is the GPIO pin number for the I2S SCL line

config I2C_GPIO_0_SDA_PIN
	int "Bit Bang I2C device 0 GPIO pin number for SDA"
	depends on I2C_GPIO_0
	help
	  This is the GPIO pin number for the I2S SDA line

# ---------- Port 1 ----------

config I2C_GPIO_1
	bool "Enable GPIO Bit Bang I2C device 1"
	default n
	depends on I2C_GPIO
	help
	  This tells the driver to configure the I2C device at boot, depending
	  on the additional configuration options below.

config I2C_GPIO_1_NAME
	string "Bit Bang I2C device 1 device name"
	default "I2C_1"
	depends on I2C_GPIO_1
	help
	  This is the device name for the I2C device, and is included in the
	  device struct.

config I2C_GPIO_1_GPIO
	string "Bit Bang I2C device 1 GPIO name"
	depends on I2C_GPIO_1
	help
	  This is the name of the GPIO device that controls the I2C lines.

config I2C_GPIO_1_SCL_PIN
	int "Bit Bang I2C device 1 GPIO pin number for SCL"
	depends on I2C_GPIO_1
	help
	  This is the GPIO pin number for the I2S SCL line

config I2C_GPIO_1_SDA_PIN
	int "Bit Bang I2C device 1 GPIO pin number for SDA"
	depends on I2C_GPIO_1
	help
	  This is the GPIO pin number for the I2S SDA line

# ---------- Port 2 ----------

config I2C_GPIO_2
	bool "Enable GPIO Bit Bang I2C device 2"
	default n
	depends on I2C_GPIO
	help
	  This tells the driver to configure the I2C device at boot, depending
	  on the additional configuration options below.

config I2C_GPIO_2_NAME
	string "Bit Bang I2C device 2 device name"
	default "I2C_2"
	depends on I2C_GPIO_2
	help
	  This is the device name for the I2C device, and is included in the
	  device struct.

config I2C_GPIO_2_GPIO
	string "Bit Bang I2C device 2 GPIO name"
	depends on I2C_GPIO_2
	help
	  This is the name of the GPIO device that controls the I2C lines.

config I2C_GPIO_2_SCL_PIN
	int "Bit Bang I2C device 2 GPIO pin number for SCL"
	depends on I2C_GPIO_2
	help
	  This is the GPIO pin number for the I2S SCL line

config I2C_GPIO_2_SDA_PIN
	int "Bit Bang I2C device 2 GPIO pin number for SDA"
	depends on I2C_GPIO_2
	help
	  This is the GPIO pin number for the I2S SDA line

# ---------- Port 3 ----------

config I2C_GPIO_3
	bool "Enable GPIO Bit Bang I2C device 3"
	default n
	depends on I2C_GPIO
	help
	  This tells the driver to configure the I2C device at boot, depending
	  on the additional configuration options below.

config I2C_GPIO_3_NAME
	string "Bit Bang I2C device 3 device name"
	default "I2C_3"
	depends on I2C_GPIO_3
	help
	  This is the device name for the I2C device, and is included in the
	  device struct.

config I2C_GPIO_3_GPIO
	string "Bit Bang I2C device 3 GPIO name"
	depends on I2C_GPIO_3
	help
	  This is the name of the GPIO device that controls the I2C lines.

config I2C_GPIO_3_SCL_PIN
	int "Bit Bang I2C device 3 GPIO pin number for SCL"
	depends on I2C_GPIO_3
	help
	  This is the GPIO pin number for the I2S SCL line

config I2C_GPIO_3_SDA_PIN
	int "Bit Bang I2C device 3 GPIO pin number for SDA"
	depends on I2C_GPIO_3
	help
	  This is the GPIO pin number for the I2S SDA line

