/* Create the i2c client */
        if (info->addr == 0 && probe_addrs)
-               client = i2c_new_probed_device(adapter, info, probe_addrs,
-                                              NULL);
+               client = i2c_new_scanned_device(adapter, info, probe_addrs,
+                                               NULL);
        else
-               client = i2c_new_device(adapter, info);
+               client = i2c_new_client_device(adapter, info);
 
        /*
         * Note: by loading the module first we are certain that c->driver
         * want to use the i2c device, so explicitly loading the module
         * is the best alternative.
         */
-       if (!client || !client->dev.driver)
+       if (!i2c_client_has_driver(client))
                goto error;
 
        /* Lock the module so we can safely get the v4l2_subdev pointer */
         * If we have a client but no subdev, then something went wrong and
         * we must unregister the client.
         */
-       if (client && !sd)
+       if (!IS_ERR(client) && !sd)
                i2c_unregister_device(client);
        return sd;
 }