1 |
From dbb6c58b5a61d0c26a3da65ebb728727c305c3a1 Mon Sep 17 00:00:00 2001 |
2 |
From: Raju Rangoju <Raju.Rangoju@amd.com> |
3 |
Date: Mon, 20 Dec 2021 19:24:26 +0530 |
4 |
Subject: net: amd-xgbe: Add Support for Yellow Carp Ethernet device |
5 |
|
6 |
Yellow Carp Ethernet devices use the existing PCI ID but |
7 |
the window settings for the indirect PCS access have been |
8 |
altered. Add the check for Yellow Carp Ethernet devices to |
9 |
use the new register values. |
10 |
|
11 |
Co-developed-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> |
12 |
Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> |
13 |
Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com> |
14 |
Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
15 |
--- |
16 |
drivers/net/ethernet/amd/xgbe/xgbe-common.h | 2 ++ |
17 |
drivers/net/ethernet/amd/xgbe/xgbe-pci.c | 4 ++++ |
18 |
2 files changed, 6 insertions(+) |
19 |
|
20 |
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-common.h b/drivers/net/ethernet/amd/xgbe/xgbe-common.h |
21 |
index 533b8519ec352..0075939121d12 100644 |
22 |
--- a/drivers/net/ethernet/amd/xgbe/xgbe-common.h |
23 |
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-common.h |
24 |
@@ -898,6 +898,8 @@ |
25 |
#define PCS_V2_WINDOW_SELECT 0x9064 |
26 |
#define PCS_V2_RV_WINDOW_DEF 0x1060 |
27 |
#define PCS_V2_RV_WINDOW_SELECT 0x1064 |
28 |
+#define PCS_V2_YC_WINDOW_DEF 0x18060 |
29 |
+#define PCS_V2_YC_WINDOW_SELECT 0x18064 |
30 |
|
31 |
/* PCS register entry bit positions and sizes */ |
32 |
#define PCS_V2_WINDOW_DEF_OFFSET_INDEX 6 |
33 |
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c |
34 |
index 90cb55eb54665..0f930b17980ee 100644 |
35 |
--- a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c |
36 |
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c |
37 |
@@ -278,6 +278,10 @@ static int xgbe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) |
38 |
(rdev->vendor == PCI_VENDOR_ID_AMD) && (rdev->device == 0x15d0)) { |
39 |
pdata->xpcs_window_def_reg = PCS_V2_RV_WINDOW_DEF; |
40 |
pdata->xpcs_window_sel_reg = PCS_V2_RV_WINDOW_SELECT; |
41 |
+ } else if (rdev && (rdev->vendor == PCI_VENDOR_ID_AMD) && |
42 |
+ (rdev->device == 0x14b5)) { |
43 |
+ pdata->xpcs_window_def_reg = PCS_V2_YC_WINDOW_DEF; |
44 |
+ pdata->xpcs_window_sel_reg = PCS_V2_YC_WINDOW_SELECT; |
45 |
} else { |
46 |
pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF; |
47 |
pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT; |
48 |
-- |
49 |
cgit 1.2.3-1.el7 |
50 |
|
51 |
|
52 |
From 2d4a0b79dc6194048f7aa49c38d827cd5b7db6f1 Mon Sep 17 00:00:00 2001 |
53 |
From: Raju Rangoju <Raju.Rangoju@amd.com> |
54 |
Date: Mon, 20 Dec 2021 19:24:27 +0530 |
55 |
Subject: net: amd-xgbe: Alter the port speed bit range |
56 |
|
57 |
Newer generation Hardware uses the slightly different |
58 |
port speed bit widths, so alter the existing port speed |
59 |
bit range to extend support to the newer generation hardware |
60 |
while maintaining the backward compatibility with older |
61 |
generation hardware. |
62 |
|
63 |
The previously reserved bits are now being used which |
64 |
then requires the adjustment to the BIT values, e.g.: |
65 |
|
66 |
Before: |
67 |
PORT_PROPERTY_0[22:21] - Reserved |
68 |
PORT_PROPERTY_0[26:23] - Supported Speeds |
69 |
|
70 |
After: |
71 |
PORT_PROPERTY_0[21] - Reserved |
72 |
PORT_PROPERTY_0[26:22] - Supported Speeds |
73 |
|
74 |
To make this backwards compatible, the existing BIT |
75 |
definitions for the port speeds are incremented by one |
76 |
to maintain the original position. |
77 |
|
78 |
Co-developed-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> |
79 |
Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> |
80 |
Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com> |
81 |
Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
82 |
--- |
83 |
drivers/net/ethernet/amd/xgbe/xgbe-common.h | 4 ++-- |
84 |
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 8 ++++---- |
85 |
2 files changed, 6 insertions(+), 6 deletions(-) |
86 |
|
87 |
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-common.h b/drivers/net/ethernet/amd/xgbe/xgbe-common.h |
88 |
index 0075939121d12..466273b22f0a4 100644 |
89 |
--- a/drivers/net/ethernet/amd/xgbe/xgbe-common.h |
90 |
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-common.h |
91 |
@@ -1032,8 +1032,8 @@ |
92 |
#define XP_PROP_0_PORT_ID_WIDTH 8 |
93 |
#define XP_PROP_0_PORT_MODE_INDEX 8 |
94 |
#define XP_PROP_0_PORT_MODE_WIDTH 4 |
95 |
-#define XP_PROP_0_PORT_SPEEDS_INDEX 23 |
96 |
-#define XP_PROP_0_PORT_SPEEDS_WIDTH 4 |
97 |
+#define XP_PROP_0_PORT_SPEEDS_INDEX 22 |
98 |
+#define XP_PROP_0_PORT_SPEEDS_WIDTH 5 |
99 |
#define XP_PROP_1_MAX_RX_DMA_INDEX 24 |
100 |
#define XP_PROP_1_MAX_RX_DMA_WIDTH 5 |
101 |
#define XP_PROP_1_MAX_RX_QUEUES_INDEX 8 |
102 |
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c |
103 |
index 213769054391c..2156600641b6c 100644 |
104 |
--- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c |
105 |
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c |
106 |
@@ -124,10 +124,10 @@ |
107 |
#include "xgbe.h" |
108 |
#include "xgbe-common.h" |
109 |
|
110 |
-#define XGBE_PHY_PORT_SPEED_100 BIT(0) |
111 |
-#define XGBE_PHY_PORT_SPEED_1000 BIT(1) |
112 |
-#define XGBE_PHY_PORT_SPEED_2500 BIT(2) |
113 |
-#define XGBE_PHY_PORT_SPEED_10000 BIT(3) |
114 |
+#define XGBE_PHY_PORT_SPEED_100 BIT(1) |
115 |
+#define XGBE_PHY_PORT_SPEED_1000 BIT(2) |
116 |
+#define XGBE_PHY_PORT_SPEED_2500 BIT(3) |
117 |
+#define XGBE_PHY_PORT_SPEED_10000 BIT(4) |
118 |
|
119 |
#define XGBE_MUTEX_RELEASE 0x80000000 |
120 |
|
121 |
-- |
122 |
cgit 1.2.3-1.el7 |
123 |
|
124 |
|
125 |
From 6f60ecf233f9a8c6b75c08f4133865dbe0f1fdab Mon Sep 17 00:00:00 2001 |
126 |
From: Raju Rangoju <Raju.Rangoju@amd.com> |
127 |
Date: Mon, 20 Dec 2021 19:24:28 +0530 |
128 |
Subject: net: amd-xgbe: Disable the CDR workaround path for Yellow Carp |
129 |
Devices |
130 |
|
131 |
Yellow Carp Ethernet devices do not require |
132 |
Autonegotiation CDR workaround, hence disable the same. |
133 |
|
134 |
Co-developed-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> |
135 |
Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> |
136 |
Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com> |
137 |
Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
138 |
--- |
139 |
drivers/net/ethernet/amd/xgbe/xgbe-pci.c | 7 +++++-- |
140 |
1 file changed, 5 insertions(+), 2 deletions(-) |
141 |
|
142 |
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c |
143 |
index 0f930b17980ee..efdcf484a510f 100644 |
144 |
--- a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c |
145 |
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c |
146 |
@@ -282,6 +282,9 @@ static int xgbe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) |
147 |
(rdev->device == 0x14b5)) { |
148 |
pdata->xpcs_window_def_reg = PCS_V2_YC_WINDOW_DEF; |
149 |
pdata->xpcs_window_sel_reg = PCS_V2_YC_WINDOW_SELECT; |
150 |
+ |
151 |
+ /* Yellow Carp devices do not need cdr workaround */ |
152 |
+ pdata->vdata->an_cdr_workaround = 0; |
153 |
} else { |
154 |
pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF; |
155 |
pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT; |
156 |
@@ -464,7 +467,7 @@ static int __maybe_unused xgbe_pci_resume(struct device *dev) |
157 |
return ret; |
158 |
} |
159 |
|
160 |
-static const struct xgbe_version_data xgbe_v2a = { |
161 |
+static struct xgbe_version_data xgbe_v2a = { |
162 |
.init_function_ptrs_phy_impl = xgbe_init_function_ptrs_phy_v2, |
163 |
.xpcs_access = XGBE_XPCS_ACCESS_V2, |
164 |
.mmc_64bit = 1, |
165 |
@@ -479,7 +482,7 @@ static const struct xgbe_version_data xgbe_v2a = { |
166 |
.an_cdr_workaround = 1, |
167 |
}; |
168 |
|
169 |
-static const struct xgbe_version_data xgbe_v2b = { |
170 |
+static struct xgbe_version_data xgbe_v2b = { |
171 |
.init_function_ptrs_phy_impl = xgbe_init_function_ptrs_phy_v2, |
172 |
.xpcs_access = XGBE_XPCS_ACCESS_V2, |
173 |
.mmc_64bit = 1, |
174 |
-- |
175 |
cgit 1.2.3-1.el7 |
176 |
|