struct v4l2_subdev              *sd;
        struct v4l2_async_subdev        *asd;
        struct v4l2_async_notifier      notifier;
-       struct v4l2_subdev_pad_config   *config;
 
        u32 pfe_cfg0;
 
 {
        struct isc_format *isc_fmt;
        struct v4l2_pix_format *pixfmt = &f->fmt.pix;
+       struct v4l2_subdev_pad_config pad_cfg;
        struct v4l2_subdev_format format = {
                .which = V4L2_SUBDEV_FORMAT_TRY,
        };
 
        v4l2_fill_mbus_format(&format.format, pixfmt, mbus_code);
        ret = v4l2_subdev_call(isc->current_subdev->sd, pad, set_fmt,
-                              isc->current_subdev->config, &format);
+                              &pad_cfg, &format);
        if (ret < 0)
                return ret;
 
                                              struct isc_device, v4l2_dev);
        cancel_work_sync(&isc->awb_work);
        video_unregister_device(&isc->video_dev);
-       if (isc->current_subdev->config)
-               v4l2_subdev_free_pad_config(isc->current_subdev->config);
        v4l2_ctrl_handler_free(&isc->ctrls.handler);
 }
 
        INIT_LIST_HEAD(&isc->dma_queue);
        spin_lock_init(&isc->dma_queue_lock);
 
-       sd_entity->config = v4l2_subdev_alloc_pad_config(sd_entity->sd);
-       if (!sd_entity->config)
-               return -ENOMEM;
-
        ret = isc_formats_init(isc);
        if (ret < 0) {
                v4l2_err(&isc->v4l2_dev,