* [PATCH 0/4] Some fixes for tuner, tvp5150 and em28xx
@ 2011-02-22 2:17 Mauro Carvalho Chehab
2011-02-22 2:52 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 6+ messages in thread
From: Mauro Carvalho Chehab @ 2011-02-22 2:17 UTC (permalink / raw)
Cc: Linux Media Mailing List
This series contain a minor cleanup for tuner and tvp5150, and two fixes
for em28xx controls. Before the em28xx patches, s_ctrl were failing on
qv4l2, because it were returning a positive value of 1 for some calls.
It also contains a fix for control get/set, as it will now check if the
control exists before actually calling subdev for get/set.
Mauro Carvalho Chehab (4):
[media] tuner: Remove remaining usages of T_DIGITAL_TV
[media] tvp5150: device detection should be done only once
[media] em28xx: Fix return value for s_ctrl
[media] em28xx: properly handle subdev controls
drivers/media/common/tuners/tuner-xc2028.c | 8 ++--
drivers/media/video/em28xx/em28xx-video.c | 35 ++++++++++++++++++++---
drivers/media/video/tvp5150.c | 42 ++++++++++++++--------------
drivers/staging/tm6000/tm6000-cards.c | 2 -
include/media/tuner.h | 2 +-
5 files changed, 56 insertions(+), 33 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] Some fixes for tuner, tvp5150 and em28xx
2011-02-22 2:17 [PATCH 0/4] Some fixes for tuner, tvp5150 and em28xx Mauro Carvalho Chehab
@ 2011-02-22 2:52 ` Mauro Carvalho Chehab
2011-02-22 7:53 ` Hans Verkuil
0 siblings, 1 reply; 6+ messages in thread
From: Mauro Carvalho Chehab @ 2011-02-22 2:52 UTC (permalink / raw)
To: Hans Verkuil; +Cc: Linux Media Mailing List
Em 21-02-2011 23:17, Mauro Carvalho Chehab escreveu:
> This series contain a minor cleanup for tuner and tvp5150, and two fixes
> for em28xx controls. Before the em28xx patches, s_ctrl were failing on
> qv4l2, because it were returning a positive value of 1 for some calls.
>
> It also contains a fix for control get/set, as it will now check if the
> control exists before actually calling subdev for get/set.
>
> Mauro Carvalho Chehab (4):
...
> [media] em28xx: Fix return value for s_ctrl
> [media] em28xx: properly handle subdev controls
Hans,
I discovered the issue with em28xx that I commented you on IRC.
There were, in fact, 3 issues.
One is clearly a driver problem, corrected by "em28xx: properly
handle subdev controls".
The second one being partially qv4l2 and partially driver issue,
fixed by "em28xx: Fix return value for s_ctrl". Basically, V4L2
API and ioctl man page says that an error is indicated by -1 value,
being 0 or positive value a non-error. Well, qv4l2 understands a
positive value as -EBUSY. The driver were returning a non-standard
value of 1 for s_ctrl. I fixed the driver part.
The last issue is with v4l2-ctl and qv4l2. Also, the latest version
of xawtv had the same issue, probably due to some changes I did at
console/v4l-info.c.
What happens is that em28xx doesn't implement the control BASE+4,
due to one simple reason: it is not currently defined. The ctrl
loop were understanding the -EINVAL return of BASE+4 as the end of
the user controls. So, on xawtv, only the 3 image controls were
returned. I didn't dig into v4l2-ctl, but there, it doesn't show
the first 3 controls. It shows only the audio controls:
volume (int) : min=0 max=65535 step=655 default=58880 value=58880 flags=slider
balance (int) : min=0 max=65535 step=655 default=32768 value=32768 flags=slider
bass (int) : min=0 max=65535 step=655 default=32768 value=32768 flags=slider
treble (int) : min=0 max=65535 step=655 default=32768 value=32768 flags=slider
mute (bool) : default=0 value=0
loudness (bool) : default=0 value=0
The xawtv fix is at:
http://git.linuxtv.org/xawtv3.git?a=commitdiff;h=fda070af9cfd75b360db1339bde3c6d3c64ed627
A similar fix is needed for v4l2-ctl and qv4l2.
The em28xx logs after the fix are:
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980900, type=1, name=Brightness, min/max=0/255, step=1, default=128, flags=0x00000000
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980901, type=1, name=Contrast, min/max=0/255, step=1, default=128, flags=0x00000000
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980902, type=1, name=Saturation, min/max=0/255, step=1, default=128, flags=0x00000000
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980903, type=1, name=Hue, min/max=-128/127, step=1, default=0, flags=0x00000000
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980904
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980905, type=1, name=Volume, min/max=0/65535, step=655, default=58880, flags=0x00000020
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980906, type=1, name=Balance, min/max=0/65535, step=655, default=32768, flags=0x00000020
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980907, type=1, name=Bass, min/max=0/65535, step=655, default=32768, flags=0x00000020
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980908, type=1, name=Treble, min/max=0/65535, step=655, default=32768, flags=0x00000020
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980909, type=2, name=Mute, min/max=0/1, step=1, default=0, flags=0x00000000
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98090a, type=2, name=Loudness, min/max=0/1, step=1, default=0, flags=0x00000000
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98090b
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98090c
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98090d
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98090e
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98090f
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980910
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980911
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980912
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980913
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980914
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980915
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980916
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980917
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980918
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980919
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98091a
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98091b
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98091c
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98091d
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98091e
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x98091f
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980920
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x980921
em28xx #0 video: VIDIOC_QUERYCTRL error -22
em28xx #0 video: VIDIOC_QUERYCTRL id=0x8000000
em28xx #0 video: VIDIOC_QUERYCTRL error -22
And v4l-info now reports everything:
controls
VIDIOC_QUERYCTRL(BASE+0)
id : 9963776
type : INTEGER
name : "Brightness"
minimum : 0
maximum : 255
step : 1
default_value : 128
flags : 0
VIDIOC_QUERYCTRL(BASE+1)
id : 9963777
type : INTEGER
name : "Contrast"
minimum : 0
maximum : 255
step : 1
default_value : 128
flags : 0
VIDIOC_QUERYCTRL(BASE+2)
id : 9963778
type : INTEGER
name : "Saturation"
minimum : 0
maximum : 255
step : 1
default_value : 128
flags : 0
VIDIOC_QUERYCTRL(BASE+3)
id : 9963779
type : INTEGER
name : "Hue"
minimum : -128
maximum : 127
step : 1
default_value : 0
flags : 0
VIDIOC_QUERYCTRL(BASE+5)
id : 9963781
type : INTEGER
name : "Volume"
minimum : 0
maximum : 65535
step : 655
default_value : 58880
flags : 32
VIDIOC_QUERYCTRL(BASE+6)
id : 9963782
type : INTEGER
name : "Balance"
minimum : 0
maximum : 65535
step : 655
default_value : 32768
flags : 32
VIDIOC_QUERYCTRL(BASE+7)
id : 9963783
type : INTEGER
name : "Bass"
minimum : 0
maximum : 65535
step : 655
default_value : 32768
flags : 32
VIDIOC_QUERYCTRL(BASE+8)
id : 9963784
type : INTEGER
name : "Treble"
minimum : 0
maximum : 65535
step : 655
default_value : 32768
flags : 32
VIDIOC_QUERYCTRL(BASE+9)
id : 9963785
type : BOOLEAN
name : "Mute"
minimum : 0
maximum : 1
step : 1
default_value : 0
flags : 0
VIDIOC_QUERYCTRL(BASE+10)
id : 9963786
type : BOOLEAN
name : "Loudness"
minimum : 0
maximum : 1
step : 1
default_value : 0
flags : 0
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] Some fixes for tuner, tvp5150 and em28xx
2011-02-22 2:52 ` Mauro Carvalho Chehab
@ 2011-02-22 7:53 ` Hans Verkuil
2011-02-22 11:31 ` Mauro Carvalho Chehab
2011-02-22 12:12 ` Mauro Carvalho Chehab
0 siblings, 2 replies; 6+ messages in thread
From: Hans Verkuil @ 2011-02-22 7:53 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: Linux Media Mailing List
On Tuesday, February 22, 2011 03:52:11 Mauro Carvalho Chehab wrote:
> Em 21-02-2011 23:17, Mauro Carvalho Chehab escreveu:
> > This series contain a minor cleanup for tuner and tvp5150, and two fixes
> > for em28xx controls. Before the em28xx patches, s_ctrl were failing on
> > qv4l2, because it were returning a positive value of 1 for some calls.
> >
> > It also contains a fix for control get/set, as it will now check if the
> > control exists before actually calling subdev for get/set.
> >
> > Mauro Carvalho Chehab (4):
> ...
> > [media] em28xx: Fix return value for s_ctrl
> > [media] em28xx: properly handle subdev controls
>
> Hans,
>
> I discovered the issue with em28xx that I commented you on IRC.
>
> There were, in fact, 3 issues.
>
> One is clearly a driver problem, corrected by "em28xx: properly
> handle subdev controls".
>
> The second one being partially qv4l2 and partially driver issue,
> fixed by "em28xx: Fix return value for s_ctrl". Basically, V4L2
> API and ioctl man page says that an error is indicated by -1 value,
> being 0 or positive value a non-error. Well, qv4l2 understands a
> positive value as -EBUSY. The driver were returning a non-standard
> value of 1 for s_ctrl. I fixed the driver part.
>
> The last issue is with v4l2-ctl and qv4l2. Also, the latest version
> of xawtv had the same issue, probably due to some changes I did at
> console/v4l-info.c.
>
> What happens is that em28xx doesn't implement the control BASE+4,
> due to one simple reason: it is not currently defined. The ctrl
> loop were understanding the -EINVAL return of BASE+4 as the end of
> the user controls. So, on xawtv, only the 3 image controls were
> returned. I didn't dig into v4l2-ctl, but there, it doesn't show
> the first 3 controls. It shows only the audio controls:
>
> volume (int) : min=0 max=65535 step=655 default=58880 value=58880 flags=slider
> balance (int) : min=0 max=65535 step=655 default=32768 value=32768 flags=slider
> bass (int) : min=0 max=65535 step=655 default=32768 value=32768 flags=slider
> treble (int) : min=0 max=65535 step=655 default=32768 value=32768 flags=slider
> mute (bool) : default=0 value=0
> loudness (bool) : default=0 value=0
>
> The xawtv fix is at:
> http://git.linuxtv.org/xawtv3.git?a=commitdiff;h=fda070af9cfd75b360db1339bde3c6d3c64ed627
>
> A similar fix is needed for v4l2-ctl and qv4l2.
Actually, v4l2-ctrl and qv4l2 handle 'holes' correctly. I think this is a
different bug relating to the handling of V4L2_CTRL_FLAG_NEXT_CTRL. Can you
try this patch:
diff --git a/drivers/media/video/v4l2-ctrls.c b/drivers/media/video/v4l2-ctrls.c
index ef66d2a..15eda86 100644
--- a/drivers/media/video/v4l2-ctrls.c
+++ b/drivers/media/video/v4l2-ctrls.c
@@ -1364,6 +1364,8 @@ EXPORT_SYMBOL(v4l2_queryctrl);
int v4l2_subdev_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
{
+ if (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL)
+ return -EINVAL;
return v4l2_queryctrl(sd->ctrl_handler, qc);
}
EXPORT_SYMBOL(v4l2_subdev_queryctrl);
v4l2-ctl and qv4l2 enumerate the controls using this flag, falling back to the
old method if the flag isn't supported. The v4l2_subdev_queryctrl function will
currently handle that flag, but for the controls of the subdev only. This isn't
right, it should refuse this flag. Without this fix v4l2-ctl will only see the
controls of the first subdev, which is exactly what you got. I never saw this
bug because the HVR900 has just a single subdev.
I also suspect that s_ctrl is wrong: can you test setting a video control? I
think that v4l2_device_call_until_err will always return an error. I'm not sure
if there is an easy fix for this other than converting em28xx to the control
framework. I need to think about this.
Regards,
Hans
--
Hans Verkuil - video4linux developer - sponsored by Cisco
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] Some fixes for tuner, tvp5150 and em28xx
2011-02-22 7:53 ` Hans Verkuil
@ 2011-02-22 11:31 ` Mauro Carvalho Chehab
2011-02-22 12:12 ` Mauro Carvalho Chehab
1 sibling, 0 replies; 6+ messages in thread
From: Mauro Carvalho Chehab @ 2011-02-22 11:31 UTC (permalink / raw)
To: Hans Verkuil; +Cc: Linux Media Mailing List
Em 22-02-2011 04:53, Hans Verkuil escreveu:
> On Tuesday, February 22, 2011 03:52:11 Mauro Carvalho Chehab wrote:
>> Em 21-02-2011 23:17, Mauro Carvalho Chehab escreveu:
>>> This series contain a minor cleanup for tuner and tvp5150, and two fixes
>>> for em28xx controls. Before the em28xx patches, s_ctrl were failing on
>>> qv4l2, because it were returning a positive value of 1 for some calls.
>>>
>>> It also contains a fix for control get/set, as it will now check if the
>>> control exists before actually calling subdev for get/set.
>>>
>>> Mauro Carvalho Chehab (4):
>> ...
>>> [media] em28xx: Fix return value for s_ctrl
>>> [media] em28xx: properly handle subdev controls
>>
>> Hans,
>>
>> I discovered the issue with em28xx that I commented you on IRC.
>>
>> There were, in fact, 3 issues.
>>
>> One is clearly a driver problem, corrected by "em28xx: properly
>> handle subdev controls".
>>
>> The second one being partially qv4l2 and partially driver issue,
>> fixed by "em28xx: Fix return value for s_ctrl". Basically, V4L2
>> API and ioctl man page says that an error is indicated by -1 value,
>> being 0 or positive value a non-error. Well, qv4l2 understands a
>> positive value as -EBUSY. The driver were returning a non-standard
>> value of 1 for s_ctrl. I fixed the driver part.
>>
>> The last issue is with v4l2-ctl and qv4l2. Also, the latest version
>> of xawtv had the same issue, probably due to some changes I did at
>> console/v4l-info.c.
>>
>> What happens is that em28xx doesn't implement the control BASE+4,
>> due to one simple reason: it is not currently defined. The ctrl
>> loop were understanding the -EINVAL return of BASE+4 as the end of
>> the user controls. So, on xawtv, only the 3 image controls were
>> returned. I didn't dig into v4l2-ctl, but there, it doesn't show
>> the first 3 controls. It shows only the audio controls:
>>
>> volume (int) : min=0 max=65535 step=655 default=58880 value=58880 flags=slider
>> balance (int) : min=0 max=65535 step=655 default=32768 value=32768 flags=slider
>> bass (int) : min=0 max=65535 step=655 default=32768 value=32768 flags=slider
>> treble (int) : min=0 max=65535 step=655 default=32768 value=32768 flags=slider
>> mute (bool) : default=0 value=0
>> loudness (bool) : default=0 value=0
>>
>> The xawtv fix is at:
>> http://git.linuxtv.org/xawtv3.git?a=commitdiff;h=fda070af9cfd75b360db1339bde3c6d3c64ed627
>>
>> A similar fix is needed for v4l2-ctl and qv4l2.
>
> Actually, v4l2-ctrl and qv4l2 handle 'holes' correctly. I think this is a
> different bug relating to the handling of V4L2_CTRL_FLAG_NEXT_CTRL. Can you
> try this patch:
>
> diff --git a/drivers/media/video/v4l2-ctrls.c b/drivers/media/video/v4l2-ctrls.c
> index ef66d2a..15eda86 100644
> --- a/drivers/media/video/v4l2-ctrls.c
> +++ b/drivers/media/video/v4l2-ctrls.c
> @@ -1364,6 +1364,8 @@ EXPORT_SYMBOL(v4l2_queryctrl);
>
> int v4l2_subdev_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
> {
> + if (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL)
> + return -EINVAL;
> return v4l2_queryctrl(sd->ctrl_handler, qc);
> }
> EXPORT_SYMBOL(v4l2_subdev_queryctrl);
>
> v4l2-ctl and qv4l2 enumerate the controls using this flag, falling back to the
> old method if the flag isn't supported. The v4l2_subdev_queryctrl function will
> currently handle that flag, but for the controls of the subdev only. This isn't
> right, it should refuse this flag. Without this fix v4l2-ctl will only see the
> controls of the first subdev, which is exactly what you got. I never saw this
> bug because the HVR900 has just a single subdev.
Ok, that makes sense. I'll test the patch and give you a feedback.
> I also suspect that s_ctrl is wrong: can you test setting a video control? I
> think that v4l2_device_call_until_err will always return an error. I'm not sure
> if there is an easy fix for this other than converting em28xx to the control
> framework. I need to think about this.
I've changed it by two subdev calls. The first one queries for the control. If control
type is zero, it returns an error, otherwise, it will call v4l2_device_all_all (see
patch 4/4). This is sub-optimal, but should fix the bug, and can be sent to -stable.
Cheers,
Mauro
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] Some fixes for tuner, tvp5150 and em28xx
2011-02-22 7:53 ` Hans Verkuil
2011-02-22 11:31 ` Mauro Carvalho Chehab
@ 2011-02-22 12:12 ` Mauro Carvalho Chehab
2011-02-22 12:28 ` Hans Verkuil
1 sibling, 1 reply; 6+ messages in thread
From: Mauro Carvalho Chehab @ 2011-02-22 12:12 UTC (permalink / raw)
To: Hans Verkuil; +Cc: Linux Media Mailing List
Em 22-02-2011 04:53, Hans Verkuil escreveu:
> Actually, v4l2-ctrl and qv4l2 handle 'holes' correctly. I think this is a
> different bug relating to the handling of V4L2_CTRL_FLAG_NEXT_CTRL. Can you
> try this patch:
>
> diff --git a/drivers/media/video/v4l2-ctrls.c b/drivers/media/video/v4l2-ctrls.c
> index ef66d2a..15eda86 100644
> --- a/drivers/media/video/v4l2-ctrls.c
> +++ b/drivers/media/video/v4l2-ctrls.c
> @@ -1364,6 +1364,8 @@ EXPORT_SYMBOL(v4l2_queryctrl);
>
> int v4l2_subdev_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
> {
> + if (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL)
> + return -EINVAL;
> return v4l2_queryctrl(sd->ctrl_handler, qc);
Ok, this fixed the issue:
brightness (int) : min=0 max=255 step=1 default=128 value=128
contrast (int) : min=0 max=255 step=1 default=128 value=128
saturation (int) : min=0 max=255 step=1 default=128 value=128
hue (int) : min=-128 max=127 step=1 default=0 value=0
volume (int) : min=0 max=65535 step=655 default=58880 value=65500 flags=slider
balance (int) : min=0 max=65535 step=655 default=32768 value=32750 flags=slider
bass (int) : min=0 max=65535 step=655 default=32768 value=32750 flags=slider
treble (int) : min=0 max=65535 step=655 default=32768 value=32750 flags=slider
mute (bool) : default=0 value=0
loudness (bool) : default=0 value=0
Also, v4l2-compliance is now complaining less about it.
Control ioctls:
fail: does not support V4L2_CTRL_FLAG_NEXT_CTRL
test VIDIOC_QUERYCTRL/MENU: FAIL
test VIDIOC_G/S_CTRL: OK
test VIDIOC_G/S/TRY_EXT_CTRLS: Not Supported
Standard Controls: 0 Private Controls: 0
(yet, it is showing "standard controls = 0").
Could you provide your SOB to the above patch?
Thanks!
Mauro
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] Some fixes for tuner, tvp5150 and em28xx
2011-02-22 12:12 ` Mauro Carvalho Chehab
@ 2011-02-22 12:28 ` Hans Verkuil
0 siblings, 0 replies; 6+ messages in thread
From: Hans Verkuil @ 2011-02-22 12:28 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: Hans Verkuil, Linux Media Mailing List
On Tuesday, February 22, 2011 13:12:32 Mauro Carvalho Chehab wrote:
> Em 22-02-2011 04:53, Hans Verkuil escreveu:
> > Actually, v4l2-ctrl and qv4l2 handle 'holes' correctly. I think this is a
> > different bug relating to the handling of V4L2_CTRL_FLAG_NEXT_CTRL. Can
you
> > try this patch:
> >
> > diff --git a/drivers/media/video/v4l2-ctrls.c b/drivers/media/video/v4l2-
ctrls.c
> > index ef66d2a..15eda86 100644
> > --- a/drivers/media/video/v4l2-ctrls.c
> > +++ b/drivers/media/video/v4l2-ctrls.c
> > @@ -1364,6 +1364,8 @@ EXPORT_SYMBOL(v4l2_queryctrl);
> >
> > int v4l2_subdev_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl
*qc)
> > {
> > + if (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL)
> > + return -EINVAL;
> > return v4l2_queryctrl(sd->ctrl_handler, qc);
>
> Ok, this fixed the issue:
> brightness (int) : min=0 max=255 step=1 default=128
value=128
> contrast (int) : min=0 max=255 step=1 default=128
value=128
> saturation (int) : min=0 max=255 step=1 default=128
value=128
> hue (int) : min=-128 max=127 step=1 default=0
value=0
> volume (int) : min=0 max=65535 step=655
default=58880 value=65500 flags=slider
> balance (int) : min=0 max=65535 step=655
default=32768 value=32750 flags=slider
> bass (int) : min=0 max=65535 step=655
default=32768 value=32750 flags=slider
> treble (int) : min=0 max=65535 step=655
default=32768 value=32750 flags=slider
> mute (bool) : default=0 value=0
> loudness (bool) : default=0 value=0
>
> Also, v4l2-compliance is now complaining less about it.
>
> Control ioctls:
> fail: does not support V4L2_CTRL_FLAG_NEXT_CTRL
> test VIDIOC_QUERYCTRL/MENU: FAIL
> test VIDIOC_G/S_CTRL: OK
> test VIDIOC_G/S/TRY_EXT_CTRLS: Not Supported
> Standard Controls: 0 Private Controls: 0
>
> (yet, it is showing "standard controls = 0").
>
> Could you provide your SOB to the above patch?
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
>
> Thanks!
> Mauro
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-02-22 12:27 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-22 2:17 [PATCH 0/4] Some fixes for tuner, tvp5150 and em28xx Mauro Carvalho Chehab
2011-02-22 2:52 ` Mauro Carvalho Chehab
2011-02-22 7:53 ` Hans Verkuil
2011-02-22 11:31 ` Mauro Carvalho Chehab
2011-02-22 12:12 ` Mauro Carvalho Chehab
2011-02-22 12:28 ` Hans Verkuil
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox