Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / staging / sm750fb / ddk750_swi2c.h
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  */
31 long 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  */
47 unsigned 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  */
65 long 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  */
82 void 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  */
90 void swI2CSDA(unsigned char value);
91
92 #endif  /* _SWI2C_H_ */