Skip to content

Commit 93a7653

Browse files
grygoriySdavem330
authored andcommitted
net: ethernet: ti: introduce am65x/j721e gigabit eth subsystem driver
The TI AM65x/J721E SoCs Gigabit Ethernet Switch subsystem (CPSW2G NUSS) has two ports - One Ethernet port (port 1) with selectable RGMII and RMII interfaces and an internal Communications Port Programming Interface (CPPI) port (Host port 0) and with ALE in between. It also contains - Management Data Input/Output (MDIO) interface for physical layer device (PHY) management; - Updated Address Lookup Engine (ALE) module; - (TBD) New version of Common platform time sync (CPTS) module. On the TI am65x/J721E SoCs CPSW NUSS Ethernet subsystem into device MCU domain named MCU_CPSW0. Host Port 0 CPPI Packet Streaming Interface interface supports 8 TX channels and one RX channels operating by TI am654 NAVSS Unified DMA Peripheral Root Complex (UDMA-P) controller. Introduced driver provides standard Linux net_device to user space and supports: - ifconfig up/down - MAC address configuration - ethtool operation: --driver --change --register-dump --negotiate phy --statistics --set-eee phy --show-ring --show-channels --set-channels - net_device ioctl mii-control - promisc mode - rx checksum offload for non-fragmented IPv4/IPv6 TCP/UDP packets. The CPSW NUSS can verify IPv4/IPv6 TCP/UDP packets checksum and fills csum information for each packet in psdata[2] word: - BIT(16) CHECKSUM_ERROR - indicates csum error - BIT(17) FRAGMENT - indicates fragmented packet - BIT(18) TCP_UDP_N - Indicates TCP packet was detected - BIT(19) IPV6_VALID, BIT(20) IPV4_VALID - indicates IPv6/IPv4 packet - BIT(15, 0) CHECKSUM_ADD - This is the value that was summed during the checksum computation. This value is FFFFh for non fragmented IPV4/6 UDP/TCP packets with no checksum error. RX csum offload can be disabled: ethtool -K <dev> rx-checksum on|off - tx checksum offload support for IPv4/IPv6 TCP/UDP packets (J721E only). TX csum HW offload can be enabled/disabled: ethtool -K <dev> tx-checksum-ip-generic on|off - multiq and switch between round robin/prio modes for cppi tx queues by using Netdev private flag "p0-rx-ptype-rrobin" to switch between Round Robin and Fixed priority modes: # ethtool --show-priv-flags eth0 Private flags for eth0: p0-rx-ptype-rrobin: on # ethtool --set-priv-flags eth0 p0-rx-ptype-rrobin off Number of TX DMA channels can be changed using "ethtool -L eth0 tx <N>". - GRO support: the napi_gro_receive() and napi_complete_done() are used. Signed-off-by: Grygorii Strashko <[email protected]> Tested-by: Murali Karicheri <[email protected]> Tested-by: Peter Ujfalusi <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent a9a495d commit 93a7653

File tree

7 files changed

+3030
-2
lines changed

7 files changed

+3030
-2
lines changed

drivers/net/ethernet/ti/Kconfig

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
config NET_VENDOR_TI
77
bool "Texas Instruments (TI) devices"
88
default y
9-
depends on PCI || EISA || AR7 || ARCH_DAVINCI || ARCH_OMAP2PLUS || ARCH_KEYSTONE
9+
depends on PCI || EISA || AR7 || ARCH_DAVINCI || ARCH_OMAP2PLUS || ARCH_KEYSTONE || ARCH_K3
1010
---help---
1111
If you have a network (Ethernet) card belonging to this class, say Y.
1212

@@ -31,7 +31,7 @@ config TI_DAVINCI_EMAC
3131

3232
config TI_DAVINCI_MDIO
3333
tristate "TI DaVinci MDIO Support"
34-
depends on ARCH_DAVINCI || ARCH_OMAP2PLUS || ARCH_KEYSTONE || COMPILE_TEST
34+
depends on ARCH_DAVINCI || ARCH_OMAP2PLUS || ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
3535
select PHYLIB
3636
---help---
3737
This driver supports TI's DaVinci MDIO module.
@@ -95,6 +95,21 @@ config TI_CPTS_MOD
9595
imply PTP_1588_CLOCK
9696
default m
9797

98+
config TI_K3_AM65_CPSW_NUSS
99+
tristate "TI K3 AM654x/J721E CPSW Ethernet driver"
100+
depends on ARCH_K3 && OF && TI_K3_UDMA_GLUE_LAYER
101+
select TI_DAVINCI_MDIO
102+
imply PHY_TI_GMII_SEL
103+
help
104+
This driver supports TI K3 AM654/J721E CPSW2G Ethernet SubSystem.
105+
The two-port Gigabit Ethernet MAC (MCU_CPSW0) subsystem provides
106+
Ethernet packet communication for the device: One Ethernet port
107+
(port 1) with selectable RGMII and RMII interfaces and an internal
108+
Communications Port Programming Interface (CPPI) port (port 0).
109+
110+
To compile this driver as a module, choose M here: the module
111+
will be called ti-am65-cpsw-nuss.
112+
98113
config TI_KEYSTONE_NETCP
99114
tristate "TI Keystone NETCP Core Support"
100115
select TI_DAVINCI_MDIO

drivers/net/ethernet/ti/Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,6 @@ obj-$(CONFIG_TI_KEYSTONE_NETCP) += keystone_netcp.o
2323
keystone_netcp-y := netcp_core.o cpsw_ale.o
2424
obj-$(CONFIG_TI_KEYSTONE_NETCP_ETHSS) += keystone_netcp_ethss.o
2525
keystone_netcp_ethss-y := netcp_ethss.o netcp_sgmii.o netcp_xgbepcsr.o cpsw_ale.o
26+
27+
obj-$(CONFIG_TI_K3_AM65_CPSW_NUSS) += ti-am65-cpsw-nuss.o
28+
ti-am65-cpsw-nuss-y := am65-cpsw-nuss.o cpsw_sl.o am65-cpsw-ethtool.o cpsw_ale.o k3-cppi-desc-pool.o

0 commit comments

Comments
 (0)