psu_type_t get_psu_type(int id, char* modelname, int modelname_len) { char *node = NULL; char model_name[I2C_PSU_MODEL_NAME_LEN + 1] = {0}; /* Check AC model name */ node = (id == PSU1_ID) ? PSU1_AC_HWMON_NODE(psu_model_name) : PSU2_AC_HWMON_NODE(psu_model_name); if (deviceNodeReadString(node, model_name, sizeof(model_name), 0) == 0) { if (strncmp(model_name, "CPR-4011-4M11", strlen("CPR-4011-4M11")) == 0) { if (modelname) { strncpy(modelname, model_name, modelname_len-1); } return PSU_TYPE_AC_F2B; } else if (strncmp(model_name, "CPR-4011-4M21", strlen("CPR-4011-4M21")) == 0) { if (modelname) { strncpy(modelname, model_name, modelname_len-1); } return PSU_TYPE_AC_B2F; } else if (strncmp(model_name, "CPR-6011-2M11", strlen("CPR-6011-2M11")) == 0) { if (modelname) { strncpy(modelname, model_name, modelname_len-1); } return PSU_TYPE_AC_F2B; } else if (strncmp(model_name, "CPR-6011-2M21", strlen("CPR-6011-2M21")) == 0) { if (modelname) { strncpy(modelname, model_name, modelname_len-1); } return PSU_TYPE_AC_B2F; } } /* Check DC model name */ memset(model_name, 0, sizeof(model_name)); node = (id == PSU1_ID) ? PSU1_DC_HWMON_NODE(psu_model_name) : PSU2_DC_HWMON_NODE(psu_model_name); if (deviceNodeReadString(node, model_name, sizeof(model_name), 0) == 0) { if (strncmp(model_name, "um400d01G", strlen("um400d01G")) == 0) { if (modelname) { strncpy(modelname, model_name, modelname_len-1); } return PSU_TYPE_DC_48V_B2F; } else if (strncmp(model_name, "um400d01-01G", strlen("um400d01-01G")) == 0) { if (modelname) { strncpy(modelname, model_name, modelname_len-1); } return PSU_TYPE_DC_48V_F2B; } } return PSU_TYPE_UNKNOWN; }
psu_type_t get_psu_type(int id, char* modelname, int modelname_len) { char *node = NULL; char model_name[I2C_PSU_MODEL_NAME_LEN + 1] = {0}; char fan_dir[I2C_PSU_FAN_DIR_LEN + 1] = {0}; /* Check AC model name */ node = (id == PSU1_ID) ? PSU1_AC_HWMON_NODE(psu_model_name) : PSU2_AC_HWMON_NODE(psu_model_name); if (deviceNodeReadString(node, model_name, sizeof(model_name), 0) != 0) { return PSU_TYPE_UNKNOWN; } if(isspace(model_name[strlen(model_name)-1])) { model_name[strlen(model_name)-1] = 0; } if (strncmp(model_name, "YM-2651Y", 8) == 0) { if (modelname) { strncpy(modelname, model_name, 8); } node = (id == PSU1_ID) ? PSU1_AC_PMBUS_NODE(psu_fan_dir) : PSU2_AC_PMBUS_NODE(psu_fan_dir); if (deviceNodeReadString(node, fan_dir, sizeof(fan_dir), 0) != 0) { return PSU_TYPE_UNKNOWN; } if (strncmp(fan_dir, "F2B", strlen("F2B")) == 0) { return PSU_TYPE_AC_F2B; } if (strncmp(fan_dir, "B2F", strlen("B2F")) == 0) { return PSU_TYPE_AC_B2F; } } if (strncmp(model_name, "YM-2651V", 8) == 0) { if (modelname) { strncpy(modelname, model_name, 8); } node = (id == PSU1_ID) ? PSU1_AC_PMBUS_NODE(psu_fan_dir) : PSU2_AC_PMBUS_NODE(psu_fan_dir); if (deviceNodeReadString(node, fan_dir, sizeof(fan_dir), 0) != 0) { return PSU_TYPE_UNKNOWN; } if (strncmp(fan_dir, "F2B", strlen("F2B")) == 0) { return PSU_TYPE_DC_48V_F2B; } if (strncmp(fan_dir, "B2F", strlen("B2F")) == 0) { return PSU_TYPE_DC_48V_B2F; } } if (strncmp(model_name, "PSU-12V-750", 11) == 0) { if (modelname) { strncpy(modelname, model_name, 11); } node = (id == PSU1_ID) ? PSU1_AC_HWMON_NODE(psu_fan_dir) : PSU2_AC_HWMON_NODE(psu_fan_dir); if (deviceNodeReadString(node, fan_dir, sizeof(fan_dir), 0) != 0) { return PSU_TYPE_UNKNOWN; } if (strncmp(fan_dir, "F2B", 3) == 0) { return PSU_TYPE_DC_12V_F2B; } if (strncmp(fan_dir, "B2F", 3) == 0) { return PSU_TYPE_DC_12V_B2F; } if (strncmp(fan_dir, "NON", 3) == 0) { return PSU_TYPE_DC_12V_FANLESS; } } return PSU_TYPE_UNKNOWN; }