diff options
Diffstat (limited to 'src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C')
-rw-r--r-- | src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C | 202 |
1 files changed, 85 insertions, 117 deletions
diff --git a/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C b/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C index f40659140..abb0cebfb 100644 --- a/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C +++ b/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C @@ -20,7 +20,7 @@ /* Origin: 30 */ /* */ /* IBM_PROLOG_END_TAG */ -// $Id: mss_setup_bars.C,v 1.22 2012/10/03 13:39:03 gpaulraj Exp $ +// $Id: mss_setup_bars.C,v 1.25 2012/12/04 14:47:59 bellows Exp $ //------------------------------------------------------------------------------ // *! (C) Copyright International Business Machines Corp. 2012 // *! All Rights Reserved -- Property of IBM @@ -38,6 +38,7 @@ //------------------------------------------------------------------------------ // Version:| Author: | Date: | Comment: //---------|----------|---------|----------------------------------------------- +// 1.23 | bellows | 12/04/12| more updates // 1.22 | gpaulraj | 10/03/12| review updates // 1.21 | gpaulraj | 10/02/12| review updates // 1.19 | bellows | 09/25/12| review updates @@ -68,11 +69,13 @@ extern "C" { ecmdDataBufferBase MCFGPA_data(64); ecmdDataBufferBase MCFGPMA_data(64); // uint64_t mem_base; - uint64_t mirror_base; +// uint64_t mirror_base; uint64_t mem_bases[8]; uint64_t l_memory_sizes[8]; uint64_t mirror_bases[4]; uint64_t l_mirror_sizes[4]; +// uint64_t alter_mem_base; +// uint64_t alter_mirror_base; uint32_t groupID[16][16]; uint8_t groups[8]; do @@ -106,61 +109,22 @@ extern "C" { // process mirrored ranges // - // read chip base address attribute - rc = FAPI_ATTR_GET(ATTR_PROC_MIRROR_BASE, &i_chip_target, mirror_base); + rc = FAPI_ATTR_GET(ATTR_PROC_MIRROR_BASES, &i_chip_target, mirror_bases); if (!rc.ok()) { - FAPI_ERR("Error reading ATTR_PROC_MIRROR_BASE"); + FAPI_ERR("Error reading ATTR_PROC_MIRROR_BASES"); break; } - - // base addresses for distinct mirrored ranges - mirror_bases[0] = mirror_base; - mirror_bases[1] = 0x0; - mirror_bases[2] = 0x0; - mirror_bases[3] = 0x0; - - FAPI_DBG(" ATTR_PROC_MIRROR_BASES[0]: %016llx", mirror_bases[0]); - FAPI_DBG(" ATTR_PROC_MIRROR_BASES[1]: %016llx", mirror_bases[1]); - FAPI_DBG(" ATTR_PROC_MIRROR_BASES[2]: %016llx", mirror_bases[2]); - FAPI_DBG(" ATTR_PROC_MIRROR_BASES[3]: %016llx", mirror_bases[3]); - - rc = FAPI_ATTR_SET(ATTR_PROC_MIRROR_BASES, &i_chip_target, mirror_bases); + rc = FAPI_ATTR_GET(ATTR_PROC_MIRROR_SIZES, &i_chip_target, l_mirror_sizes); if (!rc.ok()) { - FAPI_ERR("Error writing ATTR_PROC_MIRROR_BASES"); + FAPI_ERR("Error reading ATTR_PROC_MIRROR_SIZES"); break; } - - // sizes for distinct mirrored ranges - l_mirror_sizes[0]=0; - l_mirror_sizes[1]=0; - l_mirror_sizes[2]=0; - l_mirror_sizes[3]=0; - - FAPI_DBG(" ATTR_PROC_MIRROR_SIZES[0]: %016llx", l_mirror_sizes[0]); - FAPI_DBG(" ATTR_PROC_MIRROR_SIZES[1]: %016llx", l_mirror_sizes[1]); - FAPI_DBG(" ATTR_PROC_MIRROR_SIZES[2]: %016llx", l_mirror_sizes[2]); - FAPI_DBG(" ATTR_PROC_MIRROR_SIZES[3]: %016llx", l_mirror_sizes[3]); - - rc = FAPI_ATTR_SET(ATTR_PROC_MIRROR_SIZES, &i_chip_target, l_mirror_sizes); + rc = FAPI_ATTR_GET(ATTR_MSS_MEM_MC_IN_GROUP, &i_chip_target, groups); if (!rc.ok()) { - FAPI_ERR("Error writing ATTR_PROC_MIRROR_SIZES"); - break; - } - groups[0]=0x0C; - groups[1]=0x00; - groups[2]=0x00; - groups[3]=0x00; - groups[4]=0x00; - groups[5]=0x00; - groups[6]=0x00; - groups[7]=0x00; - rc = FAPI_ATTR_SET(ATTR_MSS_MEM_MC_IN_GROUP, &i_chip_target, groups); - if (!rc.ok()) - { - FAPI_ERR("Error writing ATTR_MSS_MEM_MC_IN_GROUP"); + FAPI_ERR("Error reading ATTR_MSS_MEM_MC_IN_GROUP"); break; } @@ -217,18 +181,6 @@ extern "C" { FAPI_ERR("Error Reading MCS_MCFGPM_0x02011801"); break; } - rc = fapiGetScom(*iter, MCS_MCFGPA_0x02011814, MCFGPA_data); - if (!rc.ok()) - { - FAPI_ERR("Error Reading MCS_MCFGPA_0x02011814"); - break; - } - rc = fapiGetScom(*iter, MCS_MCFGPMA_0x02011815, MCFGPMA_data); - if (!rc.ok()) - { - FAPI_ERR("Error Reading MCS_MCFGPMA_0x02011815"); - break; - } for(uint8_t i=0; (i<16)&&(rc.ok()); i++) { uint32_t temp=0; @@ -243,35 +195,7 @@ extern "C" { MCFGP_data.insertFromRight(temp/2,1,3); MCFGP_data.insertFromRight((j-4),4,5); - //b = groupID[i][2]>>3; b = ((l_memory_sizes[i]>>30) / 4) - 1; - // switch ((l_memory_sizes[i]>>30)) - // { - // case 4: b = 0; - // break; - // case 8: b = 1; - // break; - // case 16: b = 3; - // l break; - // case 32: b = 7; - // break; - // case 64: b = 15; - // break; - // case 128: b = 31; - // break; - // case 256: b = 63; - // break; - // case 512: b = 127; - // break; - // case 1024:b = 255; - // break; - // case 2048:b = 511; - // break; - // case 4096:b = 1023; - // break; - // case 8192:b = 2047; - // break; - // } MCFGP_data.insertFromRight(b,11,13); b = mem_bases[i]>>32; MCFGP_data.insertFromRight(b,26,18); @@ -296,36 +220,43 @@ extern "C" { FAPI_ERR("Error from fapiPutScom MCS_MCFGP_0x02011800"); break; } + + if(temp>1) + { + + //setting the MCFGPM register + b = ((l_mirror_sizes[i]>>30) / 4) - 1; + MCFGPM_data.insertFromRight(b,11,13); + b = mirror_bases[i]>>32; + MCFGPM_data.insertFromRight(b,26,18); + rc = fapiPutScom(*iter, MCS_MCFGPM_0x02011801, MCFGPM_data); + if (!rc.ok()) + { + FAPI_ERR("Error writing MCS_MCFGPM_0x02011801"); + break; + } + rc = fapiGetScom(*iter, MCS_MCFGPM_0x02011801, MCFGPM_data); + if (!rc.ok()) + { + FAPI_ERR("Error reading MCS_MCFGPM_0x02011801"); + break; + } + + MCFGPM_data.setBit(0); + FAPI_DBG("Writing MCS %d MCFGPM = 0x%llx",mcs_pos, MCFGPM_data.getDoubleWord(0)); + rc = fapiPutScom(*iter, MCS_MCFGPM_0x02011801, MCFGPM_data); + if (!rc.ok()) + { + FAPI_ERR("Error from fapiPutScom MCS_MCFGPM_0x02011801"); + break; + } + } + if(groupID[i][12]) + { - b = ((groupID[i][13]) / 4) - 1; -// switch (groupID[i][13]) -// { -// case 4: b = 0; -// break; -// case 8: b = 1; -// break; -// case 16: b = 3; -// break; -// case 32: b = 7; -// break; -// case 64: b = 15; -// break; -// case 128: b = 31; -// break; -// case 256: b = 63; -// break; -// case 512: b = 127; -// break; -// case 1024:b = 255; -// break; -// case 2048:b = 511; -// break; -// case 4096:b = 1023; -// break; -// case 8192:b = 2047; -// break; -// } + + b = (groupID[i][13] / 4) - 1; MCFGPA_data.insertFromRight(b,11,13); b = groupID[i][14]>>2; MCFGPA_data.insertFromRight(b,26,18); @@ -342,19 +273,56 @@ extern "C" { break; } MCFGPA_data.setBit(0); // Read registers value and set Zero bit as per register specification + FAPI_DBG("Writing MCS %d MCFGPA = 0x%llx",mcs_pos, MCFGPA_data.getDoubleWord(0)); rc = fapiPutScom(*iter, MCS_MCFGPA_0x02011814, MCFGPA_data); if (!rc.ok()) { FAPI_ERR("Error writing MCS_MCFGPA_0x02011814"); break; } + + if(temp>1) + { + //setting MCFGPMA + b = (groupID[i+8][13]/ 4) - 1; + MCFGPMA_data.insertFromRight(b,11,13); + b = groupID[i+8][14]>>2; + MCFGPMA_data.insertFromRight(b,26,18); + rc = fapiPutScom(*iter, MCS_MCFGPMA_0x02011815, MCFGPMA_data); + if (!rc.ok()) + { + FAPI_ERR("Error writing MCS_MCFpGPMA_0x02011815"); + break; + } + rc = fapiGetScom(*iter, MCS_MCFGPMA_0x02011815, MCFGPMA_data); + if (!rc.ok()) + { + FAPI_ERR("Error reading MCS_MCFGPMA_0x02011815"); + break; + } + MCFGPMA_data.setBit(0); // Read registers value and set Zero bit as per register specification + FAPI_DBG("Writing MCS %d MCFGPMA = 0x%llx",mcs_pos, MCFGPMA_data.getDoubleWord(0)); + rc = fapiPutScom(*iter, MCS_MCFGPMA_0x02011815, MCFGPMA_data); + if (!rc.ok()) + { + FAPI_ERR("Error writing MCS_MCFGPMA_0x02011815"); + break; + } + } } } } } } - } - while(0); + uint8_t final=1; + rc=FAPI_ATTR_SET( ATTR_MSS_MEM_IPL_COMPLETE, &i_chip_target ,final); + if (!rc.ok()) + { + FAPI_ERR("Error writing TARGET_TYPE_PROC_CHIP"); + break; + } + }while(0); return rc; } + } // extern "C" |