Message ID | 20241218-uvc-deprecate-v2-4-ab814139e983@chromium.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | media: uvcvideo: Prepare deprecation of nodrop | expand |
Hi Ricardo, Thank you for the patch. On Wed, Dec 18, 2024 at 09:39:11PM +0000, Ricardo Ribalda wrote: > If the user sets the nodrop parameter, print a deprecation warning once. > Hopefully they will come to the mailing list if it is an ABI change. > > Now that we have a callback, take this chance to parse the parameter as > a boolean. We still say to userspace that it is a uint to avoid ABI > changes. > > Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > drivers/media/usb/uvc/uvc_driver.c | 19 ++++++++++++++++++- > 1 file changed, 18 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c > index 10812a841587..d8e8675dd2cd 100644 > --- a/drivers/media/usb/uvc/uvc_driver.c > +++ b/drivers/media/usb/uvc/uvc_driver.c > @@ -2424,8 +2424,25 @@ module_param_call(clock, uvc_clock_param_set, uvc_clock_param_get, > MODULE_PARM_DESC(clock, "Video buffers timestamp clock"); > module_param_named(hwtimestamps, uvc_hw_timestamps_param, uint, 0644); > MODULE_PARM_DESC(hwtimestamps, "Use hardware timestamps"); > -module_param_named(nodrop, uvc_no_drop_param, uint, 0644); > + > +static int param_set_nodrop(const char *val, const struct kernel_param *kp) > +{ > + pr_warn_once("uvcvideo: " > + DEPRECATED > + "nodrop parameter will be eventually removed.\n"); > + return param_set_bool(val, kp); > +} > + > +static const struct kernel_param_ops param_ops_nodrop = { > + .set = param_set_nodrop, > + .get = param_get_uint, > +}; > + > +param_check_uint(nodrop, &uvc_no_drop_param); > +module_param_cb(nodrop, ¶m_ops_nodrop, &uvc_no_drop_param, 0644); > +__MODULE_PARM_TYPE(nodrop, "uint"); > MODULE_PARM_DESC(nodrop, "Don't drop incomplete frames"); > + > module_param_named(quirks, uvc_quirks_param, uint, 0644); > MODULE_PARM_DESC(quirks, "Forced device quirks"); > module_param_named(trace, uvc_dbg_param, uint, 0644);
diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index 10812a841587..d8e8675dd2cd 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -2424,8 +2424,25 @@ module_param_call(clock, uvc_clock_param_set, uvc_clock_param_get, MODULE_PARM_DESC(clock, "Video buffers timestamp clock"); module_param_named(hwtimestamps, uvc_hw_timestamps_param, uint, 0644); MODULE_PARM_DESC(hwtimestamps, "Use hardware timestamps"); -module_param_named(nodrop, uvc_no_drop_param, uint, 0644); + +static int param_set_nodrop(const char *val, const struct kernel_param *kp) +{ + pr_warn_once("uvcvideo: " + DEPRECATED + "nodrop parameter will be eventually removed.\n"); + return param_set_bool(val, kp); +} + +static const struct kernel_param_ops param_ops_nodrop = { + .set = param_set_nodrop, + .get = param_get_uint, +}; + +param_check_uint(nodrop, &uvc_no_drop_param); +module_param_cb(nodrop, ¶m_ops_nodrop, &uvc_no_drop_param, 0644); +__MODULE_PARM_TYPE(nodrop, "uint"); MODULE_PARM_DESC(nodrop, "Don't drop incomplete frames"); + module_param_named(quirks, uvc_quirks_param, uint, 0644); MODULE_PARM_DESC(quirks, "Forced device quirks"); module_param_named(trace, uvc_dbg_param, uint, 0644);
If the user sets the nodrop parameter, print a deprecation warning once. Hopefully they will come to the mailing list if it is an ABI change. Now that we have a callback, take this chance to parse the parameter as a boolean. We still say to userspace that it is a uint to avoid ABI changes. Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> --- drivers/media/usb/uvc/uvc_driver.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)