Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6457b626 authored by Niklas Söderlund's avatar Niklas Söderlund Committed by Mauro Carvalho Chehab
Browse files

media: adv7180: fix field type to V4L2_FIELD_ALTERNATE



The ADV7180 and ADV7182 transmit whole fields, bottom field followed
by top (or vice-versa, depending on detected video standard). So
for chips that do not have support for explicitly setting the field
mode via I2P, set the field mode to V4L2_FIELD_ALTERNATE.

I2P converts fields into frames using an edge adaptive algorithm. The
frame rate is the same as the 'field rate': e.g. X fields per second
are now X frames per second.

Signed-off-by: default avatarNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent ddc5c1f7
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -644,6 +644,9 @@ static int adv7180_mbus_fmt(struct v4l2_subdev *sd,
	fmt->width = 720;
	fmt->height = state->curr_norm & V4L2_STD_525_60 ? 480 : 576;

	if (state->field == V4L2_FIELD_ALTERNATE)
		fmt->height /= 2;

	return 0;
}

@@ -711,11 +714,11 @@ static int adv7180_set_pad_format(struct v4l2_subdev *sd,

	switch (format->format.field) {
	case V4L2_FIELD_NONE:
		if (!(state->chip_info->flags & ADV7180_FLAG_I2P))
			format->format.field = V4L2_FIELD_INTERLACED;
		if (state->chip_info->flags & ADV7180_FLAG_I2P)
			break;
		/* fall through */
	default:
		format->format.field = V4L2_FIELD_INTERLACED;
		format->format.field = V4L2_FIELD_ALTERNATE;
		break;
	}

@@ -1291,7 +1294,7 @@ static int adv7180_probe(struct i2c_client *client,
		return -ENOMEM;

	state->client = client;
	state->field = V4L2_FIELD_INTERLACED;
	state->field = V4L2_FIELD_ALTERNATE;
	state->chip_info = (struct adv7180_chip_info *)id->driver_data;

	state->pwdn_gpio = devm_gpiod_get_optional(&client->dev, "powerdown",