summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvan Lojewski <github@meklort.com>2020-12-13 13:49:20 -0700
committerGitHub <noreply@github.com>2020-12-13 13:49:20 -0700
commit6db21a05554530b98a3b99e5f9f315bc3748a8d1 (patch)
tree0cdb1bd092e522ec2934fd55c1aabfaacef27971
parent792c2cdc7dee1b36ffd3ef4f0e6a0fd852e988bd (diff)
downloadbcm5719-ortega-6db21a05554530b98a3b99e5f9f315bc3748a8d1.tar.gz
bcm5719-ortega-6db21a05554530b98a3b99e5f9f315bc3748a8d1.zip
network: Update EEE exit time based on speed per the tg3 driver. (#192)
-rw-r--r--include/APE_DEVICE.h8
-rw-r--r--include/bcm5719_DEVICE.h8
-rw-r--r--ipxact/DEVICE.xml15
-rw-r--r--libs/Network/ports.c13
4 files changed, 44 insertions, 0 deletions
diff --git a/include/APE_DEVICE.h b/include/APE_DEVICE.h
index 7e4f5e1..7b9286e 100644
--- a/include/APE_DEVICE.h
+++ b/include/APE_DEVICE.h
@@ -4951,6 +4951,10 @@ typedef register_container RegDEVICEEeeLinkIdleControl_t {
#define DEVICE_EEE_CONTROL_EXIT_TIME_MASK 0xffffu
#define GET_DEVICE_EEE_CONTROL_EXIT_TIME(__reg__) (((__reg__) & 0xffff) >> 0u)
#define SET_DEVICE_EEE_CONTROL_EXIT_TIME(__val__) (((__val__) << 0u) & 0xffffu)
+#define DEVICE_EEE_CONTROL_EXIT_TIME_16_5_US 0x19du
+#define DEVICE_EEE_CONTROL_EXIT_TIME_20_1_US 0x1f8u
+#define DEVICE_EEE_CONTROL_EXIT_TIME_36_US 0x384u
+
#define DEVICE_EEE_CONTROL_MINIMUM_ASSERT_SHIFT 16u
#define DEVICE_EEE_CONTROL_MINIMUM_ASSERT_MASK 0xffff0000u
#define GET_DEVICE_EEE_CONTROL_MINIMUM_ASSERT(__reg__) (((__reg__) & 0xffff0000) >> 16u)
@@ -4989,6 +4993,10 @@ typedef register_container RegDEVICEEeeControl_t {
r32.setName("EeeControl");
bits.ExitTime.setBaseRegister(&r32);
bits.ExitTime.setName("ExitTime");
+ bits.ExitTime.addEnum("16.5 us", 0x19d);
+ bits.ExitTime.addEnum("20.1 us", 0x1f8);
+ bits.ExitTime.addEnum("36 us", 0x384);
+
bits.MinimumAssert.setBaseRegister(&r32);
bits.MinimumAssert.setName("MinimumAssert");
}
diff --git a/include/bcm5719_DEVICE.h b/include/bcm5719_DEVICE.h
index 75b3241..6ea773e 100644
--- a/include/bcm5719_DEVICE.h
+++ b/include/bcm5719_DEVICE.h
@@ -4951,6 +4951,10 @@ typedef register_container RegDEVICEEeeLinkIdleControl_t {
#define DEVICE_EEE_CONTROL_EXIT_TIME_MASK 0xffffu
#define GET_DEVICE_EEE_CONTROL_EXIT_TIME(__reg__) (((__reg__) & 0xffff) >> 0u)
#define SET_DEVICE_EEE_CONTROL_EXIT_TIME(__val__) (((__val__) << 0u) & 0xffffu)
+#define DEVICE_EEE_CONTROL_EXIT_TIME_16_5_US 0x19du
+#define DEVICE_EEE_CONTROL_EXIT_TIME_20_1_US 0x1f8u
+#define DEVICE_EEE_CONTROL_EXIT_TIME_36_US 0x384u
+
#define DEVICE_EEE_CONTROL_MINIMUM_ASSERT_SHIFT 16u
#define DEVICE_EEE_CONTROL_MINIMUM_ASSERT_MASK 0xffff0000u
#define GET_DEVICE_EEE_CONTROL_MINIMUM_ASSERT(__reg__) (((__reg__) & 0xffff0000) >> 16u)
@@ -4989,6 +4993,10 @@ typedef register_container RegDEVICEEeeControl_t {
r32.setName("EeeControl");
bits.ExitTime.setBaseRegister(&r32);
bits.ExitTime.setName("ExitTime");
+ bits.ExitTime.addEnum("16.5 us", 0x19d);
+ bits.ExitTime.addEnum("20.1 us", 0x1f8);
+ bits.ExitTime.addEnum("36 us", 0x384);
+
bits.MinimumAssert.setBaseRegister(&r32);
bits.MinimumAssert.setName("MinimumAssert");
}
diff --git a/ipxact/DEVICE.xml b/ipxact/DEVICE.xml
index cfa839b..7c4de9f 100644
--- a/ipxact/DEVICE.xml
+++ b/ipxact/DEVICE.xml
@@ -2655,6 +2655,21 @@ Link Aware Power mode</ipxact:description>
<ipxact:bitOffset>0</ipxact:bitOffset>
<ipxact:bitWidth>16</ipxact:bitWidth>
<ipxact:access>read-write</ipxact:access>
+ <ipxact:enumeratedValues>
+ <!-- LINK: enumeratedValue: see 6.11.10, Enumeration values -->
+ <ipxact:enumeratedValue>
+ <ipxact:name>16.5 us</ipxact:name>
+ <ipxact:value>0x19d</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>20.1 us</ipxact:name>
+ <ipxact:value>0x1f8</ipxact:value>
+ </ipxact:enumeratedValue>
+ <ipxact:enumeratedValue>
+ <ipxact:name>36 us</ipxact:name>
+ <ipxact:value>0x384</ipxact:value>
+ </ipxact:enumeratedValue>
+ </ipxact:enumeratedValues>
</ipxact:field>
<ipxact:field>
<ipxact:name>Minimum Assert</ipxact:name>
diff --git a/libs/Network/ports.c b/libs/Network/ports.c
index 877d3ec..cf144bc 100644
--- a/libs/Network/ports.c
+++ b/libs/Network/ports.c
@@ -1120,6 +1120,19 @@ bool Network_updatePortState(NetworkPort_t *port)
txMacLengths.bits.IPGCRSLength = 0x2;
}
port->device->TransmitMacLengths = txMacLengths;
+
+ // Update EEE Control
+ RegDEVICEEeeControl_t eeectrl;
+ eeectrl.r32 = 0;
+ if (emacMode.bits.PortMode == DEVICE_EMAC_MODE_PORT_MODE_1000)
+ {
+ eeectrl.bits.ExitTime = DEVICE_EEE_CONTROL_EXIT_TIME_16_5_US;
+ }
+ else
+ {
+ eeectrl.bits.ExitTime = DEVICE_EEE_CONTROL_EXIT_TIME_36_US;
+ }
+ port->device->EeeControl.r32 = eeectrl.r32;
}
updated = true;
OpenPOWER on IntegriCloud