[PATCH] e1000: emulate additional dummy M88 registers

Dominic Chen posted 1 patch 4 years, 3 months ago
Test FreeBSD passed
Test docker-mingw@fedora passed
Test checkpatch passed
Test docker-quick@centos7 passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200121211458.62838-1-d.c.ddcc@gmail.com
Maintainers: Jason Wang <jasowang@redhat.com>
hw/net/e1000.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
[PATCH] e1000: emulate additional dummy M88 registers
Posted by Dominic Chen 4 years, 3 months ago
Certain drivers will write to the M88E1000_PHY_PAGE_SELECT and M88E1000_PHY_GEN_CONTROL
registers on the M88 PHY, so perform dummy reads/writes instead of returning errors.

Signed-off-by: Dominic Chen <d.c.ddcc@gmail.com>
---
 hw/net/e1000.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/hw/net/e1000.c b/hw/net/e1000.c
index a73f8d404e..52c5d80042 100644
--- a/hw/net/e1000.c
+++ b/hw/net/e1000.c
@@ -206,13 +206,14 @@ enum { NPHYWRITEOPS = ARRAY_SIZE(phyreg_writeops) };
 
 enum { PHY_R = 1, PHY_W = 2, PHY_RW = PHY_R | PHY_W };
 static const char phy_regcap[0x20] = {
-    [PHY_STATUS]      = PHY_R,     [M88E1000_EXT_PHY_SPEC_CTRL] = PHY_RW,
-    [PHY_ID1]         = PHY_R,     [M88E1000_PHY_SPEC_CTRL]     = PHY_RW,
-    [PHY_CTRL]        = PHY_RW,    [PHY_1000T_CTRL]             = PHY_RW,
-    [PHY_LP_ABILITY]  = PHY_R,     [PHY_1000T_STATUS]           = PHY_R,
-    [PHY_AUTONEG_ADV] = PHY_RW,    [M88E1000_RX_ERR_CNTR]       = PHY_R,
-    [PHY_ID2]         = PHY_R,     [M88E1000_PHY_SPEC_STATUS]   = PHY_R,
-    [PHY_AUTONEG_EXP] = PHY_R,
+    [PHY_CTRL]                 = PHY_RW, [PHY_1000T_CTRL]             = PHY_RW,
+    [PHY_STATUS]               = PHY_R,  [PHY_ID1]                    = PHY_R,
+    [PHY_ID2]                  = PHY_R,  [PHY_AUTONEG_ADV]            = PHY_RW,
+    [PHY_LP_ABILITY]           = PHY_R,  [PHY_AUTONEG_EXP]            = PHY_R,
+    [PHY_1000T_STATUS]         = PHY_R,  [M88E1000_PHY_SPEC_CTRL]     = PHY_RW,
+    [M88E1000_PHY_SPEC_STATUS] = PHY_R,  [M88E1000_EXT_PHY_SPEC_CTRL] = PHY_RW,
+    [M88E1000_RX_ERR_CNTR]     = PHY_R,  [M88E1000_PHY_PAGE_SELECT]   = PHY_RW,
+    [M88E1000_PHY_GEN_CONTROL] = PHY_RW,
 };
 
 /* PHY_ID2 documented in 8254x_GBe_SDM.pdf, pp. 250 */
-- 
2.17.1