Hisilicon/D05: add cpld to get sfp status
This patch is for https://bugs.linaro.org/show_bug.cgi?id=2711.
When there is no optical module plugged in XGE port, the interfaces (ethX)
will show up/down information on console, such as below:
[root@localhost ~]# [ 676.034368] hns-nic HISI00C2:03 eth3: link up
[ 676.038840] IPv6: ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready
[ 677.058362] hns-nic HISI00C2:03 eth3: link down
[ 692.418366] hns-nic HISI00C2:03 eth3: link up
[ 693.442359] hns-nic HISI00C2:03 eth3: link down
[ 748.738365] hns-nic HISI00C2:03 eth3: link up
[ 749.762363] hns-nic HISI00C2:03 eth3: link down
This patch adds a logic to check whether the optical module is absent or not,
if absent, means the interface is down, otherwise check the mac link status.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Daode Huang <huangdaode@hisilicon.com>
Reviewed-by: Graeme Gregory <graeme.gregory@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
diff --git a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
index 14a905d..11c28ba 100644
--- a/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
+++ b/Chips/Hisilicon/Hi1616/D05AcpiTables/Dsdt/D05Hns.asl
@@ -174,6 +174,15 @@
H3L3, 16, // port5
, 16, //RESERVED
}
+ OperationRegion(HSFP, SystemMemory, 0x78000010, 0x100)
+ Field(HSFP, ByteAcc, NoLock, Preserve) {
+ Offset (0x2),
+ HSF0, 1, // port0
+ , 7, //RESERVED
+ Offset (0x6),
+ HSF1, 1, // port1
+ , 7, //RESERVED
+ }
Name (_HID, "HISI00B2")
Name (_CCA, 1) // Cache-coherent controller
Name (_CRS, ResourceTemplate (){
@@ -520,7 +529,21 @@
//Get sfp status
case (0x5)
{
+ Store (1, Local1) //set no sfp default
+ Store (DeRefOf (Index (Arg3, 0)), Local0)
+ If (LEqual (Local0, 0))
+ {
+ // port 0:
+ Store (HSF0, Local1)
+ }
+ ElseIf (LEqual (Local0, 1))
+ {
+ // port 1
+ Store (HSF1, Local1)
+ }
+ XOr (Local1, 1, local1)
+ Return (Local1)
}
}
}