return ret;
 }
 
-static int max9286_init(struct device *dev)
+static int max9286_init(struct max9286_priv *priv)
 {
-       struct max9286_priv *priv;
-       struct i2c_client *client;
+       struct i2c_client *client = priv->client;
        int ret;
 
-       client = to_i2c_client(dev);
-       priv = i2c_get_clientdata(client);
-
        ret = max9286_poc_enable(priv, true);
        if (ret)
                return ret;
 
        ret = max9286_setup(priv);
        if (ret) {
-               dev_err(dev, "Unable to setup max9286\n");
+               dev_err(&client->dev, "Unable to setup max9286\n");
                goto err_poc_disable;
        }
 
         */
        ret = max9286_v4l2_register(priv);
        if (ret) {
-               dev_err(dev, "Failed to register with V4L2\n");
+               dev_err(&client->dev, "Failed to register with V4L2\n");
                goto err_poc_disable;
        }
 
        ret = max9286_i2c_mux_init(priv);
        if (ret) {
-               dev_err(dev, "Unable to initialize I2C multiplexer\n");
+               dev_err(&client->dev, "Unable to initialize I2C multiplexer\n");
                goto err_v4l2_register;
        }
 
        mutex_init(&priv->mutex);
 
        priv->client = client;
-       i2c_set_clientdata(client, priv);
 
        priv->gpiod_pwdn = devm_gpiod_get_optional(&client->dev, "enable",
                                                   GPIOD_OUT_HIGH);
        if (ret)
                goto err_powerdown;
 
-       ret = max9286_init(&client->dev);
+       ret = max9286_init(priv);
        if (ret < 0)
                goto err_cleanup_dt;
 
 
 static int max9286_remove(struct i2c_client *client)
 {
-       struct max9286_priv *priv = i2c_get_clientdata(client);
+       struct max9286_priv *priv = sd_to_max9286(i2c_get_clientdata(client));
 
        i2c_mux_del_adapters(priv->mux);