/******************************************************************* * * Copyright (c) 2007 by Silicon Motion, Inc. (SMI) * * All rights are reserved. Reproduction or in part is prohibited * without the written consent of the copyright owner. * * swi2c.h --- SM750/SM718 DDK * This file contains the definitions for i2c using software * implementation. * *******************************************************************/ #ifndef _SWI2C_H_ #define _SWI2C_H_ /* Default i2c CLK and Data GPIO. These are the default i2c pins */ #define DEFAULT_I2C_SCL 30 #define DEFAULT_I2C_SDA 31 /* * This function initializes the i2c attributes and bus * * Parameters: * i2cClkGPIO - The GPIO pin to be used as i2c SCL * i2cDataGPIO - The GPIO pin to be used as i2c SDA * * Return Value: * -1 - Fail to initialize the i2c * 0 - Success */ long swI2CInit( unsigned char i2cClkGPIO, unsigned char i2cDataGPIO ); /* * This function reads the slave device's register * * Parameters: * deviceAddress - i2c Slave device address which register * to be read from * registerIndex - Slave device's register to be read * * Return Value: * Register value */ unsigned char swI2CReadReg( unsigned char deviceAddress, unsigned char registerIndex ); /* * This function writes a value to the slave device's register * * Parameters: * deviceAddress - i2c Slave device address which register * to be written * registerIndex - Slave device's register to be written * data - Data to be written to the register * * Result: * 0 - Success * -1 - Fail */ long swI2CWriteReg( unsigned char deviceAddress, unsigned char registerIndex, unsigned char data ); /* * These two functions are used to toggle the data on the SCL and SDA I2C lines. * The used of these two functions are not recommended unless it is necessary. */ /* * This function set/reset the SCL GPIO pin * * Parameters: * value - Bit value to set to the SCL or SDA (0 = low, 1 = high) */ void swI2CSCL(unsigned char value); /* * This function set/reset the SDA GPIO pin * * Parameters: * value - Bit value to set to the SCL or SDA (0 = low, 1 = high) */ void swI2CSDA(unsigned char value); #endif /* _SWI2C_H_ */