Exemple #1
0
//-----------------------------------------------------------------------------
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;
}
Exemple #2
0
//------------------------------------------------------------------------------
//
//  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;
}