From patchwork Thu Jun 23 14:31:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xavier Roumegue \(OSS\)" X-Patchwork-Id: 584339 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AB20DC433EF for ; Thu, 23 Jun 2022 14:32:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231803AbiFWOci (ORCPT ); Thu, 23 Jun 2022 10:32:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59936 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230448AbiFWOch (ORCPT ); Thu, 23 Jun 2022 10:32:37 -0400 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2076.outbound.protection.outlook.com [40.107.20.76]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6D2D1457A8; Thu, 23 Jun 2022 07:32:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V0VMl/uyjT7RFjTx7wcfo3StecosDi0JT3BOaMyO2Oy+EAxmcmYS7u1cPFWcnNKQmlaKapIkmOXdFL72VIPaewC1xdKJTya+Tl6uETBluSa2JwPbNFAOji+U3XTFKUUSTcNt57NE1io7VmGstRXe1vZQZPtYU2HqLTdkv+DBHwrACCyevoydcUFih1UdWfTf0Z57fxGFetW3AM5I7QC6SornhVFPgZxWtTomf3Q4XdjCPTwbasrT9zmqtDxGxo3c4xmPSc/uWuTYaTrZ4uT65tsqBa3fbkCRtyp1Uqlu99wZS3CBhIyI+w91pbM4xszBLcl3+Pc+ggZmuAuTkQCdZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JGxcG32LmKX7ooLpNWYR/t/fuh6ioFzqYcaeGxBFXRs=; b=QX7FNUFgGrqAJ3IGZ9OOg2zzw+XptHsFiEg9bc0lTFrs70qnoxlzQUCXLgmEBz7F1xj7A0erhPXGbVsO0FCoROFsOFi4m1LWmNNNVkPfZce1FsAf42pTflnClZgFaDiBTUYaGEEhgOrlL+50aDTQE+ozDys7S4ZQ1GNIF8/Y2HXrbZinlEmU2EV0AgmDx2T2N51KNcEkN9zKCGn6ckkTBjCMgZLWcfMRQ+4/VccQ1f9ptpuADKEz/nDQBoLFHwjQbj5974HtrlCl5R5k4fqjazlJPzlVZg46LM9KFPxe6vmOw7C/ll/dxnI2SyQFyJ9vxIy1MexllvWvkFZNTcnEdg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JGxcG32LmKX7ooLpNWYR/t/fuh6ioFzqYcaeGxBFXRs=; b=OG06HR/OwyEmUnCSKV24qe/xe+YIYmTTb3aZtIIv3I9s8FCp/m+yrtxRW0c8LEcSvkbAfdwUoKQV9maM4d6e+vHZFSlPszx6G470Hjjt/5An3JJfvgB3sRmYzarERas/MT4yEi0dJuOeOcvGvP5NXfvFtPNiX4XloRNKXaL4Hs0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) by DB8PR04MB6505.eurprd04.prod.outlook.com (2603:10a6:10:10d::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.22; Thu, 23 Jun 2022 14:32:32 +0000 Received: from PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485]) by PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485%5]) with mapi id 15.20.5353.022; Thu, 23 Jun 2022 14:32:32 +0000 From: Xavier Roumegue To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, stanimir.varbanov@linaro.org, laurent.pinchart@ideasonboard.com, tomi.valkeinen@ideasonboard.com, robh+dt@kernel.org, nicolas@ndufresne.ca, alexander.stein@ew.tq-group.com Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v6 02/14] v4l2-ctrls: add support for dynamically allocated arrays. Date: Thu, 23 Jun 2022 16:31:03 +0200 Message-Id: <20220623143115.3185297-3-xavier.roumegue@oss.nxp.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> References: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> X-ClientProxiedBy: PR2P264CA0026.FRAP264.PROD.OUTLOOK.COM (2603:10a6:101:1::14) To PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ebb0a6c2-4891-4845-68c7-08da55253515 X-MS-TrafficTypeDiagnostic: DB8PR04MB6505:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xMUsWflM3o5kAJ+J3nVU94tjAGzbRlFro6SBwytCIujj15njWHBeAq8VnYIQH7E97poBWZywP4sjDR7zs4B1ofpLqH7M0+LuElNGwKZJnXq9Z4iflNdD2iYg+QaRbFiQfWbDwhxA53EoWN2yrl/bVYUjsRArOyp/f9iMJyOESw4q/LuSNEEk/YmlBdZefGCDyB1TeWhu2IYn2P5pZkIAfit7AiWTH1MsyA7PRseugS2HK2TPwmFtcLlbRGo79INQXeC7Vs0Ne21v/FR4Ju+RIHrrUHGxx6opLSgSDCyvRmBtNel067QM8D2V94iUAqbgEIt1y4ZAMUEqFzHmeneiY9pMVikBOnkBLlJY7MD8sysB8QrTpXH3xf5dmCgwS5SsgV4GysNDvkRTrQqLonzaknwFvsa9hSwfV3ZrvCn81UWD/kGjaEXAk/Yd17lFIU2PHSftfutq1YPjL9QFb1QdH+HbGSgg7TmdCoacKL4oYahn+MGsncLekp3lMeO3TEbWmvLrzwJlny4GtItw1wxmqxp8oNIv83jL4pufi7gC6iXStVFKa+pEoCSyHyDNHfKpQPkH0sj+FS5VKQ86ryJNdv33QWtoGtDPq7JTEct2y7Cco5g5NYqzzebmsW+M5j3SamULf/CsPCcGL+lFewq9IaPGF6UFGGfewn8E/EvKENSCcERACJ5ORekaEDhc5bIj7bAoVUWlxxG69TWfIKDiYA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB8703.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(39860400002)(136003)(376002)(366004)(396003)(346002)(2906002)(38100700002)(6666004)(66946007)(86362001)(1076003)(66556008)(44832011)(8676002)(66476007)(6486002)(316002)(4326008)(478600001)(6512007)(5660300002)(7416002)(186003)(83380400001)(2616005)(52116002)(6506007)(8936002)(30864003)(41300700001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: 61pVj5qBKifZVyOOXlcIKBGdMnm1ksU+aJhZn6udqqT6/905oOurKc8vUFttxelU4titF84x2V/vDXxUdt22TAEkBEukbhk0ZMuezjcGl4zpd/aCWmWWvAP5qQkcqqyBIwK5LXKwzpG62ztC9kekE8N0acH0XtacShAVLJSJbIdaJ/gP8x41WhwtRKVYcVtChhFHiAhIDW2X4XyAEbeuwrhUnpxhKWJ64igy7XjGzLC9AVgRvL6ih6EqbLl9ilGm4+C2voqRycdDdcnRXqG3U9lpU+koQxdE+EH9VaG5iW3/7z3NQnh1Anr8W2Y8BzQdPPCQT9WxvusbyNNfF4w+RltbEmfmie4cqeG+ZCnEghqEY6RQ/rVtCglwIE5iiPJzCgH4wHDJO1yzxGRNgYgp4n5ldC4t/znNrerSgwp/vfRIEC29JqncAFyimeKxaHLroB6ip88h2YJHCvGP0mJXTDEU/dEd0Izv5vi9yWKHvZryuFxay//X/AWNYqK7QLCooXhVFtcjUtHZ2dNiTkhXxX/3rHHwRTZ9rqQdVKVct5hxin1gT1fP4+oHywXfVdVGZlVwD8MmEqNqX/Y//G1RHENbFn+T0tvcv8UrJwRTPcZiQdv7XOUNKMrO8inqCPuapRkQyaL5Ux1GjGTSLHbE2q+JoVwcvxdPwDaop3v61N+ZwfVAh2qlI8QakjhijDbRD+UjRtX/a/t7wUJlqKI82Af38wlGJgIfGrEbsMUufe6BBrv2/hJeJPKuWEkXXXtPxpp696r35KB4aKr+2Bl96y/+w1meroi//0n8K0L3fy4iw1GfRq4rDnKY4npn1n9l5x+zr4BISiz62HYusVq2in1ce7DQvYV9ixvEBByiLCf4e5qrmXYv4+yA4T+XLsAk1a3C3T7elGbUV4J38Ji4whRoMP/O/41h/sjH6lMYUug3Wjao4d1EbRwn8WWZoOKhIXMoUXckCE+1/lycu5/WfDQMDc9QONF6f5pahGjFfhwQ0+62AL/zaITQHVd1Y4KjbgHUEDqiYAGpum+KM+7daJUOMVjrfm5tTMK9ghBHWAJNbvypcpPhKcj0B1+ht4HjSaWo3RyOBYiOkzXflwlTSYJHUoNm9xNbXpyQYBIhTLVkpZjY+RuEAcj2sqMaW+SVvcu2AA3LaSqpZ+WVOQ7aw/7JhOc3dIsJPQ9U6YQxEOFrCz17KZFomO4YhQGB5iLP6+AT7AsvWUK8h+abORersGGMtA+n76JXsFEb4wNVzCNXG3yDIVrlizRxNgi04IKVfYlhy4cEiqs2BW2CbatrDhKjNmNbK9u2DxZ2JP+EoiQtCkm59nl5G9DFrDwS9FFDrsP8YftI3VayohzuGTTP56bAIN1t7dKJGQKTfAyUcOIJLUaAdjC0fYZgY/Pcl4+ulcfoCKzbMo0SJfb7n0aFWi4z2z1ozTfG08gevVCqQFnHj3VHFV9xRhjRcAtbD5S4wr0DUn/PbkK5zjVFygLfAhYVhm1UbDqYZs9G2viaX16KGFdpghQiCXn3oyhFOIfDGxTJTzmapBNuPULXeUUaWnzbv8By1QcNy1PCxycVbN4sf93ziDUcLVijc3korSkzSXSa1XPCJGQ6ZhniaKZne39gaKeAIlH+2JND5TK+W/BSpPITZE7+CmNhhQUdFrtjE3pLNpx1zDp0kLcgdxDy3HF//VU9gXjjE55Vj1wF/mt67ac3c0/ughJB/FaYRfl9yF1S7leNcUyaGaNWucxWVyjRh+8XaAesKBMM0aODeCepGBWq4fkGVi92KXCBcU8TWk5LpeSE X-MS-Exchange-AntiSpam-MessageData-1: CMKx+hdp8LCvfVBCvG+QMvo30Pv9aOzAZ6g= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ebb0a6c2-4891-4845-68c7-08da55253515 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8703.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2022 14:32:32.0811 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: o/Dne1WZb/WTN3DVEBEjhdYKDrXgv1thqY6/lMpc0K7i5jeBOhxGw7fQ1J89cLamNdYZG9deW8uaIquOBf3Eww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6505 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org From: Hans Verkuil Implement support for dynamically allocated arrays. Most of the changes concern keeping track of the number of elements of the array and the number of elements allocated for the array and reallocating memory if needed. Signed-off-by: Hans Verkuil --- drivers/media/v4l2-core/v4l2-ctrls-api.c | 103 ++++++++--- drivers/media/v4l2-core/v4l2-ctrls-core.c | 182 +++++++++++++++---- drivers/media/v4l2-core/v4l2-ctrls-priv.h | 3 +- drivers/media/v4l2-core/v4l2-ctrls-request.c | 13 +- include/media/v4l2-ctrls.h | 42 ++++- 5 files changed, 272 insertions(+), 71 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-ctrls-api.c b/drivers/media/v4l2-core/v4l2-ctrls-api.c index db9baa0bd05f..50d012ba3c02 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-api.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-api.c @@ -97,29 +97,47 @@ static int def_to_user(struct v4l2_ext_control *c, struct v4l2_ctrl *ctrl) return ptr_to_user(c, ctrl, ctrl->p_new); } -/* Helper function: copy the caller-provider value to the given control value */ -static int user_to_ptr(struct v4l2_ext_control *c, - struct v4l2_ctrl *ctrl, - union v4l2_ctrl_ptr ptr) +/* Helper function: copy the caller-provider value as the new control value */ +static int user_to_new(struct v4l2_ext_control *c, struct v4l2_ctrl *ctrl) { int ret; u32 size; - ctrl->is_new = 1; + ctrl->is_new = 0; + if (ctrl->is_dyn_array && + c->size > ctrl->p_dyn_alloc_elems * ctrl->elem_size) { + void *old = ctrl->p_dyn; + void *tmp = kvzalloc(2 * c->size, GFP_KERNEL); + + if (!tmp) + return -ENOMEM; + memcpy(tmp, ctrl->p_new.p, ctrl->elems * ctrl->elem_size); + memcpy(tmp + c->size, ctrl->p_cur.p, ctrl->elems * ctrl->elem_size); + ctrl->p_new.p = tmp; + ctrl->p_cur.p = tmp + c->size; + ctrl->p_dyn = tmp; + ctrl->p_dyn_alloc_elems = c->size / ctrl->elem_size; + kvfree(old); + } + if (ctrl->is_ptr && !ctrl->is_string) { + unsigned int elems = c->size / ctrl->elem_size; unsigned int idx; - ret = copy_from_user(ptr.p, c->ptr, c->size) ? -EFAULT : 0; - if (ret || !ctrl->is_array) - return ret; - for (idx = c->size / ctrl->elem_size; idx < ctrl->elems; idx++) - ctrl->type_ops->init(ctrl, idx, ptr); + if (copy_from_user(ctrl->p_new.p, c->ptr, c->size)) + return -EFAULT; + ctrl->is_new = 1; + if (ctrl->is_dyn_array) + ctrl->new_elems = elems; + else if (ctrl->is_array) + for (idx = elems; idx < ctrl->elems; idx++) + ctrl->type_ops->init(ctrl, idx, ctrl->p_new); return 0; } switch (ctrl->type) { case V4L2_CTRL_TYPE_INTEGER64: - *ptr.p_s64 = c->value64; + *ctrl->p_new.p_s64 = c->value64; break; case V4L2_CTRL_TYPE_STRING: size = c->size; @@ -127,32 +145,27 @@ static int user_to_ptr(struct v4l2_ext_control *c, return -ERANGE; if (size > ctrl->maximum + 1) size = ctrl->maximum + 1; - ret = copy_from_user(ptr.p_char, c->string, size) ? -EFAULT : 0; + ret = copy_from_user(ctrl->p_new.p_char, c->string, size) ? -EFAULT : 0; if (!ret) { - char last = ptr.p_char[size - 1]; + char last = ctrl->p_new.p_char[size - 1]; - ptr.p_char[size - 1] = 0; + ctrl->p_new.p_char[size - 1] = 0; /* * If the string was longer than ctrl->maximum, * then return an error. */ - if (strlen(ptr.p_char) == ctrl->maximum && last) + if (strlen(ctrl->p_new.p_char) == ctrl->maximum && last) return -ERANGE; } return ret; default: - *ptr.p_s32 = c->value; + *ctrl->p_new.p_s32 = c->value; break; } + ctrl->is_new = 1; return 0; } -/* Helper function: copy the caller-provider value as the new control value */ -static int user_to_new(struct v4l2_ext_control *c, struct v4l2_ctrl *ctrl) -{ - return user_to_ptr(c, ctrl, ctrl->p_new); -} - /* * VIDIOC_G/TRY/S_EXT_CTRLS implementation */ @@ -254,7 +267,31 @@ static int prepare_ext_ctrls(struct v4l2_ctrl_handler *hdl, have_clusters = true; if (ctrl->cluster[0] != ctrl) ref = find_ref_lock(hdl, ctrl->cluster[0]->id); - if (ctrl->is_ptr && !ctrl->is_string) { + if (ctrl->is_dyn_array) { + unsigned int max_size = ctrl->dims[0] * ctrl->elem_size; + unsigned int tot_size = ctrl->elem_size; + + if (cs->which == V4L2_CTRL_WHICH_REQUEST_VAL) + tot_size *= ref->p_req_elems; + else + tot_size *= ctrl->elems; + + c->size = ctrl->elem_size * (c->size / ctrl->elem_size); + if (get) { + if (c->size < tot_size) { + c->size = tot_size; + return -ENOSPC; + } + c->size = tot_size; + } else { + if (c->size > max_size) { + c->size = max_size; + return -ENOSPC; + } + if (!c->size) + return -EFAULT; + } + } else if (ctrl->is_ptr && !ctrl->is_string) { unsigned int tot_size = ctrl->elems * ctrl->elem_size; if (c->size < tot_size) { @@ -346,7 +383,7 @@ static int class_check(struct v4l2_ctrl_handler *hdl, u32 which) * * Note that v4l2_g_ext_ctrls_common() with 'which' set to * V4L2_CTRL_WHICH_REQUEST_VAL is only called if the request was - * completed, and in that case valid_p_req is true for all controls. + * completed, and in that case p_req_valid is true for all controls. */ int v4l2_g_ext_ctrls_common(struct v4l2_ctrl_handler *hdl, struct v4l2_ext_controls *cs, @@ -430,7 +467,9 @@ int v4l2_g_ext_ctrls_common(struct v4l2_ctrl_handler *hdl, if (is_default) ret = def_to_user(cs->controls + idx, ref->ctrl); - else if (is_request && ref->valid_p_req) + else if (is_request && ref->p_req_dyn_enomem) + ret = -ENOMEM; + else if (is_request && ref->p_req_valid) ret = req_to_user(cs->controls + idx, ref); else if (is_volatile) ret = new_to_user(cs->controls + idx, ref->ctrl); @@ -457,6 +496,17 @@ int v4l2_g_ext_ctrls(struct v4l2_ctrl_handler *hdl, struct video_device *vdev, } EXPORT_SYMBOL(v4l2_g_ext_ctrls); +/* Validate a new control */ +static int validate_new(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr p_new) +{ + unsigned int idx; + int err = 0; + + for (idx = 0; !err && idx < ctrl->new_elems; idx++) + err = ctrl->type_ops->validate(ctrl, idx, p_new); + return err; +} + /* Validate controls. */ static int validate_ctrls(struct v4l2_ext_controls *cs, struct v4l2_ctrl_helper *helpers, @@ -872,6 +922,9 @@ int __v4l2_ctrl_s_ctrl_compound(struct v4l2_ctrl *ctrl, /* It's a driver bug if this happens. */ if (WARN_ON(ctrl->type != type)) return -EINVAL; + /* Setting dynamic arrays is not (yet?) supported. */ + if (WARN_ON(ctrl->is_dyn_array)) + return -EINVAL; memcpy(ctrl->p_new.p, p, ctrl->elems * ctrl->elem_size); return set_ctrl(NULL, ctrl, 0); } diff --git a/drivers/media/v4l2-core/v4l2-ctrls-core.c b/drivers/media/v4l2-core/v4l2-ctrls-core.c index 949c1884d9c1..ff8a61f24d0a 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-core.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-core.c @@ -991,11 +991,12 @@ EXPORT_SYMBOL(v4l2_ctrl_notify); /* Copy the one value to another. */ static void ptr_to_ptr(struct v4l2_ctrl *ctrl, - union v4l2_ctrl_ptr from, union v4l2_ctrl_ptr to) + union v4l2_ctrl_ptr from, union v4l2_ctrl_ptr to, + unsigned int elems) { if (ctrl == NULL) return; - memcpy(to.p, from.p_const, ctrl->elems * ctrl->elem_size); + memcpy(to.p, from.p_const, elems * ctrl->elem_size); } /* Copy the new value to the current value. */ @@ -1008,8 +1009,11 @@ void new_to_cur(struct v4l2_fh *fh, struct v4l2_ctrl *ctrl, u32 ch_flags) /* has_changed is set by cluster_changed */ changed = ctrl->has_changed; - if (changed) - ptr_to_ptr(ctrl, ctrl->p_new, ctrl->p_cur); + if (changed) { + if (ctrl->is_dyn_array) + ctrl->elems = ctrl->new_elems; + ptr_to_ptr(ctrl, ctrl->p_new, ctrl->p_cur, ctrl->elems); + } if (ch_flags & V4L2_EVENT_CTRL_CH_FLAGS) { /* Note: CH_FLAGS is only set for auto clusters. */ @@ -1039,36 +1043,122 @@ void cur_to_new(struct v4l2_ctrl *ctrl) { if (ctrl == NULL) return; - ptr_to_ptr(ctrl, ctrl->p_cur, ctrl->p_new); + if (ctrl->is_dyn_array) + ctrl->new_elems = ctrl->elems; + ptr_to_ptr(ctrl, ctrl->p_cur, ctrl->p_new, ctrl->new_elems); +} + +static bool req_alloc_dyn_array(struct v4l2_ctrl_ref *ref, u32 elems) +{ + void *tmp; + + if (elems < ref->p_req_dyn_alloc_elems) + return true; + + tmp = kvmalloc(elems * ref->ctrl->elem_size, GFP_KERNEL); + + if (!tmp) { + ref->p_req_dyn_enomem = true; + return false; + } + ref->p_req_dyn_enomem = false; + kvfree(ref->p_req.p); + ref->p_req.p = tmp; + ref->p_req_dyn_alloc_elems = elems; + return true; } /* Copy the new value to the request value */ void new_to_req(struct v4l2_ctrl_ref *ref) { + struct v4l2_ctrl *ctrl; + if (!ref) return; - ptr_to_ptr(ref->ctrl, ref->ctrl->p_new, ref->p_req); - ref->valid_p_req = true; + + ctrl = ref->ctrl; + if (ctrl->is_dyn_array && !req_alloc_dyn_array(ref, ctrl->new_elems)) + return; + + ref->p_req_elems = ctrl->new_elems; + ptr_to_ptr(ctrl, ctrl->p_new, ref->p_req, ref->p_req_elems); + ref->p_req_valid = true; } /* Copy the current value to the request value */ void cur_to_req(struct v4l2_ctrl_ref *ref) { + struct v4l2_ctrl *ctrl; + if (!ref) return; - ptr_to_ptr(ref->ctrl, ref->ctrl->p_cur, ref->p_req); - ref->valid_p_req = true; + + ctrl = ref->ctrl; + if (ctrl->is_dyn_array && !req_alloc_dyn_array(ref, ctrl->elems)) + return; + + ref->p_req_elems = ctrl->elems; + ptr_to_ptr(ctrl, ctrl->p_cur, ref->p_req, ctrl->elems); + ref->p_req_valid = true; } /* Copy the request value to the new value */ -void req_to_new(struct v4l2_ctrl_ref *ref) +int req_to_new(struct v4l2_ctrl_ref *ref) { + struct v4l2_ctrl *ctrl; + if (!ref) - return; - if (ref->valid_p_req) - ptr_to_ptr(ref->ctrl, ref->p_req, ref->ctrl->p_new); - else - ptr_to_ptr(ref->ctrl, ref->ctrl->p_cur, ref->ctrl->p_new); + return 0; + + ctrl = ref->ctrl; + + /* + * This control was never set in the request, so just use the current + * value. + */ + if (!ref->p_req_valid) { + if (ctrl->is_dyn_array) + ctrl->new_elems = ctrl->elems; + ptr_to_ptr(ctrl, ctrl->p_cur, ctrl->p_new, ctrl->new_elems); + return 0; + } + + /* Not a dynamic array, so just copy the request value */ + if (!ctrl->is_dyn_array) { + ptr_to_ptr(ctrl, ref->p_req, ctrl->p_new, ctrl->new_elems); + return 0; + } + + /* Sanity check, should never happen */ + if (WARN_ON(!ref->p_req_dyn_alloc_elems)) + return -ENOMEM; + + /* + * Check if the number of elements in the request is more than the + * elements in ctrl->p_dyn. If so, attempt to realloc ctrl->p_dyn. + * Note that p_dyn is allocated with twice the number of elements + * in the dynamic array since it has to store both the current and + * new value of such a control. + */ + if (ref->p_req_elems > ctrl->p_dyn_alloc_elems) { + unsigned int sz = ref->p_req_elems * ctrl->elem_size; + void *old = ctrl->p_dyn; + void *tmp = kvzalloc(2 * sz, GFP_KERNEL); + + if (!tmp) + return -ENOMEM; + memcpy(tmp, ctrl->p_new.p, ctrl->elems * ctrl->elem_size); + memcpy(tmp + sz, ctrl->p_cur.p, ctrl->elems * ctrl->elem_size); + ctrl->p_new.p = tmp; + ctrl->p_cur.p = tmp + sz; + ctrl->p_dyn = tmp; + ctrl->p_dyn_alloc_elems = ref->p_req_elems; + kvfree(old); + } + + ctrl->new_elems = ref->p_req_elems; + ptr_to_ptr(ctrl, ref->p_req, ctrl->p_new, ctrl->new_elems); + return 0; } /* Control range checking */ @@ -1110,17 +1200,6 @@ int check_range(enum v4l2_ctrl_type type, } } -/* Validate a new control */ -int validate_new(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr p_new) -{ - unsigned idx; - int err = 0; - - for (idx = 0; !err && idx < ctrl->elems; idx++) - err = ctrl->type_ops->validate(ctrl, idx, p_new); - return err; -} - /* Set the handler's error code if it wasn't set earlier already */ static inline int handler_set_err(struct v4l2_ctrl_handler *hdl, int err) { @@ -1164,6 +1243,8 @@ void v4l2_ctrl_handler_free(struct v4l2_ctrl_handler *hdl) /* Free all nodes */ list_for_each_entry_safe(ref, next_ref, &hdl->ctrl_refs, node) { list_del(&ref->node); + if (ref->p_req_dyn_alloc_elems) + kvfree(ref->p_req.p); kfree(ref); } /* Free all controls owned by the handler */ @@ -1171,6 +1252,7 @@ void v4l2_ctrl_handler_free(struct v4l2_ctrl_handler *hdl) list_del(&ctrl->node); list_for_each_entry_safe(sev, next_sev, &ctrl->ev_subs, node) list_del(&sev->node); + kvfree(ctrl->p_dyn); kvfree(ctrl); } kvfree(hdl->buckets); @@ -1286,7 +1368,7 @@ int handler_new_ref(struct v4l2_ctrl_handler *hdl, if (hdl->error) return hdl->error; - if (allocate_req) + if (allocate_req && !ctrl->is_dyn_array) size_extra_req = ctrl->elems * ctrl->elem_size; new_ref = kzalloc(sizeof(*new_ref) + size_extra_req, GFP_KERNEL); if (!new_ref) @@ -1460,7 +1542,6 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, elem_size = sizeof(s32); break; } - tot_ctrl_size = elem_size * elems; /* Sanity checks */ if (id == 0 || name == NULL || !elem_size || @@ -1481,17 +1562,33 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, handler_set_err(hdl, -EINVAL); return NULL; } + if (flags & V4L2_CTRL_FLAG_DYNAMIC_ARRAY) { + /* + * For now only support this for one-dimensional arrays only. + * + * This can be relaxed in the future, but this will + * require more effort. + */ + if (nr_of_dims != 1) { + handler_set_err(hdl, -EINVAL); + return NULL; + } + /* Start with just 1 element */ + elems = 1; + } + tot_ctrl_size = elem_size * elems; sz_extra = 0; if (type == V4L2_CTRL_TYPE_BUTTON) flags |= V4L2_CTRL_FLAG_WRITE_ONLY | V4L2_CTRL_FLAG_EXECUTE_ON_WRITE; else if (type == V4L2_CTRL_TYPE_CTRL_CLASS) flags |= V4L2_CTRL_FLAG_READ_ONLY; - else if (type == V4L2_CTRL_TYPE_INTEGER64 || - type == V4L2_CTRL_TYPE_STRING || - type >= V4L2_CTRL_COMPOUND_TYPES || - is_array) + else if (!(flags & V4L2_CTRL_FLAG_DYNAMIC_ARRAY) && + (type == V4L2_CTRL_TYPE_INTEGER64 || + type == V4L2_CTRL_TYPE_STRING || + type >= V4L2_CTRL_COMPOUND_TYPES || + is_array)) sz_extra += 2 * tot_ctrl_size; if (type >= V4L2_CTRL_COMPOUND_TYPES && p_def.p_const) @@ -1520,7 +1617,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, ctrl->is_ptr = is_array || type >= V4L2_CTRL_COMPOUND_TYPES || ctrl->is_string; ctrl->is_int = !ctrl->is_ptr && type != V4L2_CTRL_TYPE_INTEGER64; ctrl->is_array = is_array; + ctrl->is_dyn_array = !!(flags & V4L2_CTRL_FLAG_DYNAMIC_ARRAY); ctrl->elems = elems; + ctrl->new_elems = elems; ctrl->nr_of_dims = nr_of_dims; if (nr_of_dims) memcpy(ctrl->dims, dims, nr_of_dims * sizeof(dims[0])); @@ -1533,6 +1632,16 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, ctrl->cur.val = ctrl->val = def; data = &ctrl[1]; + if (ctrl->is_dyn_array) { + ctrl->p_dyn_alloc_elems = elems; + ctrl->p_dyn = kvzalloc(2 * elems * elem_size, GFP_KERNEL); + if (!ctrl->p_dyn) { + kvfree(ctrl); + return NULL; + } + data = ctrl->p_dyn; + } + if (!ctrl->is_int) { ctrl->p_new.p = data; ctrl->p_cur.p = data + tot_ctrl_size; @@ -1542,7 +1651,10 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, } if (type >= V4L2_CTRL_COMPOUND_TYPES && p_def.p_const) { - ctrl->p_def.p = ctrl->p_cur.p + tot_ctrl_size; + if (ctrl->is_dyn_array) + ctrl->p_def.p = &ctrl[1]; + else + ctrl->p_def.p = ctrl->p_cur.p + tot_ctrl_size; memcpy(ctrl->p_def.p, p_def.p_const, elem_size); } @@ -1552,6 +1664,7 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct v4l2_ctrl_handler *hdl, } if (handler_new_ref(hdl, ctrl, NULL, false, false)) { + kvfree(ctrl->p_dyn); kvfree(ctrl); return NULL; } @@ -1889,6 +2002,9 @@ static int cluster_changed(struct v4l2_ctrl *master) continue; } + if (ctrl->elems != ctrl->new_elems) + ctrl_changed = true; + for (idx = 0; !ctrl_changed && idx < ctrl->elems; idx++) ctrl_changed = !ctrl->type_ops->equal(ctrl, idx, ctrl->p_cur, ctrl->p_new); diff --git a/drivers/media/v4l2-core/v4l2-ctrls-priv.h b/drivers/media/v4l2-core/v4l2-ctrls-priv.h index d4bf2c716f97..aba6176fab6c 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-priv.h +++ b/drivers/media/v4l2-core/v4l2-ctrls-priv.h @@ -57,10 +57,9 @@ void cur_to_new(struct v4l2_ctrl *ctrl); void cur_to_req(struct v4l2_ctrl_ref *ref); void new_to_cur(struct v4l2_fh *fh, struct v4l2_ctrl *ctrl, u32 ch_flags); void new_to_req(struct v4l2_ctrl_ref *ref); -void req_to_new(struct v4l2_ctrl_ref *ref); +int req_to_new(struct v4l2_ctrl_ref *ref); void send_initial_event(struct v4l2_fh *fh, struct v4l2_ctrl *ctrl); void send_event(struct v4l2_fh *fh, struct v4l2_ctrl *ctrl, u32 changes); -int validate_new(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr p_new); int handler_new_ref(struct v4l2_ctrl_handler *hdl, struct v4l2_ctrl *ctrl, struct v4l2_ctrl_ref **ctrl_ref, diff --git a/drivers/media/v4l2-core/v4l2-ctrls-request.c b/drivers/media/v4l2-core/v4l2-ctrls-request.c index 7d098f287fd9..c637049d7a2b 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-request.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-request.c @@ -143,7 +143,7 @@ v4l2_ctrl_request_hdl_ctrl_find(struct v4l2_ctrl_handler *hdl, u32 id) { struct v4l2_ctrl_ref *ref = find_ref_lock(hdl, id); - return (ref && ref->valid_p_req) ? ref->ctrl : NULL; + return (ref && ref->p_req_valid) ? ref->ctrl : NULL; } EXPORT_SYMBOL_GPL(v4l2_ctrl_request_hdl_ctrl_find); @@ -373,7 +373,7 @@ void v4l2_ctrl_request_complete(struct media_request *req, v4l2_ctrl_unlock(master); continue; } - if (ref->valid_p_req) + if (ref->p_req_valid) continue; /* Copy the current control value into the request */ @@ -442,7 +442,7 @@ int v4l2_ctrl_request_setup(struct media_request *req, struct v4l2_ctrl_ref *r = find_ref(hdl, master->cluster[i]->id); - if (r->valid_p_req) { + if (r->p_req_valid) { have_new_data = true; break; } @@ -458,7 +458,11 @@ int v4l2_ctrl_request_setup(struct media_request *req, struct v4l2_ctrl_ref *r = find_ref(hdl, master->cluster[i]->id); - req_to_new(r); + ret = req_to_new(r); + if (ret) { + v4l2_ctrl_unlock(master); + goto error; + } master->cluster[i]->is_new = 1; r->req_done = true; } @@ -490,6 +494,7 @@ int v4l2_ctrl_request_setup(struct media_request *req, break; } +error: media_request_object_put(obj); return ret; } diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h index b3ce438f1329..f4105de8a8d2 100644 --- a/include/media/v4l2-ctrls.h +++ b/include/media/v4l2-ctrls.h @@ -185,6 +185,8 @@ typedef void (*v4l2_ctrl_notify_fnc)(struct v4l2_ctrl *ctrl, void *priv); * and/or has type %V4L2_CTRL_TYPE_STRING. In other words, &struct * v4l2_ext_control uses field p to point to the data. * @is_array: If set, then this control contains an N-dimensional array. + * @is_dyn_array: If set, then this control contains a dynamically sized 1-dimensional array. + * If this is set, then @is_array is also set. * @has_volatiles: If set, then one or more members of the cluster are volatile. * Drivers should never touch this flag. * @call_notify: If set, then call the handler's notify function whenever the @@ -205,6 +207,9 @@ typedef void (*v4l2_ctrl_notify_fnc)(struct v4l2_ctrl *ctrl, void *priv); * @step: The control's step value for non-menu controls. * @elems: The number of elements in the N-dimensional array. * @elem_size: The size in bytes of the control. + * @new_elems: The number of elements in p_new. This is the same as @elems, + * except for dynamic arrays. In that case it is in the range of + * 1 to @p_dyn_alloc_elems. * @dims: The size of each dimension. * @nr_of_dims:The number of dimensions in @dims. * @menu_skip_mask: The control's skip mask for menu controls. This makes it @@ -223,15 +228,21 @@ typedef void (*v4l2_ctrl_notify_fnc)(struct v4l2_ctrl *ctrl, void *priv); * :math:`ceil(\frac{maximum - minimum}{step}) + 1`. * Used only if the @type is %V4L2_CTRL_TYPE_INTEGER_MENU. * @flags: The control's flags. - * @cur: Structure to store the current value. - * @cur.val: The control's current value, if the @type is represented via - * a u32 integer (see &enum v4l2_ctrl_type). - * @val: The control's new s32 value. * @priv: The control's private pointer. For use by the driver. It is * untouched by the control framework. Note that this pointer is * not freed when the control is deleted. Should this be needed * then a new internal bitfield can be added to tell the framework * to free this pointer. + * @p_dyn: Pointer to the dynamically allocated array. Only valid if + * @is_dyn_array is true. + * @p_dyn_alloc_elems: The number of elements in the dynamically allocated + * array for both the cur and new values. So @p_dyn is actually + * sized for 2 * @p_dyn_alloc_elems * @elem_size. Only valid if + * @is_dyn_array is true. + * @cur: Structure to store the current value. + * @cur.val: The control's current value, if the @type is represented via + * a u32 integer (see &enum v4l2_ctrl_type). + * @val: The control's new s32 value. * @p_def: The control's default value represented via a union which * provides a standard way of accessing control types * through a pointer (for compound controls only). @@ -260,6 +271,7 @@ struct v4l2_ctrl { unsigned int is_string:1; unsigned int is_ptr:1; unsigned int is_array:1; + unsigned int is_dyn_array:1; unsigned int has_volatiles:1; unsigned int call_notify:1; unsigned int manual_mode_value:8; @@ -272,6 +284,7 @@ struct v4l2_ctrl { s64 minimum, maximum, default_value; u32 elems; u32 elem_size; + u32 new_elems; u32 dims[V4L2_CTRL_MAX_DIMS]; u32 nr_of_dims; union { @@ -284,6 +297,8 @@ struct v4l2_ctrl { }; unsigned long flags; void *priv; + void *p_dyn; + u32 p_dyn_alloc_elems; s32 val; struct { s32 val; @@ -309,12 +324,22 @@ struct v4l2_ctrl { * the control has been applied. This prevents applying controls * from a cluster with multiple controls twice (when the first * control of a cluster is applied, they all are). - * @valid_p_req: If set, then p_req contains the control value for the request. + * @p_req_valid: If set, then p_req contains the control value for the request. + * @p_req_dyn_enomem: If set, then p_req is invalid since allocating space for + * a dynamic array failed. Attempting to read this value shall + * result in ENOMEM. Only valid if ctrl->is_dyn_array is true. + * @p_req_dyn_alloc_elems: The number of elements allocated for the dynamic + * array. Only valid if @p_req_valid and ctrl->is_dyn_array are + * true. + * @p_req_elems: The number of elements in @p_req. This is the same as + * ctrl->elems, except for dynamic arrays. In that case it is in + * the range of 1 to @p_req_dyn_alloc_elems. Only valid if + * @p_req_valid is true. * @p_req: If the control handler containing this control reference * is bound to a media request, then this points to the * value of the control that must be applied when the request * is executed, or to the value of the control at the time - * that the request was completed. If @valid_p_req is false, + * that the request was completed. If @p_req_valid is false, * then this control was never set for this request and the * control will not be updated when this request is applied. * @@ -329,7 +354,10 @@ struct v4l2_ctrl_ref { struct v4l2_ctrl_helper *helper; bool from_other_dev; bool req_done; - bool valid_p_req; + bool p_req_valid; + bool p_req_dyn_enomem; + u32 p_req_dyn_alloc_elems; + u32 p_req_elems; union v4l2_ctrl_ptr p_req; }; From patchwork Thu Jun 23 14:31:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xavier Roumegue \(OSS\)" X-Patchwork-Id: 584337 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BAF2AC43334 for ; Thu, 23 Jun 2022 14:32:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231945AbiFWOcl (ORCPT ); Thu, 23 Jun 2022 10:32:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231922AbiFWOck (ORCPT ); Thu, 23 Jun 2022 10:32:40 -0400 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60050.outbound.protection.outlook.com [40.107.6.50]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E53FE4578F; Thu, 23 Jun 2022 07:32:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RyA5qKy4RZNhrpY2FVsLpq65caBkSFfIA1obzzgVQX6d5fSrsE7dE5QBqqqoS7PIT05dtfyK0D/t5NIMiN+grswbGI/TwyeIEf1eQeo9a24nvqQfXRj2CwDH5fKqj59eWlaHCankAZ5qDfYuH4VxjdjV5rRQlZxi42mEuMPhFNefFmrvgiOJtYtQsbyrpho2y7Xnnum3cVr69MfzYJpRcTTqxg8ORfiREOQxJXs8LGfnMo0bxMa7yZoDxYXjxivkxOMx1NRQsvLJBn4ly/d6V+z7o6NobRNDaj9vwTsLYTeihw0uKUAHf6ZDJ0DU1vcTMwRNYP9ozH6MOBLQkZvPwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fmGxDEt04njvwKMMNcP8XCQYF55GlfvOprSaEwf1L2o=; b=UpJ6R9cjxdv9RQ/HmaAM/EKJdGqadKoK7THcj2VctOZHvvRTpPuhHmOh/XF9IcrleFUxmjnQ6+U0EegCcXTz5XdYLUIRNHWuBFQlVs7l08Y3EDSFhTDMSxHB9DjjhgKWEM9VfKvwLOp0d7+MYUqjp+/OmYjbaK0BUX7t8WFXi3U6QhIkAKyvH29BAx51YA5SkZt0UJUF+1+UjfCD0GgVyWBBRa+VdvUzSMsVzTxyTpOf6DCCfEtFBFf8wHHc9j2sXMCX7raPy0xiU6y+mhE44cuxoL11nQfOQOoimXbRjqyhP5NJw+qE2vXCR0a5maD99aWVwrSOyJv24Fnog87Eww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fmGxDEt04njvwKMMNcP8XCQYF55GlfvOprSaEwf1L2o=; b=c3937Ug6mtJnE7MYGRDx4GKpBJkDEVqs8HK+uQIC27D8PB4KRTFgzSs39hKOM19xSoIRKbaXc70pGYBOreHzHTax0g508MeYEtrHcVscsuX0ucALAk35bmLDp2Ls3/w/9PO3cee9tujEO0xEgSqvNhj+Y7YxwcjH+tYIz1qZZqk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) by VI1PR0401MB2288.eurprd04.prod.outlook.com (2603:10a6:800:28::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.16; Thu, 23 Jun 2022 14:32:33 +0000 Received: from PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485]) by PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485%5]) with mapi id 15.20.5353.022; Thu, 23 Jun 2022 14:32:33 +0000 From: Xavier Roumegue To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, stanimir.varbanov@linaro.org, laurent.pinchart@ideasonboard.com, tomi.valkeinen@ideasonboard.com, robh+dt@kernel.org, nicolas@ndufresne.ca, alexander.stein@ew.tq-group.com Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v6 05/14] v4l2-ctrls: alloc arrays in ctrl_ref Date: Thu, 23 Jun 2022 16:31:06 +0200 Message-Id: <20220623143115.3185297-6-xavier.roumegue@oss.nxp.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> References: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> X-ClientProxiedBy: PR2P264CA0026.FRAP264.PROD.OUTLOOK.COM (2603:10a6:101:1::14) To PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f3b3404d-9569-4307-b67c-08da55253614 X-MS-TrafficTypeDiagnostic: VI1PR0401MB2288:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: y1/XUa25vburSrduT0DewbmrY/ZIsggzlEb+FnqAIDs2PoQR8eXKg3Ob/78FtmUZ+kEEFcn2uDu6O2ONCZG4qQCat5I7tGOrgMSx+3Uvq6yXNarhpLDzSFzbhjB+9+J0ysmiKo9bWSVtuHBTrPjYN0n1vrU4u5uk55FdlBMqqTbXESxkAS6h/PT8tb/EJHRNbYmI9N2FgorSZks9BNGlzAJS+V6TFsJp8kdcoTgyoU2KjoTofGG8ueI35gnk6rMJdMoR2wfhXMFAPAihd6yLnWl+G/E60Rlo3suvZ+NMPrHuOKE7GexL1aVoMQ22lYwH/1I8HVLq9pdKYsc0atoaQQR123Pwb4Wxv920NbzhP5bzZGrdO5BbR8XLmZkgR1CD0IRz5/8BvliWL9ak4WwD120N+8HUzjIU3k5n7N5G0p0co+fX0v015qysbxToMyjWwtrMPLEoqrhLAJWM5/wyb8FIdsVHlvxV59TVEgfUoiROeE+Rw5S6+eG71LxNueWGFH/8wmJHjMThcGWBN7GV5t/TT/C3/qiZTzmDJUtdly/RYsioCgkvvLATx4D3RywdtDo9ymt0EqQokt9gtw6B/+iTU53l8YEOpGtmVBQY9k+Kzs78b6FlrgWhare9J+2Dfemiv7gMcY+B9rwD/9pOtlfAUcN1wWxwewL6txE/zLLtsXK1ab9KxJOA4l4k0V2Kf7YPf7jEBPc292/e1rC/kQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB8703.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(346002)(136003)(376002)(366004)(396003)(39860400002)(52116002)(66476007)(4326008)(6506007)(86362001)(2616005)(38100700002)(6666004)(41300700001)(66556008)(8676002)(66946007)(2906002)(316002)(1076003)(44832011)(478600001)(8936002)(83380400001)(7416002)(6512007)(5660300002)(186003)(6486002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: HQPrUcbJNjBSpBcEnaqs+o9U9V0+2B8mrohUEDfbii40ltoo+f7m9TvZQ0Sd8OdqIO1VeEKliIdaa/vADnHzjJabAGGQJFhtN+WItu/h96Gf22HadqS06MGDLmGK/n1UNNSPeXCsVA+NzTtDtnipVLVroSnfBOVnmxh3pBNCEK4xjqfmLEFvMM4xZA5OSnpMipPvg40Zwr+t0FqJxKgVLE0c9E1npuVICBna0EaIl/4J7Y59/tCtyK64bw5+OBBLVhVCCdNDMqV9r2slYfdJX/KDTgu/l+GdUVijVf7lkiTJ15UnybtGx0in6SqU6EZZInS8V35QOhgv30pINrXqWwVoAPcitga2KOgx40+7FWJhRCFtk4kJHq+KEuwpeFvpjDIBbMz2ddn2xUWGaQ+tOv0xyDJw6JJcKwDZLQnmdFRyMjlwCPk/yZ4IFlgGYLESzXRDi2JR39IuxByCm61iu1x0N5z/3V0bQ7tefrfdsqL2SCxbhkdoYMoiyrpE1xKDE9+TVK4i8NCCXgHeSrqLKcrHOqfjyV8FXDCIm5MLTHp8n3l+mnthtno/tZwnxgf/lkqCy8g1aKUHssR/s5NdIdLjVXoVXmNypo9jP/tlsH+K8qw4NngtAhwdzRdecJYLgnpNnGCD3HZ6v3BWoTxHba3WMzUgTqAcfL1FW+4YLh0wB7xo7+sn66eRAVXyrvue5WAPNdo2twTxJOBVB9ZmGfn84xKSkzNdKVsZHWnOnVxybeDSavFZJYmdi/YHrfg6SS16ASaf5LjV9zgLIPHUcVqenKPaRwwvb6i0dpmV/l2Kl+tkfg9eh8S1l20J6zsNK1Iwdp2JRSk56xUqmkPQt62mLX1sfltpqxAXvgwfLlLuLTDeC8bzNWW2RG+f+4VftSMJxEUyWhWUqWitcKCaI4ISWOiIoxhrw1CY0jZKuk8wJuDbMuSbRVRvCLqxTM07g4nsv18SIi+SlWc+ck49oEHZpcYMIsJuU7rDPcKZyrny9YWIglTRJQD0NkiDc4rGfdyhAkPjXuQXzt65GTWfZwEEtwiT5bvFhasMU8oPt6FIPr4ncQiO9v75X1YwzPZpyvTAAKhHGRbYCV/IbjsDPviZXCQsRTOuCcGFHdNZl51rSGxpO6PmgwbX5L0lB6FzE/Q/v3Lh+DD+fYkyIjVL6akTTxNfkEVBhuLnJZiViZ8XQFGUD65MU7KrYxNmofvr4enH0lePipbQdeTSdJaDpeQ+rNCMIGuPNzbgDdfgAVtf6cPCGNWNVh+EmRIuvoOIYRESZu+uO+Dit+n4x3z+NCgQn+CeGyDN20AM+eX9I6/DdrtabzYxaQA+IBoY54h56KtFjonXIZ50l90zmk5S/kAn6pMV+XpV2G/XCxzsFEs9RyXLfaL0M8A1g1y1FR5836TAPMiDkUor+Ic8fHWjJaaUDxvE3f/nkhc9rR5r5Mpmw6orU5pepotzs21JWi+5SsWltOcsIHiMptm7pmuo2j51Z1OtzD5SjFiVBfAlN9IR15PVL82Nal2dBok09mSuhf16k+sDlJZLyKi25pQ62eMDsQ+MKLJJ8RY65zJkf7CNdF2Krjb92bkmzNOJ+7977chYLM0Fq9fs4lKxsCv90tIYT+ZqzWQwPiQucdSQeX3JbPgUBeld/eWiQrs5Vqd1Pg25oG90Lq75dwSf2Pq0KIuYq0mD1YEHg7jCOIdxrGT1zw3F/LwzjmOVOcJaQYm/Fkgzu1hPbfhDK3pHsaRoP/RWGyypWmJ+qwRY1rFPGrUUMMlXtb6MeQhyGBseXmpPLR/Ws2Cl X-MS-Exchange-AntiSpam-MessageData-1: TjuAiO3RCMEYtYlWUZlmp22t9cyYoZvrpkg= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f3b3404d-9569-4307-b67c-08da55253614 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8703.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2022 14:32:33.6761 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7j7wzru3TjatlrqbUF5yBS6/b9t9QwxEZE9gLpaC+gWFCFifWgl6J40kdRC6N2jKLkFhzjVpXPUXWRVBSbcxHw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2288 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org From: Hans Verkuil Signed-off-by: Hans Verkuil --- drivers/media/v4l2-core/v4l2-ctrls-api.c | 2 +- drivers/media/v4l2-core/v4l2-ctrls-core.c | 31 ++++++++++++++--------- include/media/v4l2-ctrls.h | 16 ++++++------ 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-ctrls-api.c b/drivers/media/v4l2-core/v4l2-ctrls-api.c index 1b90bd7c4010..6f1b72c59e8e 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-api.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-api.c @@ -467,7 +467,7 @@ int v4l2_g_ext_ctrls_common(struct v4l2_ctrl_handler *hdl, if (is_default) ret = def_to_user(cs->controls + idx, ref->ctrl); - else if (is_request && ref->p_req_dyn_enomem) + else if (is_request && ref->p_req_array_enomem) ret = -ENOMEM; else if (is_request && ref->p_req_valid) ret = req_to_user(cs->controls + idx, ref); diff --git a/drivers/media/v4l2-core/v4l2-ctrls-core.c b/drivers/media/v4l2-core/v4l2-ctrls-core.c index 1372b7b45681..38030a7cb233 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-core.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-core.c @@ -1048,23 +1048,26 @@ void cur_to_new(struct v4l2_ctrl *ctrl) ptr_to_ptr(ctrl, ctrl->p_cur, ctrl->p_new, ctrl->new_elems); } -static bool req_alloc_dyn_array(struct v4l2_ctrl_ref *ref, u32 elems) +static bool req_alloc_array(struct v4l2_ctrl_ref *ref, u32 elems) { void *tmp; - if (elems < ref->p_req_dyn_alloc_elems) + if (elems == ref->p_req_array_alloc_elems) + return true; + if (ref->ctrl->is_dyn_array && + elems < ref->p_req_array_alloc_elems) return true; tmp = kvmalloc(elems * ref->ctrl->elem_size, GFP_KERNEL); if (!tmp) { - ref->p_req_dyn_enomem = true; + ref->p_req_array_enomem = true; return false; } - ref->p_req_dyn_enomem = false; + ref->p_req_array_enomem = false; kvfree(ref->p_req.p); ref->p_req.p = tmp; - ref->p_req_dyn_alloc_elems = elems; + ref->p_req_array_alloc_elems = elems; return true; } @@ -1077,7 +1080,7 @@ void new_to_req(struct v4l2_ctrl_ref *ref) return; ctrl = ref->ctrl; - if (ctrl->is_dyn_array && !req_alloc_dyn_array(ref, ctrl->new_elems)) + if (ctrl->is_array && !req_alloc_array(ref, ctrl->new_elems)) return; ref->p_req_elems = ctrl->new_elems; @@ -1094,7 +1097,7 @@ void cur_to_req(struct v4l2_ctrl_ref *ref) return; ctrl = ref->ctrl; - if (ctrl->is_dyn_array && !req_alloc_dyn_array(ref, ctrl->elems)) + if (ctrl->is_array && !req_alloc_array(ref, ctrl->elems)) return; ref->p_req_elems = ctrl->elems; @@ -1123,14 +1126,18 @@ int req_to_new(struct v4l2_ctrl_ref *ref) return 0; } - /* Not a dynamic array, so just copy the request value */ - if (!ctrl->is_dyn_array) { + /* Not an array, so just copy the request value */ + if (!ctrl->is_array) { ptr_to_ptr(ctrl, ref->p_req, ctrl->p_new, ctrl->new_elems); return 0; } /* Sanity check, should never happen */ - if (WARN_ON(!ref->p_req_dyn_alloc_elems)) + if (WARN_ON(!ref->p_req_array_alloc_elems)) + return -ENOMEM; + + if (!ctrl->is_dyn_array && + ref->p_req_elems != ctrl->p_array_alloc_elems) return -ENOMEM; /* @@ -1243,7 +1250,7 @@ void v4l2_ctrl_handler_free(struct v4l2_ctrl_handler *hdl) /* Free all nodes */ list_for_each_entry_safe(ref, next_ref, &hdl->ctrl_refs, node) { list_del(&ref->node); - if (ref->p_req_dyn_alloc_elems) + if (ref->p_req_array_alloc_elems) kvfree(ref->p_req.p); kfree(ref); } @@ -1368,7 +1375,7 @@ int handler_new_ref(struct v4l2_ctrl_handler *hdl, if (hdl->error) return hdl->error; - if (allocate_req && !ctrl->is_dyn_array) + if (allocate_req && !ctrl->is_array) size_extra_req = ctrl->elems * ctrl->elem_size; new_ref = kzalloc(sizeof(*new_ref) + size_extra_req, GFP_KERNEL); if (!new_ref) diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h index a2f147873265..e0f32e8b886a 100644 --- a/include/media/v4l2-ctrls.h +++ b/include/media/v4l2-ctrls.h @@ -324,15 +324,15 @@ struct v4l2_ctrl { * from a cluster with multiple controls twice (when the first * control of a cluster is applied, they all are). * @p_req_valid: If set, then p_req contains the control value for the request. - * @p_req_dyn_enomem: If set, then p_req is invalid since allocating space for - * a dynamic array failed. Attempting to read this value shall - * result in ENOMEM. Only valid if ctrl->is_dyn_array is true. - * @p_req_dyn_alloc_elems: The number of elements allocated for the dynamic - * array. Only valid if @p_req_valid and ctrl->is_dyn_array are + * @p_req_array_enomem: If set, then p_req is invalid since allocating space for + * an array failed. Attempting to read this value shall + * result in ENOMEM. Only valid if ctrl->is_array is true. + * @p_req_array_alloc_elems: The number of elements allocated for the + * array. Only valid if @p_req_valid and ctrl->is_array are * true. * @p_req_elems: The number of elements in @p_req. This is the same as * ctrl->elems, except for dynamic arrays. In that case it is in - * the range of 1 to @p_req_dyn_alloc_elems. Only valid if + * the range of 1 to @p_req_array_alloc_elems. Only valid if * @p_req_valid is true. * @p_req: If the control handler containing this control reference * is bound to a media request, then this points to the @@ -354,8 +354,8 @@ struct v4l2_ctrl_ref { bool from_other_dev; bool req_done; bool p_req_valid; - bool p_req_dyn_enomem; - u32 p_req_dyn_alloc_elems; + bool p_req_array_enomem; + u32 p_req_array_alloc_elems; u32 p_req_elems; union v4l2_ctrl_ptr p_req; }; From patchwork Thu Jun 23 14:31:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xavier Roumegue \(OSS\)" X-Patchwork-Id: 584338 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BDD13CCA481 for ; Thu, 23 Jun 2022 14:32:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231893AbiFWOcj (ORCPT ); Thu, 23 Jun 2022 10:32:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59954 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231821AbiFWOci (ORCPT ); Thu, 23 Jun 2022 10:32:38 -0400 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2076.outbound.protection.outlook.com [40.107.20.76]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8E7654578F; Thu, 23 Jun 2022 07:32:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YSHcRzYDMRKUJ6Zaa1cWqkZcSFnb3+g1yVKxOUECviT1haWAMV8OD/gy306cnAm629/ocEV+4p7r9QCvQFRgimF56BxHQiSzbhrMy0K8QukRhB/ie0bQitjq5IBLi9iuU9xTHG3fs6wFzTgwky3cpN2Rs+6cBMVwGOILZNFarA5OPrCqtCaWwwicTnMnoNEU1ovJdJIrtqr5T+KxaUEAFB/5HLt9wfgChFqtBKPmPq6oD62dNy6+0G4KlKsp/KwsMfMoYEZDvk8vS/YTc6efQndX2AMJWKGHPvTMj7vwrAlZM5D/bsK6B7MzCjUPyu5RacsRnjRP75PJiLlOwlNVjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ULeSZlXrL0YNE2ENtNtpWOEKX6Eein3Ov2R7ib1O4KU=; b=AyZj8HkwJNNl8b2NyUaGUYomevoSiPW/jv+LqTamA19B1yJJQzoDk5ulmIqihQ8i2QrYNF7AkICiuZbTWveicgzQrmjsSCSR0WOLLTXC3yjKrCSNSkMYdKbYvK496dfbpfQu3A9zBY+4CgVu/r7rhzVVtBq8csqJZwaja6KpdSMmzfBc+Sv+wnYh5aBWv+tcD2qkItVsjVUIPs2XlMN9KHeyIVGcIdIdkpVn39imTOwsmAfvaEkIoH9vEIv65sphY0IXnB8d1NQNYT+iYpE/ukQQKoccou3FEMyHjg+By/weFu2csaMvcsH3gdUSRdR9tMt811qjBWKEibBM5bdgTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ULeSZlXrL0YNE2ENtNtpWOEKX6Eein3Ov2R7ib1O4KU=; b=LAn1xhU3z88ntNgp1/KD1qlzCQOWYru1RUiqXC1OGt+W3hxAGS0J8dMAFzvmZABb9iPTVVN+Izi2G+V8Vi6F9fNNOTtxB6yl8fhLHtllsMP36uUjj/lZKh7nb+jjoEifA+Z9JX4mSeYZUEqXZgkvA5JOI6DSYUfCrOeIdl44VOg= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) by DB8PR04MB6505.eurprd04.prod.outlook.com (2603:10a6:10:10d::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.22; Thu, 23 Jun 2022 14:32:34 +0000 Received: from PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485]) by PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485%5]) with mapi id 15.20.5353.022; Thu, 23 Jun 2022 14:32:34 +0000 From: Xavier Roumegue To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, stanimir.varbanov@linaro.org, laurent.pinchart@ideasonboard.com, tomi.valkeinen@ideasonboard.com, robh+dt@kernel.org, nicolas@ndufresne.ca, alexander.stein@ew.tq-group.com Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v6 07/14] v4l2-ctrls: add event Date: Thu, 23 Jun 2022 16:31:08 +0200 Message-Id: <20220623143115.3185297-8-xavier.roumegue@oss.nxp.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> References: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> X-ClientProxiedBy: PR2P264CA0026.FRAP264.PROD.OUTLOOK.COM (2603:10a6:101:1::14) To PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: facf5141-af7e-4692-406b-08da552536b2 X-MS-TrafficTypeDiagnostic: DB8PR04MB6505:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MH1WG4CisE0h5mdJ9fnBLJPIjE+gm+ijeQAXBhEML5dHKswefzmNd4YvLaHKrPmnCf+gdeepkF58MWr00Y7e4bbbHu9WRzkui3WDNk5EyMK1KJgt90Ia0822bNhtgxz7Fopao5TxpOU1Eisu9YEJk3nCzqyW2ymWP/fJnyM0VL9x2PZRugdU0nGBWe/6t93HuES3Sduo91I0WsKi7+Jv+t70uoYroNYUV0JmbkD7mkWC4zMnr7iZdMaThJ1mkNFtPmQzd6n6E2b3E4QlDVSaRZ0ahGXjKDIb27haN+lekqjTJqGoFK+Y5XFvuiwsUTwGncZgN8XDLWyHhNLskckALSk3sIHlf0T+gfQVBgBiLTxFNhdI+G2g7ARxwec7xXuaEyVl9OISpukzt3HUunGxPyCy8yqjbSw/6/AXPzb8m3V4mULbmOGdk/MZnOmLEu7/3MQM5CaRHnNh8Do8oBkpmNwvnWyvY0hJ/h0Pt1PfYGNlhcb9as20TFMQc9hXmd6eoCG7slu4VqLc+ldBg0Fe93AzOZaBjvBdQFAlIb9oDsAF9ZXo3eEpwvG+uWlMdI17ktwenlw9edGpxYz+KTqHqOmMMdwQ0BZBef5K/qD9be55A5sF/QwGu1k/+2D7IpvpqHIoBNz3Fgf/4hamQMG2ESQRfEe6Mk4G7djsmpl9UU54iCMk3zljU6fiGqfMMj38P2RG7R5JmAdMgElgGUP9iw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB8703.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(39860400002)(136003)(376002)(366004)(396003)(346002)(2906002)(38100700002)(6666004)(66946007)(86362001)(1076003)(66556008)(44832011)(8676002)(66476007)(6486002)(316002)(4326008)(478600001)(6512007)(5660300002)(7416002)(186003)(2616005)(52116002)(6506007)(8936002)(41300700001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: Ob+pt5El9u40eo6eWf/pGpMDFv6P0MqdwVTJIEDE5beDbMG4tC0O7+6Opeu7mTcotDE5g+B1ILN55Bo7ogNq0nXyh9e126n6mJnUhip8cTexkdlypO4ReOGIq3mSMVeEj2FleiYabW8cxbxbtmYnj2rch0TLSIBtzvCeiUpWBu6ujKxw3nHHqu1jnWbjCt/eWK31o/uxVEC/24KuuVFE5VAWIQS5MBM0TjwNEM3GDw7xNXBd0dWI1Lw9QjC57W4n0iOMw4SXmam0nh0xl+JUoI/S6qrMgh2mRbGdwwf6YUyKzsSNMa5rBg4SuUCb4vwXEverRcC0f6oivdxG6hAOmb8jlfmprcBo/luPe254yJs8eqlxukVUoZU2tnCZ9scvvkSwvqAk47zEv4t6O/H154Cdnwf4rqr6I6mup1w6fSmy4M3YLJqGaNG7/wvgh3wKAfBlmWrcUx87kDdGF+HeRyAg9UqvQrx58iYDRlM3un+hnq+NreR70h6I9seCPCbX7DwvUB14Y5i1gg83LvsXFTYwNo/35N19WwAaO1BihQkpSRLkE0cBMCCovAguEb6vhg/7wOzI2F2CPUUOerfIYVuqrpcLfbvzqwz5ZQhYwUhRepCigUjfgRIPB+SZDYxd8IpGRopVP4orQzUjz2AmJ9XUQR9hMV+EeGCIoAc+KwPjFUBFt1b3VbhAadt7OKFkp9h90d1nEei1SLCE0zxpDi1DXsv1qlZfqTYDaMTpLxi42C/W+g+jwtWg2aw48H5+nMSAnBBij3PSwyxxnP5jnrw5Y6wbZuiaJzFM3Txs/OnE+yUbYJVcJwU8hjSzrq+O1AvbIbCuiS5qtyn850ANFZvJd6NEf8tBcL3v/hlUiPyRydh48YcDQiZ7Dw26y97JpHU2wZNQXRZcgod5K9nQKzANI/FeY9go7QbymOX1+q0l9wShXnGpqjqbUOh6oItLHtXeNxP5Z4c81Qffj9iIs8TM4fxuOovsSKlZioSIkC6oLk6xwsggqA3SuRkP+EA99bpwL7dmghgOzOJhhQLHT66CoEHrxyMztyPkwhRKtGLkRgHh6lNyceVBDeVKg36WHn91+vEAZYR1oE54sLdSaZTMM+pjnjMmf+EAtr9CdlJ6Ern5OupyGPXX+Ivqr/X3CIAWO3FjDRGPpXcbjN9cMufmMhLKx97inTv5m6/aDTY/Q/skAXPIv+EiUEMQqFqj0l/ecTbZHqVIJ+si6fUxil1/EC312k8adsUjqq69g6zF/CuaIcNk2SFOfpukZdMr0KB0ORVJ2h9lbzJXYR/x8wk2kl+Z/jwoRAz8GQhUf6bw1uT4Gk4VSYx1gVTSvn2BJsb7vEzlTP5EsCobDdQroFgx7uTBxcWn89DSJGDXCkfBpm5vhPRD2xEtVb7QScF3k9BA8eESn70FVnvJHsrcXPUSJK2u3AdWENZgoFALnkYjDl8ZiZYD7BpXmkpJtixLZY7RF/E5/QpAfETQTIQqrXzwMhPSdO1MipupMzj7LFCqeoAkdgvu4uGygY5aoq3UbmW6838Y+2YniPCWTwK3cTzkU1/O0p6K5oP80mYnZdWDTW6wHEj/qEk3dy2nv9nAQrhe35Qo4zrzJdQ+I19GWJdeLluKvH4YQqx6PlDAjJ5UFPw0mz+yEdLUwv0ayQU5bGMTntXXqQjzVynerOp4W37CCCmiVGArINz+pCRFf8iYppBR4tqakIp89hmXB+D0mrgwVeY76Iy8EUX5Me6AfwHJgSyN8InYGyqgjmxC8iEPXEL+h54dgte2A0w+8FDFTZIYLq4K X-MS-Exchange-AntiSpam-MessageData-1: CaILAGk62DIgkICwO/ffMCuDVNHrydllJ4s= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: facf5141-af7e-4692-406b-08da552536b2 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8703.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2022 14:32:34.8179 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: NahM0AWjCfql/e/0ny6cGV6anCw/MyOW2MKuyOJwl90F4xU+fgxhg30IMBiAB8fZ/eVB/bMbd2K440288hGtQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6505 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org From: Hans Verkuil Signed-off-by: Hans Verkuil --- Documentation/userspace-api/media/v4l/vidioc-dqevent.rst | 5 +++++ Documentation/userspace-api/media/videodev2.h.rst.exceptions | 1 + drivers/media/v4l2-core/v4l2-ctrls-api.c | 2 ++ include/uapi/linux/videodev2.h | 1 + 4 files changed, 9 insertions(+) diff --git a/Documentation/userspace-api/media/v4l/vidioc-dqevent.rst b/Documentation/userspace-api/media/v4l/vidioc-dqevent.rst index 6eb40073c906..8db103760930 100644 --- a/Documentation/userspace-api/media/v4l/vidioc-dqevent.rst +++ b/Documentation/userspace-api/media/v4l/vidioc-dqevent.rst @@ -332,6 +332,11 @@ call. - 0x0004 - This control event was triggered because the minimum, maximum, step or the default value of the control changed. + * - ``V4L2_EVENT_CTRL_CH_DIMENSIONS`` + - 0x0008 + - This control event was triggered because the dimensions of the + control changed. Note that the number of dimensions remains the + same. .. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm}| diff --git a/Documentation/userspace-api/media/videodev2.h.rst.exceptions b/Documentation/userspace-api/media/videodev2.h.rst.exceptions index 9cbb7a0c354a..3597a354dc25 100644 --- a/Documentation/userspace-api/media/videodev2.h.rst.exceptions +++ b/Documentation/userspace-api/media/videodev2.h.rst.exceptions @@ -505,6 +505,7 @@ replace define V4L2_EVENT_PRIVATE_START event-type replace define V4L2_EVENT_CTRL_CH_VALUE ctrl-changes-flags replace define V4L2_EVENT_CTRL_CH_FLAGS ctrl-changes-flags replace define V4L2_EVENT_CTRL_CH_RANGE ctrl-changes-flags +replace define V4L2_EVENT_CTRL_CH_DIMENSIONS ctrl-changes-flags replace define V4L2_EVENT_SRC_CH_RESOLUTION src-changes-flags diff --git a/drivers/media/v4l2-core/v4l2-ctrls-api.c b/drivers/media/v4l2-core/v4l2-ctrls-api.c index 8c49961c47de..77d25003ddee 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls-api.c +++ b/drivers/media/v4l2-core/v4l2-ctrls-api.c @@ -1017,6 +1017,8 @@ int __v4l2_ctrl_modify_dimensions(struct v4l2_ctrl *ctrl, ctrl->type_ops->init(ctrl, i, ctrl->p_cur); ctrl->type_ops->init(ctrl, i, ctrl->p_new); } + send_event(NULL, ctrl, + V4L2_EVENT_CTRL_CH_VALUE | V4L2_EVENT_CTRL_CH_DIMENSIONS); return 0; } EXPORT_SYMBOL(__v4l2_ctrl_modify_dimensions); diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 5c45ca18fac9..bf2fedda32ec 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -2397,6 +2397,7 @@ struct v4l2_event_vsync { #define V4L2_EVENT_CTRL_CH_VALUE (1 << 0) #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1) #define V4L2_EVENT_CTRL_CH_RANGE (1 << 2) +#define V4L2_EVENT_CTRL_CH_DIMENSIONS (1 << 3) struct v4l2_event_ctrl { __u32 changes; From patchwork Thu Jun 23 14:31:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xavier Roumegue \(OSS\)" X-Patchwork-Id: 584335 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5E428C433EF for ; Thu, 23 Jun 2022 14:32:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231984AbiFWOco (ORCPT ); Thu, 23 Jun 2022 10:32:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60040 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231951AbiFWOcn (ORCPT ); Thu, 23 Jun 2022 10:32:43 -0400 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60050.outbound.protection.outlook.com [40.107.6.50]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE7DA4578F; Thu, 23 Jun 2022 07:32:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SOBdpPYZUsg5GBehG9fDtVchRFnYLTJJ1rUPQDCmqk8ov2KeWYu2gEcOes7TQXl6TlFsJuhwMFGuflW3tHjMYoDhHq641QeR2Kmmt7DDSK4wicvJfpecX8pv/ZZnIljTqbNXNt4/P2WiKkhneQI1l+A0VhgdiyodAk+zcmoSNUcxOujUXKLdRCf8ZMsj7rj26D8/0BpliyE5ga+pnBZqdl+vYpSkhmad/0baXLjiNWY7RZn0b45SrGtkXQ7X5IGEH90FRKelgQkrUptkhvkvu6fcjRu63m2PIAFjJ1PZi8v2Kw/g++AD7oa37Zu5HKZ4qATUE583HlttUsO+UTyKMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Qo/HmeunH1NHG1XXb0xWwHqLuUBAYsnJzAwWvlhyq0U=; b=lk5K9j/JeiI4WAwwEv0RyiLJVuU5sDRS69yqemaBPAgzw5IWbWzDypGRM3JRjo+WnA3YINZvfpIusW7FLwqCXWkKKtHs9gY4P8/3DptY8OxDE+FzcgVyd4xhE9vxtBsX4sWenLmfC1+cdsSYl6egaBgzV9UZN8ezvJIPvGwLIS8JagS9iERiljkziJ4CvV+2UUiYB4wS6PGTR5j0pCtUToPyK9MZMwch4+ELibBPECkFGNkDXk6DqkKZYgeZKBkZuppDarAbU18s+YhFwrE8vEyOkO1+6ICkmiwW8WF38uQvzg6QpzEb3F4Q8QE8g2ZVkY+Tiz1kECEWLNXKH5ihMA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Qo/HmeunH1NHG1XXb0xWwHqLuUBAYsnJzAwWvlhyq0U=; b=DwSW738D9b0o1KhQsFlW1GKinngn8Lsph6i5GN2FdGmAlMrXMALwBWl7Oxp4j05Gtd2cfpRueQeE0YFtyawKyf3bgkHW2VDI+wzi6SKPXOeoErX1sXUiMIEjh+ey0uKe5BBX1MKcCkS89tbqikfIw6h0+22d7VpIYbNUkCzVlHA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) by VI1PR0401MB2288.eurprd04.prod.outlook.com (2603:10a6:800:28::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.16; Thu, 23 Jun 2022 14:32:36 +0000 Received: from PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485]) by PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485%5]) with mapi id 15.20.5353.022; Thu, 23 Jun 2022 14:32:36 +0000 From: Xavier Roumegue To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, stanimir.varbanov@linaro.org, laurent.pinchart@ideasonboard.com, tomi.valkeinen@ideasonboard.com, robh+dt@kernel.org, nicolas@ndufresne.ca, alexander.stein@ew.tq-group.com Cc: Xavier Roumegue , linux-media@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v6 09/14] media: Documentation: dw100: Add user documentation for the DW100 driver Date: Thu, 23 Jun 2022 16:31:10 +0200 Message-Id: <20220623143115.3185297-10-xavier.roumegue@oss.nxp.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> References: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> X-ClientProxiedBy: PR2P264CA0026.FRAP264.PROD.OUTLOOK.COM (2603:10a6:101:1::14) To PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cc8d3994-0c56-494b-9b86-08da5525378d X-MS-TrafficTypeDiagnostic: VI1PR0401MB2288:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: o61Qypm9yxq1JddZvTjkjyRai1cqPfEO3wrA6TSvfxcocfvFJq3McUnVTSbxFqVjSU9rvxoUnGEW4m+QrSEz2rWAiOdSalu1caU54ArtUgS5cNFBIWqT44u8+FubPvVfhMHh1aTuJpQnz99w8JGUFvntGtJHdOGlVOp/sCdRPWfrd7OHH37N4IAXzQbwSzgrMoPuThXa8fE+GDca5Pq8S3OiOKLWrF0qedFLtCSKGUA7RTmkWFgySYu9eCrm8+kkUeY5GgX+nA6iesW2zcShc7BCXMc+AZbB7M6E883oGlddKDoBJPyzXwYGoyXtw8v1zmkH/zUPcf9Isrbt5pAVe0fT7l2WLLmNW2je3NZQO9AUY4Hrs8PG4kfmIjlr2LyU/9ZzKMZR9c5IYgTWoBNzSP/XkWrG/qr3N/rUpxS8fhQ83RaAmsfXA3EJhmFCQwXDuA6QD6biiw41QI6BjheUWtfRFxkhhBNvojCLlT5UG+3/VvNbL6ztOVfsR9dsXpk6xC9kOJRA0mstr3cUMMOg5tz88V/2Dkq2td9vDwJMHGP+FKkTXM6+NaYjaMCoB51nKdBIyhmt6lLTIqAbr5ide6JPhqqhFVj6JOxhl6pvq4TiCh+opyF28hyh4WlFPnZb3KTipNDvQGMj53UFKeYOV98GczQJ8udgWRl5bPYTyL/W09ONRfz2HoTVYaNcNOVBKqCO9+rmBD+7NAAlMIdASkQ+iATNfF4pv6gKW4lg+S0= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB8703.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(346002)(136003)(376002)(366004)(396003)(39860400002)(52116002)(66476007)(4326008)(6506007)(86362001)(2616005)(38100700002)(6666004)(41300700001)(66556008)(8676002)(66946007)(2906002)(316002)(1076003)(44832011)(478600001)(8936002)(83380400001)(7416002)(6512007)(5660300002)(966005)(186003)(6486002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: VHQjTIoS8A2opovVxFiFqMV875j6dmByl00hxF2IyD1sNsXOVFzpndFOQv+nEoJhmzG7WCCGhz7jIxdGRiPR+cf9mEvcRjxEEddffL21BqFv0IufTYeC5wyIaogipZVCSNg7VhWL1UG/lWmGkW8rRyAMLgH0IIgHeh05jsOUJHptSSbd8yKq3kQGKMPbrFlQCSPmrMrEBtQkjkBqqLJLy9FvsKVf9jNS/zxjN2Pb+JgHILC3YPSPhDM3al7tMca0YYl2L3WvbHHtAPTbCaSsataKNqzMPfZCk/FOckEF+MMx58/xr6CPeHCeaN8esNdbOPxvVE1U474e/lhrqRnXRHQYE5OV+TkHL5NLDjuDcPXCF6uNhBLAJW2E+k3UVKbtkbH2tHcoSRfVgE/1nuGhz32Qj6+Fa3WajgAvCzhcKGGCzvShWVsVRHvZijvQXtlt4TZ/cLqUhtToMt3DJicCIUnAU31BNa0NXIIN+LSvdS1qW3MpQ78w/TwKsaI1UTUwBRLLiB3hTvToe1gamYcXvF20v3dIL6vDaGTVoFZeQNpRBLb6dg9HWcv7b/3F3yzdZQDOvIeJ0PwrLQMypCsY/9HgG12GHlBx4yrW8jwWTk8Sv094Ma4lnNh0S7PXltLn8CdsaUWdTJbw9SB9EaRJ8imDcpiKpk34al+BIwjuW+hMlMC7F0C1v2+xS/ogFC2RkRtv7ZW01Syow2sNSVruxrROoXgO6oacc7BiimvvVkSyO/yfjIsNY/0Znxm8AD2/q+dP82LowJxN83+VbpRkbz+80wRtsWSVqIiZY6xwrQ2ZX6xkbDnPW03Bs9CDgld+YtorgzEnDtLEkjKujEZwzl3ebZwCPkg+pcw8S6nkAemUiYdilcgJMTwxWH358iMc/70QxsSisrHCZ1JT3fd6lo9qyjo0Swz7vlj2prTKSWFc3XI8wb7uRJtRTE/hAPTajJ3t+TL2mB+ShdVEu3UClYv2x6fpdOG53548QmFzjt+sBy806vg5DODW08StBCKv0V/P8FG6D6MAEl8H7Tba2xg5LvWJkyNLYU8K0CZqlxZ4Xlq/fqy+UW+q7xNbCwJgLCVKG8R1r9fC/xWugXuEt95jDyzZrRGF3wBbkGKSWyUBtB0ySDvHNsA49U83yVPTMZQGLZJ2t5EMMD70Qy26OncPb8qeWnp3GGgzVlaC/kDeFDoTWCjkv5yNggYF134OWZiyeLETky3arCq0R57xo2MtfSOw/O+fr4ZgkShI2uQNERleLjV+ndIu6wNtsN/5OGTIXwjPjlnpcaQ8FVjwxqAnTDmyq0u5oKB6eHkYLhwNZGVRzBj/Sig2wm2h57vu+Ozz1Wsh2DeSXn3G9q7oO2ASny2cgXAk8eWqQzOZBCwO6UYF9oMPrOV5+Odn3a24p8AWvWkxYT0ZRGB/1BusZOQxuFS3hOw7R4xLvBpA0HCb9URTMO7m9xSxZzYhXwgdE9iMdvE5snSSgQHv5vcjB9nTz5qjNVHMgAVHO5yCNSQv7U5lwA9IUlNligLU4BJ9MCqEL0v/ScIYzU9RxKHLP2Lad9luAz//4IM42b0jEVMyvf6r0gZDZx4ibFDBflVwKC0gHibR8gwyRUM2ewHmcS6i+mdxkxlsbuGytZJBzuVuAhUzFfjqe9pepcT4FQdGEgH+eF/rXSbFgzXYh85uKTmXVv18e9d4GHOrPPclpUM8r1akiK8rLR0iexv7tTbvB8Ol7ZhFIFd6ldwpWR3wSdNXL5YPtnhREyhygDMl7OlA0fY3Eft9zQyDvtllA2TSyRagtv4Y X-MS-Exchange-AntiSpam-MessageData-1: 9aE+wApQtkIg86jTZgcRcm7bti+mhMhgWw4= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: cc8d3994-0c56-494b-9b86-08da5525378d X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8703.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2022 14:32:36.2086 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Yx81t//Y8aXWxujuRSwqRtmBjj4uQGmTHy6e+b7K48+7qVWUO+x1IEmGrFI1hEwWoGdSeUDKJ0o2jTy1wbpUuQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2288 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Add user documentation for the DW100 driver. while at it, replace spaces with tab on drivers list. Signed-off-by: Xavier Roumegue Reviewed-by: Laurent Pinchart --- .../userspace-api/media/drivers/dw100.rst | 69 +++++++++++++++++++ .../userspace-api/media/drivers/index.rst | 3 +- 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 Documentation/userspace-api/media/drivers/dw100.rst diff --git a/Documentation/userspace-api/media/drivers/dw100.rst b/Documentation/userspace-api/media/drivers/dw100.rst new file mode 100644 index 000000000000..1ca6fa55f539 --- /dev/null +++ b/Documentation/userspace-api/media/drivers/dw100.rst @@ -0,0 +1,69 @@ +.. SPDX-License-Identifier: GPL-2.0 + +DW100 dewarp driver +=================== + +The Vivante DW100 Dewarp Processor IP core found on i.MX8MP SoC applies a +programmable geometrical transformation on the input image to correct distortion +introduced by lenses. + +The transformation function is exposed by the hardware as a grid map with 16x16 +pixel macroblocks indexed using X, Y vertex coordinates. +:: + + Image width + <---------------------------------------> + + ^ .-------.-------.-------.-------.-------. + | | 16x16 | | | | | + I | | pixel | | | | | + m | | block | | | | | + a | .-------.-------.-------.-------.-------. + g | | | | | | | + e | | | | | | | + | | | | | | | + h | .-------.-------.-------.-------.-------. + e | | | | | | | + i | | | | | | | + g | | | | | | | + h | .-------.-------.-------.-------.-------. + t | | | | | | | + | | | | | | | + | | | | | | | + v '-------'-------'-------'-------'-------' + + Grid of Image Blocks for Dewarping Map + + +Each x, y coordinate register uses 16 bits to record the coordinate address in +an unsigned 12.4 fixed point format (UQ12.4). +:: + + .----------------------.--------..----------------------.--------. + | 31~20 | 19~16 || 15~4 | 3~0 | + | (integer) | (frac) || (integer) | (frac) | + '----------------------'--------''----------------------'--------' + <-------------------------------><-------------------------------> + Y coordinate X coordinate + + Remap Register Layout + +The dewarping map is set from applications using the +V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP control. The control contains +an array of u32 values storing (x, y) destination coordinates for each +vertex of the grid. The x coordinate is stored in the 16 LSBs and the y +coordinate in the 16 MSBs. + +The number of elements in the array must match the image size: + +.. code-block:: C + + elems = (DIV_ROUND_UP(width, 16) + 1) * (DIV_ROUND_UP(height, 16) + 1); + +If the control has not been set by the application, the driver uses an identity +map. + +More details on the DW100 hardware operations can be found in +*chapter 13.15 DeWarp* of IMX8MP_ reference manual. + +.. _IMX8MP: https://www.nxp.com/webapp/Download?colCode=IMX8MPRM diff --git a/Documentation/userspace-api/media/drivers/index.rst b/Documentation/userspace-api/media/drivers/index.rst index 12e3c512d718..0c720ca1a27d 100644 --- a/Documentation/userspace-api/media/drivers/index.rst +++ b/Documentation/userspace-api/media/drivers/index.rst @@ -33,7 +33,8 @@ For more details see the file COPYING in the source distribution of Linux. ccs cx2341x-uapi - hantro + dw100 + hantro imx-uapi max2175 meye-uapi From patchwork Thu Jun 23 14:31:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xavier Roumegue \(OSS\)" X-Patchwork-Id: 584334 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 37635C43334 for ; Thu, 23 Jun 2022 14:32:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231980AbiFWOcw (ORCPT ); Thu, 23 Jun 2022 10:32:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60090 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231993AbiFWOcq (ORCPT ); Thu, 23 Jun 2022 10:32:46 -0400 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60050.outbound.protection.outlook.com [40.107.6.50]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD52C45AC3; Thu, 23 Jun 2022 07:32:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LDJ1HYt71CD2xwO58e2mhl0kt1gPAkYClHciKg2ilM45OQDzJeJXwt7ih2v+Lps/BPm2bin60s83Aeu7JhFUt7NZHE1AUV3hpnegx6NjKS2q3wiDQrVpX4+vhArukZ1NvIZWtQoPuV7neofTGPRk3OjQr5czEctBknJz2ZTfivCiFCtQuatiK7dqhXv5kcOZsvaYBoNbH4CiT4pSpzYO70kXlt5fgjCoLj9rYBxYjLwqlpFqcg/bYswBfiT6XtPZsMGLTZCE1GbTvqr6lX95O47inNinzxfeb2yrRp3lk6zPELnML/pKuEBg7e/pM/Ho7jjJGK21RRvGgSe0KtvVnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=i8s/Cgb9sV9a+MqR7FU9scBugSxVonky71LBOV83KLs=; b=EOFzdNp6OaUkeGJ/ivQ655+yAa+TwetE7M7Gn8UPtofmfUvceYgkTUB6onDrjHktKm8SEt4fod95OpPSpFe9lAMkF53JbuWGol6Qs9c2eYkMP3ATXNmZiR6N/uupOJGarpCjtlrv/iweubcM1ht+ZCDZuZD+75h3SEdif1va7U6iYpab4I28ckA4QqMpIgtusmjYO8f+SPDac0JZTQnsehxTgf6tsh56VP+bvZoSwr+2UwL/6mb0gbjcEgH2L2N56sE38tmO0qD6Ccs2nxOuW+3i6P7Lt7ZntZgy3gzQAXBVLvkEySwDAlDUNDMYvAifVnw3Mq4eGaaqtgqeUqaUEg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=i8s/Cgb9sV9a+MqR7FU9scBugSxVonky71LBOV83KLs=; b=cqTkJCS0uw6hdPzsKbqX6nxx7vW+52Jn7jlJ7W3gCnRNuQZa8CgAtxZyjttYQh4mhOX/sBuoZOMS3iZH46AOSJCKMiVshqjCHWJYahqGAJ5vh9PAWuA7rdm8TFizY0NcFTT2Qq4xc5S3J0tdKrdwOV/MenDfGVpusqrQCMwbKjc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) by VI1PR0401MB2288.eurprd04.prod.outlook.com (2603:10a6:800:28::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.16; Thu, 23 Jun 2022 14:32:37 +0000 Received: from PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485]) by PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485%5]) with mapi id 15.20.5353.022; Thu, 23 Jun 2022 14:32:37 +0000 From: Xavier Roumegue To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, stanimir.varbanov@linaro.org, laurent.pinchart@ideasonboard.com, tomi.valkeinen@ideasonboard.com, robh+dt@kernel.org, nicolas@ndufresne.ca, alexander.stein@ew.tq-group.com Cc: Xavier Roumegue , linux-media@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v6 11/14] media: uapi: Add a control for DW100 driver Date: Thu, 23 Jun 2022 16:31:12 +0200 Message-Id: <20220623143115.3185297-12-xavier.roumegue@oss.nxp.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> References: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> X-ClientProxiedBy: PR2P264CA0026.FRAP264.PROD.OUTLOOK.COM (2603:10a6:101:1::14) To PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a7fdf33f-94af-4426-8ce5-08da55253828 X-MS-TrafficTypeDiagnostic: VI1PR0401MB2288:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mcd8KPVDOZBgFKBgZtkLNxxbOENuV2JCR3QSCGtSnOvcC0mzLh2S5MCnaeYYoHSyifsiS5bpClckB70wMRVik3ppFF9nYazrxS/PNbXiCRxmQbDDN0fmLTNppBSDl8M9AdHzQn1MNKygIPljn7AFWKMcWGFxCg1Ui+0f+QJY/tfRYGo/XWZA3emFWo1VY6Ui1xEFu7epb+TjbHexQ1YH2N4awJzLZX5pPLllU6NtwKzjRQ+7gPqx4VHi0Lty44W7N5t5A4sjUUlIbVnHxMm22NJj6oM4SGmMzYkVeoOw+bU7LIjf/44QPSaovobPMf5gQWRMN5WC9D4/cOJcz8uFuYVCfharBFItHM0k04Z/kf0UtRQxyz/Vh3nbaIZAjrSQ9szgif04UdkJrGODmY4XtVZ2mjcTa2Dsrvjy96WS5QnDKJiWKDygyZlYWDf71Znh//HnjXhiu/YQUx9cL9s6U4WCqwN0MlG8FhEE3KThValgk1zJac/CB47Im1luoYNj4q/KurNC4JO6+6kgg1GrM/go2oXUUAOgSD8ItDpVeCEr4EOCEFM4xLCCCWgLTDKu/DUEC3F6rlTJmLp7KJCcqkzCtiDDkHcswc7mKQ2+maiPb/f96kS3Dj1BO6eIRP5F7AY+46a9usZF2L9kFpqby+3hxunNrRjHRJ4P0h3JnaVrCHwKG6TmdfJhjCZuRVfIN+0bnsi9KqfSa3B7mpSbD13l3a8PC41UM8G0IdcqvdA= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB8703.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(346002)(136003)(376002)(366004)(396003)(39860400002)(52116002)(66476007)(4326008)(6506007)(86362001)(2616005)(38100700002)(6666004)(41300700001)(66556008)(8676002)(66946007)(2906002)(316002)(1076003)(44832011)(478600001)(8936002)(83380400001)(7416002)(6512007)(5660300002)(966005)(186003)(6486002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: u5kkgaXjFmOYing+L5BeGCHtZf2MDEz9ONHNmg546w7DHLtl801vTAoRscPy0rqlm1lD4BjdXK43yJBxgncOBwnbplhy/Wjb1HR6K9FwVcgzPpXT4plmMjLq6X1BrUX4QQ95gegRSChB7SmXYdJRrPotYEiRnsZWhMbV7KTK9CH51P72Sabqfj72GTbcfM34TMiDDxz52w3VZ3t+3c+aP/gqTJHVrigsWk+wn89AeYzgJ9uLdcj+YNSfpQl9f1bOYps7KWHroBc+1TKxC6lGYdCP1qTFjTCVYi3uyClTzgLsoCVwNo2K6gx5dMJy3eFvWVGpKtYTu9YEI1dRrIK4WMBnlz/IakAzm5D8ErUK/D7dWCBBO9Baqr+nLIKk6JQtqJy725YaRYFnWHCxYchIRAp0J7NC9WNLOBLKTeEaIU0h0yOS1dRrh/P2FN4h/QXeTJjCmKR79G+uXb4PKKW85g2F4p8fhyyEwMrOX7QY5IhDb0cUqMzSUDYzPmwZj6yMAdDmAmyOKWfSyxewtl7/lpufF8LKyyUh+bQjfQ2E1TVtQBrkd1voTtoiIdjdaOlF434Hu+NjbnR4p8jjLyLWIHvMt960yUFwdPr5mij+orA8o4+9XirbCarypt6eKg05xujYCudqfA1w1u6aYYWHVT/hhAWQP16491aR9RvBTQY6eo8f0PaE5aw7g/rjDs+nUbWWxvbK3sFABEk5Ev4m3yK/rQdf5qq/tsulIdg94RKVy0mr0bA228lDOvqbaJQPRgNWO2Z3GRS4CkB0HUAbXNjc6FbGQLhFMqtKFl4xAsN6B+e+b35HGvZH9eDYcWezytKXXvFtHNo7mKBIzsieHxa949pMS0QV0Njf6FAjG8kXj+RYcDkpp5zKbKV2joqO92EG1Tna4X1Mdn/BIbMmy+qHJVaywNNrl7CEd5jGFuuSsUmLICT7W+fLrU15uXE19B4cp+xbwg1x5lRQj9UyXmh8T+GJ6D4FFoJRvCM2PABN0JwochYfjgkBymx4LU8nPFi+LPbZBb7PPgT+aFJmCUpvJwGeSmpLcBkxBGThraXJ+5j/HIuqOkmMAb+OVpDDG5nkNF+AJALG92HKGjHpmcEDLR47G6yjiQ1G9zeK+5AJiTb+vaYHHKqgmZVK5acdYMgn0Bl/L3abbmZsUa3L8NLmPdyH+6KpWFXcyTzqY57Tp700mo+YCGRzmkKwwdO2HBbuyc6OWsfb4J3pVDVLrUVfPSU4jdBsxsTTyGXtON3/Osx2mTzonhHfWNy1DKORtAVnk3HTWJZcnHkIBc8V/NR3cCDABtjWfYZtkvRr+UJZpqOW+irtsXy6sCkNg+HxhtL5zzi4iSsiBki11h5Wa6cChU6jsVE1ZT7H3R1CU2u2xKZFe6qp2ny5Q6hAHBbtFWC7LaEMDthSWQjc/kLQy7pqCGtwI/oxDLJgdfqf7jnXXXNLupQj2dORQe+eFEUPE0+yL89a15mB744x69WxSJZ5XMXHmCL7RzACjFdVZzjkDKPnaWUITvptFirL72oDVZm8NhPQvtUpDi5Bar4iwn7up48JHTQfg2QvMcR+RfQrgBxr41KpR72csoky/GlDwmicnW2r5KqMH6GK5/brTjtqeYuLzim1eOPEUH3cZlxe7Fe1KlrEhHDfE5Lw1KBPDLOXJEdRf1Fo6dMJ0sU1p2BHyVUs2jBvJFR+Bs7Ei8ZLGmn5Twie+SZNFirF2fyu27Vt0//WgswDKu6niABkFmp0LYADOG6sDGOnPZKriU2IGyantgm+uJLv80BAIrYi9qNBgEwO X-MS-Exchange-AntiSpam-MessageData-1: 3/mfnlH7UbM1L9YmKsOuBhXQWwiQXwSdEOk= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a7fdf33f-94af-4426-8ce5-08da55253828 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8703.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2022 14:32:37.2709 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: wk6kN8AnS4KiwTU6/78n+NCLCBi+QuHI3qEAL7fuXZqiczjRMVLIzc/FLdOrFr2ZRJlJM3cRH3yyZZ1st9IaDg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2288 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org The DW100 driver gets the dewarping mapping as a binary blob from the userspace application through a custom control. The blob format is hardware specific so create a dedicated control for this purpose. Signed-off-by: Xavier Roumegue Reviewed-by: Laurent Pinchart --- .../userspace-api/media/drivers/dw100.rst | 13 +++++++++++++ include/uapi/linux/dw100.h | 14 ++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 include/uapi/linux/dw100.h diff --git a/Documentation/userspace-api/media/drivers/dw100.rst b/Documentation/userspace-api/media/drivers/dw100.rst index 1ca6fa55f539..d8a6e10b4395 100644 --- a/Documentation/userspace-api/media/drivers/dw100.rst +++ b/Documentation/userspace-api/media/drivers/dw100.rst @@ -66,4 +66,17 @@ map. More details on the DW100 hardware operations can be found in *chapter 13.15 DeWarp* of IMX8MP_ reference manual. +The Vivante DW100 m2m driver implements the following driver-specific control: + +``V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP (__u32 array)`` + Specifies to DW100 driver its dewarping map (aka LUT) blob as described in + *chapter 13.15.2.3 Dewarping Remap* of IMX8MP_ reference manual as an U32 + dynamic array. The image is divided into many small 16x16 blocks. If the + width/height of the image is not divisible by 16, the size of the + rightmost/bottommost block is the remainder. The dewarping map only saves + the vertex coordinates of the block. The dewarping grid map is comprised of + vertex coordinates for x and y. Each x, y coordinate register uses 16 bits + (UQ12.4) to record the coordinate address, with the Y coordinate in the + upper bits and X in the lower bits. + .. _IMX8MP: https://www.nxp.com/webapp/Download?colCode=IMX8MPRM diff --git a/include/uapi/linux/dw100.h b/include/uapi/linux/dw100.h new file mode 100644 index 000000000000..3356496edd6b --- /dev/null +++ b/include/uapi/linux/dw100.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ +/* Copyright 2022 NXP */ + +#ifndef __UAPI_DW100_H__ +#define __UAPI_DW100_H__ + +#include + +/* + * Check Documentation/userspace-api/media/drivers/dw100.rst for control details. + */ +#define V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP (V4L2_CID_USER_DW100_BASE + 1) + +#endif From patchwork Thu Jun 23 14:31:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xavier Roumegue \(OSS\)" X-Patchwork-Id: 584333 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4FEACC43334 for ; Thu, 23 Jun 2022 14:32:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231951AbiFWOc4 (ORCPT ); Thu, 23 Jun 2022 10:32:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60106 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232001AbiFWOcr (ORCPT ); Thu, 23 Jun 2022 10:32:47 -0400 Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60050.outbound.protection.outlook.com [40.107.6.50]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2CCA245ACB; Thu, 23 Jun 2022 07:32:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fKJ/ul6Hgx/VhMVDoMPwvzVJIhRh2rQeaFjOMX1o9sEjKCKhSVtBYhogeRfzNPjOKahOGybFhW/zIqxa3sd9F9bU7xRzYGafF/9XwrEfzST7g8JNEwqs3Fh4iPTfgobhX31UTE0Z44SgbQfrtbVLvdRMO4/8NlwyJB9qEB0wrYfg3kWQfudGr4vQ/6B8MrukEUcJO1O9iD1oATTKEyaEma6kh55uvsb5G+PsVImAvgRdTjssnlj2rwiCeIel2eYN6VReq7SmWKZkvdvgQCwKTBQztMqhl5RN1679uuOOz+PwN32cR4HsbQJ9sgglTy/oaoQu80HwBx3hRwr41ifaGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=NMZQNTG578mhTgxEphxMoQrirehhrdo2Ls4aTEttkIk=; b=N3sxZW6Seqy9qiBc/jgs3K+bZlG8qW78vISsGAiGKnKmZC/+THZMBlPeYycVOQJhhA2KIgiv8JdjyGQLHk2oW5PU0cT/oAjIun1l2u9jfv+vWRxFnXOPxSiWXVfhOhGWSY4X3MduJ1NyWDj336l0Mg0AOKsCcIdpbDpNLF4sl9y69r5xFget6Fltp62AVBoNfv4BUT23uN7cbRMWRtxvgz0YxFRI1AaS1lLsv+55qfbEmugoF2RZocpOljMpsCWcA2b5xqbB7600JY1L9GutxpP3Uw03WCBHLtoFcLHdJ20acjw5RrXu+K+uUKKaiALI18CiHtMzOOMB4PVX1sJy8g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NMZQNTG578mhTgxEphxMoQrirehhrdo2Ls4aTEttkIk=; b=B/qZg/PI2ICKMOovf77Qrz0F8na4rL+q8MCP3x1cuQVwRHUA7FhX14irp5ItgRzCtsWRXdRejQHmeqSJ8RxNFktwKwCbpL6zC/diZ+dYGd53xYmGag+G3ApXhl1BwiNo1bUjGaIs6/mquie7F5oj/fv6fnSPfBuLHcFNX7qU55U= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) by VI1PR0401MB2288.eurprd04.prod.outlook.com (2603:10a6:800:28::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.16; Thu, 23 Jun 2022 14:32:37 +0000 Received: from PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485]) by PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485%5]) with mapi id 15.20.5353.022; Thu, 23 Jun 2022 14:32:37 +0000 From: Xavier Roumegue To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, stanimir.varbanov@linaro.org, laurent.pinchart@ideasonboard.com, tomi.valkeinen@ideasonboard.com, robh+dt@kernel.org, nicolas@ndufresne.ca, alexander.stein@ew.tq-group.com Cc: Xavier Roumegue , linux-media@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v6 12/14] media: dt-bindings: media: Add i.MX8MP DW100 binding Date: Thu, 23 Jun 2022 16:31:13 +0200 Message-Id: <20220623143115.3185297-13-xavier.roumegue@oss.nxp.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> References: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> X-ClientProxiedBy: PR2P264CA0026.FRAP264.PROD.OUTLOOK.COM (2603:10a6:101:1::14) To PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9c1c786b-1256-437e-91ca-08da5525387e X-MS-TrafficTypeDiagnostic: VI1PR0401MB2288:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: doJIM7q7L2SQcV/FnmWPiY5NJKk3oT3jTxpPIOAs2zEqEeTi6lsWpd4K3iB7DpokDe6vkUWO8/f5WQpjccFxDp0HRhJVRluxHq83wpIdAKq7MN9bw4JRitDLF/DzbVwQk4H3ksWwd6hEWIdUUp2GXfgYGFGQ6KLX/+wTfI7CnowoCg2vXW8vJyP9KeWbW6FdJsQpG3V3d3emyfqjjJWj5bxUOOzW0JONGKqE6e29uvX5FVMvisxp3wfjia+TfCt94QU3AcY8vE1aQqVD56zNvWQOY5ltHIH+zduh5on60ZR5MKTGFlHFy1WJNlifTt9oO2b4HdMqp1D/Q+UkXURHZYKe4C1CkgXc461auITJDjX7SzqTf9bvgVj9decGhf8Vt/I+0F4hYW1krjum4/lZFz3g7TXXrYXNG53rSdW4qech6BS39JeawlRi90NKVXaIHMLzH2MAEs8qrofjVXasVCikbe0PQw5XatfG+1EESmXIDL/HF9j1BUFmYNo/iM6pUamn5bV6uGu7CM6GjWoQUFGYUcFfQS+Fx5T40+yhwCa1aJ5AVCtIQFCjgKfFBX1vPvH5U5LP+0lTXkV9EYuarybdqSiO53Q8bvgHvTQcOIfe8FN82d4kWH1TMdBeRiWjGlmkJAbanXgB9SWxIwaJP9ZP7hh7htjvsLN+G9mcrfoe5wgNQPmJoPk3FlgYNDUM3kyc/mJ/pu0csjnmd9R+etDEAPAGeM5CwMv0Nk8EoUatiU0mhfblw429NC2MvRKPrB9r7gcpoFniRF7x6yi6AA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB8703.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(346002)(136003)(376002)(366004)(396003)(39860400002)(52116002)(66476007)(4326008)(6506007)(86362001)(2616005)(38100700002)(6666004)(41300700001)(66556008)(8676002)(66946007)(2906002)(316002)(1076003)(44832011)(478600001)(8936002)(83380400001)(7416002)(6512007)(5660300002)(966005)(186003)(6486002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: jx2BuWHoOJ/1EQPt6gmnzTNgzzh9Xh23WBJuKig/h3wmBQAEeA9rdSCbTLkMy2FCUvz5cu6G2aXLGgIktGpk0McB09KA1tZQApC+Opg7+U9uSvFyHAD1GSdhSlVGLUqWTwjRvewE1CR4WFR3ZHGdLgcdhQELqWahHDcgYJZKbr+FzwyJx5H17W0/BIu8Nr3G9w2eo1jtzhy/doJCUE72nTvF8PegUjOzgIs2MZIwpi+aygd7AufinqohEd5bca2y4WPQN+iylo1JCWgORkar22fgIiYmib9Im7mudA1w4R9FFchw6j4b85whdj7Z1xO4Nbw8x2IN98ZbFmSj1Yxvrh5BFijzKySimYBAaIbON74nU2+ddiu2tOoddviH+AdzZfXNK8ZBg6MNZKxRofbrxeY6c1nBiFkJMq6jlELEWkEDD0mRlSEor0j0RDR9T8/CMxxqmxnKOi5eHsF6pHjQo78lycg2q7RD8AKzG/55oR3wJTSb5yM/dHBHv5BkZa8fUkw1xDxRMbGc6bVx5Te9uo9USpB7nDSA4bJmKxsGqixY7Cb0fUtyBpOrSmbRMlDut6BvEUmwF3ThWV8jqxPPhxmBfHA7OSMa3VOFJ5sIegLRf/QeNZzw90B7u5URWu305dgEnIm1VszxVqtaT6bO/iD9ELbzKeB5EVDJrYyQLUCLPcvs9k1Y7hngiGxWChvHAK+bmRiuASiTa1PRODW114P3Cuda7baLEcGosjiWSDruqplwOzx/qANm2NtxBefeEsqoupnT/XMuCi8JeUPx98UC3MHsHoExSEHCxMA71VwtcE6hiSgxUp6pSysf6emYeEr0viHfJ9DGjJ/0lpju3mUbh4LXaCkn+aNGpTV7mC/PRzVOk7Q8k8sYn5P1OPb+CGeBkNRLGs50x6YWcKye5aIjkyqqYwhU31G7QsiYdbj40/INHZmTDphSF5EhZgDriRLrNClukbgL0TvUT3lWH0kilVQ4zaiZiD8zTFY0kWqvjRQWjZ0kd32N0cq+qTFEARyN9jWctHZZxOHnEL/ZcPOdy98UebsbvlLuvUovU955r/5+KMvdhQ78klo1QhbB003U0BVvr2dzUfPWbIyRTMysM9DITLDDqe2Ekkrxf7BY2mKNqlMEjoeiJHUZXgeUP+Sp5lqpC67rnbX9373QRhkzXWSaM1SNHJ2z1PSkJ/XkGoFmvEd4F1tUK7qM8SNFsBawOZcTg7XgsdlTj71d6WpqOvZgK2AhP2zLI1duIgaM3pf7VHCRQ9sKPiCtk1+F45BWJYv7RNknpqgUSMMKa7Ekg4evy1hI+/I1vds4EVN2B1pI8OohMEIb/WVhqtODG3NillsGA8KTaxiKehKn76LxL0mzCnVqTJTUinx6kqPD0X6BbuFHSdn6zPHmLccKRaDLPbxPYH9+2oDtEp2l1Awm6cHuWXvoYmnFsGwxvFvxl59NxdvGp47jMa5Zx3H4bXDiHVexuqMZo6hu+rojnreTXawhSJ1A/RlG2UMvCQHyV9EB02oYnl4xmmbouFMP593kzqEooM1wXw+QirA1mMNL8wO2+C4Hw047YzyUM2T/Otec5kcm2S7CfRJraUn4vsiAzZtq+8V2AQ47JVvgfjX4x5aOnPlWOvRvcaaOXs56qc4NG9R+uh4/HY37fuglvrQTNCh1XAa/aXMc5/nfZp7fBhH42YXsl4DqDbyFly1gcc3HT8WVY7LfX4fjClgKE5rq0t6/5ajdeDS1Yx2AW6oz8/Gp8c7OGj8Dicb0qGph4PhG49ivAGrPJ8GTyluD9MNHzFHO X-MS-Exchange-AntiSpam-MessageData-1: JML+MtGrl13FD0Z+9IMAxABK0Vfd3XOjSX4= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c1c786b-1256-437e-91ca-08da5525387e X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8703.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2022 14:32:37.7409 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: AwDmtFfA2fH/dzdI5LnQNDohoeFcSDoafmpI7cg2Y/eGSLqtT0rBGnmJ4OGpZD8HN5rpVtM1Xv283R75snw4wQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2288 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Add DT binding documentation for the Vivante DW100 dewarper engine found on NXP i.MX8MP SoC Signed-off-by: Xavier Roumegue Reviewed-by: Laurent Pinchart Reviewed-by: Rob Herring --- .../devicetree/bindings/media/nxp,dw100.yaml | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Documentation/devicetree/bindings/media/nxp,dw100.yaml diff --git a/Documentation/devicetree/bindings/media/nxp,dw100.yaml b/Documentation/devicetree/bindings/media/nxp,dw100.yaml new file mode 100644 index 000000000000..21910ff0e1c3 --- /dev/null +++ b/Documentation/devicetree/bindings/media/nxp,dw100.yaml @@ -0,0 +1,69 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/nxp,dw100.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: NXP i.MX8MP DW100 Dewarper core + +maintainers: + - Xavier Roumegue + +description: |- + The Dewarp Engine provides high-performance dewarp processing for the + correction of the distortion that is introduced in images produced by fisheye + and wide angle lenses. It is implemented with a line/tile-cache based + architecture. With configurable address mapping look up tables and per tile + processing, it successfully generates a corrected output image. + The engine can be used to perform scaling, cropping and pixel format + conversion. + +properties: + compatible: + enum: + - nxp,imx8mp-dw100 + + reg: + maxItems: 1 + + interrupts: + maxItems: 1 + + clocks: + items: + - description: The AXI clock + - description: The AHB clock + + clock-names: + items: + - const: axi + - const: ahb + + power-domains: + maxItems: 1 + +required: + - compatible + - reg + - interrupts + - clocks + - clock-names + - power-domains + +additionalProperties: false + +examples: + - | + #include + #include + #include + + dewarp: dwe@32e30000 { + compatible = "nxp,imx8mp-dw100"; + reg = <0x32e30000 0x10000>; + interrupts = ; + clocks = <&clk IMX8MP_CLK_MEDIA_AXI_ROOT>, + <&clk IMX8MP_CLK_MEDIA_APB_ROOT>; + clock-names = "axi", "ahb"; + power-domains = <&media_blk_ctrl IMX8MP_MEDIABLK_PD_DWE>; + }; From patchwork Thu Jun 23 14:31:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Xavier Roumegue \(OSS\)" X-Patchwork-Id: 584336 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EAAE9CCA47C for ; Thu, 23 Jun 2022 14:32:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231968AbiFWOcn (ORCPT ); Thu, 23 Jun 2022 10:32:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60018 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231960AbiFWOcm (ORCPT ); Thu, 23 Jun 2022 10:32:42 -0400 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2071.outbound.protection.outlook.com [40.107.20.71]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87A8A457A8; Thu, 23 Jun 2022 07:32:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FNTdd4rC1auTXGXiLYtjhqBieHFRiA9G3Yo5wrWfPwcxNCNfm6kNGGsKMg3683vx7pkyDzDHhmjsnn2wNSwWuaWhb3UgfpZFwjyo6m+Q3bNyELiFUqDczy4ZV5Z5pQnwRCCMpCghW+MykKimaxWWCYBziO3067J8ZLS7lgMlbHZJglztbtNoxuqQ913fpmzihRQUghzHZgw4PijgcMxRZAFfmngwCi/w/endHb6ZltetfqAQXkRYbvd1bWwZ8AiNOjJbF8syqxVTHNR8fd509jiNFsrfgqj0fsFj8aWR7O/Irje69qJBhNdR+sC34XrmoI+HsIYh055cpaoU9sb5uQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Ovrcl+8ua66la0c/B04Ms+KmUl+7NtWMDBTceDurdr4=; b=el8zfdjotJFmJhBVSs2AkkiqlJ075J/HgbJyzI1PoPeJ9Nuhtm5FL0tthhhbUBBIx50aL4CBFn+2mC2L0XytA3QX29gzeiPdZC7qodTE2Vyqy7uAKwnSgysbCppwR11zUrXlhUZfKfaB34tskP97KPYd44C3kBRlLVBKMlpD0dkzTshQyGFTx8oh5K06kn1JHC7y2Aeef5KiB7T5pXEu1UXeHMAFftKAjoqLnHHsL/W0OWH6+yrMM6M4y6nO4l8Z5CvVqvUHOzGNeKQDdnRr2suG9t9W1bl/8p2qdOwjuCWTjYTflpnniZkqMVXRFRcUOryIeK6BxIgkC7iBUHac3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ovrcl+8ua66la0c/B04Ms+KmUl+7NtWMDBTceDurdr4=; b=C0/6w0cInUc91Jyrps4xh6u7XS/p8amsREVjiW2KGUDXvsa1iuaoSJwW01yuc90HwDuqr8NXEMhdloHL0gbiYL4Qadybk2mCzRw/dEf6bj8NDPiWky6RV7nKvoF9Ub9fTjMhJWtUJeGYVxPQdKocp4yYkim/DYHJ2SZGGzvmayQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) by DB8PR04MB6505.eurprd04.prod.outlook.com (2603:10a6:10:10d::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.22; Thu, 23 Jun 2022 14:32:39 +0000 Received: from PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485]) by PAXPR04MB8703.eurprd04.prod.outlook.com ([fe80::9127:3fe0:f694:9485%5]) with mapi id 15.20.5353.022; Thu, 23 Jun 2022 14:32:39 +0000 From: Xavier Roumegue To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, stanimir.varbanov@linaro.org, laurent.pinchart@ideasonboard.com, tomi.valkeinen@ideasonboard.com, robh+dt@kernel.org, nicolas@ndufresne.ca, alexander.stein@ew.tq-group.com Cc: Xavier Roumegue , linux-media@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v6 14/14] media: MAINTAINERS: add entry for i.MX8MP DW100 v4l2 mem2mem driver Date: Thu, 23 Jun 2022 16:31:15 +0200 Message-Id: <20220623143115.3185297-15-xavier.roumegue@oss.nxp.com> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> References: <20220623143115.3185297-1-xavier.roumegue@oss.nxp.com> X-ClientProxiedBy: PR2P264CA0026.FRAP264.PROD.OUTLOOK.COM (2603:10a6:101:1::14) To PAXPR04MB8703.eurprd04.prod.outlook.com (2603:10a6:102:21e::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a74882ea-75c9-44f1-32d5-08da5525392a X-MS-TrafficTypeDiagnostic: DB8PR04MB6505:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sXFAqNYI8Jmjjqa7E+JOOTW9xHcA41qboVHd81JN01/Ebu6KcZ82P9oIqwn34lQ8bGtBa6SVVy3t9yo5VVsUnNqxgWg/AmF/mHIeukAorsXwPNdUXc+eRD40PnBWCDviNxrdUUUy6v53KdjqtzJv28kVyUMFetoc59HigXF97Z/edCBcmpJRm3OA3oLGYDJvIwLH1Zg3f+wAJKJU3EtAomR0tD/4g5dwejAJd38YC1rUajuSk++/RgGl7ptdd6iNE9fKFDE3o2MUaL+x2xOH/mvj3J0dl7j2/yKit18Jjc0FLCGppTaSuURiDE0a/8MEvMOv1d5tWXP0V7YQdZz6ru8XOH7qdLctVhbSQYxsP57ZGerapCKRj6VKzS17sQTblox6cv88mHUTeZ/Lye7y7N9bwAgMHlgx8aVsZzYA8Kod/qJWDDGM8G2f1btmJ/eNEZAojwYIKN1Tr8k+Hsb+b17ZoAXyb2gFnhszHr1nKE5OkIXt/lCV3w5Fscn5iZ8mk7heZUHDxyU7bldVfbHBP1T4Gei8ieL40V79lzLYg/WpPJz8x2sXOmVrUq/CkV6X86erc2N+EsCsf6qEBaft9AlGqhO8FKRndCRff2lv1LkTof1JzNHYCkfnnwNKFdNrsnT//6+R1sTvnWG3QYDqoFiEPhCoZkattwA7Wq9bn1vBq4gwmr+4PDeYckW7Xa2MJpmtZWhpNj91/Ur57nhffA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAXPR04MB8703.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(39860400002)(136003)(376002)(366004)(396003)(346002)(2906002)(38100700002)(6666004)(66946007)(86362001)(1076003)(66556008)(44832011)(8676002)(66476007)(6486002)(316002)(4326008)(478600001)(6512007)(5660300002)(7416002)(186003)(2616005)(52116002)(6506007)(8936002)(41300700001)(4744005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: eAHUGoxGimwnqTDzyVyxryC6r5YBsK/ZdLlhQ6SBwz+MpQSPGvH0riWtaLRynKANLC5wnPkYrhF8pdoBS5ykTd3dIRsHFotcbIZYCt13HxV7lub5Cfe9RXr+WORKFQx4DeH8qWK6FxX4PAVYwvqMRMbiPclSJ2IITnhz770HzH409jHtH8zhQXGc8F9mamL4fFJGZBwCF1KOgav+H7itzrZpD0p3O73EFVNDtq+GD9w6A0NpA3Ge93AkJrvlDiIevBGXZepm5gpZimO3fuUWwOOee7dg9g8UnN6C/lsOTzTillzXKzqAAe0hlm0yRB+4iD+MCOazEmHMdPUJ4MkzVviXN1tozQ4uYvq8+Hzf+qGPuMN8CLzLhznZTFtiFGFUh8BzkvZfazxumDL/GoVwZ2SFbp2S6lNn8IbmKm08pYjE539R1ocbEbi3uSejCaPIMbFiyFGAWE/jt6JTnJOiVexahGNfYIaBTPC/otmQThRDmILiKXia6PWBSTNVIo/RWY9ZPO56+Cicvqbj53e+wsdeWO8d8IaJ8fqUv/J6D463ExmkIrREwxLtRcm8P2oafv1RfVJCNQ1k5Tz5+UQrW1+CNwVzW/95ZL64yarapgCYuE2/XNYmjClZhmizaxCnUSI9Pog8zgZHUAMJRGJHKeYntddleZZNnnQ7RYIII7byYPu467R5BTmF/cyOZ4Hoyqf+4x3vtsIvv4nW+4mUER3Iq/tn0aJtNGHWgO6yO/ylekHQZrJ0Oj8Ld0WN56Kj3rVUKpI3fFTRC5N2NWQjYxMqE9W1vTrAH8oPHBRJvqpm5NaEQg/y5Xvz3lWFSNMNvcWoDrnWQr0ahkfdjbxiCpVN+VSH/Te0jACqUresPHDWJDhRd0/jACg07mKr5JuoG8LyQKZTLuT1QAGXVueBaHDwRc62dRkb5FlZjnR4VuNSH4ht/BdXQXpm1Ma0f/u7sOS17nB2BAXst0eqxJ43/lBuTqNSvIDMB3K8lPLLgQ8h+fgbR/Lypomgsh4cz1lJMp8m2ZqtnNB3Vh/qJjxBLIm0FdyPvnDiP1Rm4LNtUKkq6Qao3M1VXSwEhmde0X+6uH0MsQEYfwmeM/W2zz9bUH5WcQ8rTJsrVlOrTf5GCGtjN5j+fCB/cXlLsMX2ULBQs7imdvS6HyCG99lWi7vuMH2fy4sXwntfV4ylj+zXShoEawFih8oHI6Hs1dF0yavazN93Gd+hFoGasft63PrepBs/QvNuvMaBidtQejmGb+QPEXhMicQaUHjSRLNzsqNJfGSNHy+YVMeQEA4UZmAi/40qQmbjuwZCULP8Wu9RE/oXzM/xPXt0StCFB5yhFvoGmoaNWNrNv7Fi2618L5ocCKIXJMvYcTGgO32IlwGXs5tJ7Oz/0tRBmVp1FGDcoIj2HounuuxdkRfU8pPx9q+MixJ2IyRIlttVMgSfV/7KBQ4NdbKFC/O6hHCJR1O8SQkDnjMCxactqKr9ZWbIE7sYmlFgrfkoNQGMZwML5lIYvqVhvWpKVdlc+yih4+IyMd7UZI9L3hnqa2ThKw4dEyigo80TWamS8sd+sd0WGINuKWAx71cP4qDNijolP13TfbXKstDyO7j+eytodCS/OxdUjiuD4n3ci8YJBKhPH5OZcpw7cYOphr3kRXh7yfxa855/EFBmQqI80sb94wlcnK8Th0cgQmT5LKVreC1AH5bY51VP4q+V0g7d6opJmTGIGDHrp4tswhozOesP/ontnJz987TTevxCCSAWGu/xoOey2gfMEmMWgF8GCyMELmnTQEkFxWWaA0Qw X-MS-Exchange-AntiSpam-MessageData-1: Bcj7+QfE3/TFPMnOjVmsQkIF6ZdIY/4twsI= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a74882ea-75c9-44f1-32d5-08da5525392a X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8703.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jun 2022 14:32:38.8501 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: JsfO5WX1B+OFWJwa3o6ghoKdEPXofo2wYiPPIePUi75pHDYw8EwVAo9lGNIyM801oMzZaFj7fOz2roG/HNdhbA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6505 Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org Add myself as maintainer of the dw100 driver which offers hardware accelerated dewarping operations through a v4l2 mem2mem interface. Signed-off-by: Xavier Roumegue Reviewed-by: Laurent Pinchart --- MAINTAINERS | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 1fc9ead83d2a..a2e1174bc0be 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14355,6 +14355,15 @@ S: Supported F: Documentation/devicetree/bindings/net/nfc/nxp,nci.yaml F: drivers/nfc/nxp-nci +NXP i.MX 8MP DW100 V4L2 DRIVER +M: Xavier Roumegue +L: linux-media@vger.kernel.org +S: Maintained +F: Documentation/devicetree/bindings/media/nxp,dw100.yaml +F: Documentation/userspace-api/media/drivers/dw100.rst +F: drivers/media/platform/nxp/dw100/ +F: include/uapi/linux/dw100.h + NXP i.MX 8QXP/8QM JPEG V4L2 DRIVER M: Mirela Rabulea R: NXP Linux Team