This source file includes following definitions.
- i2c_mux_priv
1
2
3
4
5
6
7
8
9
10
11 #ifndef _LINUX_I2C_MUX_H
12 #define _LINUX_I2C_MUX_H
13
14 #ifdef __KERNEL__
15
16 #include <linux/bitops.h>
17
18 struct i2c_mux_core {
19 struct i2c_adapter *parent;
20 struct device *dev;
21 unsigned int mux_locked:1;
22 unsigned int arbitrator:1;
23 unsigned int gate:1;
24
25 void *priv;
26
27 int (*select)(struct i2c_mux_core *, u32 chan_id);
28 int (*deselect)(struct i2c_mux_core *, u32 chan_id);
29
30 int num_adapters;
31 int max_adapters;
32 struct i2c_adapter *adapter[0];
33 };
34
35 struct i2c_mux_core *i2c_mux_alloc(struct i2c_adapter *parent,
36 struct device *dev, int max_adapters,
37 int sizeof_priv, u32 flags,
38 int (*select)(struct i2c_mux_core *, u32),
39 int (*deselect)(struct i2c_mux_core *, u32));
40
41
42 #define I2C_MUX_LOCKED BIT(0)
43 #define I2C_MUX_ARBITRATOR BIT(1)
44 #define I2C_MUX_GATE BIT(2)
45
46 static inline void *i2c_mux_priv(struct i2c_mux_core *muxc)
47 {
48 return muxc->priv;
49 }
50
51 struct i2c_adapter *i2c_root_adapter(struct device *dev);
52
53
54
55
56
57
58 int i2c_mux_add_adapter(struct i2c_mux_core *muxc,
59 u32 force_nr, u32 chan_id,
60 unsigned int class);
61
62 void i2c_mux_del_adapters(struct i2c_mux_core *muxc);
63
64 #endif
65
66 #endif