From ee3505a380bbe38a47d8076f492b790aec251193 Mon Sep 17 00:00:00 2001 From: Tobias Jungel Date: Mon, 8 Oct 2018 11:16:12 +0200 Subject: [PATCH] dni_ag5648_sfp: read correct presence register --- .../modules/builds/dni_ag5648_sfp.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/platforms/delta/x86-64/x86-64-delta-ag5648/modules/builds/dni_ag5648_sfp.c b/packages/platforms/delta/x86-64/x86-64-delta-ag5648/modules/builds/dni_ag5648_sfp.c index 198084f1..f3f06153 100755 --- a/packages/platforms/delta/x86-64/x86-64-delta-ag5648/modules/builds/dni_ag5648_sfp.c +++ b/packages/platforms/delta/x86-64/x86-64-delta-ag5648/modules/builds/dni_ag5648_sfp.c @@ -308,8 +308,9 @@ static ssize_t for_status(struct device *dev, struct device_attribute *dev_attr, u8 cpld_addr_t = 0x00; int values[8] = {'\0'}; int bit_t = 0x00; - - switch (attr->index) + int offset = 0; + + switch (attr->index) { case SFP_IS_PRESENT: port_t = sfp_port_data; @@ -343,8 +344,9 @@ static ssize_t for_status(struct device *dev, struct device_attribute *dev_attr, { /* SFP Port 37-44 */ cpld_addr_t = MASTER_CPLD; reg_t = SFP_PRESENCE_6; - } - else if (port_t > 44 && port_t < 49) + offset = 4; + } + else if (port_t > 44 && port_t < 49) { /* SFP Port 45-48 */ cpld_addr_t = MASTER_CPLD; reg_t = SFP_PRESENCE_7; @@ -364,7 +366,7 @@ static ssize_t for_status(struct device *dev, struct device_attribute *dev_attr, cpld_addr_t, reg_t), 0); /* SWPLD QSFP module respond */ - bit_t = 1 << ((port_t - 1) % 8); + bit_t = 1 << ((port_t - offset - 1) % 8); values[0] = values[0] & bit_t; values[0] = values[0] / bit_t;