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 742a4dd1..1e9f4161 --- 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 { \ @@ -34,11 +35,16 @@ } \ } while(0) + +/*Thermal 1 can be at 0x48 for R0A board, or 0x4C otherwise.*/ +static int thermal1_addrs[] = {0x4c, 0x48}; +static int thermal1_addr = -1; + 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-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 +68,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-%2X", 0}, ONLP_THERMAL_STATUS_PRESENT, ONLP_THERMAL_CAPS_ALL, 0, ONLP_THERMAL_THRESHOLD_INIT_DEFAULTS }, @@ -97,6 +103,30 @@ onlp_thermali_init(void) return ONLP_STATUS_OK; } +/*check which addr of thermal1_addrs[] can be read.*/ +static int +_get_valid_t1_addr(char *path, int *addr) +{ + char fname[PATH_MAX]; + int i, rv, tmp; + if (thermal1_addr > 0){ + *addr = thermal1_addr; + return ONLP_STATUS_OK; + } + + 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[PATH_MAX]; + int t1_addr = thermal1_addrs[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); } 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..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', 0x48, 10), + ('lm75', 0x48, 10), #For R0A + ('lm75', 0x4c, 10), #For R0B or later ('lm75', 0x49, 10), ('lm75', 0x4a, 10), ('lm75', 0x4b, 10),