xref: /linux/drivers/net/ethernet/freescale/enetc/Kconfig (revision 8a5f956a9fb7d74fff681145082acfad5afa6bb8)
1# SPDX-License-Identifier: GPL-2.0
2config FSL_ENETC_CORE
3	tristate
4	select NXP_NETC_LIB if NXP_NTMP
5	help
6	  This module supports common functionality between the PF and VF
7	  drivers for the NXP ENETC controller.
8
9	  If compiled as module (M), the module name is fsl-enetc-core.
10
11config NXP_ENETC_PF_COMMON
12	tristate
13	help
14	  This module supports common functionality between drivers of
15	  different versions of NXP ENETC PF controllers.
16
17	  If compiled as module (M), the module name is nxp-enetc-pf-common.
18
19config NXP_NETC_LIB
20	tristate
21	help
22	  This module provides common functionalities for both ENETC and NETC
23	  Switch, such as NETC Table Management Protocol (NTMP) 2.0, common tc
24	  flower and debugfs interfaces and so on.
25
26config NXP_NTMP
27	bool
28
29config FSL_ENETC
30	tristate "ENETC PF driver"
31	depends on PTP_1588_CLOCK_OPTIONAL
32	depends on PCI_MSI
33	select FSL_ENETC_CORE
34	select FSL_ENETC_IERB
35	select FSL_ENETC_MDIO
36	select NXP_ENETC_PF_COMMON
37	select PHYLINK
38	select PCS_LYNX
39	select DIMLIB
40	help
41	  This driver supports NXP ENETC gigabit ethernet controller PCIe
42	  physical function (PF) devices, managing ENETC Ports at a privileged
43	  level.
44
45	  If compiled as module (M), the module name is fsl-enetc.
46
47config NXP_ENETC4
48	tristate "ENETC4 PF driver"
49	depends on PTP_1588_CLOCK_OPTIONAL
50	depends on PCI_MSI
51	select FSL_ENETC_CORE
52	select FSL_ENETC_MDIO
53	select NXP_ENETC_PF_COMMON
54	select NXP_NTMP
55	select PHYLINK
56	select DIMLIB
57	help
58	  This driver supports NXP ENETC devices with major revision 4. ENETC is
59	  as the NIC functionality in NETC, it supports virtualization/isolation
60	  based on PCIe Single Root IO Virtualization (SR-IOV) and a full range
61	  of TSN standards and NIC offload capabilities.
62
63	  If compiled as module (M), the module name is nxp-enetc4.
64
65config FSL_ENETC_VF
66	tristate "ENETC VF driver"
67	depends on PTP_1588_CLOCK_OPTIONAL
68	depends on PCI_MSI
69	select FSL_ENETC_CORE
70	select FSL_ENETC_MDIO
71	select PHYLINK
72	select DIMLIB
73	help
74	  This driver supports NXP ENETC gigabit ethernet controller PCIe
75	  virtual function (VF) devices enabled by the ENETC PF driver.
76
77	  If compiled as module (M), the module name is fsl-enetc-vf.
78
79config FSL_ENETC_IERB
80	tristate "ENETC IERB driver"
81	help
82	  This driver configures the Integrated Endpoint Register Block on NXP
83	  LS1028A.
84
85	  If compiled as module (M), the module name is fsl-enetc-ierb.
86
87config FSL_ENETC_MDIO
88	tristate "ENETC MDIO driver"
89	depends on PCI && PHYLIB
90	help
91	  This driver supports NXP ENETC Central MDIO controller as a PCIe
92	  physical function (PF) device.
93
94	  If compiled as module (M), the module name is fsl-enetc-mdio.
95
96config FSL_ENETC_PTP_CLOCK
97	tristate "ENETC PTP clock driver"
98	depends on PTP_1588_CLOCK_QORIQ && (FSL_ENETC || FSL_ENETC_VF)
99	default y
100	help
101	  This driver adds support for using the ENETC 1588 timer
102	  as a PTP clock. This clock is only useful if your PTP
103	  programs are getting hardware time stamps on the PTP Ethernet
104	  packets using the SO_TIMESTAMPING API.
105
106	  If compiled as module (M), the module name is fsl-enetc-ptp.
107
108config FSL_ENETC_QOS
109	bool "ENETC hardware Time-sensitive Network support"
110	depends on (FSL_ENETC || FSL_ENETC_VF) && (NET_SCH_TAPRIO || NET_SCH_CBS)
111	help
112	  There are Time-Sensitive Network(TSN) capabilities(802.1Qbv/802.1Qci
113	  /802.1Qbu etc.) supported by ENETC. These TSN capabilities can be set
114	  enable/disable from user space via Qos commands(tc). In the kernel
115	  side, it can be loaded by Qos driver. Currently, it is only support
116	  taprio(802.1Qbv) and Credit Based Shaper(802.1Qbu).
117
118config NXP_NETC_BLK_CTRL
119	tristate "NETC blocks control driver"
120	help
121	  This driver configures Integrated Endpoint Register Block (IERB) and
122	  Privileged Register Block (PRB) of NETC. For i.MX platforms, it also
123	  includes the configuration of NETCMIX block.
124	  The IERB contains registers that are used for pre-boot initialization,
125	  debug, and non-customer configuration. The PRB controls global reset
126	  and global error handling for NETC. The NETCMIX block is mainly used
127	  to set MII protocol and PCS protocol of the links, it also contains
128	  settings for some other functions.
129
130	  If compiled as module (M), the module name is nxp-netc-blk-ctrl.
131