|
@@ -228,7 +228,9 @@ struct i2c_client {
|
|
struct device dev; /* the device structure */
|
|
struct device dev; /* the device structure */
|
|
int irq; /* irq issued by device */
|
|
int irq; /* irq issued by device */
|
|
struct list_head detected;
|
|
struct list_head detected;
|
|
|
|
+#if IS_ENABLED(CONFIG_I2C_SLAVE)
|
|
i2c_slave_cb_t slave_cb; /* callback for slave mode */
|
|
i2c_slave_cb_t slave_cb; /* callback for slave mode */
|
|
|
|
+#endif
|
|
};
|
|
};
|
|
#define to_i2c_client(d) container_of(d, struct i2c_client, dev)
|
|
#define to_i2c_client(d) container_of(d, struct i2c_client, dev)
|
|
|
|
|
|
@@ -253,6 +255,7 @@ static inline void i2c_set_clientdata(struct i2c_client *dev, void *data)
|
|
|
|
|
|
/* I2C slave support */
|
|
/* I2C slave support */
|
|
|
|
|
|
|
|
+#if IS_ENABLED(CONFIG_I2C_SLAVE)
|
|
enum i2c_slave_event {
|
|
enum i2c_slave_event {
|
|
I2C_SLAVE_REQ_READ_START,
|
|
I2C_SLAVE_REQ_READ_START,
|
|
I2C_SLAVE_REQ_READ_END,
|
|
I2C_SLAVE_REQ_READ_END,
|
|
@@ -269,6 +272,7 @@ static inline int i2c_slave_event(struct i2c_client *client,
|
|
{
|
|
{
|
|
return client->slave_cb(client, event, val);
|
|
return client->slave_cb(client, event, val);
|
|
}
|
|
}
|
|
|
|
+#endif
|
|
|
|
|
|
/**
|
|
/**
|
|
* struct i2c_board_info - template for device creation
|
|
* struct i2c_board_info - template for device creation
|
|
@@ -404,8 +408,10 @@ struct i2c_algorithm {
|
|
/* To determine what the adapter supports */
|
|
/* To determine what the adapter supports */
|
|
u32 (*functionality) (struct i2c_adapter *);
|
|
u32 (*functionality) (struct i2c_adapter *);
|
|
|
|
|
|
|
|
+#if IS_ENABLED(CONFIG_I2C_SLAVE)
|
|
int (*reg_slave)(struct i2c_client *client);
|
|
int (*reg_slave)(struct i2c_client *client);
|
|
int (*unreg_slave)(struct i2c_client *client);
|
|
int (*unreg_slave)(struct i2c_client *client);
|
|
|
|
+#endif
|
|
};
|
|
};
|
|
|
|
|
|
/**
|
|
/**
|