diff options
author | Chris Engel <cjengel@us.ibm.com> | 2016-05-05 17:36:25 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-05-17 15:57:39 -0400 |
commit | 72d9e40f3eb6ae54ee68689cfba9af27a8b2c2db (patch) | |
tree | 453361ee134beee8f9b67ad97a31f15131705459 /src/usr/i2c | |
parent | 83f5c16f12410fbb3671d577e66a43145c5ea9d1 (diff) | |
download | talos-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-x | src/usr/i2c/i2c.C | 18 |
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, |