diff options
Diffstat (limited to 'src/usr/i2c/i2c.C')
-rwxr-xr-x | src/usr/i2c/i2c.C | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/usr/i2c/i2c.C b/src/usr/i2c/i2c.C index bf0560e73..226b96acf 100755 --- a/src/usr/i2c/i2c.C +++ b/src/usr/i2c/i2c.C @@ -1293,11 +1293,22 @@ errlHndl_t i2cAccessMux( TARGETING::Target* i_masterTarget, if (! (l_i2cMuxTarget->tryGetAttr<TARGETING::ATTR_FAPI_I2C_CONTROL_INFO>(l_muxData)) ) { TRACFCOMP(g_trac_i2c, - "i2cAccessMux(): get attributes failed"); + "i2cAccessMux(): getting ATTR_FAPI_I2C_CONTROL_INFO failed"); break; } - uint8_t l_muxSelector = i_i2cMuxBusSelector; + TARGETING::ATTR_MODEL_type l_muxModel; + if (! (l_i2cMuxTarget->tryGetAttr<TARGETING::ATTR_MODEL>(l_muxModel)) ) + { + TRACFCOMP(g_trac_i2c, + "i2cAccessMux(): getting ATTR_MODEL failed"); + break; + } + + assert(l_muxModel == TARGETING::MODEL_PCA9847, "Invalid model of mux detected"); + const uint8_t PCA9847_ENABLE_BIT = 8; + + uint8_t l_muxSelector = i_i2cMuxBusSelector | PCA9847_ENABLE_BIT; uint8_t *l_ptrMuxSelector = &l_muxSelector; size_t l_muxSelectorSize = sizeof(l_muxSelector); |