summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/dram_initialization/proc_setup_bars/mss_setup_bars.C
diff options
context:
space:
mode:
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.C202
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"
OpenPOWER on IntegriCloud