}
        mutex_unlock(&dev->io_mutex);
 
-       if (hdpvr_register_videodev(dev, &interface->dev,
-                                   video_nr[atomic_inc_return(&dev_nr)])) {
-               v4l2_err(&dev->v4l2_dev, "registering videodev failed\n");
-               goto error;
-       }
-
 #if IS_ENABLED(CONFIG_I2C)
        retval = hdpvr_register_i2c_adapter(dev);
        if (retval < 0) {
        }
 #endif
 
+       retval = hdpvr_register_videodev(dev, &interface->dev,
+                                   video_nr[atomic_inc_return(&dev_nr)]);
+       if (retval < 0) {
+               v4l2_err(&dev->v4l2_dev, "registering videodev failed\n");
+               goto error;
+       }
+
        /* let the user know what node this device is now attached to */
        v4l2_info(&dev->v4l2_dev, "device now attached to %s\n",
                  video_device_node_name(dev->video_dev));