summaryrefslogtreecommitdiffstats
path: root/src/usr/i2c
diff options
context:
space:
mode:
authorChris Engel <cjengel@us.ibm.com>2016-05-05 17:36:25 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-05-17 15:57:39 -0400
commit72d9e40f3eb6ae54ee68689cfba9af27a8b2c2db (patch)
tree453361ee134beee8f9b67ad97a31f15131705459 /src/usr/i2c
parent83f5c16f12410fbb3671d577e66a43145c5ea9d1 (diff)
downloadtalos-hostboot-72d9e40f3eb6ae54ee68689cfba9af27a8b2c2db.tar.gz
talos-hostboot-72d9e40f3eb6ae54ee68689cfba9af27a8b2c2db.zip
P9 i2c master support
Updated i2c master code to support 4 engines in P9 and scom offset changes Updated attributes to support 4 engines and to match existing simics models Change-Id: I29aeb98274407777a59f11404f45d08ecadbeab2 RTC: 153481 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/24211 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: Andres A. Lugo-Reyes <aalugore@us.ibm.com> Reviewed-by: Michael Baiocchi <mbaiocch@us.ibm.com> Reviewed-by: William G. Hoffa <wghoffa@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/i2c')
-rwxr-xr-xsrc/usr/i2c/i2c.C18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/usr/i2c/i2c.C b/src/usr/i2c/i2c.C
index d310687e9..9265d1cfa 100755
--- a/src/usr/i2c/i2c.C
+++ b/src/usr/i2c/i2c.C
@@ -78,6 +78,7 @@ TRAC_INIT( & g_trac_i2cr, "I2CR", KILOBYTE );
#define CENTAUR_MASTER_ENGINES 1 // Number of Engines in a Centaur
#define MAX_NACK_RETRIES 3
#define PAGE_OPERATION 0xffffffff // Special value use to determine type of op
+#define P9_ENGINE_SCOM_OFFSET 0x1000
// Derived from ATTR_I2C_BUS_SPEED_ARRAY[engine][port] attribute
const TARGETING::ATTR_I2C_BUS_SPEED_ARRAY_type g_var = {{NULL}};
@@ -1757,7 +1758,10 @@ bool i2cGetEngineMutex( TARGETING::Target * i_target,
i_engineLock = i_target->
getHbMutexAttr<TARGETING::ATTR_I2C_ENGINE_MUTEX_2>();
break;
-
+ case 3:
+ i_engineLock = i_target->
+ getHbMutexAttr<TARGETING::ATTR_I2C_ENGINE_MUTEX_3>();
+ break;
default:
TRACFCOMP( g_trac_i2c,
ERR_MRK"i2cGetEngineMutex: Invalid engine for getting Mutex! "
@@ -1790,17 +1794,18 @@ bool i2cGetPageMutex( TARGETING::Target * i_target,
i_pageLock = i_target->
getHbMutexAttr<TARGETING::ATTR_I2C_PAGE_MUTEX_0>();
break;
-
case 1:
i_pageLock = i_target->
getHbMutexAttr<TARGETING::ATTR_I2C_PAGE_MUTEX_1>();
break;
-
case 2:
i_pageLock = i_target->
getHbMutexAttr<TARGETING::ATTR_I2C_PAGE_MUTEX_2>();
break;
-
+ case 3:
+ i_pageLock = i_target->
+ getHbMutexAttr<TARGETING::ATTR_I2C_PAGE_MUTEX_3>();
+ break;
default:
TRACFCOMP( g_trac_i2c,
ERR_MRK"i2cGetPageMutex: Invalid engine for getting mutex!");
@@ -3427,13 +3432,10 @@ errlHndl_t i2cResetActiveMasters ( i2cProcessType i_resetType,
"i_functional=%d",
i_resetType, i_functional );
- // @todo RTC:123019- I2CM Changes for P9
-#if (0)
err = i2cProcessActiveMasters (i_resetType, // select engines
I2C_OP_RESET, // reset engines
I2C_BUS_SPEED_FROM_MRW,
i_functional);
-#endif
TRACFCOMP( g_trac_i2c,
EXIT_MRK"i2cResetActiveMasters(): err rc=0x%X, plid=0x%X",
@@ -3623,7 +3625,7 @@ errlHndl_t i2cRegisterOp ( DeviceFW::OperationType i_opType,
if ( i_args.switches.useHostI2C == 1 )
{
op_addr = I2C_HOST_MASTER_BASE_ADDR + i_reg +
- (i_args.engine * 0x20); // engine reg offset
+ (i_args.engine * P9_ENGINE_SCOM_OFFSET);
op_size=8;
err = DeviceFW::deviceOp( i_opType,
OpenPOWER on IntegriCloud