#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/io.h>
#define I2C_CONTROL …
#define I2C_CONTROLS …
#define I2C_CONTROLC …
#define SCL …
#define SDA …
struct i2c_versatile { … };
static void i2c_versatile_setsda(void *data, int state)
{ … }
static void i2c_versatile_setscl(void *data, int state)
{ … }
static int i2c_versatile_getsda(void *data)
{ … }
static int i2c_versatile_getscl(void *data)
{ … }
static const struct i2c_algo_bit_data i2c_versatile_algo = …;
static int i2c_versatile_probe(struct platform_device *dev)
{ … }
static void i2c_versatile_remove(struct platform_device *dev)
{ … }
static const struct of_device_id i2c_versatile_match[] = …;
MODULE_DEVICE_TABLE(of, i2c_versatile_match);
static struct platform_driver i2c_versatile_driver = …;
static int __init i2c_versatile_init(void)
{ … }
static void __exit i2c_versatile_exit(void)
{ … }
subsys_initcall(i2c_versatile_init);
module_exit(i2c_versatile_exit);
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;