#include <linux/videodev2.h>
 
 #include <media/media-entity.h>
+#include <media/v4l2-async.h>
 #include <media/v4l2-ctrls.h>
 #include <media/v4l2-device.h>
 #include <media/v4l2-event.h>
        /* Update exposure time min/max to match frame format */
        ov965x_update_exposure_ctrl(ov965x);
 
+       ret = v4l2_async_register_subdev(sd);
+       if (ret < 0)
+               goto err_ctrls;
+
        return 0;
 err_ctrls:
        v4l2_ctrl_handler_free(sd->ctrl_handler);
 {
        struct v4l2_subdev *sd = i2c_get_clientdata(client);
 
-       v4l2_device_unregister_subdev(sd);
+       v4l2_async_unregister_subdev(sd);
        v4l2_ctrl_handler_free(sd->ctrl_handler);
        media_entity_cleanup(&sd->entity);