From patchwork Fri Mar 28 17:29:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tommaso Merciai X-Patchwork-Id: 14032323 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010027.outbound.protection.outlook.com [52.101.229.27]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 760FD8248C; Fri, 28 Mar 2025 17:33:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.27 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743183197; cv=fail; b=DYNIEJDdFVFlx1rNrzZQOqkfzEIuHOrtX8Wc/t7cgXletCeEmfKqzFn6oYaotkHo7u9Agb03lqaTrQ8pH21C0ag++Uqa8Gjgn96wt16qepOQl3CyKtzTBDB/NJfSBxvPtt0IcUeSAi7m/iMlOF0V4Df6eZJ93gRno3rYEnVmAZU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743183197; c=relaxed/simple; bh=BejLPEl5rWU73gfBi7d7xG98Zvdrnk5y09LYgN0SnXQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: Content-Type:MIME-Version; b=hdX83AJ9P8oS6kMjB1M//UMpR/DbGObmmBz6GzclroEPMZbQ9J2c6mvFQGn3BSwjIuGY/pyT8i6kHlZ+1LIW49bYW/YCebjQZvxTTN67ujbGoLCRxi3CgmlXZKDiAq7JoJmK1g257Sfw246mvqsRPCh4Czml+0gPPyUS/InHT9M= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b=HdASgHos; arc=fail smtp.client-ip=52.101.229.27 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b="HdASgHos" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=A4Be5E+QGYRLXiIa9n1bvq7X5P8uR+JKheWY43HiaTPtkBgqWpcjigG7QskBwRGxHR0mTzYCaT4Q/13qgN0nCTEJgOgveN9jMpmuYaA81afEw8RvL84eN7AuOtHZ/cx82fq3Chia3vpUZwSlqT9tQcXAfL1NOCzBAfmwu++z2PTqhG2AsbTJ9FVxDdxz2xmT8QWhZMyqhoebe1/A/bY52emjw4VXJxB5/QShtM3t6eIeXRdQNV+KQoDiY6ELhSbyFxT8gq+XImcKI3ynYeXtja/JDswx7s6UCG1CKDXup0eHcVSWH5GFO6uNKjDh9vZMCg/nd8P5rXq3gKjZE8H2LA== 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=CNb/KsPy9pTJcv6D76EKF7LPY7Mbj1mWJqvKwliBegM=; b=QW+Y6NhyDJ9hrGlu9Vkn+W8UBIyKhJJApp2jyGSjF2UwOB2WTlN3nUv7x342vg4LETD+fd53ffwap4E1lofPYGMg2TfQccSF+HzzypAHixHpeMJs522EHOqDbS2X+kaGFKcnbOmYkBaJLTzYJi54xNJHzZ26Ye0FdrzvAdbusSBxMRyYaprPpGD2FINIs7ftR4tsTuejnwyz6BxXar2VokeqG4TIPhBfHVOvu7PXMTlMXW0JOFUkW5LL9+C+xn9uucMFaU0cvnY3tt462YThrnMRubw5JYKjsqhGmIBuUK5PD0IyljosxMhKx/pJefiRyJL1R0AHd3r2Kx/KsLB92g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=bp.renesas.com; dmarc=pass action=none header.from=bp.renesas.com; dkim=pass header.d=bp.renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bp.renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CNb/KsPy9pTJcv6D76EKF7LPY7Mbj1mWJqvKwliBegM=; b=HdASgHos2xWjOpw1h0FHr351MDU14+ZDo0FgltbBhKJnksTfgF2YYwFVH+GGAcpt2chOEg9g/PkgB92iLVgW0OKg895jlejSqqeZjGDjv29/ulpyDlnBjR8cXD4Cyl26VKA/+98speOttMAcxvYeIZPezj2vUXYmjS9S2AymmNU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=bp.renesas.com; Received: from OS9PR01MB13950.jpnprd01.prod.outlook.com (2603:1096:604:35e::5) by OS3PR01MB9720.jpnprd01.prod.outlook.com (2603:1096:604:1f1::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.42; Fri, 28 Mar 2025 17:33:12 +0000 Received: from OS9PR01MB13950.jpnprd01.prod.outlook.com ([fe80::244d:8815:7064:a9f3]) by OS9PR01MB13950.jpnprd01.prod.outlook.com ([fe80::244d:8815:7064:a9f3%5]) with mapi id 15.20.8534.043; Fri, 28 Mar 2025 17:33:12 +0000 From: Tommaso Merciai To: tomm.merciai@gmail.com Cc: linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, biju.das.jz@bp.renesas.com, prabhakar.mahadev-lad.rj@bp.renesas.com, Laurent Pinchart , Tommaso Merciai , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven , Magnus Damm , Hans Verkuil , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 15/17] media: rzg2l-cru: Add function pointer to check if FIFO is empty Date: Fri, 28 Mar 2025 18:29:51 +0100 Message-ID: <20250328173032.423322-16-tommaso.merciai.xr@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250328173032.423322-1-tommaso.merciai.xr@bp.renesas.com> References: <20250328173032.423322-1-tommaso.merciai.xr@bp.renesas.com> X-ClientProxiedBy: FR0P281CA0057.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::14) To OS9PR01MB13950.jpnprd01.prod.outlook.com (2603:1096:604:35e::5) Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9PR01MB13950:EE_|OS3PR01MB9720:EE_ X-MS-Office365-Filtering-Correlation-Id: 4df378ef-d9b0-48df-577d-08dd6e1e9d23 X-LD-Processed: 53d82571-da19-47e4-9cb4-625a166a4a2a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: TqbCI3glMW7DGvEkj6J17RJocilGn6ROuMafMC0KmgRyBWf5e+Tw8nsFzTgewaB9mHTY36m8mDdUD97Fbp5mGZY7SKbnJq3cc8ht7IRJUPNE2QU9u6ywxR9D9emLrdOPMx5DANiD/e2aexEEv/TP9DuiGvXWOKmGQqv5oubS+ZCfY2T9N0OKbX8nQoQ7dUfEkoLDKhl49M0hGDpD+2ZAXJaocoWt62fVqXt9ZROFqis/HmNLrPw0dXfKnOTRdmZEwAUk1rW10RzgfEPlWDPvqv6TGCDFMPCBZXvVHG7DlppSc1zu9voygf8lMrvsJV1Ler7giGVj5ebIQraDZph8dIwswoOLeUVaM8ICP5m6U6jrsMRxtzJEn+Cn93FGtoi2PeVLJ6JO+0rdmYrPDLlx5ffsbSGC2fIo+VdT9fYrpOesUz9S7fq8ZKftqz4c849rffL4Qlr+uzXbjis6NXgsWlBkJBC8Q7CH0bI5cFJh4uXY98fhpL539M/Lz6Km5Rr43BWFuq/YLRpTyZb7//GmR6mGXXqpwaUz30G0Ynxuw97VM2UsYWukc0MjhHCLLdiEnph7QdsYLGvpxyMOsJWvBBh075dQzBEsTix/6vHs4GxhMpJosy6KAyROIv5vKitjAj0RkK5OAGjv/vtu+NfIORNQH87+lHs78hBY9g8azDK760qiLKG0okZ1w3/iLeVHiTKnAFGzBMzGS5lU17TXecX7yxtBrYblI6NiuSsFfrTW1MgS4zTCa5Z6YrC40moRgOPoQHsL7R7j3ZP/Gtl8fJAQZIr8CDM+XGKp7WcI+fsaNCLVYkunvMEq0NG7je9uYXVd3vnV7gtcVcdeRQNcYvp9qQcC+f6B/XaWaB+p94MJ4Z7qEFn588OBQGMZeaexwehFx6vkpxHqUPUtjwHsm9daTmBD0ZuzwX5Gx/abD+hrvPETQCAdCbCvDSKU4SKO1x3+TgOwxLMvtBOsLU9Dq0d9XdvXaCkgXH/LtmoceJBLpB8FkF0vWGRkuYQbYdcVXUO2U/mSvkIsIxX+nLzwJWwC8bSk6ldt9wOuLNqQQ93UXDtcRhLKk6j/an2bQXA53ofGKCuXyLem3oFrEqBDYTrzUdF8Qg+ncMHQMzlEHf/MpkaVCmUCaIp84b8uqR+jGTkC1pKUJ0g2TFjJuDdQACeM9longSfJP94whSmox/TtAC1PI/dW9riGmNlA2DWsrxTpTBEZoMYuqZP9u6TjyT++xMVo/sXIb387VbfnwFAtC5P8ZUXBKXVXw+HyR8yAu8jsj1LVuSTOhYRamz9qPn6XSOFM3QuBlh+znu7ANf5NnOJ3NPk5gQhFIGA8+UXUu8lPmV0heHYaYra7TRz6/hH+oiK6V8lPRdGftxeUUa8yaCDwEZimtwmDF3mGz8TQFl1GfaGH5qmAsQpL+2kAk0s5tqJ9GsI9V/CXsfrKwZQzCBTfTcR47FBN1b5aJubSCuXcAWs/3drDpSHcW2G/oQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9PR01MB13950.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NVjKwXCOEIFw5YoZaGER70JrhbNhxmKkr5QnIe7z5qWNKkKRkgcK85kKNIhwIBZ1kRWAbEuJh3wvoX6rKxy94DpmlQXQwhjiUvXLajxVd9jK502VkLqKD8jXwQjWAV0ZXYEwYbQmy5w+JfGNkVBETWzJpgiowCuZOe4UqImOJHM8JPWJVZvKfUF15xWbSXSNxsBWqle9NaA341RfKy5D2BmnRRSeyLBt8FB7Fx+m0yLCFQnUIsuzR8lf+eiHbo3Kqp6aY46s6m/y6XBPQGZK16WDDVfqHMkrRdm8VelrR5bboJKJ/8W5BoZjpThsFj3VFbnhYy38ywkKa4utMiWR+EOlVX/ZxLTu/5SprD7q/OhUhoKtx7ky8RcIetQvX8RgPR6B6/1PtW5Wa6ujX3+BJlFhx9Z4dm2W57w0tCtBrNppMLWNSmGvifyx/ulgzcpiFftYZUF73L0WEBJD8llHH5aaJUTOZsvKGLQYHi61YwsglhZQdOp6/m7ctWHPAnCm2Zebaa0NhArKJOEK9zf4S++RxgNc2fYJupzRvF3732VNv4rFu28I9tmnycLtkk9ugP04PrNu36SJ6djeiu7yZjJbYDyk5c6EN/Y3PxmLum55DqRWsGv9Wf3fNv+aWut3SLz1E99F7gdpli59HQtFMkBceQnXSJLvcjVf6ObE7Kx9a8MWDAB17LFbT0N0Ndq85RjdzBvOXap/sZTDQ13/ejNHbznkra09ATNeMLqBkQ5ome7Ag3lYTpwH2WGV6XFKuWIz6laKw/zShsJoHGOc56xGYQUkzey9Uw6U4RZ2B0JQGpzVGKkWx1tbmwx3QimGkDe0+Cl55PDveF91+exK5O7ZHyPfv+tCUg8XQxEvGA8JHeQtPRoF3YspZlzIxyRa55wBYYRZwzxk5l1eQVcdrOZTVFm6Q4wuqPWmJlT2z+EuS7DJxQEuNRHef2rgTxW1lVnCKA1k6bjtostJLULSPFjpLUawtE40tEpb1Cv0wCqQnfJlPTlE7i7zXkpufdR88xnF4gQ4J17JUya46I0x9jHJmApXruGG2EBU9E8gH54gl3umycBNpdzJgoI0NkEQCFh13RhZYMc3qybdccyIz4AETPMKb6s+I9mPgjvZkSmi4uEpTfYpX5BjrTHwhx5gbfjwkXpiBch1KVuHn2mxVKpNPVMjukR36DwK27dhGk2eZy4AlUFHXSDoqc8d85OVCkXETEn9VoUiAy5tIADjbK0hy43MXAfuCHaESkclohYr5jWfJReiPw3tSaXFYuyYSaRmWiD6tSmgTxINdAvlkROeP5V2U9cTJn3XIG1pBnQ4tf5S0+iXHU5uVI3vktGkziM38e5AYXqxqvRa4EARJWTTy00o+CewUONJKA0EAO6+vu4jjCy0spQu5CTLZI3D9GJGavRNtgqh4rE50VNFMiHPGCzfdUF4wkd80ROvRQ0Y775iWDdhFretcbLorosJ3cbQ5pPbSNDwpSJVHUNDUypctVAOzT/FBFxW0EEr9NwB8anh18EecECy/K1mFU4L/D9KH9TXoJnu7dL6D0Ln/CpivXw52MjsJL7pxTpg5oNHAXOeKJmMFN6bdHDZx6PSCmMhZ+fyCc0FMpfd9t4o4APQf1ZBkd6p0YR+3UD6ar0= X-OriginatorOrg: bp.renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4df378ef-d9b0-48df-577d-08dd6e1e9d23 X-MS-Exchange-CrossTenant-AuthSource: OS9PR01MB13950.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2025 17:33:12.4176 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: S+4/M0fY6vIj7aN6K3Cf8rQsg24uhpXqBJ/DIL0PNWvXaMFQKthpaMeuYCFJg30y0alReEQNLTFDxtLH+CC/8MxECNjrrVwcI3cwX2GZhgT/V+DpdHIVDuquIHKciyRB X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB9720 From: Lad Prabhakar Add a `fifo_empty` function pointer to the `rzg2l_cru_info` structure and pass it as part of the OF data. On RZ/G3E and RZ/V2H(P) SoCs, checking if the FIFO is empty requires a different register configuration. Implement `rzg2l_fifo_empty()` and update the code to use it from the function pointer. Reviewed-by: Laurent Pinchart Signed-off-by: Lad Prabhakar Signed-off-by: Tommaso Merciai --- Changes since v2: - Fixed return of rzg2l_fifo_empty() as suggested by LPinchart - Collected tag .../platform/renesas/rzg2l-cru/rzg2l-core.c | 1 + .../platform/renesas/rzg2l-cru/rzg2l-cru.h | 3 +++ .../platform/renesas/rzg2l-cru/rzg2l-video.c | 23 +++++++++++++------ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c index 302f792cb4159..e4fb3e12d6bfc 100644 --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c @@ -362,6 +362,7 @@ static const struct rzg2l_cru_info rzgl2_cru_info = { .irq_handler = rzg2l_cru_irq, .enable_interrupts = rzg2l_cru_enable_interrupts, .disable_interrupts = rzg2l_cru_disable_interrupts, + .fifo_empty = rzg2l_fifo_empty, }; static const struct of_device_id rzg2l_cru_of_id_table[] = { diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-cru.h b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-cru.h index 3f694044d8cd1..2e17bfef43ce6 100644 --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-cru.h +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-cru.h @@ -88,6 +88,7 @@ struct rzg2l_cru_info { irqreturn_t (*irq_handler)(int irq, void *data); void (*enable_interrupts)(struct rzg2l_cru_dev *cru); void (*disable_interrupts)(struct rzg2l_cru_dev *cru); + bool (*fifo_empty)(struct rzg2l_cru_dev *cru); }; /** @@ -185,4 +186,6 @@ const struct rzg2l_cru_ip_format *rzg2l_cru_ip_index_to_fmt(u32 index); void rzg2l_cru_enable_interrupts(struct rzg2l_cru_dev *cru); void rzg2l_cru_disable_interrupts(struct rzg2l_cru_dev *cru); +bool rzg2l_fifo_empty(struct rzg2l_cru_dev *cru); + #endif diff --git a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c index 3bfb30a61d9b4..31848dc463381 100644 --- a/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c +++ b/drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c @@ -290,9 +290,23 @@ static int rzg2l_cru_initialize_image_conv(struct rzg2l_cru_dev *cru, return 0; } -void rzg2l_cru_stop_image_processing(struct rzg2l_cru_dev *cru) +bool rzg2l_fifo_empty(struct rzg2l_cru_dev *cru) { u32 amnfifopntr, amnfifopntr_w, amnfifopntr_r_y; + + amnfifopntr = rzg2l_cru_read(cru, AMnFIFOPNTR); + + amnfifopntr_w = amnfifopntr & AMnFIFOPNTR_FIFOWPNTR; + amnfifopntr_r_y = + (amnfifopntr & AMnFIFOPNTR_FIFORPNTR_Y) >> 16; + if (amnfifopntr_w == amnfifopntr_r_y) + return true; + + return amnfifopntr_w == amnfifopntr_r_y; +} + +void rzg2l_cru_stop_image_processing(struct rzg2l_cru_dev *cru) +{ unsigned int retries = 0; unsigned long flags; u32 icnms; @@ -320,12 +334,7 @@ void rzg2l_cru_stop_image_processing(struct rzg2l_cru_dev *cru) /* Wait until the FIFO becomes empty */ for (retries = 5; retries > 0; retries--) { - amnfifopntr = rzg2l_cru_read(cru, AMnFIFOPNTR); - - amnfifopntr_w = amnfifopntr & AMnFIFOPNTR_FIFOWPNTR; - amnfifopntr_r_y = - (amnfifopntr & AMnFIFOPNTR_FIFORPNTR_Y) >> 16; - if (amnfifopntr_w == amnfifopntr_r_y) + if (cru->info->fifo_empty(cru)) break; usleep_range(10, 20);