# SPDX-License-Identifier: GPL-2.0
#
# Platform support for Mellanox hardware
#

menuconfig MELLANOX_PLATFORM
	bool "Platform support for Mellanox hardware"
	depends on X86 || ARM || ARM64 || COMPILE_TEST
	help
	  Say Y here to get to see options for platform support for
	  Mellanox systems. This option alone does not add any kernel code.

	  If you say N, all options in this submenu will be skipped and disabled.

if MELLANOX_PLATFORM

config MLXREG_HOTPLUG
	tristate "Mellanox platform hotplug driver support"
	depends on REGMAP
	depends on HWMON
	depends on I2C
	help
	  This driver handles hot-plug events for the power suppliers, power
	  cables and fans on the wide range Mellanox IB and Ethernet systems.

config MLXREG_IO
	tristate "Mellanox platform register access driver support"
	depends on REGMAP
	depends on HWMON
	help
	  This driver allows access to Mellanox programmable device register
	  space through sysfs interface. The sets of registers for sysfs access
	  are defined per system type bases and include the registers related
	  to system resets operation, system reset causes monitoring and some
	  kinds of mux selection.

config MLXREG_LC
	tristate "Mellanox line card platform driver support"
	depends on REGMAP
	depends on HWMON
	depends on I2C
	help
	  This driver provides support for the Mellanox MSN4800-XX line cards,
	  which are the part of MSN4800 Ethernet modular switch systems
	  providing a high performance switching solution for Enterprise Data
	  Centers (EDC) for building Ethernet based clusters, High-Performance
	  Computing (HPC) and embedded environments.

config MLXBF_TMFIFO
	tristate "Mellanox BlueField SoC TmFifo platform driver"
	depends on ARM64
	depends on ACPI
	depends on VIRTIO_CONSOLE && VIRTIO_NET
	help
	  Say y here to enable TmFifo support. The TmFifo driver provides
	  platform driver support for the TmFifo which supports console
	  and networking based on the virtio framework.

config MLXBF_BOOTCTL
	tristate "Mellanox BlueField Firmware Boot Control driver"
	depends on ARM64
	depends on ACPI
	help
	  The Mellanox BlueField firmware implements functionality to
	  request swapping the primary and alternate eMMC boot partition,
	  and to set up a watchdog that can undo that swap if the system
	  does not boot up correctly. This driver provides sysfs access
	  to the userspace tools, to be used in conjunction with the eMMC
	  device driver to do necessary initial swap of the boot partition.

config MLXBF_PMC
	tristate "Mellanox BlueField Performance Monitoring Counters driver"
	depends on ARM64
	depends on HWMON
	depends on ACPI
	help
	  Say y here to enable PMC support. The PMC driver provides access
	  to performance monitoring counters within various blocks in the
	  Mellanox BlueField SoC via a sysfs interface.

endif # MELLANOX_PLATFORM
