# SPDX-License-Identifier: GPL-2.0-only
#
# Misc strange devices
#

menu "Misc devices"

config JTAG
	tristate "JTAG Bitbang driver"
	depends on GENERIC_GPIO
	help
	  Controls JTAG chains connected to I/O pins

config SRAM
	bool "Generic SRAM driver"
	help
	  This driver adds support for memory mapped SRAM.

config STATE_DRV
	tristate "state driver"
	depends on OFDEVICE
	depends on STATE

config DEV_MEM
        bool "Generic memory I/O device (/dev/mem)"

config DEV_PORT
	bool "Generic port I/O device (/dev/port)"
	depends on X86 || SANDBOX || COMPILE_TEST

config UBOOTVAR
	bool "U-Boot environment storage"
	depends on OFTREE
	help
	  This driver exposes U-Boot environment variable storage as a
	  single mmap-able device, hiding various low-level details
	  such as:
	      - Preamble format differences
	      - Read/write logic in presence of redundant partition

	  While it can be used standalone, it is best when coupled
	  with corresponding filesystem driver.

config STARFIVE_PWRSEQ
	bool "StarFive power sequencing driver"
	depends on SOC_STARFIVE
	help
	  This driver sets up a number of StarFive peripherals not matched
	  by more specific barebox drivers by deasserting reset lines, muxing
	  pins and/or enabling clocks. Peripherals set up by this can then
	  be accessed over /dev/mem or used from kernels which still depend
	  on bootloader for initialization.

config STORAGE_BY_ALIAS
	bool "storage by alias"
	depends on OFDEVICE
	help
	  This adds a driver which matches device tree nodes corresponding
	  to a barebox cdev aliases.

	  Following compatibles are supported:

	  - "barebox,bootsource"

	  Alias the device barebox was booted from. This is useful to have
	  barebox-state come from the same device as barebox itself.

	  - "barebox,storage-by-uuid"

	  Look for a storage device matching the given DISKUUID and when found
	  registers a new cdev for the device.

	  This driver solved a very specific problem. On EFI the storage devices
	  are not connected to any device tree node. barebox-state however expects
	  a node to use as its backend. The obvious solution would be to create
	  a partition with a specific partuuid and use that for state, in our
	  special usecase though the storage device is partitioned with a MBR
	  which doesn't have any space left to create a new partition. As this
	  driver parses the of partition binding we can use that to create
	  a partition in an unallocated are of the disk which is then used for
	  state.

	  This driver has the problem that it depends on storage devices which
	  are not described in the device tree. This means it cannot work with
	  deep probe. This is not a problem on EFI though. It's a special purpose
	  driver, it's not recommended for general use.

endmenu
