{
        struct rvin_dev *vin = video_drvdata(file);
        struct v4l2_subdev *sd = vin_to_source(vin);
-       int pad, ret;
+       int ret;
+
+       if (timings->pad)
+               return -EINVAL;
 
-       pad = timings->pad;
        timings->pad = vin->sink_pad_idx;
 
        ret = v4l2_subdev_call(sd, pad, enum_dv_timings, timings);
 
-       timings->pad = pad;
+       timings->pad = 0;
 
        return ret;
 }
 {
        struct rvin_dev *vin = video_drvdata(file);
        struct v4l2_subdev *sd = vin_to_source(vin);
-       int pad, ret;
+       int ret;
+
+       if (cap->pad)
+               return -EINVAL;
 
-       pad = cap->pad;
        cap->pad = vin->sink_pad_idx;
 
        ret = v4l2_subdev_call(sd, pad, dv_timings_cap, cap);
 
-       cap->pad = pad;
+       cap->pad = 0;
 
        return ret;
 }
 {
        struct rvin_dev *vin = video_drvdata(file);
        struct v4l2_subdev *sd = vin_to_source(vin);
-       int input, ret;
+       int ret;
 
        if (edid->pad)
                return -EINVAL;
 
-       input = edid->pad;
        edid->pad = vin->sink_pad_idx;
 
        ret = v4l2_subdev_call(sd, pad, get_edid, edid);
 
-       edid->pad = input;
+       edid->pad = 0;
 
        return ret;
 }
 {
        struct rvin_dev *vin = video_drvdata(file);
        struct v4l2_subdev *sd = vin_to_source(vin);
-       int input, ret;
+       int ret;
 
        if (edid->pad)
                return -EINVAL;
 
-       input = edid->pad;
        edid->pad = vin->sink_pad_idx;
 
        ret = v4l2_subdev_call(sd, pad, set_edid, edid);
 
-       edid->pad = input;
+       edid->pad = 0;
 
        return ret;
 }