The kernel.h macro DIV_ROUND_CLOSEST performs the computation (x + d/2)/d
but is perhaps more readable.

Signed-off-by: zhong jiang <zhongji...@huawei.com>
---
 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 e399b9f..9f3697161 100644
--- a/drivers/media/usb/uvc/uvc_ctrl.c
+++ b/drivers/media/usb/uvc/uvc_ctrl.c
@@ -1604,8 +1604,8 @@ int uvc_ctrl_set(struct uvc_fh *handle,
                if (step == 0)
                        step = 1;
 
-               xctrl->value = min + ((u32)(xctrl->value - min) + step / 2)
-                            / step * step;
+               xctrl->value = min + DIV_ROUND_CLOSEST((u32)(xctrl->value - 
min),
+                                                       step) * step;
                if (mapping->data_type == UVC_CTRL_DATA_TYPE_SIGNED)
                        xctrl->value = clamp(xctrl->value, min, max);
                else
-- 
1.7.12.4

Reply via email to