mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-01 08:04:22 +08:00
[media] cx231xx: Provide signal lock status in G_INPUT
Make use of the signal state registers to properly populate the signal lock registers in the cx231xx driver. This allows applications to know whether there is a signal present even in devices which lack a tuner (since such apps typically won't call G_TUNER if no tuner is present). [mchehab@redhat.com: Fix CodingStyle: don't use {} for one-line if's] Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
44ecf1df94
commit
de99d5328c
@ -1179,7 +1179,8 @@ static int vidioc_enum_input(struct file *file, void *priv,
|
||||
{
|
||||
struct cx231xx_fh *fh = priv;
|
||||
struct cx231xx *dev = fh->dev;
|
||||
unsigned int n;
|
||||
u32 gen_stat;
|
||||
unsigned int ret, n;
|
||||
|
||||
n = i->index;
|
||||
if (n >= MAX_CX231XX_INPUT)
|
||||
@ -1198,6 +1199,18 @@ static int vidioc_enum_input(struct file *file, void *priv,
|
||||
|
||||
i->std = dev->vdev->tvnorms;
|
||||
|
||||
/* If they are asking about the active input, read signal status */
|
||||
if (n == dev->video_input) {
|
||||
ret = cx231xx_read_i2c_data(dev, VID_BLK_I2C_ADDRESS,
|
||||
GEN_STAT, 2, &gen_stat, 4);
|
||||
if (ret > 0) {
|
||||
if ((gen_stat & FLD_VPRES) == 0x00)
|
||||
i->status |= V4L2_IN_ST_NO_SIGNAL;
|
||||
if ((gen_stat & FLD_HLOCK) == 0x00)
|
||||
i->status |= V4L2_IN_ST_NO_H_LOCK;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user