diff options
| author | David S. Miller <davem@davemloft.net> | 2014-07-30 21:47:51 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-07-30 21:47:51 -0400 |
| commit | 6b1bed793d69ca162eac7a2a2f4f629fc4d0d325 (patch) | |
| tree | e6bcfb2af38d8f8a7eabbbaaef6e5f004bd67dd6 | |
| parent | 80019d310f9fb4f8c9eeda0a5d76144ad3132fdf (diff) | |
| parent | fca2d99428473884e67ef8ea1586e58151ed6ac3 (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.txt | 6 | ||||
| -rw-r--r-- | Documentation/devicetree/bindings/net/amd-xgbe.txt | 17 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/Kconfig | 11 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/Makefile | 4 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-common.h | 93 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-dcb.c | 270 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-desc.c | 9 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 363 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 401 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-ethtool.c | 52 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-main.c | 36 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-ptp.c | 285 | ||||
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe.h | 77 | ||||
| -rw-r--r-- | drivers/net/phy/amd-xgbe-phy.c | 134 |
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 | ||
| 11 | Optional properties: | ||
| 12 | - amd,speed-set: Speed capabilities of the device | ||
| 13 | 0 - 1GbE and 10GbE (default) | ||
| 14 | 1 - 2.5GbE and 10GbE | ||
| 15 | |||
| 11 | Example: | 16 | Example: |
| 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 | ||
| 18 | Optional properties: | 22 | Optional 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 | ||
| 22 | Example: | 27 | Example: |
| 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 | ||
| 195 | config 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 | |||
| 194 | endif # NET_VENDOR_AMD | 205 | endif # 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 @@ | |||
| 1 | obj-$(CONFIG_AMD_XGBE) += amd-xgbe.o | 1 | obj-$(CONFIG_AMD_XGBE) += amd-xgbe.o |
| 2 | 2 | ||
| 3 | amd-xgbe-objs := xgbe-main.o xgbe-drv.o xgbe-dev.o \ | 3 | amd-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 | ||
| 7 | amd-xgbe-$(CONFIG_AMD_XGBE_DCB) += xgbe-dcb.o | ||
| 6 | amd-xgbe-$(CONFIG_DEBUG_FS) += xgbe-debugfs.o | 8 | amd-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 | ||
