From patchwork Fri Mar 28 06:30:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ming Qian(OSS)" X-Patchwork-Id: 14031699 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E1D7AC28B20 for ; Fri, 28 Mar 2025 06:35:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-ID:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ojkWQJ5X3HPMUyMZDEEsnr+YzJ6HkUcFlGDrNN7QZq4=; b=RaHYdT2ztfZxHAQXr+LCiqjo+c V3HVT6yUO6tNaijw0hQ9wG1oNfFxdxCGqAcWv8xIXUEU9F6KFuFdKqBRoyifZgkLvb8oWD7ZQtRGX 4swoqJ5NI5OzUzibf9/2yrnt3jg7D9T2rcPDkwSqcnRHCN1d58PK17SlKd4k191t/OVrh43Rbw4uN ZQV2VLSPOIeKOzI9Y064h6TyN4GfWX0t3s7Mmi7vo1Go/YOS/b0CYsJZK0RGtaTMPIbvZpzLcCdGW Yc6bMhXj7ArgmBeizKaamw6AviyOK+/LbY2/BK9AGkR3mO+yQ8KMBjr1EqkHojbrcfyo4aJae/Wgs 70ALfVsg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty3JX-0000000CjiG-3OsZ; Fri, 28 Mar 2025 06:35:35 +0000 Received: from mail-db5eur02on20607.outbound.protection.outlook.com ([2a01:111:f403:2608::607] helo=EUR02-DB5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty3G7-0000000CjGg-3a19 for linux-arm-kernel@lists.infradead.org; Fri, 28 Mar 2025 06:32:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Z9db3teUr+0U2WsjXxfACdIqD3Y5oD9c0bd0Kv+y5XGsMozEv1pnRtnFRKBZMCIFN+F4ADWsxjZ+X/lrV4onw5dR8c1FQoWnX2B1WwLvOsNXwHhS3GgQyB8PCU0KQHs3oIq2p/B0gkQBkiAf1Z/o43ZzwKBBTKStNJvGrhG9078RYxS1wj4G7Y3m7JZtIrV/JjUxOrHJq1dox36/FQTLN+L8O/AdgtS7RlqYrGCuMp/CgT2QSP2tDq0zYOJlE0koJNoo4erLfUUKQwodiP/WgYlgG8VB3u/ZEi7PZLwIVALekrjl/CA/Kuf39nH03m8ai+rClbuc2BigbTR+J1qDRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=ojkWQJ5X3HPMUyMZDEEsnr+YzJ6HkUcFlGDrNN7QZq4=; b=BEohbrReTEXsqtgRBGsiOD/pVIuNSGcJu0aJitMPs5l6EMhw2gspWbSPKVOkk+UmhMRwuFxGXlzOgdHsrcJKY+oXb1xVzc7YZmumdYmcKpIZjVULZvOPiaWehR9CVOn+WhiRtYezs6p7CqQf6w5NMkd6l1eJ25NGntM45fahGpYMDjf8phErUT/o6A/jHAxEgkvXdbG5Kr788z9A25PqvieMOLaGY6CmAOhrZnJ419g521qwTjLSTm+UFp22QdHXRi+x2hpiPHhY9S1nUzA+SA+Q3+khy2Ufg6ODqfXzEH+p0Ts2wihtyAhR3svr8l/gFpXn6gIEDgJ//jRke20gJQ== 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=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ojkWQJ5X3HPMUyMZDEEsnr+YzJ6HkUcFlGDrNN7QZq4=; b=juB5P9ctW/DgGodKek2cqmkMbvb/QAftEUia9SHRq46KN/rB0lPvVmrI9BxYrZjYluOdG/O1oGf4YA86L0Olusfz/Bo816sQcxOQasUdRVkR5nBa/JfXuJD0HDYEotXTfJRrxWO+1Tpy9nV0ksOpm/GYpoA9dC//2PTKFEZ4/RN1yf0x2dHkjpdBcj4rdfRzIkCknIIMN4jXuFjs2DXjvqKvHhNjhFE0k7keb5kENWIk1IT6Qx7RJmbrpoJzFIox1TfoU1ngCPJQZHHLRxcABFve93fT4hkRJigZu9pLxmbKIStAe/cr9ORw5WicRyXmQz9j9ffTKBpfnGulrxE6Xg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8254.eurprd04.prod.outlook.com (2603:10a6:102:1cd::24) by GV1PR04MB9117.eurprd04.prod.outlook.com (2603:10a6:150:24::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.48; Fri, 28 Mar 2025 06:31:57 +0000 Received: from PAXPR04MB8254.eurprd04.prod.outlook.com ([fe80::2755:55ac:5d6f:4f87]) by PAXPR04MB8254.eurprd04.prod.outlook.com ([fe80::2755:55ac:5d6f:4f87%4]) with mapi id 15.20.8534.043; Fri, 28 Mar 2025 06:31:57 +0000 From: ming.qian@oss.nxp.com To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, mirela.rabulea@oss.nxp.com Cc: shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, xiahong.bao@nxp.com, eagle.zhou@nxp.com, linux-imx@nxp.com, imx@lists.linux.dev, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 1/3] media: imx-jpeg: Enhance error handling in buffer allocation Date: Fri, 28 Mar 2025 14:30:50 +0800 Message-ID: <20250328063056.762-2-ming.qian@oss.nxp.com> X-Mailer: git-send-email 2.48.1.windows.1 In-Reply-To: <20250328063056.762-1-ming.qian@oss.nxp.com> References: <20250328063056.762-1-ming.qian@oss.nxp.com> X-ClientProxiedBy: SI2PR01CA0051.apcprd01.prod.exchangelabs.com (2603:1096:4:193::6) To PAXPR04MB8254.eurprd04.prod.outlook.com (2603:10a6:102:1cd::24) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8254:EE_|GV1PR04MB9117:EE_ X-MS-Office365-Filtering-Correlation-Id: 05780784-5520-47b9-87d7-08dd6dc23d37 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: uBCi2TZO4Wm9eUP3Vx5kePaHX+0C5BzJcM9QOguUC6p7iqHzk4QWrFDWwtI5QbKyq4T7Y4FEgb5kZ5HQi8d8nSkEtruNOM4tqoYUD3JvlVqMhkNFltXMjWPpbqHLvBJBDsp/o6Os4ge3gXU/kNEmnBljx4kCtXmFS07nQZtz6i8bVGtxRXScwmddbDlGxv6LKFzfRymHX8jNRkun74kymFC/Mb4IqmH8VXWsjoV+qWwsLgsVuDRI+yMVAsaImiLzG/BHLVClu93gup+WT1sB+bASOesUIcnBESSZtc/QAoZ3nPS3wVIMCKwmgYoGoUtGOqaxtXdeMsJPi5NoIJqtCZ8Dpo8lwEGSvS1dVy/VJB3oihlUaUI1fnb5yr6m1BlXRsXkru1nEd8Om//12aMyeq4jW7ct8pazvQgZywiTWyVJVeCVt68NCSWAuyuSD7I925YM9xQoK8Q8jlU5TiYmTvE8JnQpl13Agk2UvhjJKJHPj7QniJO1ejgo97OR5awJWBp4TK7GjiJjsiMsglHJl3OOWF5lUKnXJ0f6c0EXrsOVxwo8TmfhqGChQCvllgHHDlektHQQoXmIUSDxrKfl71jmAt2lk6AUgt2oxxrvYGfG40U+tkZZke65cmSnIUwusG5at+RclX5uJ0cyy/EzEmo4OBSkvcNuC6TN4qQD9fA5R6WkxKLepBfAebPQnk7plt6x+jpcnN6Ylqx2320b8n3HiLTyvRVfLnrHbjR3PncOO+XHAPqpJ7fZaJMbjw3pLr5RJaqLW+KT4Rg5049XP+LAPJ1Ooz1A9x6gn+Lq15LL5wYuqOnmlBSugIEDnIT1sgT0VrkJb9YVmFr9HCT4mJvV4VDjaz0XS49wTKLITWfsyU+b7dlifjj0xMPAW833vSJ0FchVslLHjDcSk+CXmzkuPX2EScMsfxWMefW3gQuFDK8bkRQ49WBhmCsGQqMjjUWX6hF61lomqY6aiPWoV2EyiS7Zm6QupHq5Ey0Buv12jPAYDdKfTUUXKgg0CwyHC31gA8qkreJ68S8bxveFZBmuiERxy4O/2v/4zFKvrG/YtQ5bST18pLdlfQeuN8idLelWDgP5EMf3zKXdHVQdmW8WTIDYDZOZgfOdIYazQ/oIz4bkd6QvyYdT9azUUuZ8yLzcy35NqSa7Aq0TarxcyqOVCWn9+ZPpa7ZGcp0Wi0QxSqeRI/OhLhzoXZuthd/mmzPQ+zvLB4E6HgoFqpOB5Z1kNNAaD25EW3pPev8w28T66T/uTA9ykCKov1aeYGScLC5bUAsiBDj1muhcSAnmLq94yi9Jzp9UH7OzXJI5WscUQ1pA1HOYK+85mlm4TH5SxkmaBmxLjdnf0FqenlgYeChG/xM9YZ8FPtjyuBwc3MHI0VW0gnR1tSCPcy0iLXebnMG46/Z1Jii7lfghBiUYbxcSdz9iwbExr1DhbG/bzcOZkv8ZTqt7Hm/V7kYmFyFi X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8254.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Z/H+AG4nS+muAESPsD4UrDwx8hGzay7fNr09qHK4q39XgUD8bHX5jaw3IYnhtEUNDKk5Xz2zrDKuYmQ0IzWd88EFFeCrCum1gncx+P0FoikX4AxFQL/eK+LBiRUt2LbrrA3jozCsLpj5O6BAg5g99UB6+5AEF9PCzABHZzI1uvlXR47whacGI/5dw4hwWhaMj31nUoLoOxgOcOl2iZ8wrh304L/emGVNS7FbZojaPCc9hDYnQxC9vx3Fxw9RccwCsXDNY43aUOSDrDLSf6hwDfIR10uSEOg+Q7fH2TJNlR6pqFUKt/11jSR3dWObPlfkR3rhU1A2viFhJ4YCW5hMJdC+h55vRftn5TOVfJ/eUwKPSA8HAaVbdHdHxZXBbwvljF/g3UFOl492x1uuhJY0tF24JQ5OHl6vNW0/Vzo3ilKyZ1NTSX6zq/arctr/rCChRApEOcFxUxVrAHGyPsV3lsxJH7Xh4LY7rZq939+T3itnDtC9WiggsK/ZV/5RapB4oLaDgd9IwouVHmwWw5jzeEWUFlNcU2IoCMDx+wrQQ8mgehzHJjzRGij3inP8HMaA/4AE7TzbFXD3lZrf2bhmP5anVTxYlkpgnWLaDmniEa9brKx1CFRmNAeAPJZ3fYN/XX4qiteK54jFtPbfOnHvkhfsD8B+hEao+TqwQyMnsNvUO7ddocOeqbXDhCuGfFBxdV5fw66JZu77V33fgSWWsIpCNxJU/oY2LPum9dKJih0iSIbArTQ4TveGzRvEnso5H12dcpoIyMSxhVAtcrYfO1+41ZdNSkx26jqLosbzaSIvF7tGDP6VmUUFK2mgM/RyW+z8dBskEhKb6LX07k6/gb879XHeS5x7FoCqgeaf27aLOaHkIIGNAbTChmsp0rZF6NwR8WfPgEe9c8knCPSiah4WKa3sFXiML8ik+8KKS/TBNOD8kVPipl1nnONdIy9ZicyOWhd2PDz4jxsiWKJcuINajgaaxS+AsmjBzK20PkbqToo5BU78AgFEJ+0nTumuWBJD4C5UGT0d/vqjZ2qendO1Fn0k1rU4R24vIxfvKAihCeaKOkqWcr4iejgYrJAd1Oi6H/it9svzJAmdgt8ZVGHT5owinW9FwlH9mLo1As6dhzbl/dtuabWfpcQTNhy/TwWqJ1jTlOaVxnw5YOVZL9lisujyz8IJAAQmlFJBiYWSAyrHPhZ2/tNtKNbTqagbCfQYGtPJ6yVEGxWURNG4MTfaoVRZCzcbEeLkqh7jek4U1WP2vO/H1PKCheag9K8g0O8RfPJEQaBGfIcApnMCBKkoBnatjyqLCGZMMzeAgvN9JtvVecIm8pMYlBKUlJ/T4u4eLOf3st9beDeGh0BE43NiOK6gEzAsNi8hAE4t228T50AhrIh16AGZYJO+7ZNAZNUoX1roMlfJFgicNq6z+NpgAxa4KK3Fd92Y4+W4SZMH8b4y+34pU5yRP5w8H4ncBxkhHPEsC8CjH/u5IWzfUFxL+Z6OXfmpb3nNgI9xxQHQWEqbaPq90Db+ZZIFtnz0TdOgGEo3DZjjbtesZHduHTOM+ft+32Dsl6VbOx0PnNzCESgMPvjhE4cssxBUupbE X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05780784-5520-47b9-87d7-08dd6dc23d37 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8254.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2025 06:31:57.8229 (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: QJv/1gY9DjQmGhZ0WzfC+zh9la6Ez8S62Eem20yM+dUc/Kc2YeE9oFyrurEBYujRgzGx3dqM3l/KzRGNGSVvQw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9117 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250327_233203_885768_5C31EEE2 X-CRM114-Status: GOOD ( 12.26 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ming Qian In function mxc_jpeg_alloc_slot_data, driver will allocate some dma buffer, but only return error if certain allocation failed. Without cleanup the allocation failure, the next time it will return success directly, but let some buffer be uninitialized. It may result in accessing a null pointer. Clean up if error occurs in the allocation. Fixes: 2db16c6ed72c ("media: imx-jpeg: Add V4L2 driver for i.MX8 JPEG Encoder/Decoder") Signed-off-by: Ming Qian Reviewed-by: Frank Li --- v2 - Add the Fixes tag .../media/platform/nxp/imx-jpeg/mxc-jpeg.c | 47 +++++++++++-------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c index 0e6ee997284b..12661c177f5a 100644 --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c @@ -752,6 +752,32 @@ static int mxc_get_free_slot(struct mxc_jpeg_slot_data *slot_data) return -1; } +static void mxc_jpeg_free_slot_data(struct mxc_jpeg_dev *jpeg) +{ + /* free descriptor for decoding/encoding phase */ + dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), + jpeg->slot_data.desc, + jpeg->slot_data.desc_handle); + jpeg->slot_data.desc = NULL; + jpeg->slot_data.desc_handle = 0; + + /* free descriptor for encoder configuration phase / decoder DHT */ + dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), + jpeg->slot_data.cfg_desc, + jpeg->slot_data.cfg_desc_handle); + jpeg->slot_data.cfg_desc_handle = 0; + jpeg->slot_data.cfg_desc = NULL; + + /* free configuration stream */ + dma_free_coherent(jpeg->dev, MXC_JPEG_MAX_CFG_STREAM, + jpeg->slot_data.cfg_stream_vaddr, + jpeg->slot_data.cfg_stream_handle); + jpeg->slot_data.cfg_stream_vaddr = NULL; + jpeg->slot_data.cfg_stream_handle = 0; + + jpeg->slot_data.used = false; +} + static bool mxc_jpeg_alloc_slot_data(struct mxc_jpeg_dev *jpeg) { struct mxc_jpeg_desc *desc; @@ -794,30 +820,11 @@ static bool mxc_jpeg_alloc_slot_data(struct mxc_jpeg_dev *jpeg) return true; err: dev_err(jpeg->dev, "Could not allocate descriptors for slot %d", jpeg->slot_data.slot); + mxc_jpeg_free_slot_data(jpeg); return false; } -static void mxc_jpeg_free_slot_data(struct mxc_jpeg_dev *jpeg) -{ - /* free descriptor for decoding/encoding phase */ - dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), - jpeg->slot_data.desc, - jpeg->slot_data.desc_handle); - - /* free descriptor for encoder configuration phase / decoder DHT */ - dma_free_coherent(jpeg->dev, sizeof(struct mxc_jpeg_desc), - jpeg->slot_data.cfg_desc, - jpeg->slot_data.cfg_desc_handle); - - /* free configuration stream */ - dma_free_coherent(jpeg->dev, MXC_JPEG_MAX_CFG_STREAM, - jpeg->slot_data.cfg_stream_vaddr, - jpeg->slot_data.cfg_stream_handle); - - jpeg->slot_data.used = false; -} - static void mxc_jpeg_check_and_set_last_buffer(struct mxc_jpeg_ctx *ctx, struct vb2_v4l2_buffer *src_buf, struct vb2_v4l2_buffer *dst_buf) From patchwork Fri Mar 28 06:30:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ming Qian(OSS)" X-Patchwork-Id: 14031700 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1FB52C36011 for ; Fri, 28 Mar 2025 06:37:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-ID:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=qPnvWE5QENGii6ZSjAFH+QbOTyDr/ND9h/7PKP+rXJw=; b=wktwBBX7LUUPSCMvPGZU5F6XrU wNFPoqyfSu4ghz5hq5ygXNjb0xoU/RBmQEWU0kYeSoHOd6NJH122DGYil9kR/JwHykncujNgqXtLW flmo2Err+ihybpW7/PSE8WpsclMZGeaDxZh/D6v/SKvju5vkCNG7Ih3OG+JJ35C2I4p84U0lNaMqk qoNUEB9mS6DiFqtMzLpBMUq99td/kVFlvOh8/KJEHQDqC40PbkG2nh+1Uf7IRvqEUbhrLE/8J2mC1 fkd60gGdEM3OfS8UGTNt1/ASGcNgLZPmSSpzs8wVR1hWWbzLGKZU1oxhbcFKy32cS3okOcfugWwbW 9ri1sJIQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty3LF-0000000CjvF-2Lim; Fri, 28 Mar 2025 06:37:21 +0000 Received: from mail-db5eur02on20607.outbound.protection.outlook.com ([2a01:111:f403:2608::607] helo=EUR02-DB5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty3G9-0000000CjGg-1A4C for linux-arm-kernel@lists.infradead.org; Fri, 28 Mar 2025 06:32:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qPAAzp+PNrHnWVDQlPdSeaFdwX1+5bCLQ8Kmnvy4DBJ7JNwtEcDQp+FUziejXdgX+y8aMAkpJ7PeOUZi/OrGqEzCkR90kFza1boXc6D5krnxA4cBxBIRN7gPmjj+x5y6mAyO7TX5dLhkXHDOmtFPmFgnEEkMWo6bN+HIsnDAsD/k+eB/r4cJWl7efEQlg6ueHGg+7Pk+e7/zokWjbFNmCefIJ0ZzVBzbjfkocsvPQfm9TYMfKWnMUuYbOJBsg1X6EduwaeWwZli5zQrQH3oaor85gf1FFraYSFnR80uqUuX8m53kXqyvoL4TuHDfGTjdseLu1kBp+a6lIwN0jw2hKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=qPnvWE5QENGii6ZSjAFH+QbOTyDr/ND9h/7PKP+rXJw=; b=qwQmCly+ZF7f4aTNDb/CeuVojo9ICGLvobM0E3GoNRNhtM2c7Kyu2xSw1WOkdaBvjpGcytnYm/TL+CYY3qNxE9MwGgqF639sk4tpwyGjFRXQ6sXqgFKW/dqx7sxGAP7aXOMCfwFsxhBbBjvmlRbD47VT142ZbWhYARGI2OPNHDbl2BMRulGYnvEPllXFsLYhTc4+UvGMmJMNqdUdTBcpDgM6v2d76qUFag4mlKFg8aKeA0b3QSWY4xkwIWMRqRGNZDNHlhH4CJyGxiWwNQ0s02zb4yOdC9Rt/iYcMwLYiH/e07n4auOBKZ0ZoifqhlLfRN2rDkPblVc3ZKWd34Bljw== 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=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qPnvWE5QENGii6ZSjAFH+QbOTyDr/ND9h/7PKP+rXJw=; b=aCsNsIBH8pL9wWTQPVbY64XH/KU8sKx2oeKbUEWuPqy/Dnu9C0CXOslyHgYTJjbd/fXLRxsof91ZzwaBuaurFv8oFRHsLJTUS2Hb5Cv5TYP0dSdd1ilC7/Kge2uMBpl5KHj/glJ+jdZgS+4RLQrQkswv3sLwuHMnphMLTdR36DK6aH3qjDxUVcQIaxdy4oeC9vGkgluesHi7EOjSKx/KauC62IBYFRMOyzCBVJZRiWDsZqK0osDrlJDhANO3BJESi8SU9TACDDLJPJjFmZ/D9zn6xnTzRmPqHHqGuxVXBo5CavI5S1clhj+P0UwbuilIBhNUAHJdiY5O1fasaF0czg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8254.eurprd04.prod.outlook.com (2603:10a6:102:1cd::24) by GV1PR04MB9117.eurprd04.prod.outlook.com (2603:10a6:150:24::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.48; Fri, 28 Mar 2025 06:32:03 +0000 Received: from PAXPR04MB8254.eurprd04.prod.outlook.com ([fe80::2755:55ac:5d6f:4f87]) by PAXPR04MB8254.eurprd04.prod.outlook.com ([fe80::2755:55ac:5d6f:4f87%4]) with mapi id 15.20.8534.043; Fri, 28 Mar 2025 06:32:03 +0000 From: ming.qian@oss.nxp.com To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, mirela.rabulea@oss.nxp.com Cc: shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, xiahong.bao@nxp.com, eagle.zhou@nxp.com, linux-imx@nxp.com, imx@lists.linux.dev, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 2/3] media: imx-jpeg: Change the pattern size to 128x64 Date: Fri, 28 Mar 2025 14:30:51 +0800 Message-ID: <20250328063056.762-3-ming.qian@oss.nxp.com> X-Mailer: git-send-email 2.48.1.windows.1 In-Reply-To: <20250328063056.762-1-ming.qian@oss.nxp.com> References: <20250328063056.762-1-ming.qian@oss.nxp.com> X-ClientProxiedBy: SI2PR01CA0051.apcprd01.prod.exchangelabs.com (2603:1096:4:193::6) To PAXPR04MB8254.eurprd04.prod.outlook.com (2603:10a6:102:1cd::24) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8254:EE_|GV1PR04MB9117:EE_ X-MS-Office365-Filtering-Correlation-Id: 496c90cc-1ba9-4371-b91b-08dd6dc2404e X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: qrBIdWTZRZE0UFRCygGI8pfHPmmEEnHRUKNxkp4tjdrwmwhgMJiojKDT+0/4EAMPB4EoKjiBeaJMQL2fmP7osjgPB9TgHNRi/S3FFEEDMaV9gg0FU2y06guUqzsVwPB6CBJxMxMOjsDga24sHTckxD+sfQeOg4aMjgzfKL/uc8uAfizXIw0XtSv4zlp/OCd9YDOqwZdI+nxpRX41Awa+6r6pP8DdOB9aP46jgE6gF7QLZ9E2ph0L9EnYpWl5hFomgo2tDkHv1uUEjRft3hMf350NKvkTEE7KmH24F2A+FDIYkzbHp4831lhKiYczyd4wLuXIEriQSWQaTIepuFbL6mb0BH9TPVSGj4LUF5aLMr7oROBpPpQaNsbr1EKi91ZQEJCFdARzT/FqnCPOZREPAFZheyQVvXoWbnOXGus+l6E7j7QRruKfXkeGl2gTXVJZNgpKLuhDDSS9DPBl7bvHdIEtlSKrd7gTaS+GKGoua7e2hfULdpmo8T2MT99tvf/Mdd7nFMsHrjtJhvPfOYYGs78CN9Lmivi7XHouP06xxj6whDyxA5inmJG2bv7HDimo1TNl4BOloqp8JryPefRAp3yu6p3zIaQRh9LDzzVLemuB+OCjHGDvhC4XaFhR2chokygGO30emY6YNLRdlmcWW1oRku+GU5IuGZnjFtXLkHIa6bQ6p3S7ptWnwdFAXdGyer6fFRSmY1TwbG2X4t7RQzS6GzJmcT3W86uweo2UbMRTfHK0UZnfSsyJUMTXoEexLI03sSCwdr/iVuK/osN0Ytns43qEry6uP4Q5wi8QGovuwGuZPP53ykaXr8yvQ5joA6eIfHpI3/9s2TvRtRi7DspHA+g9X0t5x5tNfQps1/6a8wVRIv4cY0yE1J8wIzD6iJdlexX3xStuYtjtA9RR7UxZo903xgaxYmUOWStdocnM+kCGRWvZtzPs6le/lnDEsRRsujHwtj4fqDfmUBkNi4jpKcJ5fXKSS++1DPIhTY9aAS70NnY8Qk8kymOtMa5WGdfZ8+W9sKsQwcwZgYcKM0J3RUZDN4w4Z9D4HKaZDUA/YnjsSs+GMHzdbMTrKSbr6WTamaKoWBz+s/RVivzeEq7RZ3QUr9W1fy9Lk9+PSvwNPwhwYHcv1/A5R15vGK4DpgpistGO5oRi+yP8LkxBQZy+JmCNlcZE33vWIoQB8lhucCKRW6us2UW95feEP9dyprVl7ItROQu7YvpOX9y34AyHm86yEoB3619K6wEyqMAQcTmlu4O/SLPxxarN91Kd+oFCjU/ZqiiE/DKQPOGI3qLBlGCCK6eK1y/stjemFrT6WvL5ovxWNhN+4vxGLGLm13ct0r8QhgRbjT9y4VJmx/NrZFTshXnwiVJntrYrTyTQ9UE2yJ1mi4s3Uw27uC6Cv1+bSqT98D5CWSzpvkqel3EI8oSc5EWdkMiPlbCsOT2tx97eVgMhNGt2JppHkNfw X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8254.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QXxdTLwZE8wovageYjpMh3AwDGrt/TCzWc3bqyre3eU620LdvVunbi8vsifdSjLVW+Y7Xq1Pi2ls4pi3DtFCBjRM7GtjfSbYzEGMEUCeC14f1EzV1ezjsRxySXphzQMvMdSBK/aWDEkjIDzgpJcTgaPfrmSRZU9FQwTY00W+YUVc8LJEhA5Uc+Fmf7ezwiGyVDQhcWQoZZz3+bJKYrTHXTHF2hxPF5jYYEwVqfXp86XtK/ZSs1+xPCk72kNjgBOAdfAtjkaKPJgScPc1vTKxH4uW0bEhrn9FGGzIUPsV34ISCi5FEvMHI6oGwv+OrXCTpgqJ9R5VmPBKRZchMadq81wSlOqgo0vlGAw+9hXPMXAR+ZAFUsu3d4kgNFHgYxsA2ptjzhngQB267mzfsAe8iUurgizji8reGyaa3XFtNGlq9WNnP2Hw0E4NVM/dKwzd/PGl6vwvDymIERkPHkZ9Utor1HhE2abFQJlK4bcMqSuY3BU8FShSCdyK8lRXpicOmBfBFN1fM4TMc2K7LzFnAoY3cW1iLksQpHzoCBS2CFBN5stuND0/WeNEmHKpItveFZPKH1bSsNeetBmx3bLv571wDcW8csz5wj2vmvVEQhAP7B+Cfl9EHfHmSteu/kSGoHaBjIedx4Qzrexs/33bwXYy8Ati15sb4F3HtOqmgtVQ9DDCTgAtMDtTwXrXEorGPqWQ32oCPBVaMUlHHhtJeUrgk799m6SgkwVIbW0a0VKxTF/iOFCmzZevuOYnhtg3f3BwzhxVBXjJa40tqNndOeOLcxwwsquMCvh0XCEljMJbcGH0fTY673HVG9dplaRH7jmHfY4cjBNaSfnNlGq4b/63nr4rv+PpRUodvRH/xDoIPee/mFpYuE55uWdB4kHk9QvipqDmaenOpSiAiduSnLlgFcRGO1y5zT9n67TL9pyJZyIr5pHUHH+c48n3owLJdr7tmzlLcRpncMbxWkMqmoxdIYf8AZE4JlP4dM3h9nxL2Bjw3OucQNfhyG3GBLHiKZx9sE/UGJQA5YdcdO6rpXMw06O+IcwKys2khaJ0CAj8CCYDWXy6v6k5EF3AFR+ibHVlSCu46G/ipMYoLwlb6EuMgYsSBFOAg6d3oF2L9/4os/VqDQ1717bKzWcpHG3D+U1A3aA3M3xsvtGAQShDTJTTp2LrTQAkk7LkP2LNiCCTMLivXSgLKyRZbl5vElcy+BN5DC3Fp8JmX6mYeX9tR4UZGBbUVHquCYx0brHTIuoDwxNU65XLYjSsNXFi8Yw8sNp2Y0AGt7qLtmNadIsynuay5iAmOjcMFAZSy0Ylr9ezrN2BX1IEsZ7B3FvUBdCcwgBJjy0M12ub3hd5sk1OL+M/PN7TJAG21YihqfzpGNtykIysG9aUUpG0WdqQi9YSaLyXHM4I5Skxhm2ptFEBxXAUBvuCTUy5LuRA+iHHernzeh3ZB8UeMbZU2HIv2gj+eERv+9bIrUDMWd684vUHdVE5IkdjkPwb6LaxRWQG6xzs0N2+nx/OCGPjsW9CDmAGTNtzlry2wKDmfqH0RM8Xm2ukvsUe9TFCyzfELzsaICRjbHv022jKgPLS0ZSZRxFy X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 496c90cc-1ba9-4371-b91b-08dd6dc2404e X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8254.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2025 06:32:03.0264 (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: QDkFY2Tq0cQnaGdH2V1Uui0LIbflJ+CvHvfGqP/IuIC42QHnnIDq9XKn6FKe5aPO50ifFVKjbD4KpKFlowGKuw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9117 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250327_233205_309916_FA86A58B X-CRM114-Status: GOOD ( 16.26 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ming Qian To support decoding motion-jpeg without DHT, driver will try to decode a pattern jpeg before actual jpeg frame by use of linked descriptors (This is called "repeat mode"), then the DHT in the pattern jpeg can be used for decoding the motion-jpeg. To avoid performance loss, use the smallest supported resolution 64x64 as the pattern jpeg size. But there is a hardware issue: when the JPEG decoded frame with a resolution that is no larger than 64x64 and it is followed by a next decoded frame with a larger resolution but not 64 aligned, then this next decoded frame may be corrupted. To avoid corruption of the decoded image, we change the pattern jpeg size to 128x64, as we confirmed with the hardware designer that this is a safe size. Besides, we also need to allocate a dma buffer to store the decoded picture for the pattern image. Signed-off-by: Ming Qian Reviewed-by: Frank Li --- .../media/platform/nxp/imx-jpeg/mxc-jpeg.c | 42 +++++++++++++++---- .../media/platform/nxp/imx-jpeg/mxc-jpeg.h | 5 +++ 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c index 12661c177f5a..45705c606769 100644 --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c @@ -535,7 +535,18 @@ static const unsigned char jpeg_sos_maximal[] = { }; static const unsigned char jpeg_image_red[] = { - 0xFC, 0x5F, 0xA2, 0xBF, 0xCA, 0x73, 0xFE, 0xFE, + 0xF9, 0xFE, 0x8A, 0xFC, 0x34, 0xFD, 0xC4, 0x28, + 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, + 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, + 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, + 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, + 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, + 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, + 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, + 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, + 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, + 0x8A, 0x00, 0x28, 0xA0, 0x0F, 0xFF, 0xD0, 0xF9, + 0xFE, 0x8A, 0xFC, 0x34, 0xFD, 0xC4, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, @@ -545,7 +556,7 @@ static const unsigned char jpeg_image_red[] = { 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00, 0x28, 0xA0, 0x02, 0x8A, - 0x00, 0x28, 0xA0, 0x02, 0x8A, 0x00 + 0x00, 0x28, 0xA0, 0x0F }; static const unsigned char jpeg_eoi[] = { @@ -775,6 +786,13 @@ static void mxc_jpeg_free_slot_data(struct mxc_jpeg_dev *jpeg) jpeg->slot_data.cfg_stream_vaddr = NULL; jpeg->slot_data.cfg_stream_handle = 0; + dma_free_coherent(jpeg->dev, jpeg->slot_data.cfg_dec_size, + jpeg->slot_data.cfg_dec_vaddr, + jpeg->slot_data.cfg_dec_daddr); + jpeg->slot_data.cfg_dec_size = 0; + jpeg->slot_data.cfg_dec_vaddr = NULL; + jpeg->slot_data.cfg_dec_daddr = 0; + jpeg->slot_data.used = false; } @@ -814,6 +832,14 @@ static bool mxc_jpeg_alloc_slot_data(struct mxc_jpeg_dev *jpeg) goto err; jpeg->slot_data.cfg_stream_vaddr = cfg_stm; + jpeg->slot_data.cfg_dec_size = MXC_JPEG_PATTERN_WIDTH * MXC_JPEG_PATTERN_HEIGHT * 2; + jpeg->slot_data.cfg_dec_vaddr = dma_alloc_coherent(jpeg->dev, + jpeg->slot_data.cfg_dec_size, + &jpeg->slot_data.cfg_dec_daddr, + GFP_ATOMIC); + if (!jpeg->slot_data.cfg_dec_vaddr) + goto err; + skip_alloc: jpeg->slot_data.used = true; @@ -1216,14 +1242,14 @@ static void mxc_jpeg_config_dec_desc(struct vb2_buffer *out_buf, */ *cfg_size = mxc_jpeg_setup_cfg_stream(cfg_stream_vaddr, V4L2_PIX_FMT_YUYV, - MXC_JPEG_MIN_WIDTH, - MXC_JPEG_MIN_HEIGHT); + MXC_JPEG_PATTERN_WIDTH, + MXC_JPEG_PATTERN_HEIGHT); cfg_desc->next_descpt_ptr = desc_handle | MXC_NXT_DESCPT_EN; - cfg_desc->buf_base0 = vb2_dma_contig_plane_dma_addr(dst_buf, 0); + cfg_desc->buf_base0 = jpeg->slot_data.cfg_dec_daddr; cfg_desc->buf_base1 = 0; - cfg_desc->imgsize = MXC_JPEG_MIN_WIDTH << 16; - cfg_desc->imgsize |= MXC_JPEG_MIN_HEIGHT; - cfg_desc->line_pitch = MXC_JPEG_MIN_WIDTH * 2; + cfg_desc->imgsize = MXC_JPEG_PATTERN_WIDTH << 16; + cfg_desc->imgsize |= MXC_JPEG_PATTERN_HEIGHT; + cfg_desc->line_pitch = MXC_JPEG_PATTERN_WIDTH * 2; cfg_desc->stm_ctrl = STM_CTRL_IMAGE_FORMAT(MXC_JPEG_YUV422); cfg_desc->stm_ctrl |= STM_CTRL_BITBUF_PTR_CLR(1); cfg_desc->stm_bufbase = cfg_stream_handle; diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.h b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.h index 86e324b21aed..fdde45f7e163 100644 --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.h +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.h @@ -28,6 +28,8 @@ #define MXC_JPEG_W_ALIGN 3 #define MXC_JPEG_MAX_SIZEIMAGE 0xFFFFFC00 #define MXC_JPEG_MAX_PLANES 2 +#define MXC_JPEG_PATTERN_WIDTH 128 +#define MXC_JPEG_PATTERN_HEIGHT 64 enum mxc_jpeg_enc_state { MXC_JPEG_ENCODING = 0, /* jpeg encode phase */ @@ -117,6 +119,9 @@ struct mxc_jpeg_slot_data { dma_addr_t desc_handle; dma_addr_t cfg_desc_handle; // configuration descriptor dma address dma_addr_t cfg_stream_handle; // configuration bitstream dma address + dma_addr_t cfg_dec_size; + void *cfg_dec_vaddr; + dma_addr_t cfg_dec_daddr; }; struct mxc_jpeg_dev { From patchwork Fri Mar 28 06:30:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ming Qian(OSS)" X-Patchwork-Id: 14031701 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A63D0C28B20 for ; Fri, 28 Mar 2025 06:39:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-Type: Content-Transfer-Encoding:References:In-Reply-To:Message-ID:Date:Subject:Cc: To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=UlIm9Ns91uaRTs1fpfsxeOVCssUaEeDGGG2Xv4okbOA=; b=01R/xwliVllxA2mhGnHpDC/3a3 nbzrHryCFMFstAY1yXTh/PycFQNxiD+hgEVqOqEkBfilx34w6LB1b2XxpClgdciMNoaodC/CbCppG hfWav7IVQOhMMhSB/aGi1vHRNxEIcUuka0GeftB5YVCj0aYvk6yCnWxQ6qVO9HUHTNuppKNi5mVW4 FNbTkZBcTwyzoSNnZus3Sa8/ZOKzRGVrQBTiEjQBqWQumqQ7KpxO0cOg9yRNgWUCNf1ZMwNjcEO4F 9+L5CS0mrjuvQ6UP6B31Ek8rfPZHyAmnMn0grL9Z4NC0yV0o+1nqnYtbeg+veLB6xSGdrgUHPDLOI +GNFYyMQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty3Mx-0000000Ck57-15uB; Fri, 28 Mar 2025 06:39:07 +0000 Received: from mail-db5eur02on20614.outbound.protection.outlook.com ([2a01:111:f403:2608::614] helo=EUR02-DB5-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.1 #2 (Red Hat Linux)) id 1ty3GG-0000000CjK3-3pHH for linux-arm-kernel@lists.infradead.org; Fri, 28 Mar 2025 06:32:14 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oUXDzJmCma/NGyidSxqGTS52bM+7YHj+/MJ94lOA0e7rJ/mn9OPCfvDw5qcv87RDb3zFzFrJCaIErrOgeZ/2yF5XFvg7yYuq05l+CaLApn1kvSN8827BUO+QCCBQwKqGgcUeJY5o1puLmMD+axOjFpaOlTF91VwMZF1p1fqV/r/ZsmUaO7zCyQeJ/uPoSgCS1llVphBcxpZ4eJ3yLHlm5KxJyXk8+cqgbNpjgy186MaPpm9fcvs1Yk/nYSPP2vgN8aCummKhYYEu628iP7a2FRfwGnSIL4G7n0LyQaOCtFYL57AFRh6BZ1/heZ7yglmgMN42WFjDJuUiGKRlIa2Czg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=UlIm9Ns91uaRTs1fpfsxeOVCssUaEeDGGG2Xv4okbOA=; b=hWK4iI87Z90COOhQhbTossYZx4T5RYNLg6UfT6EDwpUYCyPYgfsby8leENhp/2fqZ14H1WWMfbnFf5TMS7zzetm7T0JDtSZrs+GmY8s1p/3XmJaO4Er6RMDV91T3X8V6MDVsG6s/KLEN9H8lJMFfqdIMw7YBk0lFWv0U9ldSpFysV3fTG8y8Bxid4sLrsvL5OOhw4ESB+m6ASX6g+1/GQAjiDqswJpZ4FLD34NS6gEzSBFAyUmYmAFCuiFBrursmDcqt/yMVwUfiFdQspTa0bSR0W2nknxEsegRQO+uBUYgnvzk4ChAW+XGe73YekH06oSy4lLLmM2XU+YPR6e+Lbg== 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=selector1-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UlIm9Ns91uaRTs1fpfsxeOVCssUaEeDGGG2Xv4okbOA=; b=ksqm4QrjcRfDSwOViGifBK+uhm5kFkYGiIMwOzxDP5G7d9LH7LiQ7SP1aO1M7rZcXYyfR68V0DxfIJsstBqTJavKzXb/wFVw6+aNhjZRMeGNSUsz71dOxt+AEz+uB5YGzt0A//7lKvmXGiEELTgRMVNYR0qLYp/4cehZn9ogAVxHa3zERYVewW3XiJlqMWS/IsdLt355aEWPoG5VoyyHYE2iXG6+CJhw4BJwq1qkYopoDgf/BeWJ5+ciVX0gwtaghVvHx0Xim+4tWmC9+QACgOd8cUST2uCyaEnF1o//vPrxjQsxdkIvdugB81Ooz/31zLfqHIoUlLw3d4LdZ8djUA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from PAXPR04MB8254.eurprd04.prod.outlook.com (2603:10a6:102:1cd::24) by GV1PR04MB9117.eurprd04.prod.outlook.com (2603:10a6:150:24::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.48; Fri, 28 Mar 2025 06:32:08 +0000 Received: from PAXPR04MB8254.eurprd04.prod.outlook.com ([fe80::2755:55ac:5d6f:4f87]) by PAXPR04MB8254.eurprd04.prod.outlook.com ([fe80::2755:55ac:5d6f:4f87%4]) with mapi id 15.20.8534.043; Fri, 28 Mar 2025 06:32:08 +0000 From: ming.qian@oss.nxp.com To: mchehab@kernel.org, hverkuil-cisco@xs4all.nl, mirela.rabulea@oss.nxp.com Cc: shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, xiahong.bao@nxp.com, eagle.zhou@nxp.com, linux-imx@nxp.com, imx@lists.linux.dev, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 3/3] media: imx-jpeg: Check decoding is ongoing for motion-jpeg Date: Fri, 28 Mar 2025 14:30:52 +0800 Message-ID: <20250328063056.762-4-ming.qian@oss.nxp.com> X-Mailer: git-send-email 2.48.1.windows.1 In-Reply-To: <20250328063056.762-1-ming.qian@oss.nxp.com> References: <20250328063056.762-1-ming.qian@oss.nxp.com> X-ClientProxiedBy: SI2PR01CA0051.apcprd01.prod.exchangelabs.com (2603:1096:4:193::6) To PAXPR04MB8254.eurprd04.prod.outlook.com (2603:10a6:102:1cd::24) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PAXPR04MB8254:EE_|GV1PR04MB9117:EE_ X-MS-Office365-Filtering-Correlation-Id: 7b308acc-57f0-45b8-3965-08dd6dc24358 X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|7416014|52116014|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: tWl9bUX6vQ7gEUAH10p6ogUAfI5CzfPI8TWlFdVao+D3fmStigfdazB7MMpy09Hr+R3m4IuGdvJQHUrMFhBvCjYUDQSL5im8MuQzmuWHlmbaxvioPUKWblQnzD2NjxBV2iwGRhbm0dC1zCRnKpdaOMUnn7EROBVy/8NmlIatmrdpLzraQz1VfRd4saXplCr8uIIhTc9AANhxe7BqVXN4qkXH9JQJqJTcb9t7W1RaSP8spUygob3jlnCrqH9pEuMiwx55fCEBMHnl2/mXzct4bWZXA9JXvy3RcKnh00vn0qE4FI1cDGfA5T2Vz30rVeQLA5q7Iz4bHhz7Rae158K5LyQLiQZLFlM+cHpILqHb3Mygafx+gQZa8VChBwADd2w8BktOh62WfOqAdbX2Q6GBaHfT+4g+0VhdPsLF0tFXTOd5Zn78B2wrGoVWgqLf2UFmZeRKh5LYnxE7Z/4y3AbwHFu8BHFFaj3J07Tc5nHy9kiRLpAlyNi2zEbrt1HK45xC5lgbNvyqlo4Jya5kmukDrWsVTJ6Y+eycs3PCDT8LH3YQI8GQuB+epziaxr50t/ET0cwFNzeBzvAPyqiduJ6Aq/3y+lcpZTPJq4Tduotn09J2zRvB0FG9YguBFAf7IAH37lxMP+WfGt+RDIMVAdjaJ95fhJC7J1hSIh9l5IiMSh+JBohGNhJsRpzJ4yQO5MHFHB8vGak9HqjX8rXbtqH/MeQIyo4ZHrA19wJlk3xJl4Ap/6DscTXKEMX6zPPzCPM4O4BJjcr1rS8nGnQtNirYJ0tU37hkkUuFDbTHpE7BFu/gue/m7dXPwy8YAoz8sYf1I/o4o4te0kzAsMDMqVwjma1XzE3bAwYkBRLnmlXFa0pSUSEqxP3fkvAk/5zX1C9cbDS0/ZKXAs8UuNqyaBBX65eJygfcxE/4Fjy6f6tZAfWs9SBOFBruku7Anb8CBxxbhr199rlM7ZWUuu2lUXpAlBiELibRfzoirLN959V7dB2S6AMlfLhZ1qBGNdJojByH4HnqBbX8O2G8pZbtD2M6yCLMYJfntWUMfuAWo5hj3ic3EqbIL3622bxKe1d5zP6DvqRwOVP0adOUjzaak2i7HiipiLv5tPwTomCF9VNoJ4iYXQRKIrXckYAewqJRFuXAKY4jn7QWe3/p1+OdRIdbxuk/z9oTYMRDr0MuXVJj0dR9hpxwBSg1sh6VWBVxeFI/YnqllOu0ImM2sfQ4hN/gcZzQkFe/kIDpw5MTronxZBMV1G+IDpgXemQec1GZIR/swp9vXprrta1BRwsX47q6ng60gAuOPD+9UiYWcsw0D/Kn/f451TbCEiP9fwd9d3N0UJZ1nybTnnOL7hQtwH/HGUbHvPYy0kQpe1MgYDUjkHp/IPCPED4fQoQ886FwSs1GGx50rEI7/Y0GlaRr5SXE3MTJAW08rp7DKInKQ/CMMKuYPhgzOM1cSlPsNUbgXqEt X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB8254.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(52116014)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: dldSX8p+KdmjYuIMskPaGPpSCQxKChpnoxcN7vHOnXYhbecBOE9Sqs0AyD0l2U6coFW2hLf/7wdKIN8B9E5btNyscgNK78BM0kYJ9siM2i76rcLvEyBhoMv/iobm1IwRw1otUbiuH7YUom5bGJ8JTqYPFOpdqFnuNDhjHZ0G8+UtXmvRj3GNK6uWIkTX4GyNmJET3bySLUDKEkMoeJ/EAwdvf31q+6o/7yEMZqj7vYeeL43kOU5pQcB1x8pjGviYG9oR9fpQi+besCJPx09dw4vVtCrFJIjyQ3bU0QDV/kWB9KSunVezlVEVH0bdOtI9V19df/iTVYcHjfdZZAKSXje5GyEwxXOZzNlsPNlSOIIPAnRVO8RhRJ9QoZMZGPuEEhm+B4IShskmS4YuU27SNTLzYtTzKJLefE8Rx/tsaR5iL+g0ChfM1wIM0xt0Vmww2amtT/drHziU/Nhs+MxXphfktovwPQrV03DBu5hEvHfD/Ju2Fx7/Zq2XvuvmX7Js7915x/TTonwEQgB6I7HGCUd3GJymjAtE6iyEWee4BaDK6ANj7SK43oAZZytNJYQqjH+szWostbYfv0JFUfsv+l5ygfnY/ph4FHT4M7Gfr5R6MCPoVEKzCn1360mT9GEDwFEe2BJDK7yAWb5AlYoyTqkvDw+7YG3Tmpa5CSL1YV9ckFMj02HaftXGcdpxPCyHo+3YpYOa5YTrwL8O7wHFzHBSFbwdDqF4pgXT9sWbjmr9n+iV8SG+dOOArIwKT2KqISukE3apjmFsa/466LBDwT1CIxBt09pThtimxLq4w+YwMilEMTr57R75ULnxJoXdcZwcjbdm5kRshjYzugOAfCYhaS3oVQZDzthnharAjmq0LMc6FQyg4FnnwygztfLykHZ6vSy6msIJ17eFd2Z/uaYr81IMSbbZLIg6ZM+m2+XmBtTo+T/+8WfOCSsDa41i/YtFZtefD+4DFEhB+dvEK4xMfTU/+fxPjft12AAJUmjlV1BIbgpXyrWZC6uUVq/CRZCHgBOFdMfysWMfMWqcoF+NHP75b6KtBUPBnQd8pKJrAhZpg1esEyLc4ipFZCajb4hU5gNQfVy2CyHpwEC9ACHE9cItfJjCjx/uANsSKfyReimyF12cnSiNWd704N2LGcy4LLyN7+RwrkMOA2phn4vjmofGLpyhGx8laWW9VnHQWWiWu/P3h8x8Xu2ptESO8Fth2097Nv0aleaOvkrNjO1ZE3xcBXGIegLG+dS8lFtzngnxfTojCuekNQwaZRXS2Xss+WMzTXf0fO5ltBik6F/andZqpVlz+/3lRMgDDHkRur47xwHFmChe0sKe3ggE9pFwVsvldtFoTHnQ9NxTe5zPE/p1oIUnVXN/JH0vf6hpn8iN/G4N4maiw60ExPIAXbFw0iF34z0X7ZoZ90dEAabD5OiqsHnXFEjwg5AmPy1+ImTNovuX58gWIjR6hNpfmHIgDmU7aPWAJ4PQGQH4oE1wCV6yI8dQI41WEvG/AZX96R4Cc7cVE0bkeqezi7YD33ai2C7iwTkn08ystPn1CAxzt+6MpvlCwT1AzMyM2Jdyhte67LUWbe+SUGomWqw5 X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b308acc-57f0-45b8-3965-08dd6dc24358 X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB8254.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2025 06:32:08.0177 (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: LSaTU38gJT0bsgZDPzClZ4WCF4DCwxBYvd5ULMi9nCgXeGWViGaXTp7gYjpMrGbk6Yo4yKXoZybYCba//JkCZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR04MB9117 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250327_233212_949950_F132D763 X-CRM114-Status: GOOD ( 15.90 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ming Qian To support decoding motion-jpeg without DHT, driver will try to decode a pattern jpeg before actual jpeg frame by use of linked descriptors (This is called "repeat mode"), then the DHT in the pattern jpeg can be used for decoding the motion-jpeg. In other words, 2 frame done interrupts will be triggered, driver will ignore the first interrupt, and wait for the second interrupt. If the resolution is small, and the 2 interrupts may be too close, when driver is handling the first interrupt, two frames are done, then driver will fail to wait for the second interrupt. In such case, driver can check whether the decoding is still ongoing, if not, just done the current decoding. Signed-off-by: Ming Qian --- .../media/platform/nxp/imx-jpeg/mxc-jpeg-hw.h | 1 + .../media/platform/nxp/imx-jpeg/mxc-jpeg.c | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg-hw.h b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg-hw.h index d579c804b047..adb93e977be9 100644 --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg-hw.h +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg-hw.h @@ -89,6 +89,7 @@ /* SLOT_STATUS fields for slots 0..3 */ #define SLOT_STATUS_FRMDONE (0x1 << 3) #define SLOT_STATUS_ENC_CONFIG_ERR (0x1 << 8) +#define SLOT_STATUS_ONGOING (0x1 << 31) /* SLOT_IRQ_EN fields TBD */ diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c index 45705c606769..e6bb45633a19 100644 --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c @@ -910,6 +910,23 @@ static u32 mxc_jpeg_get_plane_size(struct mxc_jpeg_q_data *q_data, u32 plane_no) return size; } +static bool mxc_dec_is_ongoing(struct mxc_jpeg_ctx *ctx) +{ + struct mxc_jpeg_dev *jpeg = ctx->mxc_jpeg; + u32 curr_desc; + u32 slot_status; + + slot_status = readl(jpeg->base_reg + MXC_SLOT_OFFSET(ctx->slot, SLOT_STATUS)); + curr_desc = readl(jpeg->base_reg + MXC_SLOT_OFFSET(ctx->slot, SLOT_CUR_DESCPT_PTR)); + + if (curr_desc == jpeg->slot_data.cfg_desc_handle) + return true; + if (slot_status & SLOT_STATUS_ONGOING) + return true; + + return false; +} + static irqreturn_t mxc_jpeg_dec_irq(int irq, void *priv) { struct mxc_jpeg_dev *jpeg = priv; @@ -979,7 +996,8 @@ static irqreturn_t mxc_jpeg_dec_irq(int irq, void *priv) mxc_jpeg_enc_mode_go(dev, reg, mxc_jpeg_is_extended_sequential(q_data->fmt)); goto job_unlock; } - if (jpeg->mode == MXC_JPEG_DECODE && jpeg_src_buf->dht_needed) { + if (jpeg->mode == MXC_JPEG_DECODE && jpeg_src_buf->dht_needed && + mxc_dec_is_ongoing(ctx)) { jpeg_src_buf->dht_needed = false; dev_dbg(dev, "Decoder DHT cfg finished. Start decoding...\n"); goto job_unlock;