1/*******************************************************************
2*
3*         Copyright (c) 2007 by Silicon Motion, Inc. (SMI)
4*
5*  All rights are reserved. Reproduction or in part is prohibited
6*  without the written consent of the copyright owner.
7*
8*  swi2c.h --- SM750/SM718 DDK
9*  This file contains the definitions for i2c using software
10*  implementation.
11*
12*******************************************************************/
13#ifndef _SWI2C_H_
14#define _SWI2C_H_
15
16/* Default i2c CLK and Data GPIO. These are the default i2c pins */
17#define DEFAULT_I2C_SCL                     30
18#define DEFAULT_I2C_SDA                     31
19
20/*
21 * This function initializes the i2c attributes and bus
22 *
23 * Parameters:
24 *      i2cClkGPIO  - The GPIO pin to be used as i2c SCL
25 *      i2cDataGPIO - The GPIO pin to be used as i2c SDA
26 *
27 * Return Value:
28 *      -1   - Fail to initialize the i2c
29 *       0   - Success
30 */
31long swI2CInit(
32    unsigned char i2cClkGPIO,
33    unsigned char i2cDataGPIO
34);
35
36/*
37 *  This function reads the slave device's register
38 *
39 *  Parameters:
40 *      deviceAddress   - i2c Slave device address which register
41 *                        to be read from
42 *      registerIndex   - Slave device's register to be read
43 *
44 *  Return Value:
45 *      Register value
46 */
47unsigned char swI2CReadReg(
48    unsigned char deviceAddress,
49    unsigned char registerIndex
50);
51
52/*
53 *  This function writes a value to the slave device's register
54 *
55 *  Parameters:
56 *      deviceAddress   - i2c Slave device address which register
57 *                        to be written
58 *      registerIndex   - Slave device's register to be written
59 *      data            - Data to be written to the register
60 *
61 *  Result:
62 *          0   - Success
63 *         -1   - Fail
64 */
65long swI2CWriteReg(
66    unsigned char deviceAddress,
67    unsigned char registerIndex,
68    unsigned char data
69);
70
71/*
72 *  These two functions are used to toggle the data on the SCL and SDA I2C lines.
73 *  The used of these two functions are not recommended unless it is necessary.
74 */
75
76/*
77 *  This function set/reset the SCL GPIO pin
78 *
79 *  Parameters:
80 *      value	- Bit value to set to the SCL or SDA (0 = low, 1 = high)
81 */
82void swI2CSCL(unsigned char value);
83
84/*
85 *  This function set/reset the SDA GPIO pin
86 *
87 *  Parameters:
88 *      value	- Bit value to set to the SCL or SDA (0 = low, 1 = high)
89 */
90void swI2CSDA(unsigned char value);
91
92#endif  /* _SWI2C_H_ */
93