From nobody Wed Oct 8 10:58:52 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 845EB230264; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751208574; cv=none; b=drpxs0JVg+UykNSrYHQ+2oeMfzMX5k+Nz8YwjQquy2UApRg6dBkhkb3HmogMgMvinDVGhX3pwoE3U0fDJ7A108fkBU7vwdtIdgEMWKVZWoLeZUwaQbNYzUz/r71EiDDcPQ2JdaXIJ5lvMsf/tI2LH0Ek8C54AZv3i9/GZzkxfGQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751208574; c=relaxed/simple; bh=pFGS2kiEc/N0G3vaIydPvptmrnOaCRrBrGwuipdCU68=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MmnJ7wcLCfrUgqOkJvuOrpUZYD9BwprVuSp8MEyEisZ5xfJ4Whr2MwOFFpdF6nDmYLJmCAu6dhsaSz6/Neoo4OERYjjFWYZUKeYE7aARvLdzJbHQylRiBzllGUcFFQoH61pNs7ZWiL36qatvJ9P9/agoaUhfe+U7fRwZ+74IPrU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mxYPLt2E; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mxYPLt2E" Received: by smtp.kernel.org (Postfix) with ESMTPS id 30D7AC4CEEB; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751208574; bh=pFGS2kiEc/N0G3vaIydPvptmrnOaCRrBrGwuipdCU68=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=mxYPLt2Ei6Xp0B8D1W89W9dLbWYGJ9JKyAxF70hCTQwyTAEM1dSO8lj4P64W3yM9k ffG2XorkbF3h+cT/tcmhyk9es8y3uMp7jZq+D9teNpQjCkdqfJhpvG1bT9wVeD4h/0 l1UhJIPzcrY2S9K+1CsXmmmvtpKeRIR6YPLAKLfmGoHBBM8CwtX2frNsN8zK2Qkxil IGiU4gMrtk1pHX6WYOxz+U4EaX80lG4TnvzovOk5NnKE0v2gP9rFbXnYpkcAmhNojR e9oWF5oFwOr251ChIKq6nuOVb9XZZKSHdXe4rcuLX0YIVRhGj506v0cQTfCWGe2tWj ZdEWS8MMNUJ2g== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 22A91C7EE39; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 29 Jun 2025 16:49:20 +0200 Subject: [PATCH 1/5] media: i2c: imx214: Remove unneeded parentheses Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250629-imx214_fixes-v1-1-873eb94ad635@apitzsch.eu> References: <20250629-imx214_fixes-v1-0-873eb94ad635@apitzsch.eu> In-Reply-To: <20250629-imx214_fixes-v1-0-873eb94ad635@apitzsch.eu> To: Sakari Ailus , Ricardo Ribalda , Mauro Carvalho Chehab , Laurent Pinchart Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1751208572; l=883; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=lT+DL8ngWL++0j9CuZq6CgjoGYM1N1PDlleDMdMd4Pc=; b=8FsSWEOjW0QZXaHxqk3NFXC0TyS1cniMckAY0BLTT6n8VUecCDGbcxHw3iEbokEdiH9KWpwiQ tplRy/aaouFCET/U0mWcJRmsARGqlkmzXEZEojzSOQ1nT1h1P0KCRfo X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Andr=C3=A9 Apitzsch The parentheses are not needed to calculate bit_rate_mbps. Signed-off-by: Andr=C3=A9 Apitzsch Reviewed-by: Laurent Pinchart --- drivers/media/i2c/imx214.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/media/i2c/imx214.c b/drivers/media/i2c/imx214.c index a0cef9e61b41be8ea76a6d6e4b8c9fc4060cfa0f..8e9b5c9c93b0888f3d6be857168= 711edaf050db3 100644 --- a/drivers/media/i2c/imx214.c +++ b/drivers/media/i2c/imx214.c @@ -1029,8 +1029,8 @@ static int imx214_start_streaming(struct imx214 *imx2= 14) return ret; } =20 - bit_rate_mbps =3D (imx214->pll.pixel_rate_csi / 1000000) - * imx214->pll.bits_per_pixel; + bit_rate_mbps =3D imx214->pll.pixel_rate_csi / 1000000 + * imx214->pll.bits_per_pixel; ret =3D cci_write(imx214->regmap, IMX214_REG_REQ_LINK_BIT_RATE, IMX214_LINK_BIT_RATE_MBPS(bit_rate_mbps), NULL); if (ret) { --=20 2.50.0 From nobody Wed Oct 8 10:58:52 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 84662230BC3; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751208574; cv=none; b=QAsALJIREUyqCy0vP6OwSzG4hqA6ekXkomWI8HMyctyEB7H/4cQUOnviVx59BV8eRv7UWUMIDA1+KTQA68+C1r9bekYLJsiCljo5V1bn5WGf9TQtK4vdtes5KIqXahE/uDC1m1qTCmyDAPSvGXpcR19S9Y9iRbBpVLhSmkTuLko= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751208574; c=relaxed/simple; bh=8RBuwyFX+i6bHp5zzF84JTuvvkCicfyrsCbN+9DU7Sg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pN+YJu3/P245WGNzXnUdlV9eZfdegMLBv+4Gkc/p+oU5JkBa13tLwgd+hFRRVKDE16VRP+PPeuYr3YePLINgyscVpD7KEYeplHtfWIaD+3HH1VkEjbIENf9eWkX4dykqabBAFeCwRpDXCX6uACcJBnYQhrQP1bhEuF5LWtZV+Rw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rXAdziQs; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rXAdziQs" Received: by smtp.kernel.org (Postfix) with ESMTPS id 42E9CC4CEF1; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751208574; bh=8RBuwyFX+i6bHp5zzF84JTuvvkCicfyrsCbN+9DU7Sg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=rXAdziQs+YggUp3QD0cOrUjnmrz0D4N2nvdkuiqFZSkAeN8OecVuWLLoNZQHx1Cdn zCpqQmivSlGLXf8pR0syIBa9u1o0hVo9rhvQNlMps3ub0GzvSDuividIbUiMOJbpzR t01sPjMlRFL3Tk+oGTSW828bSIoZ6yoVQC+V4fS/cEoCKIKE/a8CQ24EtitR4dFo5w 3iWiRo3oqhnzRcG+HUJiLzz32m4bdD2AuSd5CRDr1RCeZtIPAtpJyyDxv8kcArRTOZ qSbfnVX8IaxoRmz7D40tylWEQnWl0iRWx4vOVC/SC8HeErRRB5XyEerFMRC4U9ju1n xT7zPsV5LZD0g== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2F1F0C83027; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 29 Jun 2025 16:49:21 +0200 Subject: [PATCH 2/5] media: i2c: imx214: Drop dev argument from imx214_parse_fwnode() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250629-imx214_fixes-v1-2-873eb94ad635@apitzsch.eu> References: <20250629-imx214_fixes-v1-0-873eb94ad635@apitzsch.eu> In-Reply-To: <20250629-imx214_fixes-v1-0-873eb94ad635@apitzsch.eu> To: Sakari Ailus , Ricardo Ribalda , Mauro Carvalho Chehab , Laurent Pinchart Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1751208572; l=1136; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=H8sbCYlOjaNz8MFSGRXI5+CWm2oj7b1ROZKZiNJw/+w=; b=EwHc5RkncTt1il5EMiaBdzTUq8h+sx9f1TwoYqosEzn6OZBYIkW//FTQ34PCkCHngr7JRVZbO u2pkNwFoWASAZITq5EHYyKlv9q3/QYXmrfq2mfTd7+iSW/EJkk/lOCr X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Andr=C3=A9 Apitzsch The device can be accessed from struct imx214. Signed-off-by: Andr=C3=A9 Apitzsch Reviewed-by: Laurent Pinchart --- drivers/media/i2c/imx214.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/media/i2c/imx214.c b/drivers/media/i2c/imx214.c index 8e9b5c9c93b0888f3d6be857168711edaf050db3..d9193bafa3cbb8fec2679200c38= d30077d1b11bd 100644 --- a/drivers/media/i2c/imx214.c +++ b/drivers/media/i2c/imx214.c @@ -1324,10 +1324,11 @@ static int imx214_identify_module(struct imx214 *im= x214) return 0; } =20 -static int imx214_parse_fwnode(struct device *dev, struct imx214 *imx214) +static int imx214_parse_fwnode(struct imx214 *imx214) { struct v4l2_fwnode_endpoint *bus_cfg =3D &imx214->bus_cfg; struct fwnode_handle *endpoint; + struct device *dev =3D imx214->dev; unsigned int i; int ret; =20 @@ -1415,7 +1416,7 @@ static int imx214_probe(struct i2c_client *client) return dev_err_probe(dev, PTR_ERR(imx214->regmap), "failed to initialize CCI\n"); =20 - ret =3D imx214_parse_fwnode(dev, imx214); + ret =3D imx214_parse_fwnode(imx214); if (ret) return ret; =20 --=20 2.50.0 From nobody Wed Oct 8 10:58:52 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 846C2230BE4; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751208574; cv=none; b=N0S0VgyFfve93Xhqn8dIHO4kcVaNgHlzmWkwW76Qw8DanmxLvarIsIVz81xlILZMZLg1yTEbFGao+lKC0iU5ekRKM8NZdmmZ2yzxBB66K91hC2yvtnBrZigTQ3eSb6srlKU7ZTnCXwiyaZ/0sswhu4YE6Qe9w5zReDn3s2LE3Yw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751208574; c=relaxed/simple; bh=32Dk3+stv2FMV1f/SlDwjNbE8izcpX6EH6nD+4pLYQU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lOB18iV+DhgUaeydlq0XdX1QBreF44+KG/O2gyjlLxT7RC3XQVmIk82HXbRAZUiY1tdPEWZZwht8dUIwpQOJXtRQzROj85XQLcd0MqCKocIcodJuGTQtFAHjdQpPvUd35PgrGYEGDBQctqUcAQof9LfgOr93SgOmPip0Ohq2zYc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JY1OTZ7I; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JY1OTZ7I" Received: by smtp.kernel.org (Postfix) with ESMTPS id 478D4C4CEEE; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751208574; bh=32Dk3+stv2FMV1f/SlDwjNbE8izcpX6EH6nD+4pLYQU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=JY1OTZ7IGk8GI+/OOnAJmSaGyzpwUUeTwWPl+fX3QYCqMQXl+OjP8ruCtE+9pH2rM PAiM+ktluwgEa+yUUr0YLZhNZC+FdsGxPQEZ/a2WYKlUoLGEXPBM6biJ6NW3kwK93Z wplEn4ma4urKdRTvznDU4MjxtnUx9MZPPVEpB81iwySYZY7jN36bAzX6V3DWSx6hAZ 3ukr7m0bOlRRvOGJnLhzgFIwkx2YESeE3ZDV2KKjDfjRSMBvhTRjDQ1TKoqCtV3G02 GSUXxmf9oC6wBMyJ3PFvfmyf/v0hxrnKsyX9BEVoV2Fn2vhy8usR6rmFZDuqvTL+64 sr2g9+IRVjlaQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3B9EBC7EE30; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 29 Jun 2025 16:49:22 +0200 Subject: [PATCH 3/5] media: i2c: imx214: Use __free(fwnode_handle) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250629-imx214_fixes-v1-3-873eb94ad635@apitzsch.eu> References: <20250629-imx214_fixes-v1-0-873eb94ad635@apitzsch.eu> In-Reply-To: <20250629-imx214_fixes-v1-0-873eb94ad635@apitzsch.eu> To: Sakari Ailus , Ricardo Ribalda , Mauro Carvalho Chehab , Laurent Pinchart Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1751208572; l=1452; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=cis5fHWWpVu5DfDmrxWq7MQBme/0c6ap6dmmUsyUgU4=; b=MrJ7RQvfxgUpNd59AD9NvPSsDOojWKRrzhXiQsY7fRNAClemWo/7q4/SmKqUB2WB1SFP8NpS+ A1wXsRV+hZGCMcowgqD9K8XmXBiC2+iVv2PE+oBVwQSyzuvnSWQbVi5 X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Andr=C3=A9 Apitzsch Use the __free(fwnode_handle) hook to free the endpoint when the function exits to simplify the error path. While at it, simplify return if parsing endpoint node failed. Signed-off-by: Andr=C3=A9 Apitzsch Reviewed-by: Laurent Pinchart --- drivers/media/i2c/imx214.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/media/i2c/imx214.c b/drivers/media/i2c/imx214.c index d9193bafa3cbb8fec2679200c38d30077d1b11bd..b84197ee5177d609b1395e14e14= 04ffa5b9a6dbf 100644 --- a/drivers/media/i2c/imx214.c +++ b/drivers/media/i2c/imx214.c @@ -1326,8 +1326,8 @@ static int imx214_identify_module(struct imx214 *imx2= 14) =20 static int imx214_parse_fwnode(struct imx214 *imx214) { + struct fwnode_handle *endpoint __free(fwnode_handle) =3D NULL; struct v4l2_fwnode_endpoint *bus_cfg =3D &imx214->bus_cfg; - struct fwnode_handle *endpoint; struct device *dev =3D imx214->dev; unsigned int i; int ret; @@ -1338,11 +1338,8 @@ static int imx214_parse_fwnode(struct imx214 *imx214) =20 bus_cfg->bus_type =3D V4L2_MBUS_CSI2_DPHY; ret =3D v4l2_fwnode_endpoint_alloc_parse(endpoint, bus_cfg); - fwnode_handle_put(endpoint); - if (ret) { - dev_err_probe(dev, ret, "parsing endpoint node failed\n"); - goto error; - } + if (ret) + return dev_err_probe(dev, ret, "parsing endpoint node failed\n"); =20 /* Check the number of MIPI CSI2 data lanes */ if (bus_cfg->bus.mipi_csi2.num_data_lanes !=3D 4) { --=20 2.50.0 From nobody Wed Oct 8 10:58:52 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 A9A0E230BEC; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751208574; cv=none; b=BKNZ1Oc3tAGDK7kiFucJp1mZ5WGAmkVjzeyF9CsRhgPoaql1OuKq6ZjSBsoNT5cpoHCVhZedTYpZMKjTS6boIlJSjuJA+msZ0GsVt+hKG8W9e6Tq0ySfjkBCwj9UuSyL1unS3UOMLDSgnLIMoIFffg8GJJfzEsX2xHe+2K3aePw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751208574; c=relaxed/simple; bh=HHCFQ4JI/dUulP883wPzwncQHxThZP/jrEtubFf6z3M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jo8iRInbNbIr1+QCSz5CuRiWJj/larZATMz7FV9ODdlp4jvOj3MqlHOwqN+hUK758tVoDadd2gCMyWC7vJ3cc1Pp892v/fpSMCdu04hhW1eIyJoW/m864+uvCIIhOttd8F1WMpejQ4KkBi5YXqRrs2Rya3nYBm3Spe5BrO1uipQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MScF0DyW; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="MScF0DyW" Received: by smtp.kernel.org (Postfix) with ESMTPS id 526C2C4AF0B; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751208574; bh=HHCFQ4JI/dUulP883wPzwncQHxThZP/jrEtubFf6z3M=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=MScF0DyW8mwTzrP8DyhEzsgpli+Rxj4alvh1WAblPEfJR6MnkoI+is2SevlyM9Q+t zeToocYTpeGgXKNup51Qs4BX6TKn+kTA64bIajVOXLH3n2QIZVdui6wFRO54vwUnB4 VdB7wLhQ/dwTkGLsHvUlhpCkHpugeQc054N0IXRjATbZiAzQaUW/Wh3n2Lvk9wVjtD ioD8uWu/AkWMD/pAis2NeDYHpbGlomsqTMbLzIAXjKSDASrdeLpOhSeQeOvTsxX+L6 3DLB4eVyMUlcwASWhPgI0MzhBE0exp/Q8NtDJQrXvTj8RNWK83wJ5OH3hmIz4dEd31 Ca9sy37U/4qGg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48A28C8302A; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 29 Jun 2025 16:49:23 +0200 Subject: [PATCH 4/5] media: i2c: imx214: Move imx214_pll_update to imx214_ctrls_init Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250629-imx214_fixes-v1-4-873eb94ad635@apitzsch.eu> References: <20250629-imx214_fixes-v1-0-873eb94ad635@apitzsch.eu> In-Reply-To: <20250629-imx214_fixes-v1-0-873eb94ad635@apitzsch.eu> To: Sakari Ailus , Ricardo Ribalda , Mauro Carvalho Chehab , Laurent Pinchart Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1751208572; l=8585; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=cy61DJ492FUgh7r4yJhsLHazreE9rqb3+/kYIW0bfHk=; b=GMhccfovyMTdJz7g8QRAmWNd/MnHvPJ0fnoLOiPMcBdqefCjUDcJHEygyxZCZXIWb0AjdnWl4 +vTs5ZU0QjQBLXtEpHV8bcIoscNy0SY/O5Z468k0iF4hhkv2m94a91V X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Andr=C3=A9 Apitzsch It is more logical to call the PLL update in imx214_ctrls_init(). So let's move it there. Signed-off-by: Andr=C3=A9 Apitzsch Reviewed-by: Laurent Pinchart --- drivers/media/i2c/imx214.c | 219 +++++++++++++++++++++++------------------= ---- 1 file changed, 110 insertions(+), 109 deletions(-) diff --git a/drivers/media/i2c/imx214.c b/drivers/media/i2c/imx214.c index b84197ee5177d609b1395e14e1404ffa5b9a6dbf..63cf30acdc241de2f9ab3db3395= 90da4af3d5102 100644 --- a/drivers/media/i2c/imx214.c +++ b/drivers/media/i2c/imx214.c @@ -881,6 +881,109 @@ static const struct v4l2_ctrl_ops imx214_ctrl_ops =3D= { .s_ctrl =3D imx214_set_ctrl, }; =20 +static int imx214_pll_calculate(struct imx214 *imx214, struct ccs_pll *pll, + unsigned int link_freq) +{ + struct ccs_pll_limits limits =3D { + .min_ext_clk_freq_hz =3D 6000000, + .max_ext_clk_freq_hz =3D 27000000, + + .vt_fr =3D { + .min_pre_pll_clk_div =3D 1, + .max_pre_pll_clk_div =3D 15, + /* Value is educated guess as we don't have a spec */ + .min_pll_ip_clk_freq_hz =3D 6000000, + /* Value is educated guess as we don't have a spec */ + .max_pll_ip_clk_freq_hz =3D 12000000, + .min_pll_multiplier =3D 12, + .max_pll_multiplier =3D 1200, + .min_pll_op_clk_freq_hz =3D 338000000, + .max_pll_op_clk_freq_hz =3D 1200000000, + }, + .vt_bk =3D { + .min_sys_clk_div =3D 2, + .max_sys_clk_div =3D 4, + .min_pix_clk_div =3D 5, + .max_pix_clk_div =3D 10, + .min_pix_clk_freq_hz =3D 30000000, + .max_pix_clk_freq_hz =3D 120000000, + }, + .op_bk =3D { + .min_sys_clk_div =3D 1, + .max_sys_clk_div =3D 2, + .min_pix_clk_div =3D 6, + .max_pix_clk_div =3D 10, + .min_pix_clk_freq_hz =3D 30000000, + .max_pix_clk_freq_hz =3D 120000000, + }, + + .min_line_length_pck_bin =3D IMX214_PPL_DEFAULT, + .min_line_length_pck =3D IMX214_PPL_DEFAULT, + }; + unsigned int num_lanes =3D imx214->bus_cfg.bus.mipi_csi2.num_data_lanes; + + /* + * There are no documented constraints on the sys clock frequency, for + * either branch. Recover them based on the PLL output clock frequency + * and sys_clk_div limits on one hand, and the pix clock frequency and + * the pix_clk_div limits on the other hand. + */ + limits.vt_bk.min_sys_clk_freq_hz =3D + max(limits.vt_fr.min_pll_op_clk_freq_hz / limits.vt_bk.max_sys_clk_div, + limits.vt_bk.min_pix_clk_freq_hz * limits.vt_bk.min_pix_clk_div); + limits.vt_bk.max_sys_clk_freq_hz =3D + min(limits.vt_fr.max_pll_op_clk_freq_hz / limits.vt_bk.min_sys_clk_div, + limits.vt_bk.max_pix_clk_freq_hz * limits.vt_bk.max_pix_clk_div); + + limits.op_bk.min_sys_clk_freq_hz =3D + max(limits.vt_fr.min_pll_op_clk_freq_hz / limits.op_bk.max_sys_clk_div, + limits.op_bk.min_pix_clk_freq_hz * limits.op_bk.min_pix_clk_div); + limits.op_bk.max_sys_clk_freq_hz =3D + min(limits.vt_fr.max_pll_op_clk_freq_hz / limits.op_bk.min_sys_clk_div, + limits.op_bk.max_pix_clk_freq_hz * limits.op_bk.max_pix_clk_div); + + memset(pll, 0, sizeof(*pll)); + + pll->bus_type =3D CCS_PLL_BUS_TYPE_CSI2_DPHY; + pll->op_lanes =3D num_lanes; + pll->vt_lanes =3D num_lanes; + pll->csi2.lanes =3D num_lanes; + + pll->binning_horizontal =3D 1; + pll->binning_vertical =3D 1; + pll->scale_m =3D 1; + pll->scale_n =3D 1; + pll->bits_per_pixel =3D + IMX214_CSI_DATA_FORMAT_RAW10 & IMX214_BITS_PER_PIXEL_MASK; + pll->flags =3D CCS_PLL_FLAG_LANE_SPEED_MODEL; + pll->link_freq =3D link_freq; + pll->ext_clk_freq_hz =3D clk_get_rate(imx214->xclk); + + return ccs_pll_calculate(imx214->dev, &limits, pll); +} + +static int imx214_pll_update(struct imx214 *imx214) +{ + u64 link_freq; + int ret; + + link_freq =3D imx214->bus_cfg.link_frequencies[imx214->link_freq->val]; + ret =3D imx214_pll_calculate(imx214, &imx214->pll, link_freq); + if (ret) { + dev_err(imx214->dev, "PLL calculations failed: %d\n", ret); + return ret; + } + + ret =3D v4l2_ctrl_s_ctrl_int64(imx214->pixel_rate, + imx214->pll.pixel_rate_pixel_array); + if (ret) { + dev_err(imx214->dev, "failed to set pixel rate\n"); + return ret; + } + + return 0; +} + static int imx214_ctrls_init(struct imx214 *imx214) { static const struct v4l2_area unit_size =3D { @@ -1003,6 +1106,13 @@ static int imx214_ctrls_init(struct imx214 *imx214) return ret; } =20 + ret =3D imx214_pll_update(imx214); + if (ret < 0) { + v4l2_ctrl_handler_free(ctrl_hdlr); + dev_err(imx214->dev, "failed to update PLL\n"); + return ret; + } + imx214->sd.ctrl_handler =3D ctrl_hdlr; =20 return 0; @@ -1115,109 +1225,6 @@ static int imx214_s_stream(struct v4l2_subdev *subd= ev, int enable) return ret; } =20 -static int imx214_pll_calculate(struct imx214 *imx214, struct ccs_pll *pll, - unsigned int link_freq) -{ - struct ccs_pll_limits limits =3D { - .min_ext_clk_freq_hz =3D 6000000, - .max_ext_clk_freq_hz =3D 27000000, - - .vt_fr =3D { - .min_pre_pll_clk_div =3D 1, - .max_pre_pll_clk_div =3D 15, - /* Value is educated guess as we don't have a spec */ - .min_pll_ip_clk_freq_hz =3D 6000000, - /* Value is educated guess as we don't have a spec */ - .max_pll_ip_clk_freq_hz =3D 12000000, - .min_pll_multiplier =3D 12, - .max_pll_multiplier =3D 1200, - .min_pll_op_clk_freq_hz =3D 338000000, - .max_pll_op_clk_freq_hz =3D 1200000000, - }, - .vt_bk =3D { - .min_sys_clk_div =3D 2, - .max_sys_clk_div =3D 4, - .min_pix_clk_div =3D 5, - .max_pix_clk_div =3D 10, - .min_pix_clk_freq_hz =3D 30000000, - .max_pix_clk_freq_hz =3D 120000000, - }, - .op_bk =3D { - .min_sys_clk_div =3D 1, - .max_sys_clk_div =3D 2, - .min_pix_clk_div =3D 6, - .max_pix_clk_div =3D 10, - .min_pix_clk_freq_hz =3D 30000000, - .max_pix_clk_freq_hz =3D 120000000, - }, - - .min_line_length_pck_bin =3D IMX214_PPL_DEFAULT, - .min_line_length_pck =3D IMX214_PPL_DEFAULT, - }; - unsigned int num_lanes =3D imx214->bus_cfg.bus.mipi_csi2.num_data_lanes; - - /* - * There are no documented constraints on the sys clock frequency, for - * either branch. Recover them based on the PLL output clock frequency - * and sys_clk_div limits on one hand, and the pix clock frequency and - * the pix_clk_div limits on the other hand. - */ - limits.vt_bk.min_sys_clk_freq_hz =3D - max(limits.vt_fr.min_pll_op_clk_freq_hz / limits.vt_bk.max_sys_clk_div, - limits.vt_bk.min_pix_clk_freq_hz * limits.vt_bk.min_pix_clk_div); - limits.vt_bk.max_sys_clk_freq_hz =3D - min(limits.vt_fr.max_pll_op_clk_freq_hz / limits.vt_bk.min_sys_clk_div, - limits.vt_bk.max_pix_clk_freq_hz * limits.vt_bk.max_pix_clk_div); - - limits.op_bk.min_sys_clk_freq_hz =3D - max(limits.vt_fr.min_pll_op_clk_freq_hz / limits.op_bk.max_sys_clk_div, - limits.op_bk.min_pix_clk_freq_hz * limits.op_bk.min_pix_clk_div); - limits.op_bk.max_sys_clk_freq_hz =3D - min(limits.vt_fr.max_pll_op_clk_freq_hz / limits.op_bk.min_sys_clk_div, - limits.op_bk.max_pix_clk_freq_hz * limits.op_bk.max_pix_clk_div); - - memset(pll, 0, sizeof(*pll)); - - pll->bus_type =3D CCS_PLL_BUS_TYPE_CSI2_DPHY; - pll->op_lanes =3D num_lanes; - pll->vt_lanes =3D num_lanes; - pll->csi2.lanes =3D num_lanes; - - pll->binning_horizontal =3D 1; - pll->binning_vertical =3D 1; - pll->scale_m =3D 1; - pll->scale_n =3D 1; - pll->bits_per_pixel =3D - IMX214_CSI_DATA_FORMAT_RAW10 & IMX214_BITS_PER_PIXEL_MASK; - pll->flags =3D CCS_PLL_FLAG_LANE_SPEED_MODEL; - pll->link_freq =3D link_freq; - pll->ext_clk_freq_hz =3D clk_get_rate(imx214->xclk); - - return ccs_pll_calculate(imx214->dev, &limits, pll); -} - -static int imx214_pll_update(struct imx214 *imx214) -{ - u64 link_freq; - int ret; - - link_freq =3D imx214->bus_cfg.link_frequencies[imx214->link_freq->val]; - ret =3D imx214_pll_calculate(imx214, &imx214->pll, link_freq); - if (ret) { - dev_err(imx214->dev, "PLL calculations failed: %d\n", ret); - return ret; - } - - ret =3D v4l2_ctrl_s_ctrl_int64(imx214->pixel_rate, - imx214->pll.pixel_rate_pixel_array); - if (ret) { - dev_err(imx214->dev, "failed to set pixel rate\n"); - return ret; - } - - return 0; -} - static int imx214_get_frame_interval(struct v4l2_subdev *subdev, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_frame_interval *fival) @@ -1457,12 +1464,6 @@ static int imx214_probe(struct i2c_client *client) pm_runtime_set_active(imx214->dev); pm_runtime_enable(imx214->dev); =20 - ret =3D imx214_pll_update(imx214); - if (ret < 0) { - dev_err_probe(dev, ret, "failed to update PLL\n"); - goto error_subdev_cleanup; - } - ret =3D v4l2_async_register_subdev_sensor(&imx214->sd); if (ret < 0) { dev_err_probe(dev, ret, --=20 2.50.0 From nobody Wed Oct 8 10:58:52 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 DDF62233128; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751208575; cv=none; b=BzJOnIMeDIPim4FZR0LR4TPVRjSZt+vC/wZNof8z6owNRj8PM4p7SHnL9SsrfaOwu4GcyVe68KA4W4tIVCCr0icWlLp2XkwCtVIfUwwzHQmnj4xqUkVpq/DcyGWCSCaWlGsinGD6GR5IhH3Aw7CbNV3wFXUGkKSYXy5yx83DVx8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751208575; c=relaxed/simple; bh=jVm7InTmmzD8MKv7ev68okVLYkTPm5dp3cUiYjOZ1uE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ee7+aUkz4E0axHi8MeNLF5t4G5tgW4bpojcAW8EZ86wi+rPvLrEZXVz/JzxkpgaQPmTtho8ijEuIMDsGL/iNn4t7Gj980U2ePMvzLuj5UlmKcIkNv7Ggqbx4NMjGU04cXd7pdpdmVmvUcdP62hA416e3VrbWVm3Tm9OiSXUkYXE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QLZPlJs0; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QLZPlJs0" Received: by smtp.kernel.org (Postfix) with ESMTPS id 607DBC4CEF4; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751208574; bh=jVm7InTmmzD8MKv7ev68okVLYkTPm5dp3cUiYjOZ1uE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=QLZPlJs0Vn36xlg4/cz6RhPUpwcfiPKObaoSA4VIW3j89trb67DD2+WrSP2HVTcLm JgPXOOaZfmF5U+qQZYpiLw08aA3fVC6p/e9GW1/mVXjmq2vGie0sQpRurDgSVGAThI 6tNnqxVsNoY/qbz6zLko9/tKWfSXsqRW9EvSpyT8bURX6HCJVMcP8DYW9d5m9oCLtL GBFkCxWZ6BYmwNFtT+jAEsUP33xoz86z0463XBehUlk73lakV0qqYWNF7NkS+FOLAR 2gpzeR7jf3+Lw4YTU8enoiAKEM3p6E94mfEk3NbPSqNRQEiumdLb0TCc9ng/bB+Bxc Ei56+JRjQ4RjQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5756AC83029; Sun, 29 Jun 2025 14:49:34 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 29 Jun 2025 16:49:24 +0200 Subject: [PATCH 5/5] media: i2c: imx214: Separat legacy link frequency check from PLL calculation Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250629-imx214_fixes-v1-5-873eb94ad635@apitzsch.eu> References: <20250629-imx214_fixes-v1-0-873eb94ad635@apitzsch.eu> In-Reply-To: <20250629-imx214_fixes-v1-0-873eb94ad635@apitzsch.eu> To: Sakari Ailus , Ricardo Ribalda , Mauro Carvalho Chehab , Laurent Pinchart Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1751208572; l=1164; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=fAmGDmfadAfG2+q/PfRs357Eh8ZGt/KKlqJTNCdh9uA=; b=uTy7Vr/Wz2r8Keavv7B3f00oF7RQ7FpLgLFTJhRmo6PbYIKYRQRaqolNWwFhwB02ms5fT36hg Ge/EdJ4CWRTDi5tqC0TuF3R/r9PdImnqhA41F9GWjPXNmrncMFfKk8y X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Andr=C3=A9 Apitzsch This makes it easier to drop this legacy support from the driver later. Signed-off-by: Andr=C3=A9 Apitzsch Reviewed-by: Laurent Pinchart --- drivers/media/i2c/imx214.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/media/i2c/imx214.c b/drivers/media/i2c/imx214.c index 63cf30acdc241de2f9ab3db339590da4af3d5102..52433775e9baddd8ab988e866a8= 3387d53c1fd5c 100644 --- a/drivers/media/i2c/imx214.c +++ b/drivers/media/i2c/imx214.c @@ -1362,18 +1362,16 @@ static int imx214_parse_fwnode(struct imx214 *imx21= 4) u64 freq =3D bus_cfg->link_frequencies[i]; struct ccs_pll pll; =20 - if (!imx214_pll_calculate(imx214, &pll, freq)) - break; if (freq =3D=3D IMX214_DEFAULT_LINK_FREQ_LEGACY) { dev_warn(dev, "link-frequencies %d not supported, please review your DT. Continuing= anyway\n", IMX214_DEFAULT_LINK_FREQ); freq =3D IMX214_DEFAULT_LINK_FREQ; - if (imx214_pll_calculate(imx214, &pll, freq)) - continue; bus_cfg->link_frequencies[i] =3D freq; - break; } + + if (!imx214_pll_calculate(imx214, &pll, freq)) + break; } =20 if (i =3D=3D bus_cfg->nr_of_link_frequencies) --=20 2.50.0