forked from Minki/linux
[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 i2c_client *client = v4l2_get_subdevdata(sd);
|
||||||
struct tw9910_priv *priv = to_tw9910(client);
|
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)))
|
if (!(norm & (V4L2_STD_NTSC | V4L2_STD_PAL)))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
priv->norm = norm;
|
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
|
#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);
|
"tw9910 Product ID %0x:%0x\n", id, priv->revision);
|
||||||
|
|
||||||
priv->norm = V4L2_STD_NTSC;
|
priv->norm = V4L2_STD_NTSC;
|
||||||
|
priv->scale = &tw9910_ntsc_scales[0];
|
||||||
|
|
||||||
done:
|
done:
|
||||||
tw9910_s_power(&priv->subdev, 0);
|
tw9910_s_power(&priv->subdev, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user