181dee67eSSudip Mukherjee /*******************************************************************
281dee67eSSudip Mukherjee *
381dee67eSSudip Mukherjee *         Copyright (c) 2007 by Silicon Motion, Inc. (SMI)
481dee67eSSudip Mukherjee *
581dee67eSSudip Mukherjee *  All rights are reserved. Reproduction or in part is prohibited
681dee67eSSudip Mukherjee *  without the written consent of the copyright owner.
781dee67eSSudip Mukherjee *
881dee67eSSudip Mukherjee *  swi2c.h --- SM750/SM718 DDK
981dee67eSSudip Mukherjee *  This file contains the definitions for i2c using software
1081dee67eSSudip Mukherjee *  implementation.
1181dee67eSSudip Mukherjee *
1281dee67eSSudip Mukherjee *******************************************************************/
1381dee67eSSudip Mukherjee #ifndef _SWI2C_H_
1481dee67eSSudip Mukherjee #define _SWI2C_H_
1581dee67eSSudip Mukherjee 
1681dee67eSSudip Mukherjee /* Default i2c CLK and Data GPIO. These are the default i2c pins */
1781dee67eSSudip Mukherjee #define DEFAULT_I2C_SCL                     30
1881dee67eSSudip Mukherjee #define DEFAULT_I2C_SDA                     31
1981dee67eSSudip Mukherjee 
2081dee67eSSudip Mukherjee /*
2181dee67eSSudip Mukherjee  * This function initializes the i2c attributes and bus
2281dee67eSSudip Mukherjee  *
2381dee67eSSudip Mukherjee  * Parameters:
2481dee67eSSudip Mukherjee  *      i2cClkGPIO  - The GPIO pin to be used as i2c SCL
2581dee67eSSudip Mukherjee  *      i2cDataGPIO - The GPIO pin to be used as i2c SDA
2681dee67eSSudip Mukherjee  *
2781dee67eSSudip Mukherjee  * Return Value:
2881dee67eSSudip Mukherjee  *      -1   - Fail to initialize the i2c
2981dee67eSSudip Mukherjee  *       0   - Success
3081dee67eSSudip Mukherjee  */
3181dee67eSSudip Mukherjee long swI2CInit(
3281dee67eSSudip Mukherjee     unsigned char i2cClkGPIO,
3381dee67eSSudip Mukherjee     unsigned char i2cDataGPIO
3481dee67eSSudip Mukherjee );
3581dee67eSSudip Mukherjee 
3681dee67eSSudip Mukherjee /*
3781dee67eSSudip Mukherjee  *  This function reads the slave device's register
3881dee67eSSudip Mukherjee  *
3981dee67eSSudip Mukherjee  *  Parameters:
4081dee67eSSudip Mukherjee  *      deviceAddress   - i2c Slave device address which register
4181dee67eSSudip Mukherjee  *                        to be read from
4281dee67eSSudip Mukherjee  *      registerIndex   - Slave device's register to be read
4381dee67eSSudip Mukherjee  *
4481dee67eSSudip Mukherjee  *  Return Value:
4581dee67eSSudip Mukherjee  *      Register value
4681dee67eSSudip Mukherjee  */
4781dee67eSSudip Mukherjee unsigned char swI2CReadReg(
4881dee67eSSudip Mukherjee     unsigned char deviceAddress,
4981dee67eSSudip Mukherjee     unsigned char registerIndex
5081dee67eSSudip Mukherjee );
5181dee67eSSudip Mukherjee 
5281dee67eSSudip Mukherjee /*
5381dee67eSSudip Mukherjee  *  This function writes a value to the slave device's register
5481dee67eSSudip Mukherjee  *
5581dee67eSSudip Mukherjee  *  Parameters:
5681dee67eSSudip Mukherjee  *      deviceAddress   - i2c Slave device address which register
5781dee67eSSudip Mukherjee  *                        to be written
5881dee67eSSudip Mukherjee  *      registerIndex   - Slave device's register to be written
5981dee67eSSudip Mukherjee  *      data            - Data to be written to the register
6081dee67eSSudip Mukherjee  *
6181dee67eSSudip Mukherjee  *  Result:
6281dee67eSSudip Mukherjee  *          0   - Success
6381dee67eSSudip Mukherjee  *         -1   - Fail
6481dee67eSSudip Mukherjee  */
6581dee67eSSudip Mukherjee long swI2CWriteReg(
6681dee67eSSudip Mukherjee     unsigned char deviceAddress,
6781dee67eSSudip Mukherjee     unsigned char registerIndex,
6881dee67eSSudip Mukherjee     unsigned char data
6981dee67eSSudip Mukherjee );
7081dee67eSSudip Mukherjee 
7181dee67eSSudip Mukherjee /*
7281dee67eSSudip Mukherjee  *  These two functions are used to toggle the data on the SCL and SDA I2C lines.
7381dee67eSSudip Mukherjee  *  The used of these two functions are not recommended unless it is necessary.
7481dee67eSSudip Mukherjee  */
7581dee67eSSudip Mukherjee 
7681dee67eSSudip Mukherjee /*
7781dee67eSSudip Mukherjee  *  This function set/reset the SCL GPIO pin
7881dee67eSSudip Mukherjee  *
7981dee67eSSudip Mukherjee  *  Parameters:
8081dee67eSSudip Mukherjee  *      value	- Bit value to set to the SCL or SDA (0 = low, 1 = high)
8181dee67eSSudip Mukherjee  */
8281dee67eSSudip Mukherjee void swI2CSCL(unsigned char value);
8381dee67eSSudip Mukherjee 
8481dee67eSSudip Mukherjee /*
8581dee67eSSudip Mukherjee  *  This function set/reset the SDA GPIO pin
8681dee67eSSudip Mukherjee  *
8781dee67eSSudip Mukherjee  *  Parameters:
8881dee67eSSudip Mukherjee  *      value	- Bit value to set to the SCL or SDA (0 = low, 1 = high)
8981dee67eSSudip Mukherjee  */
9081dee67eSSudip Mukherjee void swI2CSDA(unsigned char value);
9181dee67eSSudip Mukherjee 
9281dee67eSSudip Mukherjee #endif  /* _SWI2C_H_ */
93