Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/base/any/kernels/modules/ym2651y.c
Original file line number Diff line number Diff line change
Expand Up @@ -869,6 +869,7 @@ static struct ym2651y_data *ym2651y_update_device(struct device *dev)
}

if ((strncmp((data->mfr_model+1), "YM-2851J", strlen("YM-2851J")) == 0)||
(strncmp((data->mfr_model+1), "YM-2851F", strlen("YM-2851F")) == 0)||
(strncmp((data->mfr_model+1), "YM-2651Y", strlen("YM-2651Y")) == 0)||
(strncmp((data->mfr_model+1), "YPEB1200AM", strlen("YPEB1200AM")) == 0)) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,11 @@ int psu_serial_number_get(int id, char *serial, int serial_len)
psu_type_t psu_type_get(int id, char* modelname, int modelname_len)
{
int value = 0;
int ret = ONLP_STATUS_OK;
char model[PSU_MODEL_NAME_LEN + 1] = {0};
int ret = ONLP_STATUS_OK;
char *prefix = psu_pmbus_path(id);
char fan_dir[PSU_FAN_DIR_LEN + 1] = {0};
char *model_string = NULL;
int len = 0;

if (modelname && modelname_len < PSU_MODEL_NAME_LEN) {
return PSU_TYPE_UNKNOWN;
Expand All @@ -114,73 +115,102 @@ psu_type_t psu_type_get(int id, char* modelname, int modelname_len)
if (!value) {
return PSU_TYPE_UNKNOWN;
}

/* Read mode name */
ret = onlp_file_read((uint8_t*)model, PSU_MODEL_NAME_LEN, &value, "%s%s", prefix, "psu_mfr_model");
if (ret != ONLP_STATUS_OK || value != PSU_MODEL_NAME_LEN) {
return PSU_TYPE_UNKNOWN;

}

if (modelname) {
memcpy(modelname, model, sizeof(model));
/* Read full model name */
len = onlp_file_read_str(&model_string, "%spsu_mfr_model", prefix);
if (!model_string || len <= 0)
{
AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_UNKNOWN;
}

if (strncmp(model, "DPS-850A", strlen("DPS-850A")) == 0) {
if (modelname)
strcpy(modelname, model_string);
if ((strstr(model_string, "DPS-850AB-5") != NULL)){
ret = onlp_file_read((uint8_t*)fan_dir, PSU_FAN_DIR_LEN, &value, "%s%s", prefix, "psu_fan_dir");
if (strncmp(fan_dir, "B2F", strlen("B2F")) == 0) {
if (ret != ONLP_STATUS_OK)
{
AIM_LOG_ERROR("Unable to read psu fan dir\r\n");
AIM_FREE_IF_PTR(model_string);
return ONLP_STATUS_E_INTERNAL;
}
if (strncmp(fan_dir, "B2F", strlen("B2F")) == 0)
{
AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_AC_DPS850_B2F;
}
return PSU_TYPE_AC_DPS850_F2B;
else
{
AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_AC_DPS850_F2B;
}
}

if (strncmp(model, "YM-2851F", strlen("YM-2851F")) == 0) {
/* Access length 8 data for 3Y PSU model compare */
if (modelname) {
memcpy(modelname, model_string, PSU_MODEL_NAME_LEN);
}
if (strncmp(model_string, "YM-2851F", strlen("YM-2851F")) == 0) {
char model_opt[PSU_MODEL_NAME_LEN + 1] = {0};

ret = onlp_file_read((uint8_t*)model_opt, PSU_MODEL_NAME_LEN, &value, "%s%s", prefix, "psu_mfr_model_opt");
if (ret != ONLP_STATUS_OK)
{
AIM_LOG_ERROR("Unable to read psu model opt\r\n");
AIM_FREE_IF_PTR(model_string);
return ONLP_STATUS_E_INTERNAL;
}
if (modelname && value) {
memcpy(modelname + PSU_MODEL_NAME_LEN, model_opt, strlen(model_opt)-1);
}

if ((strncmp(model_opt, "DR", strlen("DR")) == 0) || (strncmp(model_opt, "D01R", strlen("D01R")) == 0)) {
AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_AC_YM2851FDR_B2F; /* YM-2851FDR or YM-2851FD01R */
}
else if ((strncmp(model_opt, "CR", strlen("CR")) == 0) || (strncmp(model_opt, "C01R", strlen("C01R")) == 0)) {
AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_AC_YM2851FCR_F2B; /* YM-2851FDR or YM-2851FD01R */
}

ret = onlp_file_read((uint8_t*)fan_dir, PSU_FAN_DIR_LEN, &value, "%s%s", prefix, "psu_fan_dir");
if ((strncmp(fan_dir, "B2F", strlen("B2F")) == 0) || (strncmp(fan_dir, "AFI", strlen("AFI")) == 0)) {
AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_AC_YM2851FDR_B2F;
}

AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_AC_YM2851FCR_F2B;
}

if (strncmp(model, "YM-2851J", strlen("YM-2851J")) == 0) {
if (strncmp(model_string, "YM-2851J", strlen("YM-2851J")) == 0) {
char model_opt[PSU_MODEL_NAME_LEN + 1] = {0};

ret = onlp_file_read((uint8_t*)model_opt, PSU_MODEL_NAME_LEN, &value, "%s%s", prefix, "psu_mfr_model_opt");
if (ret != ONLP_STATUS_OK)
{
AIM_LOG_ERROR("Unable to read psu model opt\r\n");
AIM_FREE_IF_PTR(model_string);
return ONLP_STATUS_E_INTERNAL;
}
if (modelname && value) {
memcpy(modelname + PSU_MODEL_NAME_LEN, model_opt, strlen(model_opt)-1);
}

if (strncmp(model_opt, "FR", strlen("FR")) == 0) {
AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_DC_YM2851JFR_B2F;
}
else if (strncmp(model_opt, "ER", strlen("ER")) == 0) {
AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_DC_YM2851JER_F2B;
}

ret = onlp_file_read((uint8_t*)fan_dir, PSU_FAN_DIR_LEN, &value, "%s%s", prefix, "psu_fan_dir");
if ((strncmp(fan_dir, "B2F", strlen("B2F")) == 0) || (strncmp(fan_dir, "AFI", strlen("AFI")) == 0)) {
AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_DC_YM2851JFR_B2F;
}


AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_DC_YM2851JER_F2B; /* YM-2851JER */
}

AIM_FREE_IF_PTR(model_string);
return PSU_TYPE_UNKNOWN;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,15 @@ int psu_ym2651y_pmbus_info_set(int id, char *node, int value);
int psu_dps850_pmbus_info_get(int id, char *node, int *value);
char* psu_pmbus_path(int pid);

#define AIM_FREE_IF_PTR(p) \
do \
{ \
if (p) { \
aim_free(p); \
p = NULL; \
} \
} while (0)

#define DEBUG_MODE 0

#if (DEBUG_MODE == 1)
Expand Down