1bdab7f26SFrançois Tigeot /* 2*9f4ca867SFrançois Tigeot * Copyright (c) 2013-2016 François Tigeot 3bdab7f26SFrançois Tigeot * All rights reserved. 4bdab7f26SFrançois Tigeot * 5bdab7f26SFrançois Tigeot * Redistribution and use in source and binary forms, with or without 6bdab7f26SFrançois Tigeot * modification, are permitted provided that the following conditions 7bdab7f26SFrançois Tigeot * are met: 8bdab7f26SFrançois Tigeot * 1. Redistributions of source code must retain the above copyright 9bdab7f26SFrançois Tigeot * notice unmodified, this list of conditions, and the following 10bdab7f26SFrançois Tigeot * disclaimer. 11bdab7f26SFrançois Tigeot * 2. Redistributions in binary form must reproduce the above copyright 12bdab7f26SFrançois Tigeot * notice, this list of conditions and the following disclaimer in the 13bdab7f26SFrançois Tigeot * documentation and/or other materials provided with the distribution. 14bdab7f26SFrançois Tigeot * 15bdab7f26SFrançois Tigeot * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16bdab7f26SFrançois Tigeot * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17bdab7f26SFrançois Tigeot * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18bdab7f26SFrançois Tigeot * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19bdab7f26SFrançois Tigeot * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20bdab7f26SFrançois Tigeot * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21bdab7f26SFrançois Tigeot * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22bdab7f26SFrançois Tigeot * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23bdab7f26SFrançois Tigeot * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24bdab7f26SFrançois Tigeot * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25bdab7f26SFrançois Tigeot */ 26bdab7f26SFrançois Tigeot 27bdab7f26SFrançois Tigeot #ifndef _LINUX_I2C_H_ 28bdab7f26SFrançois Tigeot #define _LINUX_I2C_H_ 29bdab7f26SFrançois Tigeot 30fb572d17SFrançois Tigeot #include <linux/mod_devicetable.h> 31fb572d17SFrançois Tigeot #include <linux/device.h> /* for struct device */ 32fb572d17SFrançois Tigeot #include <linux/sched.h> /* for completion */ 33fb572d17SFrançois Tigeot #include <linux/mutex.h> 34*9f4ca867SFrançois Tigeot #include <uapi_linux/i2c.h> 358c49d0deSFrançois Tigeot 36ba55f2f5SFrançois Tigeot #include <bus/iicbus/iic.h> 37ba55f2f5SFrançois Tigeot #include <bus/iicbus/iiconf.h> 38ba55f2f5SFrançois Tigeot #include "iicbus_if.h" 39ba55f2f5SFrançois Tigeot 406e29dde8SFrançois Tigeot #define I2C_M_RD IIC_M_RD 41ba55f2f5SFrançois Tigeot #define I2C_M_NOSTART IIC_M_NOSTART 42ba55f2f5SFrançois Tigeot 43*9f4ca867SFrançois Tigeot struct i2c_adapter { 44*9f4ca867SFrançois Tigeot const struct i2c_algorithm *algo; 45*9f4ca867SFrançois Tigeot void *algo_data; 46*9f4ca867SFrançois Tigeot 47*9f4ca867SFrançois Tigeot int timeout; 48*9f4ca867SFrançois Tigeot int retries; 49*9f4ca867SFrançois Tigeot struct device dev; 50*9f4ca867SFrançois Tigeot 51*9f4ca867SFrançois Tigeot char name[48]; 52*9f4ca867SFrançois Tigeot }; 53*9f4ca867SFrançois Tigeot 54*9f4ca867SFrançois Tigeot extern int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, 55*9f4ca867SFrançois Tigeot int num); 56*9f4ca867SFrançois Tigeot 57*9f4ca867SFrançois Tigeot struct i2c_algorithm { 58*9f4ca867SFrançois Tigeot int (*master_xfer)(struct i2c_adapter *adap, struct i2c_msg *msgs, 59*9f4ca867SFrançois Tigeot int num); 60*9f4ca867SFrançois Tigeot 61*9f4ca867SFrançois Tigeot u32 (*functionality) (struct i2c_adapter *); 62*9f4ca867SFrançois Tigeot }; 63*9f4ca867SFrançois Tigeot 64*9f4ca867SFrançois Tigeot extern int i2c_add_adapter(struct i2c_adapter *); 65*9f4ca867SFrançois Tigeot extern void i2c_del_adapter(struct i2c_adapter *); 666e29dde8SFrançois Tigeot 67bdab7f26SFrançois Tigeot #endif /* _LINUX_I2C_H_ */ 68