#
# Multifunction miscellaneous devices
#

menu "Multifunction device drivers"

config MISC
	bool "Enable Driver Model for Misc drivers"
	depends on DM
	help
	  Enable driver model for miscellaneous devices. This class is
	  used only for those do not fit other more general classes. A
	  set of generic read, write and ioctl methods may be used to
	  access the device.

config SPL_MISC
	bool "Enable Driver Model for Misc drivers in SPL"
	depends on SPL_DM
	help
	  Enable driver model for miscellaneous devices. This class is
	  used only for those do not fit other more general classes. A
	  set of generic read, write and ioctl methods may be used to
	  access the device.

config TPL_MISC
	bool "Enable Driver Model for Misc drivers in TPL"
	depends on TPL_DM
	help
	  Enable driver model for miscellaneous devices. This class is
	  used only for those do not fit other more general classes. A
	  set of generic read, write and ioctl methods may be used to
	  access the device.

config ALTERA_SYSID
	bool "Altera Sysid support"
	depends on MISC
	help
	  Select this to enable a sysid for Altera devices. Please find
	  details on the "Embedded Peripherals IP User Guide" of Altera.

config ATSHA204A
	bool "Support for Atmel ATSHA204A module"
	depends on MISC
	help
	   Enable support for I2C connected Atmel's ATSHA204A
	   CryptoAuthentication module found for example on the Turris Omnia
	   board.

config ROCKCHIP_EFUSE
        bool "Rockchip e-fuse support"
	depends on MISC
	help
	  Enable (read-only) access for the e-fuse block found in Rockchip
	  SoCs: accesses can either be made using byte addressing and a length
	  or through child-nodes that are generated based on the e-fuse map
	  retrieved from the DTS.

	  This driver currently supports the RK3399 only, but can easily be
	  extended (by porting the read function from the Linux kernel sources)
	  to support other recent Rockchip devices.

config ROCKCHIP_OTP
	bool "Rockchip OTP Support"
	depends on MISC
	help
	  Enable (read-only) access for the one-time-programmable memory block
	  found in Rockchip SoCs: accesses can either be made using byte
	  addressing and a length or through child-nodes that are generated
	  based on the e-fuse map retrieved from the DTS.

config VEXPRESS_CONFIG
	bool "Enable support for Arm Versatile Express config bus"
	depends on MISC
	help
	  If you say Y here, you will get support for accessing the
	  configuration bus on the Arm Versatile Express boards via
	  a sysreg driver.

config CMD_CROS_EC
	bool "Enable crosec command"
	depends on CROS_EC
	help
	  Enable command-line access to the Chrome OS EC (Embedded
	  Controller). This provides the 'crosec' command which has
	  a number of sub-commands for performing EC tasks such as
	  updating its flash, accessing a small saved context area
	  and talking to the I2C bus behind the EC (if there is one).

config CROS_EC
	bool "Enable Chrome OS EC"
	help
	  Enable access to the Chrome OS EC. This is a separate
	  microcontroller typically available on a SPI bus on Chromebooks. It
	  provides access to the keyboard, some internal storage and may
	  control access to the battery and main PMIC depending on the
	  device. You can use the 'crosec' command to access it.

config SPL_CROS_EC
	bool "Enable Chrome OS EC in SPL"
	depends on SPL
	help
	  Enable access to the Chrome OS EC in SPL. This is a separate
	  microcontroller typically available on a SPI bus on Chromebooks. It
	  provides access to the keyboard, some internal storage and may
	  control access to the battery and main PMIC depending on the
	  device. You can use the 'crosec' command to access it.

config TPL_CROS_EC
	bool "Enable Chrome OS EC in TPL"
	depends on TPL
	help
	  Enable access to the Chrome OS EC in TPL. This is a separate
	  microcontroller typically available on a SPI bus on Chromebooks. It
	  provides access to the keyboard, some internal storage and may
	  control access to the battery and main PMIC depending on the
	  device. You can use the 'crosec' command to access it.

config CROS_EC_I2C
	bool "Enable Chrome OS EC I2C driver"
	depends on CROS_EC
	help
	  Enable I2C access to the Chrome OS EC. This is used on older
	  ARM Chromebooks such as snow and spring before the standard bus
	  changed to SPI. The EC will accept commands across the I2C using
	  a special message protocol, and provide responses.

config CROS_EC_LPC
	bool "Enable Chrome OS EC LPC driver"
	depends on CROS_EC
	help
	  Enable I2C access to the Chrome OS EC. This is used on x86
	  Chromebooks such as link and falco. The keyboard is provided
	  through a legacy port interface, so on x86 machines the main
	  function of the EC is power and thermal management.

config SPL_CROS_EC_LPC
	bool "Enable Chrome OS EC LPC driver in SPL"
	depends on CROS_EC
	help
	  Enable I2C access to the Chrome OS EC. This is used on x86
	  Chromebooks such as link and falco. The keyboard is provided
	  through a legacy port interface, so on x86 machines the main
	  function of the EC is power and thermal management.

config TPL_CROS_EC_LPC
	bool "Enable Chrome OS EC LPC driver in TPL"
	depends on CROS_EC
	help
	  Enable I2C access to the Chrome OS EC. This is used on x86
	  Chromebooks such as link and falco. The keyboard is provided
	  through a legacy port interface, so on x86 machines the main
	  function of the EC is power and thermal management.

config CROS_EC_SANDBOX
	bool "Enable Chrome OS EC sandbox driver"
	depends on CROS_EC && SANDBOX
	help
	  Enable a sandbox emulation of the Chrome OS EC. This supports
	  keyboard (use the -l flag to enable the LCD), verified boot context,
	  EC flash read/write/erase support and a few other things. It is
	  enough to perform a Chrome OS verified boot on sandbox.

config SPL_CROS_EC_SANDBOX
	bool "Enable Chrome OS EC sandbox driver in SPL"
	depends on SPL_CROS_EC && SANDBOX
	help
	  Enable a sandbox emulation of the Chrome OS EC in SPL. This supports
	  keyboard (use the -l flag to enable the LCD), verified boot context,
	  EC flash read/write/erase support and a few other things. It is
	  enough to perform a Chrome OS verified boot on sandbox.

config TPL_CROS_EC_SANDBOX
	bool "Enable Chrome OS EC sandbox driver in TPL"
	depends on TPL_CROS_EC && SANDBOX
	help
	  Enable a sandbox emulation of the Chrome OS EC in TPL. This supports
	  keyboard (use the -l flag to enable the LCD), verified boot context,
	  EC flash read/write/erase support and a few other things. It is
	  enough to perform a Chrome OS verified boot on sandbox.

config CROS_EC_SPI
	bool "Enable Chrome OS EC SPI driver"
	depends on CROS_EC
	help
	  Enable SPI access to the Chrome OS EC. This is used on newer
	  ARM Chromebooks such as pit, pi and nyan-big. The SPI interface
	  provides a faster and more robust interface than I2C but the bugs
	  are less interesting.

config DS4510
	bool "Enable support for DS4510 CPU supervisor"
	help
	  Enable support for the Maxim DS4510 CPU supervisor. It has an
	  integrated 64-byte EEPROM, four programmable non-volatile I/O pins
	  and a configurable timer for the supervisor function. The device is
	  connected over I2C.

config FSL_SEC_MON
	bool "Enable FSL SEC_MON Driver"
	help
	  Freescale Security Monitor block is responsible for monitoring
	  system states.
	  Security Monitor can be transitioned on any security failures,
	  like software violations or hardware security violations.

config IRQ
	bool "Intel Interrupt controller"
	depends on X86 || SANDBOX
	help
	  This enables support for Intel interrupt controllers, including ITSS.
	  Some devices have extra features, such as Apollo Lake. The
	  device has its own uclass since there are several operations
	  involved.

config JZ4780_EFUSE
	bool "Ingenic JZ4780 eFUSE support"
	depends on ARCH_JZ47XX
	help
	  This selects support for the eFUSE on Ingenic JZ4780 SoCs.

config MXC_OCOTP
	bool "Enable MXC OCOTP Driver"
	depends on ARCH_IMX8M || ARCH_MX6 || ARCH_MX7 || ARCH_MX7ULP || ARCH_VF610
	default y
	help
	  If you say Y here, you will get support for the One Time
	  Programmable memory pages that are stored on the some
	  Freescale i.MX processors.

config NUVOTON_NCT6102D
	bool "Enable Nuvoton NCT6102D Super I/O driver"
	help
	  If you say Y here, you will get support for the Nuvoton
	  NCT6102D Super I/O driver. This can be used to enable or
	  disable the legacy UART, the watchdog or other devices
	  in the Nuvoton Super IO chips on X86 platforms.

config P2SB
	bool "Intel Primary-to-Sideband Bus"
	depends on X86 || SANDBOX
	help
	  This enables support for the Intel Primary-to-Sideband bus,
	  abbreviated to P2SB. The P2SB is used to access various peripherals
	  such as eSPI, GPIO, through memory-mapped I/O in a large chunk of PCI
	  space. The space is segmented into different channels and peripherals
	  are accessed by device-specific means within those channels. Devices
	  should be added in the device tree as subnodes of the P2SB. A
	  Peripheral Channel Register? (PCR) API is provided to access those
	  devices - see pcr_readl(), etc.

config SPL_P2SB
	bool "Intel Primary-to-Sideband Bus in SPL"
	depends on SPL && (X86 || SANDBOX)
	help
	  The Primary-to-Sideband bus is used to access various peripherals
	  through memory-mapped I/O in a large chunk of PCI space. The space is
	  segmented into different channels and peripherals are accessed by
	  device-specific means within those channels. Devices should be added
	  in the device tree as subnodes of the p2sb.

config TPL_P2SB
	bool "Intel Primary-to-Sideband Bus in TPL"
	depends on TPL && (X86 || SANDBOX)
	help
	  The Primary-to-Sideband bus is used to access various peripherals
	  through memory-mapped I/O in a large chunk of PCI space. The space is
	  segmented into different channels and peripherals are accessed by
	  device-specific means within those channels. Devices should be added
	  in the device tree as subnodes of the p2sb.

config PWRSEQ
	bool "Enable power-sequencing drivers"
	depends on DM
	help
	  Power-sequencing drivers provide support for controlling power for
	  devices. They are typically referenced by a phandle from another
	  device. When the device is started up, its power sequence can be
	  initiated.

config SPL_PWRSEQ
	bool "Enable power-sequencing drivers for SPL"
	depends on PWRSEQ
	help
	  Power-sequencing drivers provide support for controlling power for
	  devices. They are typically referenced by a phandle from another
	  device. When the device is started up, its power sequence can be
	  initiated.

config PCA9551_LED
	bool "Enable PCA9551 LED driver"
	help
	  Enable driver for PCA9551 LED controller. This controller
	  is connected via I2C. So I2C needs to be enabled.

config PCA9551_I2C_ADDR
	hex "I2C address of PCA9551 LED controller"
	depends on PCA9551_LED
	default 0x60
	help
	  The I2C address of the PCA9551 LED controller.

config STM32MP_FUSE
	bool "Enable STM32MP fuse wrapper providing the fuse API"
	depends on ARCH_STM32MP && MISC
	default y if CMD_FUSE
	help
	  If you say Y here, you will get support for the fuse API (OTP)
	  for STM32MP architecture.
	  This API is needed for CMD_FUSE.

config STM32_RCC
	bool "Enable RCC driver for the STM32 SoC's family"
	depends on (ARCH_STM32 || ARCH_STM32MP) && MISC
	help
	  Enable the STM32 RCC driver. The RCC block (Reset and Clock Control
	  block) is responsible of the management of the clock and reset
	  generation.
	  This driver is similar to an MFD driver in the Linux kernel.

config TEGRA_CAR
	bool "Enable support for the Tegra CAR driver"
	depends on TEGRA_NO_BPMP
	help
	  The Tegra CAR (Clock and Reset Controller) is a HW module that
	  controls almost all clocks and resets in a Tegra SoC.

config TEGRA186_BPMP
	bool "Enable support for the Tegra186 BPMP driver"
	depends on TEGRA186
	help
	  The Tegra BPMP (Boot and Power Management Processor) is a separate
	  auxiliary CPU embedded into Tegra to perform power management work,
	  and controls related features such as clocks, resets, power domains,
	  PMIC I2C bus, etc. This driver provides the core low-level
	  communication path by which feature-specific drivers (such as clock)
	  can make requests to the BPMP. This driver is similar to an MFD
	  driver in the Linux kernel.

config TWL4030_LED
	bool "Enable TWL4030 LED controller"
	help
	  Enable this to add support for the TWL4030 LED controller.

config WINBOND_W83627
	bool "Enable Winbond Super I/O driver"
	help
	  If you say Y here, you will get support for the Winbond
	  W83627 Super I/O driver. This can be used to enable the
	  legacy UART or other devices in the Winbond Super IO chips
	  on X86 platforms.

config QFW
	bool
	help
	  Hidden option to enable QEMU fw_cfg interface. This will be selected by
	  either CONFIG_CMD_QFW or CONFIG_GENERATE_ACPI_TABLE.

config I2C_EEPROM
	bool "Enable driver for generic I2C-attached EEPROMs"
	depends on MISC
	help
	  Enable a generic driver for EEPROMs attached via I2C.


config SPL_I2C_EEPROM
	bool "Enable driver for generic I2C-attached EEPROMs for SPL"
	depends on MISC && SPL && SPL_DM
	help
	  This option is an SPL-variant of the I2C_EEPROM option.
	  See the help of I2C_EEPROM for details.

config ZYNQ_GEM_I2C_MAC_OFFSET
	hex "Set the I2C MAC offset"
	default 0x0
	depends on DM_I2C
	help
	  Set the MAC offset for i2C.

if I2C_EEPROM

config SYS_I2C_EEPROM_ADDR
	hex "Chip address of the EEPROM device"
	default 0

config SYS_I2C_EEPROM_BUS
	int "I2C bus of the EEPROM device."
	default 0

config SYS_EEPROM_SIZE
	int "Size in bytes of the EEPROM device"
	default 256

config SYS_EEPROM_PAGE_WRITE_BITS
	int "Number of bits used to address bytes in a single page"
	default 0
	help
	  The EEPROM page size is 2^SYS_EEPROM_PAGE_WRITE_BITS.
	  A 64 byte page, for example would require six bits.

config SYS_EEPROM_PAGE_WRITE_DELAY_MS
	int "Number of milliseconds to delay between page writes"
	default 0

config SYS_I2C_EEPROM_ADDR_LEN
	int "Length in bytes of the EEPROM memory array address"
	default 1
	help
	  Note: This is NOT the chip address length!

config SYS_I2C_EEPROM_ADDR_OVERFLOW
	hex "EEPROM Address Overflow"
	default 0
	help
	  EEPROM chips that implement "address overflow" are ones
	  like Catalyst 24WC04/08/16 which has 9/10/11 bits of
	  address and the extra bits end up in the "chip address" bit
	  slots. This makes a 24WC08 (1Kbyte) chip look like four 256
	  byte chips.

endif

config GDSYS_RXAUI_CTRL
	bool "Enable gdsys RXAUI control driver"
	depends on MISC
	help
	  Support gdsys FPGA's RXAUI control.

config GDSYS_IOEP
	bool "Enable gdsys IOEP driver"
	depends on MISC
	help
	  Support gdsys FPGA's IO endpoint driver.

config MPC83XX_SERDES
	bool "Enable MPC83xx serdes driver"
	depends on MISC
	help
	  Support for serdes found on MPC83xx SoCs.

config FS_LOADER
	bool "Enable loader driver for file system"
	help
	  This is file system generic loader which can be used to load
	  the file image from the storage into target such as memory.

	  The consumer driver would then use this loader to program whatever,
	  ie. the FPGA device.

config GDSYS_SOC
	bool "Enable gdsys SOC driver"
	depends on MISC
	help
	  Support for gdsys IHS SOC, a simple bus associated with each gdsys
	  IHS (Integrated Hardware Systems) FPGA, which holds all devices whose
	  register maps are contained within the FPGA's register map.

config IHS_FPGA
	bool "Enable IHS FPGA driver"
	depends on MISC
	help
	  Support IHS (Integrated Hardware Systems) FPGA, the main FPGAs on
	  gdsys devices, which supply the majority of the functionality offered
	  by the devices. This driver supports both CON and CPU variants of the
	  devices, depending on the device tree entry.
config ESM_K3
	bool "Enable K3 ESM driver"
	depends on ARCH_K3
	help
	  Support ESM (Error Signaling Module) on TI K3 SoCs.

config MICROCHIP_FLEXCOM
	bool "Enable Microchip Flexcom driver"
	depends on MISC
	help
	  The Atmel Flexcom is just a wrapper which embeds a SPI controller,
	  an I2C controller and an USART.
	  Only one function can be used at a time and is chosen at boot time
	  according to the device tree.

config K3_AVS0
	depends on ARCH_K3 && SPL_DM_REGULATOR
	bool "AVS class 0 support for K3 devices"
	help
	  K3 devices have the optimized voltage values for the main voltage
	  domains stored in efuse within the VTM IP. This driver reads the
	  optimized voltage from the efuse, so that it can be programmed
	  to the PMIC on board.

config ESM_PMIC
	bool "Enable PMIC ESM driver"
	depends on DM_PMIC
	help
	  Support ESM (Error Signal Monitor) on PMIC devices. ESM is used
	  typically to reboot the board in error condition.

endmenu
