From dfe91c5bae8cbc62000ea6675339fbac372b10e6 Mon Sep 17 00:00:00 2001 From: roy_lee Date: Mon, 27 Aug 2018 07:26:56 +0000 Subject: [PATCH 1/4] [as5916_54xm]Move LM75 from 0x48 to 0x4C for R0B board or later --- .../onlp/builds/src/module/src/thermali.c | 4 ++-- .../r0/src/python/x86_64_accton_as5916_54xm_r0/__init__.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c index 742a4dd1..fa5277cf 100644 --- a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c +++ b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c @@ -38,7 +38,7 @@ static char* devfiles__[] = /* must map with onlp_thermal_id */ { NULL, NULL, /* CPU_CORE files */ - "/sys/bus/i2c/devices/10-0048*temp1_input", + "/sys/bus/i2c/devices/10-004c*temp1_input", "/sys/bus/i2c/devices/10-0049*temp1_input", "/sys/bus/i2c/devices/10-004a*temp1_input", "/sys/bus/i2c/devices/10-004b*temp1_input", @@ -62,7 +62,7 @@ static onlp_thermal_info_t linfo[] = { ONLP_THERMAL_STATUS_PRESENT, ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS }, - { { ONLP_THERMAL_ID_CREATE(THERMAL_1_ON_MAIN_BROAD), "LM75-1-48", 0}, + { { ONLP_THERMAL_ID_CREATE(THERMAL_1_ON_MAIN_BROAD), "LM75-1-4C", 0}, ONLP_THERMAL_STATUS_PRESENT, ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS }, diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/platform-config/r0/src/python/x86_64_accton_as5916_54xm_r0/__init__.py b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/platform-config/r0/src/python/x86_64_accton_as5916_54xm_r0/__init__.py index e8b16a74..94e7b1a7 100644 --- a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/platform-config/r0/src/python/x86_64_accton_as5916_54xm_r0/__init__.py +++ b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/platform-config/r0/src/python/x86_64_accton_as5916_54xm_r0/__init__.py @@ -27,7 +27,7 @@ class OnlPlatform_x86_64_accton_as5916_54xm_r0(OnlPlatformAccton, ('as5916_54xm_fan', 0x66, 9), # inititate LM75 - ('lm75', 0x48, 10), + ('lm75', 0x4c, 10), ('lm75', 0x49, 10), ('lm75', 0x4a, 10), ('lm75', 0x4b, 10), From afd4c7a04517d739e10ea8ce277a75203180e7fc Mon Sep 17 00:00:00 2001 From: roy_lee Date: Wed, 29 Aug 2018 09:04:56 +0000 Subject: [PATCH 2/4] Examine 0x4c to tell thermal1 address. It's 0x48 for R0A, otherwise 0x4C Signed-off-by: roy_lee --- .../onlp/builds/src/module/src/thermali.c | 59 +++++++++++++++++-- 1 file changed, 54 insertions(+), 5 deletions(-) mode change 100644 => 100755 packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c old mode 100644 new mode 100755 index fa5277cf..6e2e6c45 --- a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c +++ b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c @@ -34,11 +34,15 @@ } \ } while(0) + +/*Thermal 1 can be at 0x48 for R0A board, or 0x4C otherwise.*/ +static int thermal1_addr[] = {0x4c, 0x48}; + static char* devfiles__[] = /* must map with onlp_thermal_id */ { NULL, NULL, /* CPU_CORE files */ - "/sys/bus/i2c/devices/10-004c*temp1_input", + "/sys/bus/i2c/devices/10-00%2x*temp1_input", "/sys/bus/i2c/devices/10-0049*temp1_input", "/sys/bus/i2c/devices/10-004a*temp1_input", "/sys/bus/i2c/devices/10-004b*temp1_input", @@ -62,7 +66,7 @@ static onlp_thermal_info_t linfo[] = { ONLP_THERMAL_STATUS_PRESENT, ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS }, - { { ONLP_THERMAL_ID_CREATE(THERMAL_1_ON_MAIN_BROAD), "LM75-1-4C", 0}, + { { ONLP_THERMAL_ID_CREATE(THERMAL_1_ON_MAIN_BROAD), "LM75-1-%2X", 0}, ONLP_THERMAL_STATUS_PRESENT, ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS }, @@ -97,6 +101,25 @@ onlp_thermali_init(void) return ONLP_STATUS_OK; } +/*check which addr of thermal1_addr[] can be read.*/ +static int +_get_valid_t1_addr(char *path, int *addr) +{ + char fname[ONLP_OID_DESC_SIZE]; + int i, rv, tmp; + + for (i=0; imcelsius, cpu_coretemp_files); return rv; } - return onlp_file_read_int(&info->mcelsius, devfiles__[tid]); + if (tid >= AIM_ARRAYSIZE(devfiles__)){ + return ONLP_STATUS_E_PARAM; + } + + devfile = devfiles__[tid]; + if (tid == THERMAL_1_ON_MAIN_BROAD) + { + onlp_oid_desc_t *des = &info->hdr.description; + char tmp[ONLP_OID_DESC_SIZE]; + int t1_addr = thermal1_addr[0]; + int rv; + + rv = _get_valid_t1_addr(devfiles__[tid], &t1_addr); + if(rv != ONLP_STATUS_OK) + return rv; + + /*Get real path of THERMAL_1 dev file*/ + snprintf(fname, sizeof(fname), devfiles__[tid], t1_addr); + devfile = fname; + + /*Replace description*/ + strncpy(tmp, *des, sizeof(tmp)); + snprintf(*des, sizeof(*des), tmp, t1_addr); + } + + return onlp_file_read_int(&info->mcelsius, devfile); } From af627ba96a2490c48539d91427aaac6bef5c4ba8 Mon Sep 17 00:00:00 2001 From: roy_lee Date: Wed, 29 Aug 2018 09:15:22 +0000 Subject: [PATCH 3/4] Store thermal1 addr after 1st get. Signed-off-by: roy_lee --- .../onlp/builds/src/module/src/thermali.c | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c index 6e2e6c45..1e9f4161 100755 --- a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c +++ b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/onlp/builds/src/module/src/thermali.c @@ -26,6 +26,7 @@ #include #include #include "platform_lib.h" +#include #define VALIDATE(_id) \ do { \ @@ -36,7 +37,8 @@ /*Thermal 1 can be at 0x48 for R0A board, or 0x4C otherwise.*/ -static int thermal1_addr[] = {0x4c, 0x48}; +static int thermal1_addrs[] = {0x4c, 0x48}; +static int thermal1_addr = -1; static char* devfiles__[] = /* must map with onlp_thermal_id */ { @@ -101,18 +103,23 @@ onlp_thermali_init(void) return ONLP_STATUS_OK; } -/*check which addr of thermal1_addr[] can be read.*/ +/*check which addr of thermal1_addrs[] can be read.*/ static int _get_valid_t1_addr(char *path, int *addr) { - char fname[ONLP_OID_DESC_SIZE]; + char fname[PATH_MAX]; int i, rv, tmp; + if (thermal1_addr > 0){ + *addr = thermal1_addr; + return ONLP_STATUS_OK; + } - for (i=0; ihdr.description; - char tmp[ONLP_OID_DESC_SIZE]; - int t1_addr = thermal1_addr[0]; + char tmp[PATH_MAX]; + int t1_addr = thermal1_addrs[0]; int rv; rv = _get_valid_t1_addr(devfiles__[tid], &t1_addr); From 3633dd660df69b406f7dcd4b960c86a54c6d329f Mon Sep 17 00:00:00 2001 From: roy_lee Date: Wed, 29 Aug 2018 09:16:47 +0000 Subject: [PATCH 4/4] Add both 0x48 and 0x4C devnode, leave onlpdump to tell which one is valid. Signed-off-by: roy_lee --- .../r0/src/python/x86_64_accton_as5916_54xm_r0/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/platform-config/r0/src/python/x86_64_accton_as5916_54xm_r0/__init__.py b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/platform-config/r0/src/python/x86_64_accton_as5916_54xm_r0/__init__.py index 94e7b1a7..b4a6e226 100644 --- a/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/platform-config/r0/src/python/x86_64_accton_as5916_54xm_r0/__init__.py +++ b/packages/platforms/accton/x86-64/x86-64-accton-as5916-54xm/platform-config/r0/src/python/x86_64_accton_as5916_54xm_r0/__init__.py @@ -27,7 +27,8 @@ class OnlPlatform_x86_64_accton_as5916_54xm_r0(OnlPlatformAccton, ('as5916_54xm_fan', 0x66, 9), # inititate LM75 - ('lm75', 0x4c, 10), + ('lm75', 0x48, 10), #For R0A + ('lm75', 0x4c, 10), #For R0B or later ('lm75', 0x49, 10), ('lm75', 0x4a, 10), ('lm75', 0x4b, 10),