diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/modules/accton_as5835_54t_cpld.c b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/modules/accton_as5835_54t_cpld.c old mode 100644 new mode 100755 index ae773b4d82..9765fd4304 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/modules/accton_as5835_54t_cpld.c +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/modules/accton_as5835_54t_cpld.c @@ -225,7 +225,7 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, struct i2c_client *client = to_i2c_client(dev); struct as5835_54t_cpld_data *data = i2c_get_clientdata(client); int status = 0; - u8 reg = 0, mask = 0, revert = 0; + u8 reg = 0, mask = 0, invert = 0; switch (attr->index) { case MODULE_PRESENT_49 ... MODULE_PRESENT_54: @@ -239,13 +239,14 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, case MODULE_RESET_49 ... MODULE_RESET_54: reg = 0x15; mask = 0x1 << (attr->index - MODULE_RESET_49); + invert = 1; break; default: return 0; } if (attr->index >= MODULE_PRESENT_49 && attr->index <= MODULE_PRESENT_54) { - revert = 1; + invert = 1; } mutex_lock(&data->update_lock); @@ -255,7 +256,7 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, } mutex_unlock(&data->update_lock); - return sprintf(buf, "%d\n", revert ? !(status & mask) : !!(status & mask)); + return sprintf(buf, "%d\n", invert ? !(status & mask) : !!(status & mask)); exit: mutex_unlock(&data->update_lock); @@ -298,6 +299,9 @@ static ssize_t set_control(struct device *dev, struct device_attribute *da, } /* Update tx_disable/lpmode/reset status */ + if (attr->index >= MODULE_RESET_49 && attr->index <= MODULE_RESET_54) { + value = !value; + } if (value) { status |= mask; } diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py index a07ab1a1bc..88d5bc2546 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54t/utils/accton_as5835_54t_util.py @@ -291,6 +291,9 @@ def device_install(): print output if FORCE == 0: return status + for i in range(49, 55): #Set qsfp port to normal state + log_os_system("echo 0 > /sys/bus/i2c/devices/3-0062/module_reset_" + str(i), 1) + for i in range(0,len(sfp_map)): status, output =log_os_system("echo optoe1 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1) if status: diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/modules/accton_as5835_54x_cpld.c b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/modules/accton_as5835_54x_cpld.c old mode 100644 new mode 100755 index c9d4f1c31e..97b7d879f0 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/modules/accton_as5835_54x_cpld.c +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/modules/accton_as5835_54x_cpld.c @@ -678,7 +678,7 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, struct i2c_client *client = to_i2c_client(dev); struct as5835_54x_cpld_data *data = i2c_get_clientdata(client); int status = 0; - u8 reg = 0, mask = 0, revert = 0; + u8 reg = 0, mask = 0, invert = 0; switch (attr->index) { case MODULE_PRESENT_1 ... MODULE_PRESENT_8: @@ -804,13 +804,14 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, case MODULE_RESET_49 ... MODULE_RESET_54: reg = 0x15; mask = 0x1 << (attr->index - MODULE_RESET_49); + invert = 1; break; default: return 0; } if (attr->index >= MODULE_PRESENT_1 && attr->index <= MODULE_PRESENT_54) { - revert = 1; + invert = 1; } mutex_lock(&data->update_lock); @@ -820,7 +821,7 @@ static ssize_t show_status(struct device *dev, struct device_attribute *da, } mutex_unlock(&data->update_lock); - return sprintf(buf, "%d\n", revert ? !(status & mask) : !!(status & mask)); + return sprintf(buf, "%d\n", invert ? !(status & mask) : !!(status & mask)); exit: mutex_unlock(&data->update_lock); @@ -891,6 +892,9 @@ static ssize_t set_control(struct device *dev, struct device_attribute *da, } /* Update tx_disable/lpmode/reset status */ + if (attr->index >= MODULE_RESET_49 && attr->index <= MODULE_RESET_54) { + value = !value; + } if (value) { status |= mask; } diff --git a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py index b712b8c940..615bf6ea20 100755 --- a/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py +++ b/platform/broadcom/sonic-platform-modules-accton/as5835-54x/utils/accton_as5835_54x_util.py @@ -314,6 +314,10 @@ def device_install(): print output if FORCE == 0: return status + + for i in range(49, 55): #Set qsfp port to normal state + log_os_system("echo 0 > /sys/bus/i2c/devices/3-0062/module_reset_" + str(i), 1) + for i in range(0,len(sfp_map)): if i < qsfp_start: status, output =log_os_system("echo optoe2 0x50 > /sys/bus/i2c/devices/i2c-"+str(sfp_map[i])+"/new_device", 1)