From nobody Wed Oct 8 07:26:38 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 9033A20AF98; Mon, 30 Jun 2025 19:07:01 +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=1751310421; cv=none; b=nE47C0bAcLNk/Vx4QD5xPRjEk/bc6gTuStiZxjbpmrZXiTeATErL8zBVNZcefNMsYaM38076Tp1YiarQQraH6OXPNq6t69IvmO/eRwDU2bkj0gj8m1sgYoFHarhVfAZqiq7fDD2N22yrllZWJgVCRxOtYkIQDJM9Hl/e66+UY0g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751310421; c=relaxed/simple; bh=NsEEdeaScrNvRlWgHTamA27d9Qr5O3nCYMeIbvgGo+g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GfjKlXYBiOgFYR/eaODazPii0abpR65SVVhz/1Tb1IZQoxoEnAyRR/jOMgOc5XBg5jtMRnnj9QPEKGJEOmvlhIaVw4vvYmtrZPB9QEfI2XEB28Z5io1DQ6wJz+p0sjocCG5odPJsuPWTya77BeV1pUCIRrj96u5EbVQ0W0aZyOg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=luyHbFhr; 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="luyHbFhr" Received: by smtp.kernel.org (Postfix) with ESMTPS id 6C686C4CEEF; Mon, 30 Jun 2025 19:07:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751310421; bh=NsEEdeaScrNvRlWgHTamA27d9Qr5O3nCYMeIbvgGo+g=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=luyHbFhrQTI2BbNS6Yx5cEal34x42vYxQlUB8lwNoFvayrso/kvieRt6Hmq4B3hym P1BQxvFWYW06hHaWRWxzp/o1vmB2rTzndQLEcVyaSenbAVTDO+6gg6pbaXj1QbgVHN ANez+Tsac7B/D7qINGeVNN1kSkOr2nTtihs36zR1ZRVLJxDwiXmRRG/Pft4bCEJId1 NesFWo7hVxmVu22HcYgUUqkMbbR9uSBJx5ecHZ3txpwgrz62GIvMgnt1dHyWq3kgFt bHXMgCgZyiDEP4Vt/qHvVecxMxpmeO+1lXKgfMJJc+yeduebSQdmeaQewCjs8pB+WN 1JyfwmSU8SaVw== 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 64CA9C83029; Mon, 30 Jun 2025 19:07:01 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Mon, 30 Jun 2025 21:05:21 +0200 Subject: [PATCH v2 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: <20250630-imx214_fixes-v2-1-cd1a76c412c0@apitzsch.eu> References: <20250630-imx214_fixes-v2-0-cd1a76c412c0@apitzsch.eu> In-Reply-To: <20250630-imx214_fixes-v2-0-cd1a76c412c0@apitzsch.eu> To: Sakari Ailus , Ricardo Ribalda , Mauro Carvalho Chehab , Laurent Pinchart , Markus Elfring 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=1751310420; l=950; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=e5+tRksV+Fgl0BxWMBz64V6Vf1Cb5OmGU/GImJC7m7A=; b=8tixpZey59d010cuk2qUfM6JIln2FMlXURuGTGQANKhAnO3Kx+0wtuCINSlZn1eCDTxJsMsa1 FY2l+SxzSTxDcQlwMrxqCtdWjOyIemQ9rIFmFJom0R4PhbJa45ptRZ4 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. Reviewed-by: Laurent Pinchart Signed-off-by: Andr=C3=A9 Apitzsch --- 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 07:26:38 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 E44572EBDFC; Mon, 30 Jun 2025 19:07:01 +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=1751310422; cv=none; b=KuPTjBH5EFP9s0RZK30QTAyztpCzuOsKNa2AvOtkLrjQ3GHf9aksUDk6mgHegtG/CiOGdGght8X7xN4aUIRiZoWVrM+iEpRHR8MCWjF5n7WWm8Q8cYS/VfI19Z6f+58UZJWg7yHipY5ZyOW3HGOtuO6PlhNxi5DnCEIX8vC0xxA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751310422; c=relaxed/simple; bh=PWNLGqQvd1xRaJ5tWni10l1Xvs3GUdrsPLnEj/U5JIs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EVpCgSKBWV3nzz2oTLO2GuJF01ag3ZZB0SgMJmPJRNDOHonCnGHAfQVZ5D+x+CI8XPROht2KCEZByf7S/pNkHm0GUMqUYFYkh1V8SqNMywcVlk0gOwOdIJcJmpQh5KnaQLlRw8nhGk6HvyY701KiOKPbYH7ZxCYVInkvUijm/eE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=R7KngRev; 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="R7KngRev" Received: by smtp.kernel.org (Postfix) with ESMTPS id 7AC02C4CEEB; Mon, 30 Jun 2025 19:07:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751310421; bh=PWNLGqQvd1xRaJ5tWni10l1Xvs3GUdrsPLnEj/U5JIs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=R7KngRevJvHozRN14ltrrY+EfTzJG15+PGQ1zLP9X+cNSy81anFQZJYgGK3Iq8pmo kp3WZQn0r/8ASewE2YHU5vPY38G9h3pRMVJ4Kj/nKMhtFCUwQAIaYT25pz+t4tjMUd tydlPlgEy7LAmg64W0X+qDNd9x6gBGRS52N+fxfAx092OIdRlMZMjoKuN7y18bcde5 LTZYwf5HaVcJ5oPTzcQNglEZXVPek1aXjJyl4ED10UU8R6mhKX9nTwVPaM0wP2I3qt pKaFL2v0CutA40LrOY1pbw+ROZ+iZ1uFGgx07rISx28bmGfrxyEGDk1sdo7IpejjCh T5xpxZx9ve/jA== 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 71B9FC83033; Mon, 30 Jun 2025 19:07:01 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Mon, 30 Jun 2025 21:05:22 +0200 Subject: [PATCH v2 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: <20250630-imx214_fixes-v2-2-cd1a76c412c0@apitzsch.eu> References: <20250630-imx214_fixes-v2-0-cd1a76c412c0@apitzsch.eu> In-Reply-To: <20250630-imx214_fixes-v2-0-cd1a76c412c0@apitzsch.eu> To: Sakari Ailus , Ricardo Ribalda , Mauro Carvalho Chehab , Laurent Pinchart , Markus Elfring 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=1751310420; l=1203; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=8u7kv1mgw/QKJdeWTXhTPT8LKCS1xuLLRvq/xmXOvBo=; b=ToWSc5B6DJjGz2WMGw4W7TFI5mokx8CV8T18Q5O6VEdbrQF/Yx96+MnE0ZCf301wY3Txnm9OY czNV4TdIxIyCGsfRZ4dg0F21bhGjVLEo2YA8lunnMFZzAX8YastMotQ 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. Reviewed-by: Laurent Pinchart Signed-off-by: Andr=C3=A9 Apitzsch --- 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 07:26:38 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 E43E92EBDF8; Mon, 30 Jun 2025 19:07:01 +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=1751310422; cv=none; b=m0L5qYcIMd5CqCg65kI4G1h4xQFnpyFBCG9oDaQQZQnqk8VuuYmUsaN5b/NRI+YvuMJ04iJjzAjhhyvtA7t8cras1RAcbxGMcDbgEUBZoLt+wdeVnJRSbwjGD3ly0Uilh0//S6NPRhSGKMyRYtuzDETGUk5HhyASxYVZ1cwESLU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751310422; c=relaxed/simple; bh=DCqftJPX1RV1wSFgujYAjvPs7dBQkHAukdEBsj3VPU8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ac6sTt7WsIQWOJbSudd12pX9HK2dZRqRR69RIvPZr+EToDViB8JpLyExebn845v/9Vd0843IgNmJ3ZPPJIxrogxXg4zrKVmUiO2I6TlYJk9x1dektWCo7pGpQ9vDMpjt7wXt9dko6Jd4438aZZGh0GHtH2tmREOfR38WrWkgmXo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jHpn+uC8; 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="jHpn+uC8" Received: by smtp.kernel.org (Postfix) with ESMTPS id 8898BC4AF0B; Mon, 30 Jun 2025 19:07:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751310421; bh=DCqftJPX1RV1wSFgujYAjvPs7dBQkHAukdEBsj3VPU8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=jHpn+uC8k/tRadfUb8og0qlp090wFJy50jhov9wqifbcf5OVJf9Ar4KnwRTpoyiK6 tvh+h4Jqxp55CCjXDImtWk5umfZYvAvrUroU2PRF9znYEFHh5CabxTZ9YqefZVuvWz xA9btESS6aDfTrTzesxrGSTL7bGljXLm8T9IHLvXiBvgDDSvd2y8DSnM4T46Xzcpd+ RXsHSBpzgdbPeOxY0Slr3rpVh7Om2ARzuyREU6h91RueFkMs52/JP9e8yzdowbVrct NYri/+fvTU6IawI1fe3nnuSAM/br/DVUsFmNCAPZQFfiVKPYcn2SGzdu/IZWaQiUIo gJc3G/jBi9Hmw== 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 80EA2C83038; Mon, 30 Jun 2025 19:07:01 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Mon, 30 Jun 2025 21:05:23 +0200 Subject: [PATCH v2 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: <20250630-imx214_fixes-v2-3-cd1a76c412c0@apitzsch.eu> References: <20250630-imx214_fixes-v2-0-cd1a76c412c0@apitzsch.eu> In-Reply-To: <20250630-imx214_fixes-v2-0-cd1a76c412c0@apitzsch.eu> To: Sakari Ailus , Ricardo Ribalda , Mauro Carvalho Chehab , Laurent Pinchart , Markus Elfring 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=1751310420; l=1454; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=tZsctISDnJnONVzhuovrPsRYlzaU3GibT4KV2gK2N3U=; b=sOBUZlCZNxB8y8lgX1Eu43HcTcTRBwONrDdF5xbtn591NECKv0Mo3v1NQNY3dCEbS51EmR9cb Fs60WG8VdZ+B4Mul/ZoXA9ygNZC3UskjjfjIwkTwz2omhTy4AvUIq4F 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. Reviewed-by: Laurent Pinchart Signed-off-by: Andr=C3=A9 Apitzsch --- 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 07:26:38 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 B99D82E5435; Mon, 30 Jun 2025 19:07:01 +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=1751310421; cv=none; b=SK7NLc1gi4/pRi9yUf7VH6j15nMYGk9c2Yxpom5frAKg7ryYYa9Vwvj5F8dSSNXy0RhdvB4UT+P0qtXHAXF6Rn9RyPXVfATuWd26XW1OzkQYbzopmrGgF0tjGna9ZzaTLn1vnIbgyhFAl9Py5UyZ+DD70TrKim8vUR3ImgZUUYs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751310421; c=relaxed/simple; bh=fCnaqJVH2QyFlPhmabLGbKJsxUWROhxgDmJlvR1v5jY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kvZ4/KZkNGiPFEX0bf2mwHiM2MCdTwjauFkhrQU1KvyiN89FU9IXvRuuKxK6BpHmYjbQuHUsENrYLYk8QLWc6518f8lIummIWQ0xp7QP+p/C5CzDl+axaGc6KkyKWQgtRKFzLzf1ABU676So+jCqjnVsB5v0QSDnqRQFjPvWHEE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Nw63Guq8; 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="Nw63Guq8" Received: by smtp.kernel.org (Postfix) with ESMTPS id 95B5DC4CEF1; Mon, 30 Jun 2025 19:07:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751310421; bh=fCnaqJVH2QyFlPhmabLGbKJsxUWROhxgDmJlvR1v5jY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Nw63Guq8sasu8xSgsPmY9zlPP03tls65tgW1z3gUgf2kjbTFqNHyZdHsPD8A6YqTg nzbUBcn5Gag2+PQsoOeY35T6hlFqLXkTWe71c7R6HdQPbQEHm2Aosb7oyOv3TFHCvj Tuk/3DIqSzhrJPrCu9AbVjCQtzstANiGruhD7NeYEIibHWKlevBQynpIXFZSBcJyY2 ZjJnGP5enJsGVHEdmFD5P4MIQO8ESC2Qmzx8gLbT+1MY+yzTFFGoStDv40d2X+2N9o EdUQ5Cj2tQ4wKLHwwpqJTVmi/ljeUbOlA7CkroNOTT7s9NfpSH4CPLpjJcw9G6qxsf iRsVjO9Wd1mJQ== 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 8E981C83039; Mon, 30 Jun 2025 19:07:01 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Mon, 30 Jun 2025 21:05:24 +0200 Subject: [PATCH v2 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: <20250630-imx214_fixes-v2-4-cd1a76c412c0@apitzsch.eu> References: <20250630-imx214_fixes-v2-0-cd1a76c412c0@apitzsch.eu> In-Reply-To: <20250630-imx214_fixes-v2-0-cd1a76c412c0@apitzsch.eu> To: Sakari Ailus , Ricardo Ribalda , Mauro Carvalho Chehab , Laurent Pinchart , Markus Elfring 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=1751310420; l=8652; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=5/bWzlVBtH+nQfO/AKXIKfueLmQW3UKc3ZPKKCLKQb0=; b=bP/lN2uDQc3NNs+LocPphCatBxJTrHjbK9zESrbs7X4fNbr80Grwv978iSRhe0OfulMOV8uio LuvGQ7ZnoObA0EdmIKR0rpPFS5Y4C6MFa7d/qfbL/DIokgmpv7qhhkE 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. Reviewed-by: Laurent Pinchart Signed-off-by: Andr=C3=A9 Apitzsch --- 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 07:26:38 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 D3DE12E62AF; Mon, 30 Jun 2025 19:07:01 +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=1751310421; cv=none; b=S2P2l6mmL6D48j2+yXse5YDTDk3WYLALMG46brzABs6TPsAfqxTebBnuvQOX4/CkqZOjZ1qgib3qIwJecVWS7VfxsK1+Vt63EU6Pqw+fSLt2g6W4hrX/kZxzcajSgEWJK9C2W0x+xl5HKqIFFFbAljkCmkbrL+kSzSYezVZk4pA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751310421; c=relaxed/simple; bh=1oA5HYoHDlOdLDnH2gUHr3xPvXZnlg4xzE1bc8Tsssg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=P8kWHGCHCqe6jTwUaRysnv7Nb1JAm0u9Gw99GSTTyXWfrjREq0EovFVAImdRV56wcxe98CyA+y+F7i5QdlSctHA/TAqCnCpipytkHLJ/iGq1LZ47HGzsXL40Xi+M6EHmDnu6b8BrGMojpgRmZdQXRB6ZvNgHQsROhW2dx6yffIc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MDQWat00; 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="MDQWat00" Received: by smtp.kernel.org (Postfix) with ESMTPS id A7CCBC4CEF5; Mon, 30 Jun 2025 19:07:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751310421; bh=1oA5HYoHDlOdLDnH2gUHr3xPvXZnlg4xzE1bc8Tsssg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=MDQWat00IX0M+hPXctSam4UpLCDAAG7PQKUvBtEy/G3DuCNUZ2tu72yRP93nZQXLL fJ5pKLfUcnh3MW/UjBo1xphtffmVDWoSnHYw7O8bQHzbnwXqY0so/UZEiDLgscCQ7K a1ZP+X+rx4i2BkS5ocsKEVq/q5e1iuVHHcBHiJD3liU7CB4pfVpG4gof2fEzORGWLm yy1dxufw4r++S3PXMgLSDaL6COmOL/7g3vY211zJOeCBg4pI5YUtxFyLfGDbj06evJ pDfpfjomqQXETmVLGMMRMKfld/Ug8sf7Qgek0fxNp8Se8lUxqDga6yYMYtK5Yxtd3Y /bUf6Exl+/jTQ== 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 9F798C8303A; Mon, 30 Jun 2025 19:07:01 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Mon, 30 Jun 2025 21:05:25 +0200 Subject: [PATCH v2 5/5] media: i2c: imx214: Separate 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: <20250630-imx214_fixes-v2-5-cd1a76c412c0@apitzsch.eu> References: <20250630-imx214_fixes-v2-0-cd1a76c412c0@apitzsch.eu> In-Reply-To: <20250630-imx214_fixes-v2-0-cd1a76c412c0@apitzsch.eu> To: Sakari Ailus , Ricardo Ribalda , Mauro Carvalho Chehab , Laurent Pinchart , Markus Elfring 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=1751310420; l=1224; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=B0DoG/QzE0dwOg3xIuySaJ133mLZqVs0+/AN502VxYw=; b=lG0lxn/StKH0FQAb/9jjIFE6k22V29bS9210YQKnoanP22iorKdSgUmML+KnrEC1JQSGRo3Wp CZkKn2iRn6XB+VCLz/YJRzdjuIH5u8jWN3BlXkiL1I8QVu6nYtVhCyQ 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 Make it easier to drop the legacy support from the driver later. Reviewed-by: Laurent Pinchart Signed-off-by: Andr=C3=A9 Apitzsch --- 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