#ifndef __I2C_VIAI2C_COMMON_H_
#define __I2C_VIAI2C_COMMON_H_
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of_irq.h>
#include <linux/platform_device.h>
#define VIAI2C_REG_CR …
#define VIAI2C_CR_ENABLE …
#define VIAI2C_CR_RX_END …
#define VIAI2C_CR_TX_END …
#define VIAI2C_CR_CPU_RDY …
#define VIAI2C_CR_END_MASK …
#define VIAI2C_REG_TCR …
#define VIAI2C_TCR_HS_MODE …
#define VIAI2C_TCR_READ …
#define VIAI2C_TCR_FAST …
#define VIAI2C_TCR_ADDR_MASK …
#define VIAI2C_REG_CSR …
#define VIAI2C_CSR_RCV_NOT_ACK …
#define VIAI2C_CSR_RCV_ACK_MASK …
#define VIAI2C_CSR_READY_MASK …
#define VIAI2C_REG_ISR …
#define VIAI2C_ISR_NACK_ADDR …
#define VIAI2C_ISR_BYTE_END …
#define VIAI2C_ISR_SCL_TIMEOUT …
#define VIAI2C_ISR_MASK_ALL …
#define VIAI2C_REG_IMR …
#define VIAI2C_IMR_BYTE …
#define VIAI2C_IMR_ENABLE_ALL …
#define VIAI2C_REG_CDR …
#define VIAI2C_REG_TR …
#define VIAI2C_REG_MCR …
#define VIAI2C_TIMEOUT …
enum { … };
enum { … };
struct viai2c { … };
int viai2c_wait_bus_not_busy(struct viai2c *i2c);
int viai2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num);
int viai2c_init(struct platform_device *pdev, struct viai2c **pi2c, int plat);
int viai2c_irq_xfer(struct viai2c *i2c);
#endif