125338628SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2f5016082SEric S. Stone /*
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  *
12f5016082SEric S. Stone  */
13f5016082SEric S. Stone 
1481dee67eSSudip Mukherjee #ifndef _SWI2C_H_
1581dee67eSSudip Mukherjee #define _SWI2C_H_
1681dee67eSSudip Mukherjee 
1781dee67eSSudip Mukherjee /* Default i2c CLK and Data GPIO. These are the default i2c pins */
1881dee67eSSudip Mukherjee #define DEFAULT_I2C_SCL                     30
1981dee67eSSudip Mukherjee #define DEFAULT_I2C_SDA                     31
2081dee67eSSudip Mukherjee 
2181dee67eSSudip Mukherjee /*
2281dee67eSSudip Mukherjee  * This function initializes the i2c attributes and bus
2381dee67eSSudip Mukherjee  *
2481dee67eSSudip Mukherjee  * Parameters:
2581dee67eSSudip Mukherjee  *      i2cClkGPIO  - The GPIO pin to be used as i2c SCL
2681dee67eSSudip Mukherjee  *      i2cDataGPIO - The GPIO pin to be used as i2c SDA
2781dee67eSSudip Mukherjee  *
2881dee67eSSudip Mukherjee  * Return Value:
2981dee67eSSudip Mukherjee  *      -1   - Fail to initialize the i2c
3081dee67eSSudip Mukherjee  *       0   - Success
3181dee67eSSudip Mukherjee  */
32c9750456SMatej Dujava long sm750_sw_i2c_init(unsigned char clk_gpio, unsigned char data_gpio);
3381dee67eSSudip Mukherjee 
3481dee67eSSudip Mukherjee /*
3581dee67eSSudip Mukherjee  *  This function reads the slave device's register
3681dee67eSSudip Mukherjee  *
3781dee67eSSudip Mukherjee  *  Parameters:
38fe820044SMike Rapoport  *      addr   - i2c Slave device address which register
3981dee67eSSudip Mukherjee  *                        to be read from
40fe820044SMike Rapoport  *      reg    - Slave device's register to be read
4181dee67eSSudip Mukherjee  *
4281dee67eSSudip Mukherjee  *  Return Value:
4381dee67eSSudip Mukherjee  *      Register value
4481dee67eSSudip Mukherjee  */
45c9750456SMatej Dujava unsigned char sm750_sw_i2c_read_reg(unsigned char addr, unsigned char reg);
4681dee67eSSudip Mukherjee 
4781dee67eSSudip Mukherjee /*
4881dee67eSSudip Mukherjee  *  This function writes a value to the slave device's register
4981dee67eSSudip Mukherjee  *
5081dee67eSSudip Mukherjee  *  Parameters:
51fe820044SMike Rapoport  *      addr            - i2c Slave device address which register
5281dee67eSSudip Mukherjee  *                        to be written
53fe820044SMike Rapoport  *      reg             - Slave device's register to be written
5481dee67eSSudip Mukherjee  *      data            - Data to be written to the register
5581dee67eSSudip Mukherjee  *
5681dee67eSSudip Mukherjee  *  Result:
5781dee67eSSudip Mukherjee  *          0   - Success
5881dee67eSSudip Mukherjee  *         -1   - Fail
5981dee67eSSudip Mukherjee  */
60c9750456SMatej Dujava long sm750_sw_i2c_write_reg(unsigned char addr,
61fe820044SMike Rapoport 			    unsigned char reg,
62c9750456SMatej Dujava 			    unsigned char data);
6381dee67eSSudip Mukherjee 
6481dee67eSSudip Mukherjee #endif  /* _SWI2C_H_ */
65