# SPDX-License-Identifier: GPL-2.0
config FSL_ENETC
	tristate "ENETC PF driver"
	depends on PCI && PCI_MSI && (ARCH_LAYERSCAPE || COMPILE_TEST)
	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_ENETC_VF
	tristate "ENETC VF driver"
	depends on PCI && PCI_MSI && (ARCH_LAYERSCAPE || COMPILE_TEST)
	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_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_HW_TIMESTAMPING
	bool "ENETC hardware timestamping support"
	depends on FSL_ENETC || FSL_ENETC_VF
	help
	  Enable hardware timestamping support on the Ethernet packets
	  using the SO_TIMESTAMPING API. Because the RX BD ring dynamic
	  allocation has not been supported and it is too expensive to use
	  extended RX BDs if timestamping is not used, this option enables
	  extended RX BDs in order to support hardware timestamping.
