diff options
author | Guillermo J Silva <guilsilv@us.ibm.com> | 2015-05-11 10:42:15 -0500 |
---|---|---|
committer | Guillermo J. Silva <guilsilv@us.ibm.com> | 2015-05-13 09:28:51 -0500 |
commit | 892863de9e8aa5898e9fb515df850da47f43ad21 (patch) | |
tree | f5732f24ab8e2f31b558ed9beb07e3e2a94fc341 /src/occ | |
parent | 524c25822287e0a0f95a58529c5c9a4881185f07 (diff) | |
download | talos-occ-892863de9e8aa5898e9fb515df850da47f43ad21.tar.gz talos-occ-892863de9e8aa5898e9fb515df850da47f43ad21.zip |
Support for version 0x11 of frequency config packet
Change-Id: I987e06723fc4eaab385840821a43474c61592e55
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/17689
Tested-by: FSP CI Jenkins
Reviewed-by: Fadi Kassem <fmkassem@us.ibm.com>
Reviewed-by: Guillermo J. Silva <guilsilv@us.ibm.com>
Tested-by: Guillermo J. Silva <guilsilv@us.ibm.com>
Diffstat (limited to 'src/occ')
-rwxr-xr-x | src/occ/cmdh/cmdh_fsp_cmds_datacnfg.c | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/src/occ/cmdh/cmdh_fsp_cmds_datacnfg.c b/src/occ/cmdh/cmdh_fsp_cmds_datacnfg.c index 09bc805..abb1a60 100755 --- a/src/occ/cmdh/cmdh_fsp_cmds_datacnfg.c +++ b/src/occ/cmdh/cmdh_fsp_cmds_datacnfg.c @@ -47,9 +47,11 @@ #define FREQ_FORMAT_BYTES_PER_MODE 3 #define FREQ_FORMAT_BASE_DATA_SZ (sizeof(cmdh_store_mode_freqs_t) - sizeof(cmdh_fsp_cmd_header_t)) #define FREQ_FORMAT_10_NUM_FREQS 3 +#define FREQ_FORMAT_11_NUM_FREQS 4 #define DATA_FREQ_VERSION_0 0 #define DATA_FREQ_VERSION_10 0x10 +#define DATA_FREQ_VERSION_11 0x11 #define DATA_PCAP_VERSION_0 0 #define DATA_PCAP_VERSION_10 0x10 @@ -267,10 +269,13 @@ errlHndl_t data_store_freq_data(const cmdh_fsp_cmd_t * i_cmd_ptr, // If the datapacket is bigger than what we can store, OR // if the version doesn't equal what we expect, OR // if the expected data length does not agree with the actual data length, OR - // the format is 0x10 and we don't have room for the 3 2B frequencies + // the format is 0x10 and we don't have room for the 3 2B frequencies, OR + // the format is 0x11 and we don;t have room for the 4 2B frequencies. if((l_data_length < FREQ_FORMAT_BASE_DATA_SZ) || - ((l_cmdp->version != DATA_FREQ_VERSION_0) && (l_cmdp->version != DATA_FREQ_VERSION_10)) || - ((DATA_FREQ_VERSION_10 == l_cmdp->version) && (l_mode_data_sz != (FREQ_FORMAT_10_NUM_FREQS * 2)))) + ((l_cmdp->version != DATA_FREQ_VERSION_0) && (l_cmdp->version != DATA_FREQ_VERSION_10) && + (l_cmdp->version != DATA_FREQ_VERSION_11)) || + ((DATA_FREQ_VERSION_10 == l_cmdp->version) && (l_mode_data_sz != (FREQ_FORMAT_10_NUM_FREQS * 2))) || + ((DATA_FREQ_VERSION_11 == l_cmdp->version) && (l_mode_data_sz != (FREQ_FORMAT_11_NUM_FREQS * 2)))) { TRAC_ERR("Invalid Frequency Data packet: data_length[%u] version[%u] l_count[%u] l_mode_data_sz[%u]", l_data_length, l_cmdp->version, l_count, l_mode_data_sz); @@ -284,9 +289,8 @@ errlHndl_t data_store_freq_data(const cmdh_fsp_cmd_t * i_cmd_ptr, break; } - if (DATA_FREQ_VERSION_0 == l_cmdp->version) + if(DATA_FREQ_VERSION_0 == l_cmdp->version) { - // parse the packed 3-byte data entries and store them // in the global data structure. for(i = 0; i < l_mode_data_sz; i += FREQ_FORMAT_BYTES_PER_MODE) @@ -365,11 +369,10 @@ errlHndl_t data_store_freq_data(const cmdh_fsp_cmd_t * i_cmd_ptr, } } } - else // Version 0x10 - OpenPower + else if(DATA_FREQ_VERSION_10 == l_cmdp->version) // Version 0x10 - OpenPower { // First Nominal Freq, then Max Freq, then Min Freq, which we'll // store under the existing enums. - l_freq = (l_buf[0] << 8 | l_buf[1]); l_table[OCC_MODE_NOMINAL] = l_freq; @@ -390,6 +393,31 @@ errlHndl_t data_store_freq_data(const cmdh_fsp_cmd_t * i_cmd_ptr, g_amec->sys.fmax = l_table[OCC_MODE_TURBO]; g_amec->sys.fmin = l_table[OCC_MODE_MIN_FREQUENCY]; } + else if(DATA_FREQ_VERSION_11 == l_cmdp->version) // Version 0x11 - OpenPower + { + // First Nominal Freq, then Max Freq, then Min Freq, which we'll + // store under the existing enums. + + l_freq = (l_buf[0] << 8 | l_buf[1]); + l_table[OCC_MODE_NOMINAL] = l_freq; + TRAC_INFO("Nominal frequency = %d", l_freq); + + l_freq = (l_buf[2] << 8 | l_buf[3]); + l_table[OCC_MODE_TURBO] = l_freq; + TRAC_INFO("Turbo frequency = %d", l_freq); + + l_freq = (l_buf[4] << 8 | l_buf[5]); + l_table[OCC_MODE_PWRSAVE] = l_freq; + l_table[OCC_MODE_MIN_FREQUENCY] = l_freq; + TRAC_INFO("Minimum frequency = %d", l_freq); + + l_freq = (l_buf[6] << 8 | l_buf[7]); + TRAC_INFO("UT frequency = %d", l_freq); + + // Store the Fmax and Fmin for AMEC (OpenPower environment only) + g_amec->sys.fmax = l_table[OCC_MODE_TURBO]; + g_amec->sys.fmin = l_table[OCC_MODE_MIN_FREQUENCY]; + } }while(0); |