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

menu "Qualcomm technologies inc. MSM specific device drivers"
	depends on ARCH_QCOM

config MSM_EXT_DISPLAY
	bool "MSM External Display Driver"
	depends on DRM && QGKI
	help
	  Enabling this option adds MSM External Display Driver.
	  External Display driver was added to support the communication
	  between external display driver and its counterparts.
	  This should be enabled to support audio & video over HDMI or
	  DP for hot pluggable sink devices.

config SPS
	tristate "SPS support"
	select GENERIC_ALLOCATOR
	help
	  The SPS (Smart Peripheral Switch) is a DMA engine.
	  It can move data in the following modes:
		1. Peripheral-to-Peripheral.
		2. Peripheral-to-Memory.
		3. Memory-to-Memory.

config SPS_SUPPORT_BAMDMA
	bool "SPS supports BAM DMA"
	depends on SPS
	help
	  The BAM-DMA is used for Memory-to-Memory transfers.
	  The main use cases is RPC between processors.
	  The BAM-DMA hardware has 2 registers sets:
		1. A BAM HW like all the peripherals.
		2. A DMA channel configuration (i.e. channel priority).

config SPS_SUPPORT_NDP_BAM
	bool "SPS supports NDP BAM"
	depends on SPS
	help
	  No-Data-Path BAM is used to improve BAM performance.
	  NDP BAMs enables peripherals with fast fabric connectivity
	  to do the actual data transfer themselves, instead of the
	  BAM.

config EP_PCIE
	bool "PCIe Endpoint mode support"
	select GENERIC_ALLOCATOR
	help
	  PCIe controller is in endpoint mode.
	  It supports the APIs to clients as a service layer, and allows
	  clients to enable/disable PCIe link, configure the address
	  mapping for the access to host memory, trigger wake interrupt
	  on host side to wake up host, and trigger MSI to host side.

config EP_PCIE_HW
	bool "PCIe Endpoint HW driver"
	depends on EP_PCIE
	help
	  PCIe endpoint HW specific implementation.
	  It supports:
		1. link training with Root Complex.
		2. Address mapping.
		3. Sideband signaling.
		4. Power management.

config MSM_MHI_DEV
        tristate "Modem Device Interface Driver"
	depends on EP_PCIE && IPA3
        help
          This kernel module is used to interact with PCIe Root complex
          supporting MHI protocol. MHI is a data transmission protocol
          involving communication between a host and a device over shared
          memory. MHI interacts with the IPA for supporting transfers
	  on the HW accelerated channels between Host and device.

config IPA3
	tristate "IPA3 support"
	depends on NET
	help
	  This framework supports the Internet Packet Accelerator (IPA3) core.
	  IPA is a programmable protocol processor HW block.
	  It is designed to support generic HW processing of UL/DL IP packets
	  for various use cases independent of radio technology.
	  The driver support client connection and configuration
	  for the IPA core.
	  Kernel and user-space processes can call the IPA driver
	  to configure IPA core.

config IPA_WDI_UNIFIED_API
	bool "IPA WDI unified API support"
	depends on IPA3
	help
	  This driver supports IPA WDI unified API.
	  WDI is the interface between IPA micro controller and WLAN chipset.
	  It is designed to support IPA HW accelerating path for WLAN use case.
	  The IPA WDI unified API supports all WDI versions through a unified
	  interface.

config VETH_IPA
        tristate "VETH_IPA Network Interface Driver Support"
        depends on MSM_HAB
        help
          Enables EMAC Ethernet Front end driver.
          Register net device and configure VETH0 iface. This driver will
          configure EMAC IPA offload channels with help of a backend driver
          running on GVM Host.

config USB_BAM
	tristate "USB BAM Driver"
	depends on SPS && USB_GADGET
	help
	  Enabling this option adds USB BAM Driver.
	  USB BAM driver was added to supports Smart Peripheral Subsystem
	  Peripheral-to-Peripheral transfers between the USB and other
	  peripheral.

config MSM_GENI_SE
	tristate "QCOM GENI Serial Engine Driver"
	help
	  This module is used to interact with GENI based Serial Engines on
	  Qualcomm Technologies, Inc. Universal Peripheral(QUPv3). This
	  module is used to configure and read the configuration from the
	  Serial Engines.

config QPNP_REVID
	tristate "QPNP Revision ID Peripheral"
	depends on SPMI
	help
	  Say 'y' here to include support for the Qualcomm Technologies, Inc.
	  QPNP REVID peripheral. REVID prints out the PMIC type and revision
	  numbers in the kernel log along with the PMIC option status. The PMIC
	  type is mapped to a QTI chip part number and logged as well.

config MSM_11AD
	tristate "Platform driver for 11ad chip"
	depends on PCI
	depends on PCI_MSM
	help
	  This module adds required platform support for wireless adapter based on
	  Qualcomm Technologies, Inc. 11ad chip, integrated into MSM platform

	  If you choose to build it as a module, it will be called
	  msm_11ad_proxy.

# Ethernet configuration options

config IOSS
	tristate "IPA Offload Sub-system v2"
	depends on IPA3
	help
	  IPA Offload Sub-system is a generic kernel framework that enables a
	  third-party ethernet driver to attach an ethernet peripheral to IPA
	  for hardware offloading of tethered data paths. The framework
	  provides a generic API interface that ethernet drivers can use to
	  register their hardware functionality with the sub-system in order
	  to enable IPA offload.

	  To compile this driver as a module, choose M here. Module will be
	  called ioss.

config R8125
	tristate "Realtek R8125 driver"
	depends on PCI
	help
	  This is a 2.5Gbps ethernet driver for the PCI network cards based on
	  the Realtek 8125B chip. If you have one of those, say Y here.

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

config R8125_IOSS
	tristate "Realtek R8125 IOSS glue driver"
	depends on R8125
	depends on IOSS
	help
	  Enables IPA Ethernet Offload path on Realtek R8125 NIC. It is
	  designed to support generic HW processing of UL/DL IP packets for
	  various use cases to reduce the CPU load during E2E IP traffic.

	  To compile this driver as a module, choose M here. Module will be
	  called r8125_ioss. If unsure, say N.

config AQFWD_IOSS
	tristate "AQC glue driver for IOSS v2"
	depends on AQFWD
	depends on IOSS
	select ATLFWD_FWD
	help
	  Enables IPA Ethernet Offload path on atlantic-fwd driver. It is
	  designed to support generic HW processing of UL/DL IP packets for
	  various use cases to reduce the cpu load during E2E IP traffic.
	  When this is disabled, atlantic-fwd driver switches to embedded software path.

	  To compile this driver as a module, choose M here. Module will be called
	  aqc_ioss.
	  If unsure, say N.

endmenu
