#include <linux/clk.h>
#include <linux/completion.h>
#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#define TIMEOUT_MS …
#define II_CONTROL …
#define II_CONTROL_LOCAL_RESET …
#define II_CLOCKTIME …
#define II_COMMAND …
#define II_CMD_START …
#define II_CMD_RESTART …
#define II_CMD_SEND_ACK …
#define II_CMD_GET_ACK …
#define II_CMD_GET_NOACK …
#define II_CMD_STOP …
#define II_COMMAND_GO …
#define II_COMMAND_COMPLETION_STATUS(r) …
#define II_CMD_STATUS_NORMAL …
#define II_CMD_STATUS_ACK_GOOD …
#define II_CMD_STATUS_ACK_BAD …
#define II_CMD_STATUS_ABORT …
#define II_DATA …
#define II_INTFLAG_CLEAR …
#define II_INTENABLE …
struct dc_i2c { … };
enum { … };
static void dc_i2c_cmd(struct dc_i2c *i2c, u8 cmd)
{ … }
static u8 dc_i2c_addr_cmd(struct i2c_msg *msg)
{ … }
static void dc_i2c_data(struct dc_i2c *i2c, u8 data)
{ … }
static void dc_i2c_write_byte(struct dc_i2c *i2c, u8 byte)
{ … }
static void dc_i2c_write_buf(struct dc_i2c *i2c)
{ … }
static void dc_i2c_next_read(struct dc_i2c *i2c)
{ … }
static void dc_i2c_stop(struct dc_i2c *i2c)
{ … }
static u8 dc_i2c_read_byte(struct dc_i2c *i2c)
{ … }
static void dc_i2c_read_buf(struct dc_i2c *i2c)
{ … }
static void dc_i2c_set_irq(struct dc_i2c *i2c, int enable)
{ … }
static int dc_i2c_cmd_status(struct dc_i2c *i2c)
{ … }
static void dc_i2c_start_msg(struct dc_i2c *i2c, int first)
{ … }
static irqreturn_t dc_i2c_irq(int irq, void *dev_id)
{ … }
static int dc_i2c_xfer_msg(struct dc_i2c *i2c, struct i2c_msg *msg, int first,
int last)
{ … }
static int dc_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
{ … }
static int dc_i2c_init_hw(struct dc_i2c *i2c)
{ … }
static u32 dc_i2c_func(struct i2c_adapter *adap)
{ … }
static const struct i2c_algorithm dc_i2c_algorithm = …;
static int dc_i2c_probe(struct platform_device *pdev)
{ … }
static void dc_i2c_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id dc_i2c_match[] = …;
MODULE_DEVICE_TABLE(of, dc_i2c_match);
static struct platform_driver dc_i2c_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;