mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 15:11:31 +00:00
[media] tw9910: init priv->scale and update standard
When the standard changes the VACTIVE and VDELAY values need to be updated. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
9212e1d872
commit
1f3375e0b2
@ -510,13 +510,39 @@ static int tw9910_s_std(struct v4l2_subdev *sd, v4l2_std_id norm)
|
||||
{
|
||||
struct i2c_client *client = v4l2_get_subdevdata(sd);
|
||||
struct tw9910_priv *priv = to_tw9910(client);
|
||||
const unsigned hact = 720;
|
||||
const unsigned hdelay = 15;
|
||||
unsigned vact;
|
||||
unsigned vdelay;
|
||||
int ret;
|
||||
|
||||
if (!(norm & (V4L2_STD_NTSC | V4L2_STD_PAL)))
|
||||
return -EINVAL;
|
||||
|
||||
priv->norm = norm;
|
||||
if (norm & V4L2_STD_525_60) {
|
||||
vact = 240;
|
||||
vdelay = 18;
|
||||
ret = tw9910_mask_set(client, VVBI, 0x10, 0x10);
|
||||
} else {
|
||||
vact = 288;
|
||||
vdelay = 24;
|
||||
ret = tw9910_mask_set(client, VVBI, 0x10, 0x00);
|
||||
}
|
||||
if (!ret)
|
||||
ret = i2c_smbus_write_byte_data(client, CROP_HI,
|
||||
((vdelay >> 2) & 0xc0) |
|
||||
((vact >> 4) & 0x30) |
|
||||
((hdelay >> 6) & 0x0c) |
|
||||
((hact >> 8) & 0x03));
|
||||
if (!ret)
|
||||
ret = i2c_smbus_write_byte_data(client, VDELAY_LO,
|
||||
vdelay & 0xff);
|
||||
if (!ret)
|
||||
ret = i2c_smbus_write_byte_data(client, VACTIVE_LO,
|
||||
vact & 0xff);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_VIDEO_ADV_DEBUG
|
||||
@ -820,6 +846,7 @@ static int tw9910_video_probe(struct i2c_client *client)
|
||||
"tw9910 Product ID %0x:%0x\n", id, priv->revision);
|
||||
|
||||
priv->norm = V4L2_STD_NTSC;
|
||||
priv->scale = &tw9910_ntsc_scales[0];
|
||||
|
||||
done:
|
||||
tw9910_s_power(&priv->subdev, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user