return v4l2_subdev_get_try_compose(&bru->entity.subdev, cfg, pad);
 }
 
-static int bru_get_format(struct v4l2_subdev *subdev,
-                         struct v4l2_subdev_pad_config *cfg,
-                         struct v4l2_subdev_format *fmt)
-{
-       struct vsp1_bru *bru = to_bru(subdev);
-       struct v4l2_subdev_pad_config *config;
-
-       config = vsp1_entity_get_pad_config(&bru->entity, cfg, fmt->which);
-       if (!config)
-               return -EINVAL;
-
-       fmt->format = *vsp1_entity_get_pad_format(&bru->entity, config,
-                                                 fmt->pad);
-
-       return 0;
-}
-
 static void bru_try_format(struct vsp1_bru *bru,
                           struct v4l2_subdev_pad_config *config,
                           unsigned int pad, struct v4l2_mbus_framefmt *fmt)
        .init_cfg = vsp1_entity_init_cfg,
        .enum_mbus_code = bru_enum_mbus_code,
        .enum_frame_size = bru_enum_frame_size,
-       .get_fmt = bru_get_format,
+       .get_fmt = vsp1_subdev_get_pad_format,
        .set_fmt = bru_set_format,
        .get_selection = bru_get_selection,
        .set_selection = bru_set_selection,
 
        return 0;
 }
 
+/*
+ * vsp1_subdev_get_pad_format - Subdev pad get_fmt handler
+ * @subdev: V4L2 subdevice
+ * @cfg: V4L2 subdev pad configuration
+ * @fmt: V4L2 subdev format
+ *
+ * This function implements the subdev get_fmt pad operation. It can be used as
+ * a direct drop-in for the operation handler.
+ */
+int vsp1_subdev_get_pad_format(struct v4l2_subdev *subdev,
+                              struct v4l2_subdev_pad_config *cfg,
+                              struct v4l2_subdev_format *fmt)
+{
+       struct vsp1_entity *entity = to_vsp1_entity(subdev);
+       struct v4l2_subdev_pad_config *config;
+
+       config = vsp1_entity_get_pad_config(entity, cfg, fmt->which);
+       if (!config)
+               return -EINVAL;
+
+       fmt->format = *vsp1_entity_get_pad_format(entity, config, fmt->pad);
+
+       return 0;
+}
+
 /* -----------------------------------------------------------------------------
  * Media Operations
  */
 
 void vsp1_entity_route_setup(struct vsp1_entity *source,
                             struct vsp1_dl_list *dl);
 
+int vsp1_subdev_get_pad_format(struct v4l2_subdev *subdev,
+                              struct v4l2_subdev_pad_config *cfg,
+                              struct v4l2_subdev_format *fmt);
+
 #endif /* __VSP1_ENTITY_H__ */
 
        return 0;
 }
 
-static int hsit_get_format(struct v4l2_subdev *subdev,
-                          struct v4l2_subdev_pad_config *cfg,
-                          struct v4l2_subdev_format *fmt)
-{
-       struct vsp1_hsit *hsit = to_hsit(subdev);
-       struct v4l2_subdev_pad_config *config;
-
-       config = vsp1_entity_get_pad_config(&hsit->entity, cfg, fmt->which);
-       if (!config)
-               return -EINVAL;
-
-       fmt->format = *vsp1_entity_get_pad_format(&hsit->entity, config,
-                                                 fmt->pad);
-
-       return 0;
-}
-
 static int hsit_set_format(struct v4l2_subdev *subdev,
                           struct v4l2_subdev_pad_config *cfg,
                           struct v4l2_subdev_format *fmt)
        .init_cfg = vsp1_entity_init_cfg,
        .enum_mbus_code = hsit_enum_mbus_code,
        .enum_frame_size = hsit_enum_frame_size,
-       .get_fmt = hsit_get_format,
+       .get_fmt = vsp1_subdev_get_pad_format,
        .set_fmt = hsit_set_format,
 };
 
 
        return 0;
 }
 
-static int lif_get_format(struct v4l2_subdev *subdev,
-                         struct v4l2_subdev_pad_config *cfg,
-                         struct v4l2_subdev_format *fmt)
-{
-       struct vsp1_lif *lif = to_lif(subdev);
-       struct v4l2_subdev_pad_config *config;
-
-       config = vsp1_entity_get_pad_config(&lif->entity, cfg, fmt->which);
-       if (!config)
-               return -EINVAL;
-
-       fmt->format = *vsp1_entity_get_pad_format(&lif->entity, config,
-                                                 fmt->pad);
-
-       return 0;
-}
-
 static int lif_set_format(struct v4l2_subdev *subdev,
                          struct v4l2_subdev_pad_config *cfg,
                          struct v4l2_subdev_format *fmt)
        .init_cfg = vsp1_entity_init_cfg,
        .enum_mbus_code = lif_enum_mbus_code,
        .enum_frame_size = lif_enum_frame_size,
-       .get_fmt = lif_get_format,
+       .get_fmt = vsp1_subdev_get_pad_format,
        .set_fmt = lif_set_format,
 };
 
 
        return 0;
 }
 
-static int lut_get_format(struct v4l2_subdev *subdev,
-                         struct v4l2_subdev_pad_config *cfg,
-                         struct v4l2_subdev_format *fmt)
-{
-       struct vsp1_lut *lut = to_lut(subdev);
-       struct v4l2_subdev_pad_config *config;
-
-       config = vsp1_entity_get_pad_config(&lut->entity, cfg, fmt->which);
-       if (!config)
-               return -EINVAL;
-
-       fmt->format = *vsp1_entity_get_pad_format(&lut->entity, config,
-                                                 fmt->pad);
-
-       return 0;
-}
-
 static int lut_set_format(struct v4l2_subdev *subdev,
                          struct v4l2_subdev_pad_config *cfg,
                          struct v4l2_subdev_format *fmt)
        .init_cfg = vsp1_entity_init_cfg,
        .enum_mbus_code = lut_enum_mbus_code,
        .enum_frame_size = lut_enum_frame_size,
-       .get_fmt = lut_get_format,
+       .get_fmt = vsp1_subdev_get_pad_format,
        .set_fmt = lut_set_format,
 };
 
 
        return 0;
 }
 
-static int vsp1_rwpf_get_format(struct v4l2_subdev *subdev,
-                               struct v4l2_subdev_pad_config *cfg,
-                               struct v4l2_subdev_format *fmt)
-{
-       struct vsp1_rwpf *rwpf = to_rwpf(subdev);
-       struct v4l2_subdev_pad_config *config;
-
-       config = vsp1_entity_get_pad_config(&rwpf->entity, cfg, fmt->which);
-       if (!config)
-               return -EINVAL;
-
-       fmt->format = *vsp1_entity_get_pad_format(&rwpf->entity, config,
-                                                 fmt->pad);
-
-       return 0;
-}
-
 static int vsp1_rwpf_set_format(struct v4l2_subdev *subdev,
                                struct v4l2_subdev_pad_config *cfg,
                                struct v4l2_subdev_format *fmt)
        .init_cfg = vsp1_entity_init_cfg,
        .enum_mbus_code = vsp1_rwpf_enum_mbus_code,
        .enum_frame_size = vsp1_rwpf_enum_frame_size,
-       .get_fmt = vsp1_rwpf_get_format,
+       .get_fmt = vsp1_subdev_get_pad_format,
        .set_fmt = vsp1_rwpf_set_format,
        .get_selection = vsp1_rwpf_get_selection,
        .set_selection = vsp1_rwpf_set_selection,
 
        return 0;
 }
 
-static int sru_get_format(struct v4l2_subdev *subdev,
-                         struct v4l2_subdev_pad_config *cfg,
-                         struct v4l2_subdev_format *fmt)
-{
-       struct vsp1_sru *sru = to_sru(subdev);
-       struct v4l2_subdev_pad_config *config;
-
-       config = vsp1_entity_get_pad_config(&sru->entity, cfg, fmt->which);
-       if (!config)
-               return -EINVAL;
-
-       fmt->format = *vsp1_entity_get_pad_format(&sru->entity, config,
-                                                 fmt->pad);
-
-       return 0;
-}
-
 static void sru_try_format(struct vsp1_sru *sru,
                           struct v4l2_subdev_pad_config *config,
                           unsigned int pad, struct v4l2_mbus_framefmt *fmt)
        .init_cfg = vsp1_entity_init_cfg,
        .enum_mbus_code = sru_enum_mbus_code,
        .enum_frame_size = sru_enum_frame_size,
-       .get_fmt = sru_get_format,
+       .get_fmt = vsp1_subdev_get_pad_format,
        .set_fmt = sru_set_format,
 };
 
 
        return 0;
 }
 
-static int uds_get_format(struct v4l2_subdev *subdev,
-                         struct v4l2_subdev_pad_config *cfg,
-                         struct v4l2_subdev_format *fmt)
-{
-       struct vsp1_uds *uds = to_uds(subdev);
-       struct v4l2_subdev_pad_config *config;
-
-       config = vsp1_entity_get_pad_config(&uds->entity, cfg, fmt->which);
-       if (!config)
-               return -EINVAL;
-
-       fmt->format = *vsp1_entity_get_pad_format(&uds->entity, config,
-                                                 fmt->pad);
-
-       return 0;
-}
-
 static void uds_try_format(struct vsp1_uds *uds,
                           struct v4l2_subdev_pad_config *config,
                           unsigned int pad, struct v4l2_mbus_framefmt *fmt)
        .init_cfg = vsp1_entity_init_cfg,
        .enum_mbus_code = uds_enum_mbus_code,
        .enum_frame_size = uds_enum_frame_size,
-       .get_fmt = uds_get_format,
+       .get_fmt = vsp1_subdev_get_pad_format,
        .set_fmt = uds_set_format,
 };