aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-07-30 21:47:51 -0400
committerDavid S. Miller <davem@davemloft.net>2014-07-30 21:47:51 -0400
commit6b1bed793d69ca162eac7a2a2f4f629fc4d0d325 (patch)
treee6bcfb2af38d8f8a7eabbbaaef6e5f004bd67dd6
parent80019d310f9fb4f8c9eeda0a5d76144ad3132fdf (diff)
parentfca2d99428473884e67ef8ea1586e58151ed6ac3 (diff)
Merge branch 'amd-xgbe-next'
Tom Lendacky says: ==================== amd-xgbe: AMD XGBE driver update 2014-07-25 This patch series is dependent on the following patch that was applied to the net tree and needs to be applied to the net-next tree: 332cfc823d18 - amd-xgbe: Fix error return code in xgbe_probe() The following series of patches includes fixes and new support in the driver. - Device bindings documentation update - Hardware timestamp support - 2.5GbE support changes - Fifo sizes based on active queues/rings - Phylib driver updates for: - Rate change completion check - KR training initiation - Auto-negotiation results - Traffic class support, including DCB support This patch series is based on net-next. Changes in V2: - Remove DBGPR(...., __func__) calls ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--Documentation/devicetree/bindings/net/amd-xgbe-phy.txt6
-rw-r--r--Documentation/devicetree/bindings/net/amd-xgbe.txt17
-rw-r--r--drivers/net/ethernet/amd/Kconfig11
-rw-r--r--drivers/net/ethernet/amd/xgbe/Makefile4
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-common.h93
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-dcb.c270
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-desc.c9
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-dev.c363
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-drv.c401
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c52
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-main.c36
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-ptp.c285
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe.h77
-rw-r--r--drivers/net/phy/amd-xgbe-phy.c134
14 files changed, 1631 insertions, 127 deletions
diff --git a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt
index d01ed63d3ebb..42409bfe04c4 100644
--- a/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt
+++ b/Documentation/devicetree/bindings/net/amd-xgbe-phy.txt
@@ -8,10 +8,16 @@ Required properties:
8 - SerDes integration registers (1/2) 8 - SerDes integration registers (1/2)
9 - SerDes integration registers (2/2) 9 - SerDes integration registers (2/2)
10 10
11Optional properties:
12- amd,speed-set: Speed capabilities of the device
13 0 - 1GbE and 10GbE (default)
14 1 - 2.5GbE and 10GbE
15
11Example: 16Example:
12 xgbe_phy@e1240800 { 17 xgbe_phy@e1240800 {
13 compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45"; 18 compatible = "amd,xgbe-phy-seattle-v1a", "ethernet-phy-ieee802.3-c45";
14 reg = <0 0xe1240800 0 0x00400>, 19 reg = <0 0xe1240800 0 0x00400>,
15 <0 0xe1250000 0 0x00060>, 20 <0 0xe1250000 0 0x00060>,
16 <0 0xe1250080 0 0x00004>; 21 <0 0xe1250080 0 0x00004>;
22 amd,speed-set = <0>;
17 }; 23 };
diff --git a/Documentation/devicetree/bindings/net/amd-xgbe.txt b/Documentation/devicetree/bindings/net/amd-xgbe.txt
index ea0c7908a3b8..41354f730beb 100644
--- a/Documentation/devicetree/bindings/net/amd-xgbe.txt
+++ b/Documentation/devicetree/bindings/net/amd-xgbe.txt
@@ -8,16 +8,21 @@ Required properties:
8- interrupt-parent: Should be the phandle for the interrupt controller 8- interrupt-parent: Should be the phandle for the interrupt controller
9 that services interrupts for this device 9 that services interrupts for this device
10- interrupts: Should contain the amd-xgbe interrupt 10- interrupts: Should contain the amd-xgbe interrupt
11- clocks: Should be the DMA clock for the amd-xgbe device (used for 11- clocks:
12 calculating the correct Rx interrupt watchdog timer value on a DMA 12 - DMA clock for the amd-xgbe device (used for calculating the
13 channel for coalescing) 13 correct Rx interrupt watchdog timer value on a DMA channel
14- clock-names: Should be the name of the DMA clock, "dma_clk" 14 for coalescing)
15 - PTP clock for the amd-xgbe device
16- clock-names: Should be the names of the clocks
17 - "dma_clk" for the DMA clock
18 - "ptp_clk" for the PTP clock
15- phy-handle: See ethernet.txt file in the same directory 19- phy-handle: See ethernet.txt file in the same directory
16- phy-mode: See ethernet.txt file in the same directory 20- phy-mode: See ethernet.txt file in the same directory
17 21
18Optional properties: 22Optional properties:
19- mac-address: mac address to be assigned to the device. Can be overridden 23- mac-address: mac address to be assigned to the device. Can be overridden
20 by UEFI. 24 by UEFI.
25- dma-coherent: Present if dma operations are coherent
21 26
22Example: 27Example:
23 xgbe@e0700000 { 28 xgbe@e0700000 {
@@ -26,8 +31,8 @@ Example:
26 <0 0xe0780000 0 0x80000>; 31 <0 0xe0780000 0 0x80000>;
27 interrupt-parent = <&gic>; 32 interrupt-parent = <&gic>;
28 interrupts = <0 325 4>; 33 interrupts = <0 325 4>;
29 clocks = <&xgbe_clk>; 34 clocks = <&xgbe_dma_clk>, <&xgbe_ptp_clk>;
30 clock-names = "dma_clk"; 35 clock-names = "dma_clk", "ptp_clk";
31 phy-handle = <&phy>; 36 phy-handle = <&phy>;
32 phy-mode = "xgmii"; 37 phy-mode = "xgmii";
33 mac-address = [ 02 a1 a2 a3 a4 a5 ]; 38 mac-address = [ 02 a1 a2 a3 a4 a5 ];
diff --git a/drivers/net/ethernet/amd/Kconfig b/drivers/net/ethernet/amd/Kconfig
index 6e314dbba805..8319c99331b0 100644
--- a/drivers/net/ethernet/amd/Kconfig
+++ b/drivers/net/ethernet/amd/Kconfig
@@ -184,6 +184,7 @@ config AMD_XGBE
184 select AMD_XGBE_PHY 184 select AMD_XGBE_PHY
185 select BITREVERSE 185 select BITREVERSE
186 select CRC32 186 select CRC32
187 select PTP_1588_CLOCK
187 ---help--- 188 ---help---
188 This driver supports the AMD 10GbE Ethernet device found on an 189 This driver supports the AMD 10GbE Ethernet device found on an
189 AMD SoC. 190 AMD SoC.
@@ -191,4 +192,14 @@ config AMD_XGBE
191 To compile this driver as a module, choose M here: the module 192 To compile this driver as a module, choose M here: the module
192 will be called amd-xgbe. 193 will be called amd-xgbe.
193 194
195config AMD_XGBE_DCB
196 bool "Data Center Bridging (DCB) support"
197 default n
198 depends on AMD_XGBE && DCB
199 ---help---
200 Say Y here to enable Data Center Bridging (DCB) support in the
201 driver.
202
203 If unsure, say N.
204
194endif # NET_VENDOR_AMD 205endif # NET_VENDOR_AMD
diff --git a/drivers/net/ethernet/amd/xgbe/Makefile b/drivers/net/ethernet/amd/xgbe/Makefile
index 26cf9af1642f..171a7e68048d 100644
--- a/drivers/net/ethernet/amd/xgbe/Makefile
+++ b/drivers/net/ethernet/amd/xgbe/Makefile
@@ -1,6 +1,8 @@
1obj-$(CONFIG_AMD_XGBE) += amd-xgbe.o 1obj-$(CONFIG_AMD_XGBE) += amd-xgbe.o
2 2
3amd-xgbe-objs := xgbe-main.o xgbe-drv.o xgbe-dev.o \ 3amd-xgbe-objs := xgbe-main.o xgbe-drv.o xgbe-dev.o \
4 xgbe-desc.o xgbe-ethtool.o xgbe-mdio.o 4 xgbe-desc.o xgbe-ethtool.o xgbe-mdio.o \
5 xgbe-ptp.o
5 6
7amd-xgbe-$(CONFIG_AMD_XGBE_DCB) += xgbe-dcb.o
6amd-xgbe-$(CONFIG_DEBUG_FS) += xgbe-debugfs.o 8amd-xgbe-$(CONFIG_DEBUG_FS) += xgbe-debugfs.o
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-common.h b/drivers/net/ethernet/amd/xgbe/xgbe-common.h
index 7ec80ac7043f..cc25a3a9e7cf 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-common.h
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-common.h
@@ -307,11 +307,24 @@
307#define MAC_MACA0LR 0x0304 307#define MAC_MACA0LR 0x0304
308#define MAC_MACA1HR 0x0308 308#define MAC_MACA1HR 0x0308
309#define MAC_MACA1LR 0x030c 309#define MAC_MACA1LR 0x030c
310#define MAC_TSCR 0x0d00
311#define MAC_SSIR 0x0d04
312#define MAC_STSR 0x0d08
313#define MAC_STNR 0x0d0c
314#define MAC_STSUR 0x0d10
315#define MAC_STNUR 0x0d14
316#define MAC_TSAR 0x0d18
317#define MAC_TSSR 0x0d20
318#define MAC_TXSNR 0x0d30
319#define MAC_TXSSR 0x0d34
310 320
311#define MAC_QTFCR_INC 4 321#define MAC_QTFCR_INC 4
312#define MAC_MACA_INC 4 322#define MAC_MACA_INC 4
313#define MAC_HTR_INC 4 323#define MAC_HTR_INC 4
314 324
325#define MAC_RQC2_INC 4
326#define MAC_RQC2_Q_PER_REG 4
327
315/* MAC register entry bit positions and sizes */ 328/* MAC register entry bit positions and sizes */
316#define MAC_HWF0R_ADDMACADRSEL_INDEX 18 329#define MAC_HWF0R_ADDMACADRSEL_INDEX 18
317#define MAC_HWF0R_ADDMACADRSEL_WIDTH 5 330#define MAC_HWF0R_ADDMACADRSEL_WIDTH 5
@@ -351,6 +364,8 @@
351#define MAC_HWF1R_HASHTBLSZ_WIDTH 3 364#define MAC_HWF1R_HASHTBLSZ_WIDTH 3
352#define MAC_HWF1R_L3L4FNUM_INDEX 27 365#define MAC_HWF1R_L3L4FNUM_INDEX 27
353#define MAC_HWF1R_L3L4FNUM_WIDTH 4 366#define MAC_HWF1R_L3L4FNUM_WIDTH 4
367#define MAC_HWF1R_NUMTC_INDEX 21
368#define MAC_HWF1R_NUMTC_WIDTH 3
354#define MAC_HWF1R_RSSEN_INDEX 20 369#define MAC_HWF1R_RSSEN_INDEX 20
355#define MAC_HWF1R_RSSEN_WIDTH 1 370#define MAC_HWF1R_RSSEN_WIDTH 1
356#define MAC_HWF1R_RXFIFOSIZE_INDEX 0