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