From 6f3598e330f2f800ed674dac97542fb295260091 Mon Sep 17 00:00:00 2001 From: roy_lee Date: Thu, 1 Nov 2018 15:12:36 +0800 Subject: [PATCH 1/2] [platform]as5916-26xb/as7316-26xb: take fan speed value to be unsigned to get correct RPM. Signed-off-by: roy_lee --- .../modules/builds/x86-64-accton-as5916-26xb-psu.c | 4 ++-- .../modules/builds/x86-64-accton-as7316-26xb-psu.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) mode change 100644 => 100755 packages/platforms/accton/x86-64/x86-64-accton-as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-psu.c diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-psu.c b/packages/platforms/accton/x86-64/x86-64-accton-as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-psu.c old mode 100644 new mode 100755 index ba71289b..1a8d4d0a --- a/packages/platforms/accton/x86-64/x86-64-accton-as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-psu.c +++ b/packages/platforms/accton/x86-64/x86-64-accton-as5916-26xb/modules/builds/x86-64-accton-as5916-26xb-psu.c @@ -425,8 +425,8 @@ static ssize_t show_psu(struct device *dev, struct device_attribute *da, char *b case PSU1_FAN_INPUT: case PSU2_FAN_INPUT: VALIDATE_PRESENT_RETURN(pid); - value = ((int)data->ipmi_resp[pid].status[PSU_FAN0] | - (int)data->ipmi_resp[pid].status[PSU_FAN1] << 8); + value = (((unsigned char)data->ipmi_resp[pid].status[PSU_FAN0]) | + ((unsigned char)data->ipmi_resp[pid].status[PSU_FAN1]) << 8); break; default: return -EINVAL; diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-psu.c b/packages/platforms/accton/x86-64/x86-64-accton-as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-psu.c index 1611df7a..a96a5da7 100644 --- a/packages/platforms/accton/x86-64/x86-64-accton-as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-psu.c +++ b/packages/platforms/accton/x86-64/x86-64-accton-as7316-26xb/modules/builds/x86-64-accton-as7316-26xb-psu.c @@ -425,8 +425,8 @@ static ssize_t show_psu(struct device *dev, struct device_attribute *da, char *b case PSU1_FAN_INPUT: case PSU2_FAN_INPUT: VALIDATE_PRESENT_RETURN(pid); - value = ((int)data->ipmi_resp[pid].status[PSU_FAN0] | - (int)data->ipmi_resp[pid].status[PSU_FAN1] << 8); + value = (((unsigned char)data->ipmi_resp[pid].status[PSU_FAN0]) | + ((unsigned char)data->ipmi_resp[pid].status[PSU_FAN1]) << 8); break; default: return -EINVAL; From 200f35319a302dc51964900c38c44fe2a347e717 Mon Sep 17 00:00:00 2001 From: roy_lee Date: Thu, 1 Nov 2018 15:17:06 +0800 Subject: [PATCH 2/2] [platform]as5916-26xb/as7316-26xb: onlpdump get psu capabilities of DC or AC. Signed-off-by: roy_lee --- .../onlp/builds/src/module/src/psui.c | 17 +++++++++++++++++ .../onlp/builds/src/module/src/psui.c | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) mode change 100644 => 100755 packages/platforms/accton/x86-64/x86-64-accton-as5916-26xb/onlp/builds/src/module/src/psui.c diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as5916-26xb/onlp/builds/src/module/src/psui.c b/packages/platforms/accton/x86-64/x86-64-accton-as5916-26xb/onlp/builds/src/module/src/psui.c old mode 100644 new mode 100755 index 156f9bdb..15c2c7f6 --- a/packages/platforms/accton/x86-64/x86-64-accton-as5916-26xb/onlp/builds/src/module/src/psui.c +++ b/packages/platforms/accton/x86-64/x86-64-accton-as5916-26xb/onlp/builds/src/module/src/psui.c @@ -57,6 +57,22 @@ static onlp_psu_info_t pinfo[] = } }; +static int +get_DCorAC_cap(char *model) +{ + const char *dc_models[] = {"YM-2401U", "um400d", NULL }; + int i; + + i = 0; + while(dc_models[i]) { + if (!strncasecmp(model, dc_models[i], strlen(dc_models[i]))){ + return ONLP_PSU_CAPS_DC12; + } + i++; + } + return ONLP_PSU_CAPS_AC; +} + int onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info) { @@ -140,6 +156,7 @@ onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info) if (string && len) { strncpy(info->model, string, len); aim_free(string); + info->caps |= get_DCorAC_cap (info->model); } /* Read serial */ diff --git a/packages/platforms/accton/x86-64/x86-64-accton-as7316-26xb/onlp/builds/src/module/src/psui.c b/packages/platforms/accton/x86-64/x86-64-accton-as7316-26xb/onlp/builds/src/module/src/psui.c index 156f9bdb..15c2c7f6 100644 --- a/packages/platforms/accton/x86-64/x86-64-accton-as7316-26xb/onlp/builds/src/module/src/psui.c +++ b/packages/platforms/accton/x86-64/x86-64-accton-as7316-26xb/onlp/builds/src/module/src/psui.c @@ -57,6 +57,22 @@ static onlp_psu_info_t pinfo[] = } }; +static int +get_DCorAC_cap(char *model) +{ + const char *dc_models[] = {"YM-2401U", "um400d", NULL }; + int i; + + i = 0; + while(dc_models[i]) { + if (!strncasecmp(model, dc_models[i], strlen(dc_models[i]))){ + return ONLP_PSU_CAPS_DC12; + } + i++; + } + return ONLP_PSU_CAPS_AC; +} + int onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info) { @@ -140,6 +156,7 @@ onlp_psui_info_get(onlp_oid_t id, onlp_psu_info_t* info) if (string && len) { strncpy(info->model, string, len); aim_free(string); + info->caps |= get_DCorAC_cap (info->model); } /* Read serial */