From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Ricardo Ribalda <ribalda@chromium.org>
Cc: Hans de Goede <hansg@kernel.org>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Hans Verkuil <hverkuil@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-usb@vger.kernel.org
Subject: Re: [PATCH 4/4] media: uvcvideo: Support UVC_CROSXU_CONTROL_IQ_PROFILE
Date: Mon, 15 Sep 2025 10:21:31 +0300 [thread overview]
Message-ID: <20250915072131.GA22385@pendragon.ideasonboard.com> (raw)
In-Reply-To: <CANiDSCtsFYoDdQPakhX=mvkYCFpP-U82FBhDwdGJwOME-hFYQg@mail.gmail.com>
On Mon, Sep 15, 2025 at 09:18:33AM +0200, Ricardo Ribalda wrote:
> On Sat, 13 Sept 2025 at 16:06, Laurent Pinchart wrote:
> > On Mon, Aug 18, 2025 at 08:15:39PM +0000, Ricardo Ribalda wrote:
> > > The ChromeOS XU provides a control to change the IQ profile for a camera.
> > > It can be switched from VIVID (a.k.a. standard) to NONE (a.k.a. natural).
> > >
> > > Wire it up to the standard v4l2 control.
> > >
> > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
> > > ---
> > > drivers/media/usb/uvc/uvc_ctrl.c | 32 ++++++++++++++++++++++++++++++++
> > > include/linux/usb/uvc.h | 5 +++++
> > > 2 files changed, 37 insertions(+)
> > >
> > > diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
> > > index ff975f96e1325532e2299047c07de5d1b9cf09db..8766a441ad1d8554c0daaed3f87758321684246b 100644
> > > --- a/drivers/media/usb/uvc/uvc_ctrl.c
> > > +++ b/drivers/media/usb/uvc/uvc_ctrl.c
> > > @@ -376,6 +376,15 @@ static const struct uvc_control_info uvc_ctrls[] = {
> > > | UVC_CTRL_FLAG_GET_DEF
> > > | UVC_CTRL_FLAG_AUTO_UPDATE,
> > > },
> > > + {
> > > + .entity = UVC_GUID_CHROMEOS_XU,
> > > + .selector = UVC_CROSXU_CONTROL_IQ_PROFILE,
> > > + .index = 3,
> > > + .size = 1,
> > > + .flags = UVC_CTRL_FLAG_SET_CUR
> > > + | UVC_CTRL_FLAG_GET_RANGE
> > > + | UVC_CTRL_FLAG_RESTORE,
> > > + },
> > > };
> > >
> > > static const u32 uvc_control_classes[] = {
> > > @@ -384,6 +393,17 @@ static const u32 uvc_control_classes[] = {
> > > };
> > >
> > > static const int exposure_auto_mapping[] = { 2, 1, 4, 8 };
> > > +static const int cros_colorfx_mapping[] = { 1, // V4L2_COLORFX_NONE
> > > + -1, // V4L2_COLORFX_BW
> > > + -1, // V4L2_COLORFX_SEPIA
> > > + -1, // V4L2_COLORFX_NEGATIVE
> > > + -1, // V4L2_COLORFX_EMBOSS
> > > + -1, // V4L2_COLORFX_SKETCH
> > > + -1, // V4L2_COLORFX_SKY_BLUE
> > > + -1, // V4L2_COLORFX_GRASS_GREEN
> > > + -1, // V4L2_COLORFX_SKIN_WHITEN
> > > + 0}; // V4L2_COLORFX_VIVID};
> >
> > Extar '};' at the end of the line. The indentation also looks a bit
> > weird. I'll replace it with
> >
> > static const int cros_colorfx_mapping[] = {
> > 1, /* V4L2_COLORFX_NONE */
> > -1, /* V4L2_COLORFX_BW */
> > -1, /* V4L2_COLORFX_SEPIA */
> > -1, /* V4L2_COLORFX_NEGATIVE */
> > -1, /* V4L2_COLORFX_EMBOSS */
> > -1, /* V4L2_COLORFX_SKETCH */
> > -1, /* V4L2_COLORFX_SKY_BLUE */
> > -1, /* V4L2_COLORFX_GRASS_GREEN */
> > -1, /* V4L2_COLORFX_SKIN_WHITEN */
> > 0, /* V4L2_COLORFX_VIVID */
> > };
> >
> > > +
> > >
> > > static bool uvc_ctrl_mapping_is_compound(struct uvc_control_mapping *mapping)
> > > {
> > > @@ -975,6 +995,18 @@ static const struct uvc_control_mapping uvc_ctrl_mappings[] = {
> > > .data_type = UVC_CTRL_DATA_TYPE_BITMASK,
> > > .name = "Region of Interest Auto Ctrls",
> > > },
> > > + {
> > > + .id = V4L2_CID_COLORFX,
> > > + .entity = UVC_GUID_CHROMEOS_XU,
> > > + .selector = UVC_CROSXU_CONTROL_IQ_PROFILE,
> > > + .size = 8,
> > > + .offset = 0,
> > > + .v4l2_type = V4L2_CTRL_TYPE_MENU,
> > > + .data_type = UVC_CTRL_DATA_TYPE_ENUM,
> > > + .menu_mapping = cros_colorfx_mapping,
> > > + .menu_mask = BIT(V4L2_COLORFX_VIVID) |
> > > + BIT(V4L2_COLORFX_NONE),
> > > + },
> > > };
> > >
> > > /* ------------------------------------------------------------------------
> > > diff --git a/include/linux/usb/uvc.h b/include/linux/usb/uvc.h
> > > index 12a57e1d34674a3a264ed7f88bed43926661fcd4..22e0dab0809e296e089940620ae0e8838e109701 100644
> > > --- a/include/linux/usb/uvc.h
> > > +++ b/include/linux/usb/uvc.h
> > > @@ -29,6 +29,9 @@
> > > #define UVC_GUID_EXT_GPIO_CONTROLLER \
> > > {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
> > > 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03}
> > > +#define UVC_GUID_CHROMEOS_XU \
> > > + {0x24, 0xe9, 0xd7, 0x74, 0xc9, 0x49, 0x45, 0x4a, \
> > > + 0x98, 0xa3, 0xc8, 0x07, 0x7e, 0x05, 0x1c, 0xa3}
> >
> > I'd like to add a link to the documentation, but searching for the GUID
> > didn't turn up any meaningful result. Where can I find documentation for
> > this XU ?
>
> It is not public yet. Not because there is anything secret about it,
> but because of the "making documentation process".
That makes reviewing patches annoying :-/ Any expected time frame ?
You don't have to polish the documentation, if it was good enough to be
shared with webcam vendors to be implemented, it's good enough for the
community too :-)
> Once there is a public document I will add a link.
>
> > The link can be added later, so
> >
> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> >
> > > #define UVC_GUID_MSXU_1_5 \
> > > {0xdc, 0x95, 0x3f, 0x0f, 0x32, 0x26, 0x4e, 0x4c, \
> > > 0x92, 0xc9, 0xa0, 0x47, 0x82, 0xf4, 0x3b, 0xc8}
> > > @@ -50,6 +53,8 @@
> > > #define UVC_MSXU_CONTROL_FIELDOFVIEW2_CONFIG 0x0f
> > > #define UVC_MSXU_CONTROL_FIELDOFVIEW2 0x10
> > >
> > > +#define UVC_CROSXU_CONTROL_IQ_PROFILE 0x04
> > > +
> > > #define UVC_GUID_FORMAT_MJPEG \
> > > { 'M', 'J', 'P', 'G', 0x00, 0x00, 0x10, 0x00, \
> > > 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2025-09-15 7:21 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-18 20:15 [PATCH 0/4] media: uvcvideo: Add support for UVC_CROSXU_CONTROL_IQ_PROFILE Ricardo Ribalda
2025-08-18 20:15 ` [PATCH 1/4] media: uvcvideo: Fix comments in uvc_meta_detect_msxu Ricardo Ribalda
2025-08-18 20:15 ` [PATCH 2/4] media: uvcvideo: Move MSXU_CONTROL_METADATA definition to header Ricardo Ribalda
2025-08-18 20:15 ` [PATCH 3/4] media: uvcvideo: Run uvc_ctrl_init_ctrl for all controls Ricardo Ribalda
2025-09-08 11:02 ` Hans de Goede
2025-09-13 13:42 ` Laurent Pinchart
2025-08-18 20:15 ` [PATCH 4/4] media: uvcvideo: Support UVC_CROSXU_CONTROL_IQ_PROFILE Ricardo Ribalda
2025-09-08 11:04 ` Hans de Goede
2025-09-13 14:06 ` Laurent Pinchart
2025-09-15 7:18 ` Ricardo Ribalda
2025-09-15 7:21 ` Laurent Pinchart [this message]
2025-09-08 11:13 ` [PATCH 0/4] media: uvcvideo: Add support for UVC_CROSXU_CONTROL_IQ_PROFILE Hans de Goede
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250915072131.GA22385@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=gregkh@linuxfoundation.org \
--cc=hansg@kernel.org \
--cc=hverkuil@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=ribalda@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.