struct vsp1_entity *prev, unsigned int prev_pad,
                              struct vsp1_entity *next, unsigned int next_pad)
 {
-       struct v4l2_subdev_format format;
+       struct v4l2_subdev_format format = {
+               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+       };
        int ret;
 
        if (!uif) {
        prev->sink = uif;
        prev->sink_pad = UIF_PAD_SINK;
 
-       memset(&format, 0, sizeof(format));
-       format.which = V4L2_SUBDEV_FORMAT_ACTIVE;
        format.pad = prev_pad;
 
        ret = v4l2_subdev_call(&prev->subdev, pad, get_fmt, NULL, &format);
                                      struct vsp1_entity *uif,
                                      unsigned int brx_input)
 {
-       struct v4l2_subdev_selection sel;
-       struct v4l2_subdev_format format;
+       struct v4l2_subdev_selection sel = {
+               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+       };
+       struct v4l2_subdev_format format = {
+               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+       };
        const struct v4l2_rect *crop;
        int ret;
 
         */
        crop = &vsp1->drm->inputs[rpf->entity.index].crop;
 
-       memset(&format, 0, sizeof(format));
-       format.which = V4L2_SUBDEV_FORMAT_ACTIVE;
        format.pad = RWPF_PAD_SINK;
        format.format.width = crop->width + crop->left;
        format.format.height = crop->height + crop->top;
                __func__, format.format.width, format.format.height,
                format.format.code, rpf->entity.index);
 
-       memset(&sel, 0, sizeof(sel));
-       sel.which = V4L2_SUBDEV_FORMAT_ACTIVE;
        sel.pad = RWPF_PAD_SINK;
        sel.target = V4L2_SEL_TGT_CROP;
        sel.r = *crop;
 
 int vsp1_entity_init_cfg(struct v4l2_subdev *subdev,
                         struct v4l2_subdev_state *sd_state)
 {
-       struct v4l2_subdev_format format;
        unsigned int pad;
 
        for (pad = 0; pad < subdev->entity.num_pads - 1; ++pad) {
-               memset(&format, 0, sizeof(format));
-
-               format.pad = pad;
-               format.which = sd_state ? V4L2_SUBDEV_FORMAT_TRY
-                            : V4L2_SUBDEV_FORMAT_ACTIVE;
+               struct v4l2_subdev_format format = {
+                       .pad = pad,
+                       .which = sd_state ? V4L2_SUBDEV_FORMAT_TRY
+                              : V4L2_SUBDEV_FORMAT_ACTIVE,
+               };
 
                v4l2_subdev_call(subdev, pad, set_fmt, sd_state, &format);
        }
 
        struct fimc_dev *fimc = ctx->fimc_dev;
        struct fimc_pipeline *p = to_fimc_pipeline(fimc->vid_cap.ve.pipe);
        struct v4l2_subdev *sd = p->subdevs[IDX_SENSOR];
-       struct v4l2_subdev_format sfmt;
+       struct v4l2_subdev_format sfmt = {
+               .which = set ? V4L2_SUBDEV_FORMAT_ACTIVE
+                      : V4L2_SUBDEV_FORMAT_TRY,
+       };
        struct v4l2_mbus_framefmt *mf = &sfmt.format;
        struct media_entity *me;
        struct fimc_fmt *ffmt;
        if (WARN_ON(!sd || !tfmt))
                return -EINVAL;
 
-       memset(&sfmt, 0, sizeof(sfmt));
        sfmt.format = *tfmt;
-       sfmt.which = set ? V4L2_SUBDEV_FORMAT_ACTIVE : V4L2_SUBDEV_FORMAT_TRY;
 
        me = fimc_pipeline_get_head(&sd->entity);
 
 
                          struct v4l2_frmsizeenum *fsize)
 {
        struct vpfe_device *vpfe = video_drvdata(file);
-       struct v4l2_subdev_frame_size_enum fse;
+       struct v4l2_subdev_frame_size_enum fse = {
+               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+       };
        struct v4l2_subdev *sd = vpfe->current_subdev->sd;
        struct vpfe_fmt *fmt;
        int ret;
 
        memset(fsize->reserved, 0x0, sizeof(fsize->reserved));
 
-       memset(&fse, 0x0, sizeof(fse));
        fse.index = fsize->index;
        fse.pad = 0;
        fse.code = fmt->code;
-       fse.which = V4L2_SUBDEV_FORMAT_ACTIVE;
        ret = v4l2_subdev_call(sd, pad, enum_frame_size, NULL, &fse);
        if (ret)
                return ret;
 {
        struct vpfe_device *vpfe = container_of(notifier->v4l2_dev,
                                               struct vpfe_device, v4l2_dev);
-       struct v4l2_subdev_mbus_code_enum mbus_code;
        struct vpfe_subdev_info *sdinfo;
        struct vpfe_fmt *fmt;
        int ret = 0;
 
        vpfe->num_active_fmt = 0;
        for (j = 0, i = 0; (ret != -EINVAL); ++j) {
-               memset(&mbus_code, 0, sizeof(mbus_code));
-               mbus_code.index = j;
-               mbus_code.which = V4L2_SUBDEV_FORMAT_ACTIVE;
+               struct v4l2_subdev_mbus_code_enum mbus_code = {
+                       .index = j,
+                       .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+               };
+
                ret = v4l2_subdev_call(subdev, pad, enum_mbus_code,
                                       NULL, &mbus_code);
                if (ret)
 
 
 static int cal_ctx_v4l2_init_formats(struct cal_ctx *ctx)
 {
-       struct v4l2_subdev_mbus_code_enum mbus_code;
        struct v4l2_mbus_framefmt mbus_fmt;
        const struct cal_format_info *fmtinfo;
        unsigned int i, j, k;
        ctx->num_active_fmt = 0;
 
        for (j = 0, i = 0; ; ++j) {
+               struct v4l2_subdev_mbus_code_enum mbus_code = {
+                       .index = j,
+                       .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+               };
 
-               memset(&mbus_code, 0, sizeof(mbus_code));
-               mbus_code.index = j;
-               mbus_code.which = V4L2_SUBDEV_FORMAT_ACTIVE;
                ret = v4l2_subdev_call(ctx->phy->source, pad, enum_mbus_code,
                                       NULL, &mbus_code);
                if (ret == -EINVAL)
 
 {
        struct dvb_usb_device *dvbdev = video_drvdata(file);
        struct cxusb_medion_dev *cxdev = dvbdev->priv;
-       struct v4l2_subdev_format subfmt;
+       struct v4l2_subdev_format subfmt = {
+               .which = isset ? V4L2_SUBDEV_FORMAT_ACTIVE :
+                        V4L2_SUBDEV_FORMAT_TRY,
+       };
        u32 field;
        int ret;
 
        field = vb2_start_streaming_called(&cxdev->videoqueue) ?
                cxdev->field_order : cxusb_medion_field_order(cxdev);
 
-       memset(&subfmt, 0, sizeof(subfmt));
-       subfmt.which = isset ? V4L2_SUBDEV_FORMAT_ACTIVE :
-               V4L2_SUBDEV_FORMAT_TRY;
        subfmt.format.width = f->fmt.pix.width & ~1;
        subfmt.format.height = f->fmt.pix.height & ~1;
        subfmt.format.code = MEDIA_BUS_FMT_FIXED;
                                            .buf = tuner_analog_msg_data,
                                            .len =
                                            sizeof(tuner_analog_msg_data) };
-       struct v4l2_subdev_format subfmt;
+       struct v4l2_subdev_format subfmt = {
+               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+       };
        int ret;
 
        /* switch tuner to analog mode so IF demod will become accessible */
        v4l2_subdev_call(cxdev->tuner, video, s_std, cxdev->norm);
        v4l2_subdev_call(cxdev->cx25840, video, s_std, cxdev->norm);
 
-       memset(&subfmt, 0, sizeof(subfmt));
-       subfmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
        subfmt.format.width = cxdev->width;
        subfmt.format.height = cxdev->height;
        subfmt.format.code = MEDIA_BUS_FMT_FIXED;
 
                                 struct v4l2_streamparm *a)
 {
        struct capture_priv *priv = video_drvdata(file);
-       struct v4l2_subdev_frame_interval fi;
+       struct v4l2_subdev_frame_interval fi = {
+               .pad = priv->src_sd_pad,
+       };
        int ret;
 
        if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
                return -EINVAL;
 
-       memset(&fi, 0, sizeof(fi));
-       fi.pad = priv->src_sd_pad;
        ret = v4l2_subdev_call(priv->src_sd, video, g_frame_interval, &fi);
        if (ret < 0)
                return ret;
                                 struct v4l2_streamparm *a)
 {
        struct capture_priv *priv = video_drvdata(file);
-       struct v4l2_subdev_frame_interval fi;
+       struct v4l2_subdev_frame_interval fi = {
+               .pad = priv->src_sd_pad,
+       };
        int ret;
 
        if (a->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
                return -EINVAL;
 
-       memset(&fi, 0, sizeof(fi));
-       fi.pad = priv->src_sd_pad;
        fi.interval = a->parm.capture.timeperframe;
        ret = v4l2_subdev_call(priv->src_sd, video, s_frame_interval, &fi);
        if (ret < 0)
 
                       struct v4l2_subdev_state *sd_state)
 {
        struct v4l2_mbus_framefmt *mf_try;
-       struct v4l2_subdev_format format;
        unsigned int pad;
        int ret;
 
        for (pad = 0; pad < sd->entity.num_pads; pad++) {
-               memset(&format, 0, sizeof(format));
+               struct v4l2_subdev_format format = {
+                       .pad = pad,
+                       .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+               };
 
-               format.pad = pad;
-               format.which = V4L2_SUBDEV_FORMAT_ACTIVE;
                ret = v4l2_subdev_call(sd, pad, get_fmt, NULL, &format);
                if (ret)
                        continue;
 
 __iss_video_get_format(struct iss_video *video,
                       struct v4l2_mbus_framefmt *format)
 {
-       struct v4l2_subdev_format fmt;
+       struct v4l2_subdev_format fmt = {
+               .which = V4L2_SUBDEV_FORMAT_ACTIVE,
+       };
        struct v4l2_subdev *subdev;
        u32 pad;
        int ret;
        if (!subdev)
                return -EINVAL;
 
-       memset(&fmt, 0, sizeof(fmt));
        fmt.pad = pad;
-       fmt.which = V4L2_SUBDEV_FORMAT_ACTIVE;
 
        mutex_lock(&video->mutex);
        ret = v4l2_subdev_call(subdev, pad, get_fmt, NULL, &fmt);