|
@@ -461,6 +461,22 @@ static int adv7180_g_std(struct v4l2_subdev *sd, v4l2_std_id *norm)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static int adv7180_g_frame_interval(struct v4l2_subdev *sd,
|
|
|
+ struct v4l2_subdev_frame_interval *fi)
|
|
|
+{
|
|
|
+ struct adv7180_state *state = to_state(sd);
|
|
|
+
|
|
|
+ if (state->curr_norm & V4L2_STD_525_60) {
|
|
|
+ fi->interval.numerator = 1001;
|
|
|
+ fi->interval.denominator = 30000;
|
|
|
+ } else {
|
|
|
+ fi->interval.numerator = 1;
|
|
|
+ fi->interval.denominator = 25;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static void adv7180_set_power_pin(struct adv7180_state *state, bool on)
|
|
|
{
|
|
|
if (!state->pwdn_gpio)
|
|
@@ -820,6 +836,7 @@ static int adv7180_subscribe_event(struct v4l2_subdev *sd,
|
|
|
static const struct v4l2_subdev_video_ops adv7180_video_ops = {
|
|
|
.s_std = adv7180_s_std,
|
|
|
.g_std = adv7180_g_std,
|
|
|
+ .g_frame_interval = adv7180_g_frame_interval,
|
|
|
.querystd = adv7180_querystd,
|
|
|
.g_input_status = adv7180_g_input_status,
|
|
|
.s_routing = adv7180_s_routing,
|