From 9af547bcc5ff79e711d1e497a3ff56b30d313448 Mon Sep 17 00:00:00 2001 From: mbroyles Date: Tue, 18 Oct 2016 09:07:27 -0500 Subject: Support new APSS Function IDs RTC: 162291 Change-Id: I979615313a9c5e860fa570736e0ce598b978f877 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31416 Tested-by: FSP CI Jenkins Reviewed-by: William A. Bryan Reviewed-by: Wael El-Essawy Reviewed-by: Martha Broyles --- src/occ_405/amec/amec_freq.c | 2 +- src/occ_405/amec/amec_master_smh.c | 4 +- src/occ_405/amec/amec_sensors_power.c | 34 +++--- src/occ_405/amec/amec_sys.h | 1 + src/occ_405/cmdh/cmdh_fsp_cmds.c | 3 +- src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c | 53 ++++++++- src/occ_405/occ_sys_config.c | 189 ++---------------------------- src/occ_405/occ_sys_config.h | 22 ++-- src/occ_405/sensor/sensor_enum.h | 3 +- src/occ_405/sensor/sensor_info.c | 3 +- src/occ_405/sensor/sensor_table.c | 5 +- 11 files changed, 103 insertions(+), 216 deletions(-) (limited to 'src') diff --git a/src/occ_405/amec/amec_freq.c b/src/occ_405/amec/amec_freq.c index 0f7d764..1fcdf2f 100755 --- a/src/occ_405/amec/amec_freq.c +++ b/src/occ_405/amec/amec_freq.c @@ -813,7 +813,7 @@ void amec_slv_check_perf(void) AMECSENSOR_PTR(PWR250USFAN)->sample, AMECSENSOR_PTR(PWR250USIO)->sample, AMECSENSOR_PTR(PWR250USSTORE)->sample, - AMECSENSOR_PTR(PWR250USGPU)->sample ); + AMECSENSOR_PTR(PWRGPU)->sample ); TRAC_ERR("SnrProcPwr 0 %d, SnrProcPwr 1 %d, SnrProcPwr 2 %d, SnrProcPwr 3 %d", g_amec->proc_snr_pwr[0], diff --git a/src/occ_405/amec/amec_master_smh.c b/src/occ_405/amec/amec_master_smh.c index c980f3a..a221eac 100755 --- a/src/occ_405/amec/amec_master_smh.c +++ b/src/occ_405/amec/amec_master_smh.c @@ -479,10 +479,10 @@ void amec_mst_check_under_pcap(void) AMECSENSOR_PTR(PWR250USFAN)->sample, AMECSENSOR_PTR(PWR250USMEM0)->sample); - TRAC_ERR("PWR250USIO = %d , PWR250USSTORE = %d, PWR250USGPU = %d", + TRAC_ERR("PWR250USIO = %d , PWR250USSTORE = %d, PWRGPU = %d", AMECSENSOR_PTR(PWR250USIO)->sample, AMECSENSOR_PTR(PWR250USSTORE)->sample, - AMECSENSOR_PTR(PWR250USGPU)->sample); + AMECSENSOR_PTR(PWRGPU)->sample); /* @ * @errortype diff --git a/src/occ_405/amec/amec_sensors_power.c b/src/occ_405/amec/amec_sensors_power.c index c1ed9d7..912d5b0 100755 --- a/src/occ_405/amec/amec_sensors_power.c +++ b/src/occ_405/amec/amec_sensors_power.c @@ -179,14 +179,6 @@ uint32_t amec_value_from_apss_adc(uint8_t i_chan) // End Function Specification void amec_update_apss_sensors(void) { - /* - * Removed fake apss config data, do not reuse, the old hardcoded - * values will not work with the new code used in processing APSS channel - * data. - * Code is in place to receive command code 0x21 SET CONFIG DATA - * which should popluate the ADC and GPIO maps as well as the APSS - * calibration data for all 16 ADC channels. - */ // Need to check to make sure APSS data has been received // via slave inbox first if (G_slv_inbox_received) @@ -220,11 +212,17 @@ void amec_update_apss_sensors(void) if (OCC_MASTER == G_occ_role) { - // Update channel sensors for all channels (except 12v and gnd) + // Update channel sensors for all channels (except 12v sense and gnd) for (l_idx = 0; l_idx < MAX_APSS_ADC_CHANNELS; l_idx++) { - if ((l_idx != G_sysConfigData.apss_adc_map.sense_12v) && - (l_idx != G_sysConfigData.apss_adc_map.remote_gnd)) + if(l_idx == G_sysConfigData.apss_adc_map.current_12v_stby) + { + // Save value of 12V Standby Current (.01A) in a sensor for lab use only + temp32 = ADC_CONVERTED_VALUE(l_idx)/100; // convert mA to .01A + sensor_update(AMECSENSOR_PTR(CUR12VSTBY), (uint16_t) temp32); + } + else if((l_idx != G_sysConfigData.apss_adc_map.sense_12v) && + (l_idx != G_sysConfigData.apss_adc_map.remote_gnd)) { temp32 = ((ADC_CONVERTED_VALUE(l_idx) * l_bulk_voltage)+ADCMULT_ROUND)/ADCMULT_TO_UNITS; sensor_update(AMECSENSOR_PTR(PWRAPSSCH0 + l_idx), (uint16_t) temp32); @@ -317,10 +315,15 @@ void amec_update_apss_sensors(void) temp32 = ((temp32 * l_bulk_voltage)+ADCMULT_ROUND)/ADCMULT_TO_UNITS; sensor_update( AMECSENSOR_PTR(PWR250USSTORE), (uint16_t)temp32); - // GPU adapter - temp32 = ADC_CONVERTED_VALUE(G_sysConfigData.apss_adc_map.gpu); - temp32 = ((temp32 * l_bulk_voltage)+ADCMULT_ROUND)/ADCMULT_TO_UNITS; - sensor_update( AMECSENSOR_PTR(PWR250USGPU), (uint16_t)temp32); + // Save total GPU adapter for this proc + if (l_proc < MAX_GPU_DOMAINS) + { + temp32 = ADC_CONVERTED_VALUE(G_sysConfigData.apss_adc_map.gpu[l_proc][0]); + temp32 += ADC_CONVERTED_VALUE(G_sysConfigData.apss_adc_map.gpu[l_proc][1]); + temp32 += ADC_CONVERTED_VALUE(G_sysConfigData.apss_adc_map.gpu[l_proc][2]); + temp32 = ((temp32 * l_bulk_voltage)+ADCMULT_ROUND)/ADCMULT_TO_UNITS; + sensor_update( AMECSENSOR_PTR(PWRGPU), (uint16_t)temp32); + } // ---------------------------------------------------- // Convert Raw Bulk Power from APSS into sensors @@ -335,6 +338,7 @@ void amec_update_apss_sensors(void) // Subract adc channels that don't measure power l_bulk_current_sum -= ADC_CONVERTED_VALUE(G_sysConfigData.apss_adc_map.sense_12v); l_bulk_current_sum -= ADC_CONVERTED_VALUE(G_sysConfigData.apss_adc_map.remote_gnd); + l_bulk_current_sum -= ADC_CONVERTED_VALUE(G_sysConfigData.apss_adc_map.current_12v_stby); // If we don't have a ADC channel that measures the bulk 12v power, use // the ADC sum instead diff --git a/src/occ_405/amec/amec_sys.h b/src/occ_405/amec/amec_sys.h index d7867ac..2b9df7a 100755 --- a/src/occ_405/amec/amec_sys.h +++ b/src/occ_405/amec/amec_sys.h @@ -362,6 +362,7 @@ typedef struct sensor_t pwr250us; sensor_t pwr250usgpu; sensor_t pwrapssch[MAX_APSS_ADC_CHANNELS]; + sensor_t cur12Vstby; sensor_t vrfan250usmem; sensor_t vrhot250usmem; diff --git a/src/occ_405/cmdh/cmdh_fsp_cmds.c b/src/occ_405/cmdh/cmdh_fsp_cmds.c index 91a7a37..0604dfd 100755 --- a/src/occ_405/cmdh/cmdh_fsp_cmds.c +++ b/src/occ_405/cmdh/cmdh_fsp_cmds.c @@ -394,7 +394,8 @@ ERRL_RC cmdh_poll_v20(cmdh_fsp_rsp_t * o_rsp_ptr) for (k = 0; k < MAX_APSS_ADC_CHANNELS; k++) { if ((G_apss_ch_to_function[k] != ADC_12V_SENSE) && - (G_apss_ch_to_function[k] != ADC_GND_REMOTE_SENSE)) + (G_apss_ch_to_function[k] != ADC_GND_REMOTE_SENSE) && + (G_apss_ch_to_function[k] != ADC_12V_STANDBY_CURRENT)) { l_pwrSensorList[l_sensorHeader.count].id = G_amec_sensor_list[PWRAPSSCH0 + k]->ipmi_sid; l_pwrSensorList[l_sensorHeader.count].function_id = G_apss_ch_to_function[k]; diff --git a/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c b/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c index bc9dabe..4ec2ce9 100755 --- a/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c +++ b/src/occ_405/cmdh/cmdh_fsp_cmds_datacnfg.c @@ -509,8 +509,32 @@ errlHndl_t apss_store_adc_channel(const eApssAdcChannelAssignments i_func_id, co l_adc_function = &G_sysConfigData.apss_adc_map.mem_cache; break; - case ADC_GPU_SENSE: - l_adc_function = &G_sysConfigData.apss_adc_map.gpu; + case ADC_12V_STANDBY_CURRENT: + l_adc_function = &G_sysConfigData.apss_adc_map.current_12v_stby; + break; + + case ADC_GPU_0_0: + l_adc_function = &G_sysConfigData.apss_adc_map.gpu[0][0]; + break; + + case ADC_GPU_0_1: + l_adc_function = &G_sysConfigData.apss_adc_map.gpu[0][1]; + break; + + case ADC_GPU_0_2: + l_adc_function = &G_sysConfigData.apss_adc_map.gpu[0][2]; + break; + + case ADC_GPU_1_0: + l_adc_function = &G_sysConfigData.apss_adc_map.gpu[1][0]; + break; + + case ADC_GPU_1_1: + l_adc_function = &G_sysConfigData.apss_adc_map.gpu[1][1]; + break; + + case ADC_GPU_1_2: + l_adc_function = &G_sysConfigData.apss_adc_map.gpu[1][2]; break; default: @@ -648,14 +672,30 @@ void apss_store_ipmi_sensor_id(const uint16_t i_channel, const apss_cfg_adc_v20_ case ADC_TOTAL_SYS_CURRENT: //None break; + case ADC_MEM_CACHE: //None break; - case ADC_GPU_SENSE: - if (i_adc->ipmisensorId != 0) + case ADC_12V_STANDBY_CURRENT: + //None + break; + + case ADC_GPU_0_0: + case ADC_GPU_0_1: + case ADC_GPU_0_2: + if((i_adc->ipmisensorId != 0) && (l_proc == 0)) + { + AMECSENSOR_PTR(PWRGPU)->ipmi_sid = i_adc->ipmisensorId; + } + break; + + case ADC_GPU_1_0: + case ADC_GPU_1_1: + case ADC_GPU_1_2: + if((i_adc->ipmisensorId != 0) && (l_proc == 1)) { - AMECSENSOR_PTR(PWR250USGPU)->ipmi_sid = i_adc->ipmisensorId; + AMECSENSOR_PTR(PWRGPU)->ipmi_sid = i_adc->ipmisensorId; } break; @@ -676,7 +716,8 @@ void apss_store_ipmi_sensor_id(const uint16_t i_channel, const apss_cfg_adc_v20_ } //Only store sensor ids for power sensors. 12V sensor and gnd remote sensors do not report power used. - if ((i_adc->assignment != ADC_12V_SENSE) && (i_adc->assignment != ADC_GND_REMOTE_SENSE)) + if ((i_adc->assignment != ADC_12V_SENSE) && (i_adc->assignment != ADC_GND_REMOTE_SENSE) && + (i_adc->assignment != ADC_12V_STANDBY_CURRENT)) { AMECSENSOR_PTR(PWRAPSSCH0 + i_channel)->ipmi_sid = i_adc->ipmisensorId; CNFG_DBG("apss_store_ipmi_sensor_id: SID[0x%08X] stored as 0x%08X for channel %d", diff --git a/src/occ_405/occ_sys_config.c b/src/occ_405/occ_sys_config.c index 10312d6..766f445 100755 --- a/src/occ_405/occ_sys_config.c +++ b/src/occ_405/occ_sys_config.c @@ -1,11 +1,11 @@ /* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ -/* $Source: src/occ/occ_sys_config.c $ */ +/* $Source: src/occ_405/occ_sys_config.c $ */ /* */ /* OpenPOWER OnChipController Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2015 */ +/* Contributors Listed Below - COPYRIGHT 2011,2016 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -145,7 +145,13 @@ occSysConfigData_t G_sysConfigData = .sense_12v = SYSCFG_INVALID_ADC_CHAN, .remote_gnd = SYSCFG_INVALID_ADC_CHAN, .mem_cache = SYSCFG_INVALID_ADC_CHAN, - .gpu = SYSCFG_INVALID_ADC_CHAN, + .current_12v_stby = SYSCFG_INVALID_ADC_CHAN, + .gpu[0][0] = SYSCFG_INVALID_ADC_CHAN, + .gpu[0][1] = SYSCFG_INVALID_ADC_CHAN, + .gpu[0][2] = SYSCFG_INVALID_ADC_CHAN, + .gpu[1][0] = SYSCFG_INVALID_ADC_CHAN, + .gpu[1][1] = SYSCFG_INVALID_ADC_CHAN, + .gpu[1][2] = SYSCFG_INVALID_ADC_CHAN, }, .apssGpioPortsMode = {0, 0}, @@ -224,177 +230,6 @@ occModuleConfigData_t G_occModuleConfigData = { 0 }; - -// OCC Default PstateSuperStructure -// -// Default Pstate table, so that for testing we don't have to have TMGT -// send one to us. Placing this in this file because it is necessary -// configuration data for OCC to go to active state. -// -// This array was created with xxd -i pss.bin -// -// TODO: This can be removed or ifdef'd out to save space in the future. -const unsigned char G_defaultOccPstateSuperStructure[] = { - 0x50, 0x53, 0x54, 0x41, 0x54, 0x45, 0x30, 0x31, 0x6e, 0x5e, 0x34, 0x44, - 0x24, 0x34, 0x00, 0xf3, 0x6d, 0x5d, 0x34, 0x44, 0x24, 0x34, 0x00, 0x9f, - 0x6c, 0x5c, 0x35, 0x45, 0x25, 0x35, 0x00, 0x22, 0x6b, 0x5b, 0x36, 0x46, - 0x26, 0x36, 0x00, 0x7b, 0x6a, 0x5a, 0x37, 0x47, 0x27, 0x37, 0x00, 0xc6, - 0x6a, 0x5a, 0x38, 0x48, 0x28, 0x38, 0x00, 0xe4, 0x69, 0x59, 0x38, 0x48, - 0x28, 0x38, 0x00, 0x88, 0x68, 0x58, 0x39, 0x49, 0x29, 0x39, 0x00, 0x35, - 0x67, 0x57, 0x3a, 0x4a, 0x2a, 0x3a, 0x00, 0xe2, 0x66, 0x56, 0x3b, 0x4b, - 0x2b, 0x3b, 0x00, 0x5f, 0x65, 0x56, 0x3c, 0x4c, 0x2c, 0x3c, 0x00, 0x7e, - 0x64, 0x55, 0x3d, 0x4c, 0x2d, 0x3c, 0x00, 0x8c, 0x63, 0x54, 0x3e, 0x4d, - 0x2e, 0x3d, 0x00, 0x89, 0x62, 0x53, 0x3f, 0x4e, 0x2f, 0x3e, 0x00, 0x68, - 0x61, 0x52, 0x40, 0x4f, 0x30, 0x3f, 0x00, 0xb7, 0x60, 0x51, 0x41, 0x50, - 0x31, 0x40, 0x00, 0xf8, 0x5f, 0x4f, 0x42, 0x52, 0x32, 0x42, 0x00, 0x68, - 0x5e, 0x4e, 0x43, 0x53, 0x33, 0x43, 0x00, 0xd5, 0x5d, 0x4d, 0x44, 0x54, - 0x34, 0x44, 0x00, 0xd0, 0x5c, 0x4c, 0x45, 0x55, 0x35, 0x45, 0x00, 0x6d, - 0x5b, 0x4b, 0x46, 0x56, 0x36, 0x46, 0x00, 0x34, 0x5a, 0x4a, 0x47, 0x57, - 0x37, 0x47, 0x00, 0x89, 0x5a, 0x4a, 0x48, 0x58, 0x38, 0x48, 0x00, 0xab, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xbe, 0xc8, - 0x00, 0x00, 0x82, 0x35, 0x00, 0x77, 0x00, 0x77, 0x00, 0x77, 0x00, 0x77, - 0x00, 0x77, 0x00, 0x77, 0x00, 0x77, 0x00, 0x77, 0x00, 0x77, 0x00, 0x77, - 0x00, 0x77, 0x00, 0x77, 0x00, 0x77, 0x00, 0x77, 0x00, 0x77, 0x00, 0x77, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x17, 0xea, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 -}; - // Power Configuration Data pcap_config_data_t G_master_pcap_data = { @@ -472,15 +307,11 @@ void sysConfigFspLess(void) // correctly initialized. // ---------------------------------------------------- extern data_cnfg_t * G_data_cnfg; - G_data_cnfg->data_mask = ( DATA_MASK_PSTATE_SUPERSTRUCTURE - | DATA_MASK_FREQ_PRESENT + G_data_cnfg->data_mask = ( DATA_MASK_FREQ_PRESENT | DATA_MASK_SET_ROLE | DATA_MASK_APSS_CONFIG | DATA_MASK_PCAP_PRESENT ); - // Install the Pstate Table -// proc_pstate_initialize((PstateSuperStructure*) G_defaultOccPstateSuperStructure); - } #endif diff --git a/src/occ_405/occ_sys_config.h b/src/occ_405/occ_sys_config.h index e0799b6..b7abf18 100755 --- a/src/occ_405/occ_sys_config.h +++ b/src/occ_405/occ_sys_config.h @@ -96,6 +96,8 @@ typedef union #define MAX_DOM_OC_LATCH 4 #define MAX_CONN_OC_SIGNALS 5 #define MAX_PROC_CENT_CH 4 +#define MAX_GPU_DOMAINS 2 +#define MAX_NUM_GPU_PER_DOMAIN 3 // List of all possible APSS Channel assignments (Function IDs) // Each channel in the APSS will be associated with only one of these @@ -127,10 +129,16 @@ typedef enum ADC_GND_REMOTE_SENSE = 0x15, ADC_TOTAL_SYS_CURRENT = 0x16, ADC_MEM_CACHE = 0x17, - ADC_GPU_SENSE = 0x18, - ADC_MEMORY_PROC_0_0 = 0x19, //NOTE: On Habanero, the processor has 4 centaurs with 1 APSS channel - ADC_MEMORY_PROC_0_1 = 0x1A, // assigned to each one of them. ADC_MEMORY_PROC_0 will be used - ADC_MEMORY_PROC_0_2 = 0x1B, // for the first one and these are for the other 3. + ADC_GPU_0_0 = 0x18, // ADC_GPU_x_y x=Proc, y=GPU (max of 3 GPUs/proc) + ADC_MEMORY_PROC_0_0 = 0x19, + ADC_MEMORY_PROC_0_1 = 0x1A, + ADC_MEMORY_PROC_0_2 = 0x1B, + ADC_12V_STANDBY_CURRENT = 0x1C, + ADC_GPU_0_1 = 0x1D, + ADC_GPU_0_2 = 0x1E, + ADC_GPU_1_0 = 0x1F, + ADC_GPU_1_1 = 0x20, + ADC_GPU_1_2 = 0x21, NUM_ADC_ASSIGNMENT_TYPES // This should always be the last member } eApssAdcChannelAssignments; @@ -195,7 +203,8 @@ typedef struct uint8_t sense_12v; uint8_t remote_gnd; uint8_t mem_cache; - uint8_t gpu; + uint8_t current_12v_stby; + uint8_t gpu[MAX_GPU_DOMAINS][MAX_NUM_GPU_PER_DOMAIN]; } apssAdcChannelData_t; // Master/Slave Configuration @@ -420,9 +429,6 @@ typedef struct } occModuleConfigData_t; __attribute__ ((__aligned__ (128))) -// Default PstateSuperStructure that can be used instead of TMGT provided one. -extern const unsigned char G_defaultOccPstateSuperStructure[]; - // MASTER PCAP values. extern pcap_config_data_t G_master_pcap_data; diff --git a/src/occ_405/sensor/sensor_enum.h b/src/occ_405/sensor/sensor_enum.h index a1dd1c2..2bba7b1 100755 --- a/src/occ_405/sensor/sensor_enum.h +++ b/src/occ_405/sensor/sensor_enum.h @@ -82,7 +82,7 @@ enum e_gsid PWR250USFAN, // Fan Power (from APSS) PWR250USIO, // IO Subsystem Power (from APSS) PWR250USSTORE, // Storage Subsys Power (from APSS) - PWR250USGPU, // GPU Subsystem Power (from APSS) e.g. Nvidia GPU + PWRGPU, // GPU Subsystem Power (from APSS) e.g. Nvidia GPU FANSPEEDAVG, // Average Fan Speed (from DPSS) PWRAPSSCH0, // These PWRAPSSCH sensors are used to report the power PWRAPSSCH1, // provided by each of the 16 APSS channels. @@ -100,6 +100,7 @@ enum e_gsid PWRAPSSCH13, PWRAPSSCH14, PWRAPSSCH15, + CUR12VSTBY, // 12V Standby Current // ------------------------------------------------------ // Chip Sensors diff --git a/src/occ_405/sensor/sensor_info.c b/src/occ_405/sensor/sensor_info.c index cd29e10..3713d9f 100755 --- a/src/occ_405/sensor/sensor_info.c +++ b/src/occ_405/sensor/sensor_info.c @@ -233,7 +233,7 @@ const sensor_info_t G_sensor_info[] = SENSOR_INFO_T_ENTRY( PWR250USFAN, "W\0", AMEC_SENSOR_TYPE_POWER, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENSOR_INFO_T_ENTRY( PWR250USIO, "W\0", AMEC_SENSOR_TYPE_POWER, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENSOR_INFO_T_ENTRY( PWR250USSTORE, "W\0", AMEC_SENSOR_TYPE_POWER, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), - SENSOR_INFO_T_ENTRY( PWR250USGPU, "W\0", AMEC_SENSOR_TYPE_POWER, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), + SENSOR_INFO_T_ENTRY( PWRGPU, "W\0", AMEC_SENSOR_TYPE_POWER, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENSOR_INFO_T_ENTRY( FANSPEEDAVG, "RPM\0", AMEC_SENSOR_TYPE_TEMP, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENSOR_INFO_T_ENTRY( PWRAPSSCH0, "W\0", AMEC_SENSOR_TYPE_POWER, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENSOR_INFO_T_ENTRY( PWRAPSSCH1, "W\0", AMEC_SENSOR_TYPE_POWER, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), @@ -251,6 +251,7 @@ const sensor_info_t G_sensor_info[] = SENSOR_INFO_T_ENTRY( PWRAPSSCH13, "W\0", AMEC_SENSOR_TYPE_POWER, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENSOR_INFO_T_ENTRY( PWRAPSSCH14, "W\0", AMEC_SENSOR_TYPE_POWER, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), SENSOR_INFO_T_ENTRY( PWRAPSSCH15, "W\0", AMEC_SENSOR_TYPE_POWER, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_2MS_IN_HZ, AMEFP( 1, 0) ), + SENSOR_INFO_T_ENTRY( CUR12VSTBY, "A\0", AMEC_SENSOR_TYPE_CURRENT, AMEC_SENSOR_LOC_SYS, AMEC_SENSOR_NONUM, AMEEFP_250US_IN_HZ, AMEFP( 1,-2) ), /* ==ChipSensors== NameString Units Type Location Number Freq ScaleFactor */ diff --git a/src/occ_405/sensor/sensor_table.c b/src/occ_405/sensor/sensor_table.c index 5ab4f15..519ca61 100755 --- a/src/occ_405/sensor/sensor_table.c +++ b/src/occ_405/sensor/sensor_table.c @@ -301,7 +301,7 @@ const sensor_ptr_t G_amec_sensor_list[] = SENSOR_PTR( PWR250USFAN, &g_amec_sys.fan.pwr250usfan), SENSOR_PTR( PWR250USIO, &g_amec_sys.io.pwr250usio), SENSOR_PTR( PWR250USSTORE, &g_amec_sys.storage.pwr250usstore), - SENSOR_PTR( PWR250USGPU, &g_amec_sys.sys.pwr250usgpu), + SENSOR_PTR( PWRGPU, &g_amec_sys.sys.pwr250usgpu), SENSOR_PTR( FANSPEEDAVG, &g_amec_sys.fan.fanspeedavg), SENSOR_PTR( PWRAPSSCH0, &g_amec_sys.sys.pwrapssch[0]), SENSOR_PTR( PWRAPSSCH1, &g_amec_sys.sys.pwrapssch[1]), @@ -319,6 +319,7 @@ const sensor_ptr_t G_amec_sensor_list[] = SENSOR_PTR( PWRAPSSCH13, &g_amec_sys.sys.pwrapssch[13]), SENSOR_PTR( PWRAPSSCH14, &g_amec_sys.sys.pwrapssch[14]), SENSOR_PTR( PWRAPSSCH15, &g_amec_sys.sys.pwrapssch[15]), + SENSOR_PTR( CUR12VSTBY, &g_amec_sys.sys.cur12Vstby), // ------------------------------------------------------ // Chip Sensors @@ -475,7 +476,7 @@ const minisensor_ptr_t G_amec_mini_sensor_list[] INIT_SECTION = MINI_SENSOR_PTR( PWR250USFAN, NULL), MINI_SENSOR_PTR( PWR250USIO, NULL), MINI_SENSOR_PTR( PWR250USSTORE, NULL), - MINI_SENSOR_PTR( PWR250USGPU, NULL), + MINI_SENSOR_PTR( PWRGPU, NULL), MINI_SENSOR_PTR( FANSPEEDAVG, NULL), // ------------------------------------------------------ -- cgit v1.2.1