# SPDX-License-Identifier: GPL-2.0
config FSL_ENETC_CORE
	tristate
	help
	  This module supports common functionality between the PF and VF
	  drivers for the NXP ENETC controller.

	  If compiled as module (M), the module name is fsl-enetc-core.

config FSL_ENETC
	tristate "ENETC PF driver"
	depends on PCI_MSI
	depends on TSN || TSN=n
	select MDIO_DEVRES
	select FSL_ENETC_CORE
	select FSL_ENETC_IERB
	select FSL_ENETC_MDIO
	select PHYLINK
	select PCS_LYNX
	select PCS_XPCS
	select DIMLIB
	select CRC_ITU_T
	help
	  This driver supports NXP ENETC gigabit ethernet controller PCIe
	  physical function (PF) devices, managing ENETC Ports at a privileged
	  level.

	  If compiled as module (M), the module name is fsl-enetc.

config FSL_ENETC4
	tristate "ENETC4 PF driver"
	depends on PCI_MSI && FSL_NETC_PRB_IERB
	select MDIO_DEVRES
	select FSL_ENETC_CORE
	select FSL_ENETC_MDIO
	select PHYLINK
	select PCS_LYNX
	select PCS_XPCS
	select DIMLIB
	select CRC_ITU_T
	select NET_DEVLINK
	help
	  This driver supports the revision 4 of NXP ENETC (Ethernet Controller)
	  PCIe physical function (PF) devices, managing ENETC Ports at a
	  privileged level.

	  If compiled as module (M), the module name is fsl-enetc4.

config FSL_ENETC_VF
	tristate "ENETC VF driver"
	depends on PCI_MSI
	select FSL_ENETC_CORE
	select FSL_ENETC_MDIO
	select PHYLINK
	select DIMLIB
	select CRC_ITU_T
	help
	  This driver supports NXP ENETC gigabit ethernet controller PCIe
	  virtual function (VF) devices enabled by the ENETC PF driver.

	  If compiled as module (M), the module name is fsl-enetc-vf.

config FSL_ENETC_IERB
	tristate "ENETC IERB driver"
	help
	  This driver configures the Integrated Endpoint Register Block on NXP
	  LS1028A.

	  If compiled as module (M), the module name is fsl-enetc-ierb.

config FSL_NETC_PRB_IERB
	tristate "NETC PRB and IERB driver"
	help
	  This driver configures Integrated Endpoint Register Block and Privileged
	  Register Block on NXP i.MX95. The IERB contains registers that are used
	  for pre-boot initialization, debug, and non-customer configuration. The
	  PRB controls global reset and global error handling for NETC.

	  If compiled as module (M), the module name is fsl-netc-prb-ierb.

config FSL_ENETC_MDIO
	tristate "ENETC MDIO driver"
	depends on PCI && MDIO_DEVRES && MDIO_BUS
	help
	  This driver supports NXP ENETC Central MDIO controller as a PCIe
	  physical function (PF) device.

	  If compiled as module (M), the module name is fsl-enetc-mdio.

config FSL_ENETC_PTP_CLOCK
	tristate "ENETC PTP clock driver"
	depends on PTP_1588_CLOCK_QORIQ && (FSL_ENETC || FSL_ENETC_VF)
	default y
	help
	  This driver adds support for using the ENETC 1588 timer
	  as a PTP clock. This clock is only useful if your PTP
	  programs are getting hardware time stamps on the PTP Ethernet
	  packets using the SO_TIMESTAMPING API.

	  If compiled as module (M), the module name is fsl-enetc-ptp.

config FSL_ENETC_QOS
	bool "ENETC hardware Time-sensitive Network support"
	depends on (FSL_ENETC || FSL_ENETC4 || FSL_ENETC_VF) && (NET_SCH_TAPRIO || NET_SCH_CBS)
	help
	  There are Time-Sensitive Network(TSN) capabilities(802.1Qbv/802.1Qci
	  /802.1Qbu etc.) supported by ENETC. These TSN capabilities can be set
	  enable/disable from user space via Qos commands(tc). In the kernel
	  side, it can be loaded by Qos driver. Currently, it is only support
	  taprio(802.1Qbv) and Credit Based Shaper(802.1Qbu).

config FSL_NTMP
	bool "NETC NTMP driver"
	depends on FSL_ENETC4 || FSL_ENETC_VF
	help
	  Some NETC functionality is controlled using control messages
	  sent to the hardware using BD ring interface with 32 bytes
	  descriptors similar to the packet Transmit BD ring used on
	  ENETC. This BD ring interface is referred to as the command
	  BD ring. This is used to configure functionality where the
	  underlying resources may be shared between different entities
	  or being too large to configure using direct registers.
	  Hence, a messaging protocol called the NETC Table Management
	  Protocol (NTMP) is provided for exchanging configuration and
	  management information between the software and the hardware
	  using the command BD ring interface.
