On 04.11.2016 00:34, Vladimir Zapolskiy wrote: >> + >> +static int mlxcpld_i2c_probe(struct platform_device *pdev) >> +{ >> + struct mlxcpld_i2c_priv *priv; >> + int err; >> + >> + priv = devm_kzalloc(&pdev->dev, sizeof(struct mlxcpld_i2c_priv), >> + GFP_KERNEL); >> + if (!priv) >> + return -ENOMEM; >> + >> + mutex_init(&priv->lock); >> + platform_set_drvdata(pdev, priv); >> + >> + priv->dev = &pdev->dev; >> + >> + /* Register with i2c layer */ >> + priv->adap = mlxcpld_i2c_adapter; See a correction below. >> + priv->adap.dev.parent = &pdev->dev; >> + priv->adap.retries = MLXCPLD_I2C_RETR_NUM; >> + priv->adap.nr = MLXCPLD_I2C_BUS_NUM; > > So since you want to allow the registration of only one such controller > on a board (by the way in the opposite case it is also expected that > "struct i2c_adapter" is allocated dynamically to avoid rewriting of > data), you probably know the good reason behind it. I've just noticed that you do a struct copy-on-assignment, while I think it is very rarely used in the kernel sources (I don't know why), it cancels my concern expressed above. > > But in that case you may consider to move .retries and .nr > instantiation to the "static struct i2c_adapter" declaration above. > -- With best wishes, Vladimir -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html