# Kconfig - ILI9340 display driver configuration options

#
# Copyright (c) 2017 dXplore
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig ILI9340
	bool "ILI9340 display driver"
	depends on SPI
	help
	Enable driver for ILI9340 display driver.

if ILI9340

config ILI9340_DEV_NAME
	string "ILI9340 device name"
	default "ILI9340"

config ILI9340_SPI_DEV_NAME
	string "SPI master where ILI9340 is connected"
	default "SPI_0"
	help
	Specify the device name of the SPI master device to which ILI9340 is
	connected.

config ILI9340_SPI_SLAVE_NUMBER
	int "SPI Slave number where ILI9340 is connected"
	default 0
	help
	The number of the slave on the host controller to which ILI9340 is
	connected.

config ILI9340_SPI_FREQ
	int "SPI Frequency"
	default 15151515
	help
	Frequency to be used to communicate with the ILI9340.

config SYS_LOG_ILI9340_LEVEL
	int "ILI9340 Sys Log level"
	depends on SYS_LOG
	default 0
	range 0 4
	help
	Sets log level for ILI9340 display driver.
	Levels are:
	- 0 OFF: do not write
	- 1 ERROR: only write SYS_LOG_ERR
	- 2 WARNING: write SYS_LOG_WRN in addition to previous level
	- 3 INFO: write SYS_LOG_INF in addition to previous levels
	- 4 DEBUG: write SYS_LOG_DBG in addition to previous levels

config ILI9340_RESET_GPIO_PORT_NAME
	string "Reset GPIO controller port name"
	default "GPIO_0"
	help
	GPIO controller where the interrupt pin is attached to.

config ILI9340_RESET_PIN
	int "ILI9340 Reset pin"
	default 0
	help
	ILI9340 reset pin.

config ILI9340_CMD_DATA_GPIO_PORT_NAME
	string "Command/Data GPIO controller port name"
	default "GPIO_0"
	help
	GPIO controller where the command/data pin is attached to.

config ILI9340_CMD_DATA_PIN
	int "ILI9340 command/data pin"
	default 1
	help
	ILI9340 command data pin.

config ILI9340_GPIO_CS
	bool "Use GPIO pin for chip select"
	help
	Use GPIO pin for chips select.

if ILI9340_GPIO_CS

config ILI9340_CS_GPIO_PORT_NAME
	string "Chip select GPIO controller port name"
	default "GPIO_0"
	help
	GPIO controller where the chip select pin is attached to.

config ILI9340_CS_GPIO_PIN
	int "ILI9340 GPIO chip select"
	default 1
	help
	ILI9340 GPIO chip select pin.

endif #ILI9340_GPIO_CS

choice
	prompt "LCD"
	default ILI9340_LCD_ADAFRUIT_1480
	help
	Specify the type of LCD connected to the ILI9340 display controller.

config ILI9340_LCD_ADAFRUIT_1480
	bool "Adafruit 2.2\" TFT 1480"

endchoice

endif #ILI9340
