#include <linux/acpi.h>
#include <linux/i2c.h>
#include <linux/i2c-mux.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/slab.h>
#include <linux/sysfs.h>
struct i2c_mux_priv { … };
static int __i2c_mux_master_xfer(struct i2c_adapter *adap,
struct i2c_msg msgs[], int num)
{ … }
static int i2c_mux_master_xfer(struct i2c_adapter *adap,
struct i2c_msg msgs[], int num)
{ … }
static int __i2c_mux_smbus_xfer(struct i2c_adapter *adap,
u16 addr, unsigned short flags,
char read_write, u8 command,
int size, union i2c_smbus_data *data)
{ … }
static int i2c_mux_smbus_xfer(struct i2c_adapter *adap,
u16 addr, unsigned short flags,
char read_write, u8 command,
int size, union i2c_smbus_data *data)
{ … }
static u32 i2c_mux_functionality(struct i2c_adapter *adap)
{ … }
static void i2c_mux_lock_bus(struct i2c_adapter *adapter, unsigned int flags)
{ … }
static int i2c_mux_trylock_bus(struct i2c_adapter *adapter, unsigned int flags)
{ … }
static void i2c_mux_unlock_bus(struct i2c_adapter *adapter, unsigned int flags)
{ … }
static void i2c_parent_lock_bus(struct i2c_adapter *adapter,
unsigned int flags)
{ … }
static int i2c_parent_trylock_bus(struct i2c_adapter *adapter,
unsigned int flags)
{ … }
static void i2c_parent_unlock_bus(struct i2c_adapter *adapter,
unsigned int flags)
{ … }
struct i2c_adapter *i2c_root_adapter(struct device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
struct i2c_mux_core *i2c_mux_alloc(struct i2c_adapter *parent,
struct device *dev, int max_adapters,
int sizeof_priv, u32 flags,
int (*select)(struct i2c_mux_core *, u32),
int (*deselect)(struct i2c_mux_core *, u32))
{ … }
EXPORT_SYMBOL_GPL(…);
static const struct i2c_lock_operations i2c_mux_lock_ops = …;
static const struct i2c_lock_operations i2c_parent_lock_ops = …;
int i2c_mux_add_adapter(struct i2c_mux_core *muxc,
u32 force_nr, u32 chan_id)
{ … }
EXPORT_SYMBOL_GPL(…);
void i2c_mux_del_adapters(struct i2c_mux_core *muxc)
{ … }
EXPORT_SYMBOL_GPL(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;