Re: [PATCH v2 1/8] i2c-mux: add common core data for every mux instance
From: Vladimir Zapolskiy <hidden>
Date: 2016-03-24 09:51:06
Also in:
linux-i2c, linux-iio, linux-media, lkml
Hi Peter, On 05.01.2016 17:57, Peter Rosin wrote:
From: Peter Rosin <redacted> The initial core mux structure starts off small with only the parent adapter pointer, which all muxes have, and a priv pointer for mux driver private data. Add i2c_mux_alloc function to unify the creation of a mux. Where appropriate, pass around the mux core structure instead of the parent adapter or the driver private data. Remove the parent adapter pointer from the driver private data for all mux drivers. Signed-off-by: Peter Rosin <redacted>
is it still under review? If yes, please find one question from me below :) [snip]
quoted hunk ↗ jump to hunk
@@ -196,21 +195,21 @@ static int i2c_arbitrator_probe(struct platform_device *pdev) dev_err(dev, "Cannot parse i2c-parent\n"); return -EINVAL; } - arb->parent = of_get_i2c_adapter_by_node(parent_np); + muxc->parent = of_find_i2c_adapter_by_node(parent_np);
why do you prefer here to use "unlocked" version of API? Foe example would it be safe/possible to unload an I2C bus device driver module or unbind I2C device itself in runtime?
of_node_put(parent_np);
- if (!arb->parent) {
+ if (!muxc->parent) {
dev_err(dev, "Cannot find parent bus\n");
return -EPROBE_DEFER;
}
/* Actually add the mux adapter */
- arb->child = i2c_add_mux_adapter(arb->parent, dev, arb, 0, 0, 0,
+ arb->child = i2c_add_mux_adapter(muxc, dev, arb, 0, 0, 0,
i2c_arbitrator_select,
i2c_arbitrator_deselect);
if (!arb->child) {
dev_err(dev, "Failed to add adapter\n");
ret = -ENODEV;
- i2c_put_adapter(arb->parent);
+ i2c_put_adapter(muxc->parent);
}
return ret;-- With best wishes, Vladimir