From a2b8c1caebaab1aeaf2e63ee0284c5bff627a2a6 Mon Sep 17 00:00:00 2001 From: Zi Zhou Date: Tue, 15 Nov 2016 16:04:57 -0800 Subject: [PATCH 1/2] add onlp_sfpi_dev_read[write] api support --- .../onlp/builds/src/module/src/platform_lib.h | 1 + .../onlp/builds/src/module/src/sfpi.c | 71 ++++++++++++++++++- 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/platform_lib.h b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/platform_lib.h index 9a1257d6..9aa30654 100644 --- a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/platform_lib.h +++ b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/platform_lib.h @@ -52,6 +52,7 @@ #define SFP_HWMON_NODE(node) SFP_HWMON_PREFIX#node #define SFP_HWMON_DOM_PREFIX "/sys/bus/i2c/devices/3-0051/" #define SFP_HWMON_DOM_NODE(node) SFP_HWMON_DOM_PREFIX#node +#define SFP_BUS 3 int deviceNodeWriteInt(char *filename, int value, int data_len); int deviceNodeReadBinary(char *filename, char *buffer, int buf_size, int data_len); diff --git a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c index d4c084d9..aeb52151 100644 --- a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c +++ b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c @@ -30,7 +30,7 @@ #include #include #include - +#include #include "platform_lib.h" static int @@ -333,6 +333,75 @@ onlp_sfpi_dom_read(int port, uint8_t data[256]) return ONLP_STATUS_OK; } +int +onlp_sfpi_dev_readb(int port, uint8_t devaddr, uint8_t addr) +{ + int rc; + + if (set_active_port(port+1) != 0) { + AIM_LOG_INFO("Unable to set active port(%d)\r\n", port); + return ONLP_STATUS_E_INTERNAL; + } + + rc= onlp_i2c_readb(SFP_BUS, devaddr, addr, ONLP_I2C_F_FORCE); + + set_active_port(0); + + return rc; +} + +int +onlp_sfpi_dev_writeb(int port, uint8_t devaddr, uint8_t addr, uint8_t value) +{ + int rc; + + if (set_active_port(port+1) != 0) { + AIM_LOG_INFO("Unable to set active port(%d)\r\n", port); + return ONLP_STATUS_E_INTERNAL; + } + + rc = onlp_i2c_writeb(SFP_BUS, devaddr, addr, value, ONLP_I2C_F_FORCE); + + set_active_port(0); + + return rc; +} + +int +onlp_sfpi_dev_readw(int port, uint8_t devaddr, uint8_t addr) +{ + int rc; + + if (set_active_port(port+1) != 0) { + AIM_LOG_INFO("Unable to set active port(%d)\r\n", port); + return ONLP_STATUS_E_INTERNAL; + } + + rc= onlp_i2c_readw(SFP_BUS, devaddr, addr, ONLP_I2C_F_FORCE); + + set_active_port(0); + + return rc; +} + +int +onlp_sfpi_dev_writew(int port, uint8_t devaddr, uint8_t addr, uint16_t value) +{ + int rc; + + if (set_active_port(port+1) != 0) { + AIM_LOG_INFO("Unable to set active port(%d)\r\n", port); + return ONLP_STATUS_E_INTERNAL; + } + + rc = onlp_i2c_writew(SFP_BUS, devaddr, addr, value, ONLP_I2C_F_FORCE); + + set_active_port(0); + + return rc; + +} + int onlp_sfpi_control_set(int port, onlp_sfp_control_t control, int value) { From 28facefe44c8bdde7fdc34e9fc595e4341476952 Mon Sep 17 00:00:00 2001 From: Zi Zhou Date: Wed, 16 Nov 2016 10:48:59 -0800 Subject: [PATCH 2/2] minor fix --- .../onlp/builds/src/module/src/sfpi.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c index aeb52151..0d320d4e 100644 --- a/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c +++ b/packages/platforms/accton/powerpc/powerpc-accton-as5710-54x/onlp/builds/src/module/src/sfpi.c @@ -339,7 +339,7 @@ onlp_sfpi_dev_readb(int port, uint8_t devaddr, uint8_t addr) int rc; if (set_active_port(port+1) != 0) { - AIM_LOG_INFO("Unable to set active port(%d)\r\n", port); + AIM_LOG_ERROR("Unable to set active port(%d)\r\n", port); return ONLP_STATUS_E_INTERNAL; } @@ -356,7 +356,7 @@ onlp_sfpi_dev_writeb(int port, uint8_t devaddr, uint8_t addr, uint8_t value) int rc; if (set_active_port(port+1) != 0) { - AIM_LOG_INFO("Unable to set active port(%d)\r\n", port); + AIM_LOG_ERROR("Unable to set active port(%d)\r\n", port); return ONLP_STATUS_E_INTERNAL; } @@ -373,7 +373,7 @@ onlp_sfpi_dev_readw(int port, uint8_t devaddr, uint8_t addr) int rc; if (set_active_port(port+1) != 0) { - AIM_LOG_INFO("Unable to set active port(%d)\r\n", port); + AIM_LOG_ERROR("Unable to set active port(%d)\r\n", port); return ONLP_STATUS_E_INTERNAL; } @@ -390,7 +390,7 @@ onlp_sfpi_dev_writew(int port, uint8_t devaddr, uint8_t addr, uint16_t value) int rc; if (set_active_port(port+1) != 0) { - AIM_LOG_INFO("Unable to set active port(%d)\r\n", port); + AIM_LOG_ERROR("Unable to set active port(%d)\r\n", port); return ONLP_STATUS_E_INTERNAL; }