The pan/tilt absolute control value is signed value. If minimum value
is minus, It will be changed to plus by clamp_t() as commit 64ae9958a62.
([media] uvcvideo: Fix control value clamping for unsigned integer controls).
It leads to wrong setting of the control values. For example,
when min and max are -36000 and 36000, the setting value between of this range
is always 36000. So, Its data type should be changed to signed.
Signed-off-by: Chanho Min <[email protected]>
---
drivers/media/usb/uvc/uvc_ctrl.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
index a2f4501..0eb82106 100644
--- a/drivers/media/usb/uvc/uvc_ctrl.c
+++ b/drivers/media/usb/uvc/uvc_ctrl.c
@@ -664,7 +664,7 @@ static struct uvc_control_mapping uvc_ctrl_mappings[] = {
.size = 32,
.offset = 0,
.v4l2_type = V4L2_CTRL_TYPE_INTEGER,
- .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
+ .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
},
{
.id = V4L2_CID_TILT_ABSOLUTE,
@@ -674,7 +674,7 @@ static struct uvc_control_mapping uvc_ctrl_mappings[] = {
.size = 32,
.offset = 32,
.v4l2_type = V4L2_CTRL_TYPE_INTEGER,
- .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
+ .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
},
{
.id = V4L2_CID_PRIVACY,
--
1.7.9.5
Hi Chanho,
Thank you for the patch.
On Friday 27 September 2013 13:57:40 Chanho Min wrote:
> The pan/tilt absolute control value is signed value. If minimum value
> is minus, It will be changed to plus by clamp_t() as commit 64ae9958a62.
> ([media] uvcvideo: Fix control value clamping for unsigned integer
> controls).
>
> It leads to wrong setting of the control values. For example,
> when min and max are -36000 and 36000, the setting value between of this
> range is always 36000. So, Its data type should be changed to signed.
>
> Signed-off-by: Chanho Min <[email protected]>
Acked-by: Laurent Pinchart <[email protected]>
I've taken the patch in my tree and will send a pull request for the next
kernel version.
> ---
> drivers/media/usb/uvc/uvc_ctrl.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/usb/uvc/uvc_ctrl.c
> b/drivers/media/usb/uvc/uvc_ctrl.c index a2f4501..0eb82106 100644
> --- a/drivers/media/usb/uvc/uvc_ctrl.c
> +++ b/drivers/media/usb/uvc/uvc_ctrl.c
> @@ -664,7 +664,7 @@ static struct uvc_control_mapping uvc_ctrl_mappings[] =
> { .size = 32,
> .offset = 0,
> .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
> - .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
> + .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
> },
> {
> .id = V4L2_CID_TILT_ABSOLUTE,
> @@ -674,7 +674,7 @@ static struct uvc_control_mapping uvc_ctrl_mappings[] =
> { .size = 32,
> .offset = 32,
> .v4l2_type = V4L2_CTRL_TYPE_INTEGER,
> - .data_type = UVC_CTRL_DATA_TYPE_UNSIGNED,
> + .data_type = UVC_CTRL_DATA_TYPE_SIGNED,
> },
> {
> .id = V4L2_CID_PRIVACY,
--
Regards,
Laurent Pinchart