//----------------------------------------------------------------------------- BOOL bq27410_init() { BOOL rc = FALSE; USHORT volt = 0; if((hI2C = I2COpen(OMAP_DEVICE_I2C3)) == NULL) { RETAILMSG(1,(L"ERROR: bq27410_init Failed open I2C device driver\r\n")); goto cleanUp; } if( I2CSetSlaveAddress(hI2C, BQ27410_SLAVE_ADDRESS) == FALSE ) RETAILMSG(1,(L"ERROR: bq27410_init - I2CSetSlaveAddress Failed\r\n")); I2CSetSubAddressMode(hI2C, I2C_SUBADDRESS_MODE_8); I2CSetBaudIndex(hI2C, FULLSPEED_MODE); if( BQ27410_WriteReg(bq27410CMD_CNTL_LSB, 0x0C) == FALSE ) // send battery insert RETAILMSG(1,(L"ERROR: BatteryPDDInitialize: Battery insert Failed\r\n")); if( BQ27410_ReadReg(bq27410CMD_VOLT_LSB, &volt) ) RETAILMSG(1,(L"bq27410_init: volt = %d\r\n", volt)); I2CClose(hI2C); rc = TRUE; cleanUp: return rc; }
//------------------------------------------------------------------------------ // // Function: I2C_IOControl // // This function sends a command to a device. // BOOL I2C_IOControl( DWORD context, DWORD code, UCHAR *pInBuffer, DWORD inSize, UCHAR *pOutBuffer, DWORD outSize, DWORD *pOutSize ) { RETAILMSG(ZONE_FUNCTION, ( L"+I2C_IOControl(0x%08x, 0x%08x, 0x%08x, %d, 0x%08x, %d, 0x%08x)\r\n", context, code, pInBuffer, inSize, pOutBuffer, outSize, pOutSize )); BOOL rc = FALSE; Instance_t *pInstance = (Instance_t*)context; UNREFERENCED_PARAMETER(inSize); UNREFERENCED_PARAMETER(pOutBuffer); UNREFERENCED_PARAMETER(outSize); UNREFERENCED_PARAMETER(pOutSize); // Check if we get correct context if ((pInstance == NULL) || (pInstance->cookie != I2C_INSTANCE_COOKIE)) { RETAILMSG(ZONE_ERROR, (L"ERROR: I2C_IOControl: " L"Incorrect context parameter\r\n" )); goto cleanUp; } switch (code) { case IOCTL_I2C_SET_SLAVE_ADDRESS: I2CSetSlaveAddress(pInstance->hI2C, *(UINT16*)pInBuffer); rc = TRUE; break; case IOCTL_I2C_SET_SUBADDRESS_MODE: I2CSetSubAddressMode(pInstance->hI2C, *(DWORD*)pInBuffer); rc = TRUE; break; case IOCTL_I2C_SET_BAUD_INDEX: I2CSetBaudIndex(pInstance->hI2C, *(DWORD*)pInBuffer); rc = TRUE; break; } cleanUp: RETAILMSG(ZONE_FUNCTION, (L"-I2C_IOControl(rc = %d)\r\n", rc)); return rc; }