# SPDX-License-Identifier: GPL-2.0-only

menu "Misc Linux/SPARC drivers"

config SUN_OPENPROMIO
	tristate "/dev/openprom device support"
	help
	  This driver provides user programs with an interface to the SPARC
	  PROM device tree. The driver implements a SunOS-compatible
	  interface and a NetBSD-compatible interface.

	  To compile this driver as a module, choose M here: the
	  module will be called openprom.

	  If unsure, say Y.

config OBP_FLASH
	tristate "OBP Flash Device support"
	depends on SPARC64
	help
	  The OpenBoot PROM on Ultra systems is flashable. If you want to be
	  able to upgrade the OBP firmware, say Y here.

config TADPOLE_TS102_UCTRL
	tristate "Tadpole TS102 Microcontroller support"
	help
	  Say Y here to directly support the TS102 Microcontroller interface
	  on the Tadpole Sparcbook 3.  This device handles power-management
	  events, and can also notice the attachment/detachment of external
	  monitors and mice.

config BBC_I2C
	tristate "UltraSPARC-III bootbus i2c controller driver"
	depends on PCI && SPARC64
	help
	  The BBC devices on the UltraSPARC III have two I2C controllers.  The
	  first I2C controller connects mainly to configuration PROMs (NVRAM,
	  CPU configuration, DIMM types, etc.).  The second I2C controller
	  connects to environmental control devices such as fans and
	  temperature sensors.  The second controller also connects to the
	  smartcard reader, if present.  Say Y to enable support for these.

config ENVCTRL
	tristate "SUNW, envctrl support"
	depends on PCI && SPARC64
	help
	  Kernel support for temperature and fan monitoring on Sun SME
	  machines.

	  To compile this driver as a module, choose M here: the
	  module will be called envctrl.

config DISPLAY7SEG
	tristate "7-Segment Display support"
	depends on PCI && SPARC64
	---help---
	  This is the driver for the 7-segment display and LED present on
	  Sun Microsystems CompactPCI models CP1400 and CP1500.

	  To compile this driver as a module, choose M here: the
	  module will be called display7seg.

	  If you do not have a CompactPCI model CP1400 or CP1500, or
	  another UltraSPARC-IIi-cEngine boardset with a 7-segment display,
	  you should say N to this option.

config ORACLE_DAX
	tristate "Oracle Data Analytics Accelerator"
	depends on SPARC64
	default m
	help
	 Driver for Oracle Data Analytics Accelerator, which is
	 a coprocessor that performs database operations in hardware.
	 It is available on M7 and M8 based systems only.

endmenu

