@@ -7,6 +7,7 @@
#include <linux/i2c.h>
#include <linux/i2c-mux.h>
+#include <linux/i2c-smbus.h>
#include <linux/overflow.h>
#include <linux/platform_data/i2c-mux-gpio.h>
#include <linux/platform_device.h>
@@ -216,6 +217,11 @@ static int i2c_mux_gpio_probe(struct platform_device *pdev)
dev_info(&pdev->dev, "%d port mux on %s adapter\n",
mux->data.n_values, parent->name);
+ if (mux->data.register_spd) {
+ for (i = 0; i < muxc->num_adapters; i++)
+ i2c_register_spd(muxc->adapter[i]);
+ }
+
return 0;
add_adapter_failed:
@@ -20,6 +20,7 @@
* @n_values: Number of multiplexer positions (busses to instantiate)
* @classes: Optional I2C auto-detection classes
* @idle: Bitmask to write to MUX when idle or GPIO_I2CMUX_NO_IDLE if not used
+ * @register_spd: call i2c_register_spd for the child adapters on muxed segments
*/
struct i2c_mux_gpio_platform_data {
int parent;
@@ -28,6 +29,7 @@ struct i2c_mux_gpio_platform_data {
int n_values;
const unsigned *classes;
unsigned idle;
+ unsigned int register_spd:1;
};
#endif /* _LINUX_I2C_MUX_GPIO_H */
Now that i2c_register_spd() has been extended for use on muxed segments, provide the parent with an option to instruct the child adapters to call i2c_register_spd() for each segment. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> --- drivers/i2c/muxes/i2c-mux-gpio.c | 6 ++++++ include/linux/platform_data/i2c-mux-gpio.h | 2 ++ 2 files changed, 8 insertions(+)