From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 BBA1C2E093F; Mon, 15 Dec 2025 07:30:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783817; cv=none; b=AAc3sqZ70A+SpbHecYWO/pqDsTvibfbGX96nZylORcGCLzB1Qusek191sgLgTdAZvL3Lp2zNbpoDRpLItdVj6TJJqjb+YWYG8OP4TPnrkMMc392ZnZDpOcXVvbHiM5ujJLOxaEA00Te5cVws0I1qM3a3dYAIeVKcAsoIjVt+OqE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783817; c=relaxed/simple; bh=cWMNTcDu8x9WNg3vTB3u75ylHzVA7Jm5rmsZD93vNPI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=c4gAMg26O7Qm0gErI+LqK53XjN3fHIrBaJ/MAnej5qZedT/1XUWYSuw3NfHhwABC3tWIbUdtRyaRaq+QtSioIJ4IBWQwC5UUJi0xb+MK0vHCNdIkF8TCtbcylGTeSs3gnZNWK2QRG5+kIZVll1w5IwMN5Z2Iwa2+na56lbe2msg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=ntnVRuFD; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="ntnVRuFD" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 87CF7581; Mon, 15 Dec 2025 08:30:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783808; bh=cWMNTcDu8x9WNg3vTB3u75ylHzVA7Jm5rmsZD93vNPI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ntnVRuFDM/I5/Wwqi8e9aWRyMJPwEmCkXjsppBbysiFJumztcHlp1G+VAp6L5S+XS sXQKFgtt5MlFybiYmIqryO05GvW4bvPymOVoUQGe0+kbkmSK6hjSN2y+I+CXSpVYdi QFSXZ1xth4msu1rhZy9pqDCrURnWe1y+xTqqh+Q4= From: Jai Luthra Date: Mon, 15 Dec 2025 12:57:57 +0530 Subject: [PATCH v3 01/16] media: i2c: ov5647: Initialize subdev before controls 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: <20251215-b4-rpi-ov5647-v3-1-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1466; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=cWMNTcDu8x9WNg3vTB3u75ylHzVA7Jm5rmsZD93vNPI=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jXfgOSODFaDUf4otzGmv2Je6hSqZSKZejNP IvmKVS8ogyJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+41wAKCRBD3pH5JJpx RVHmD/4p1MXEacx4Gq4a1j8G/J7UjuZI3agNNEsrkTPW7btSMiZ3LhtIibRT5gUrHmLDcp6EjMw e5y/K40UJjVmdvzzXCK645RHAhSbrs6SeNrUlqrIdi/YU7P5ZkadiT1a3HchkfPXKE3B+ou9UFs PYWXqiTmDS3eTOBF/xft+aljfetydcdpoMEX/Ul1vbsPEFSGEPYTPtWUizj0bWJ8a8JQo3ieMj2 hCw68upsmyvLZi3ibBURdm12xzYSn19DgLtk6wqT4WgVFOHc1qBaLExuRtiwTV18cYGmBbotq9q YwauPWprfjMn3rlaRzkyCMy9cnj9BhA/jlVhQZeqDzzvoImnyrfZ6TKbO8extFJ4/s3cgaJXZ6u 5a7o21Trz/so1VWsK59yjgoyvwabWL3XsCkopfGzaKqjPLSweW4DBH9dPrJPoQ182TG18cL9w23 zxx0Nfe0vc0QK/pnox7uOdFBkvDKItXlprf6/pCrwzIx1epgauQAFM7MDOOqxiIforqzgivf61D vpG/IfMM96b09bOezMe6aItVxb/IBtEAqcm4o8G3oz0Pg51G1/Fqy36XFMx4f6OhKxxAZlsRCDD 80faDHNRBGVaXcc0bW+nAKEpOu1Cndp+oD5ZE/J0f8Q1y82CNID7OZcbeIgN3uOf04vVNTDByUy rEVegmN9BYiS/yw== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 In ov5647_init_controls() we call v4l2_get_subdevdata, but it is initialized by v4l2_i2c_subdev_init() in the probe, which currently happens after init_controls(). This can result in a segfault if the error condition is hit, and we try to access i2c_client, so fix the order. Fixes: 4974c2f19fd8 ("media: ov5647: Support gain, exposure and AWB control= s") Suggested-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index e193fef4fcedf4661564c032cd7dbd80a9fd30a6..f9fac858dc7ba754bdbebe1792f= 6fb0358781408 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1420,15 +1420,15 @@ static int ov5647_probe(struct i2c_client *client) =20 sensor->mode =3D OV5647_DEFAULT_MODE; =20 - ret =3D ov5647_init_controls(sensor); - if (ret) - goto mutex_destroy; - sd =3D &sensor->sd; v4l2_i2c_subdev_init(sd, client, &ov5647_subdev_ops); sd->internal_ops =3D &ov5647_subdev_internal_ops; sd->flags |=3D V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS; =20 + ret =3D ov5647_init_controls(sensor); + if (ret) + goto mutex_destroy; + sensor->pad.flags =3D MEDIA_PAD_FL_SOURCE; sd->entity.function =3D MEDIA_ENT_F_CAM_SENSOR; ret =3D media_entity_pads_init(&sd->entity, 1, &sensor->pad); --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 460A0329371; Mon, 15 Dec 2025 07:30:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783831; cv=none; b=ZCTgW7Irg4tPVZouyMTK5GYBlXRpAcxuqfak3KxZnaCyHRZURTApZShFU9UtXJ1cB6hisDP4TfGgyKnkqL9Z5dWSEGltepfOIHUrCjmGeTn1pZN+a3E4QWW526CvtXo8tyxxeuqCzTTLd3ah74B5hMizxLHb9mrDMcCajrdNm/8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783831; c=relaxed/simple; bh=PW+/8dl2mQGpTkC+eShCSuNoV+iHnXMHKa+UcCLLYY8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=coP0/RMVlYCXt9HWCuFOW80RfhJ9aph4cw9Z3OWETqfRiCgoCI0dVikUTdH4BuhgG8zTNEvTHO7q4YOUgO+GYIJ50dk37NmoZM2ZJwj8MSRGRwJrWC/iBrYmBd48qyNpfNhXWfBkfNZ5YKwGiQk3ZXIGAzZlqJENofxjPuEhQUE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=om6KZSm5; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="om6KZSm5" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 7519D581; Mon, 15 Dec 2025 08:30:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783824; bh=PW+/8dl2mQGpTkC+eShCSuNoV+iHnXMHKa+UcCLLYY8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=om6KZSm5YtIhszYVYrlPCUfuHpCs76uhatLjA3Xdq5c0Qe5JTiQFdWWho1Wkv/Sze XpWgpo8L0PM937ubtqV1A0QCUiv428XVBhK/4qV7wR4wcmNFZmV9HAwgOCel9Ey2SK ZPKafP0Pqds3UR0sj6wNBafjcrRPwBXEATRJzUps= From: Jai Luthra Date: Mon, 15 Dec 2025 12:57:58 +0530 Subject: [PATCH v3 02/16] media: i2c: ov5647: Correct pixel array offset 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: <20251215-b4-rpi-ov5647-v3-2-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=944; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=BagRXN6sZL/zObcXhgJy0qmX4s/f+WU1Te2BiQiP7r8=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jYUoq5RqEi9WuP8hiVRrNnTODc1wIMKRXMT Uj6ueZTnBaJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+42AAKCRBD3pH5JJpx RWjED/9Ocafy1CChCYRnROIsN7WXNp5cOuR4u3O4KQwhpVmCt9/N4qM1xekMUhI6kPjpkY03ObX 0pRMQV6DR48MzMVJSCZT1A2xbkSbo2hSXhCmHsgDIQQwswihSn08k+fMLqvZm1k/Gp/fxGIMPEx HHZ1C/BAot6yKlSJillotLeB/CJNqrECmtZfbC5aewXjfiolnTOxaquLZLbUGs1VjZNHYX1nZux ouBA3Z8fFKeWIoLqzujxh4ZO+UchlzdOFm2TIADzny4dMVE2TBGSwZQYTAjav33XFn7xha2sdD6 ZTgBcTo15IPz+X7jzzKsbEFmnmxk2x2OBoXWrDQilfTci2BT66gAMUayCUiAQ8GzSlo8qjiX0OY IWRelWb6iPPlFYZsJTLxDgQP5PF8QV/nIuuJOnVIjoJcAADBgqOIKSwnUu4ae675xqCdNnjOLQw xShI8Wc0AP+dXFv7WHzmtWSp0IEFO0lubDnQ7ExvBE0fhzylmrF984IjcVZlueSfwrx96/SOSue BN7Fiz1JNaEiZuPPPAu5gbIkWKA973W1DIOedTflvqOvIM6Hz5ADJTari875H6btPw2RE98LjK3 CQ5Wyb8CrBcJybSAKdI3GUxA69WBRdeJkQNTdw4pBnThvPmS8Bn6WjiD7m/jjby7Ufc75xAAOYM EM6VoKs0z9ROC/w== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: David Plowman The top offset in the pixel array is actually 6 (see page 3-1 of the OV5647 data sheet). Fixes: 14f70a3232aa ("media: ov5647: Add support for get_selection()") Signed-off-by: David Plowman Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index f9fac858dc7ba754bdbebe1792f6fb0358781408..d9e300406f58e554de12d906284= 0353bdf7a226c 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -69,7 +69,7 @@ #define OV5647_NATIVE_HEIGHT 1956U =20 #define OV5647_PIXEL_ARRAY_LEFT 16U -#define OV5647_PIXEL_ARRAY_TOP 16U +#define OV5647_PIXEL_ARRAY_TOP 6U #define OV5647_PIXEL_ARRAY_WIDTH 2592U #define OV5647_PIXEL_ARRAY_HEIGHT 1944U =20 --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 B6FE8329E54; Mon, 15 Dec 2025 07:30:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783844; cv=none; b=BnSmeIaqSF6llXvhzA9+WqQ2DMWrSxRu/506+FoRpqqz2iFVIrfpasnkFQKBwZ+yqo9tFMGBpywVpnUTI0nVaLoJjwpEGsDPB/jz9ceycmrdB1DNWPnY0PK0GKhDK/zXFJmg0+p3MyY9qmeMWsj8EeLinLiYg5w7ENGUS/Vw5fo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783844; c=relaxed/simple; bh=ECDfT216IS7XDAHxl6JD3dcTZsCiJMFAKz8PveO6GBQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m7UMTz+0W9chxTFRUPUwYGExskpR5yy7ciYL4f5VpDfbaxmTvJY+3YzGeDV5VAtw4zF06M5bJBhJK8YbYy8kTG/KayQfgZe8x+B3j2PrkDg34PGA563uOBrDjPxWjhP6Cm5WqwPQy7aDChMlrUJJ0fq5DGSTXcKnGwTiVnB5XvY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=MgKiMNVB; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="MgKiMNVB" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 4E695581; Mon, 15 Dec 2025 08:30:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783836; bh=ECDfT216IS7XDAHxl6JD3dcTZsCiJMFAKz8PveO6GBQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=MgKiMNVBU0+E4tbrBJ3mF2WqHz7HKRH3Wj0g7GuVj8SXrXwKB2PIYwEXfX+Y8u2pH RxxOfoqaWfACnAh2qUWXbPqx9I9aN65iQHWDZtmTq2UW0Hs068ayBj4wBG0mJZlfF4 HLhDa/C6kwCx5t/MpJ55B2S54BQjE63f4rBKEB10= From: Jai Luthra Date: Mon, 15 Dec 2025 12:57:59 +0530 Subject: [PATCH v3 03/16] media: i2c: ov5647: Correct minimum VBLANK value 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: <20251215-b4-rpi-ov5647-v3-3-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1008; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=EeooS5E8RZpQuz7+4w+98i6AERrcR8y8PJ4LbLlm9Qk=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jZqR+XkIa38lWseOa957PfKwDR4MEUZvEJZ oEKwXC2gPGJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+42QAKCRBD3pH5JJpx Rb87D/9UbRsQDn3A2djYrU1TIDVkAyxtURGdAw3BSZOu4+vnX+6NMPj5cCrIC0u4QBb4xPqb3QS g2UiISclCHfJy4mdhhQWayeB6bJOTgacncCq58FWpdxCx3Eu/3XUmo4xwgB07cXdw0ap5vVeM/f yRclQWcGw07aSnhOqwR4Cucwqgj0PT+F87WRvJ0FGtz3FuQaELDZORLwnJqf+tgCkXp+/ZZaVEB DdI81kiwN44JED3iN8HYXgHHXd9XQ7qSRM0mjJ541Lc7HqFcxx32RViAuAKYd0LkpBbNIoTgIWb tx6QxjUT82byQMZsqIrMx/eZoTV7TxiD8nM+Npma324wsqybSADNl8XxC1fGfSxKoFms3cpHjhP rz2y+QOiglKM2bHLoUo2rC8dR3hQe3VhPP+SqDF831dYuaoNqElkoER0FieFEVy5PRdKVZLEail 9IsHkJY1SLrHISpmYTH/t4DbhJUlpwrqGXFafPI7cSRgGX5S9zhUfLU0s00Mv94Vsu6Bbc0WUnY NUxVAz5RQWVcWhb0HG9OI9fhsK/Kt0KMTOxDQwOO2iDAUJGmOP2HJXeqg/3IvYz6RC18930Mc5o rrvXxwv5Jxzzb9QmtYYxmtvYvAutidFLrhsZYsO742KLTHP9Oz5OBDA0dzxnK5AFZVSGNhOfSdE ng3iA1eQbm8215g== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: David Plowman Trial and error reveals that the minimum vblank value appears to be 24 (the OV5647 data sheet does not give any clues). This fixes streaming lock-ups in full resolution mode. Fixes: 2512c06441e3 ("media: ov5647: Support V4L2_CID_VBLANK control") Signed-off-by: David Plowman Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index d9e300406f58e554de12d9062840353bdf7a226c..191954497e3dba4b1de4094b2ea= 1328a6e287003 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -73,7 +73,7 @@ #define OV5647_PIXEL_ARRAY_WIDTH 2592U #define OV5647_PIXEL_ARRAY_HEIGHT 1944U =20 -#define OV5647_VBLANK_MIN 4 +#define OV5647_VBLANK_MIN 24 #define OV5647_VTS_MAX 32767 =20 #define OV5647_EXPOSURE_MIN 4 --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 31119313525; Mon, 15 Dec 2025 07:30:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783860; cv=none; b=Rv5Jb+oPpBjj/KL+gxe6+hjXPIU8QsxOf+nV3gUXU9w2sProkukrophKPwnNUdHq8qmYwyZ0uzwo6jLLe6PECq93F5L9FPqYNJeO3lGRia+RTKS7lEw+cbGJFismneXR3IbS8HX9LDGb7EMK+ijtiR/ISbEXmbreLpH33xK3C0o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783860; c=relaxed/simple; bh=HyXySvq8mUoqwEdtkbO7xbtYwTxCRwrMNp4b93B18JM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oEkRpSGZUh8PV2joHaOQqy+gB2zey+IxLbAxAF6h/7Jh0cjKRTBoMtzWn4wN5uRVhYEYT1FTU++8/oxfoNCuDP0x5z+etETi5uPTjDlvzWOvQCXL+C8tp1rGW/HT2I1QbcV6XJXXLg362jErl+x5VZ9E63xOUysEkKH9hDdv/0c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=eeFtJdSF; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="eeFtJdSF" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 4561F581; Mon, 15 Dec 2025 08:30:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783852; bh=HyXySvq8mUoqwEdtkbO7xbtYwTxCRwrMNp4b93B18JM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eeFtJdSFfcT8J81wJ13QJ8Et6fqdayphAwy1iLpBMjCet8QX3pmTPa5V+3ZtRa2J/ jYzhumxwYJrx3ErIvoDekC3T4jSgA01nf/XrRScXYCqml2J+KxEe1zjUUbg5NIQE4S reF4Xqm+CUOr1VTBcUo0aUUVFifCpdI5N4b4EOrI= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:00 +0530 Subject: [PATCH v3 04/16] media: i2c: ov5647: Sensor should report RAW color space 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: <20251215-b4-rpi-ov5647-v3-4-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1855; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=cRtEaBGj87Hmp8mA7OL908N5mREpt4LN0Ry6e4CQEUc=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jaRtvsTiEFE/Vf/FBqBLuUhAzyGJLrvkUrt R9SSyqrP5yJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+42gAKCRBD3pH5JJpx RZSeEAC71uqXfkIy/6kpXB8HRjofI8RF2+yfCuO2k+guM10vA3cmj4+NrLQjzlz0CwjXyhQOZj3 mDd26cAYuzIT+WmplnCSQpQO0OiB6hunCj1hjXPdRoX/jNI+B0MTxqZamS/RG+uGdz5EKmTJDID 2sPzsIlnV9OhqljjLHgb1IL2R+0l8nTabb8jdwk+l94ZY/TPo/6Ujmeh/sFfX3OpVFKGTEJVIo8 WavcAEzqo/aBcFp8gles4njFO4N8iJ6nsJT5oFrO+ZNylu+RttXqHHlSv1ckBioYPKmUgHKZ70r uh+mZ4jme2v2DFNQrcyKNMuC3BELoQj6Sr5nLIgvP1AVRE7UR0j1hlJpQZk07rxOQDJpskBWqqX VXNSz8qd1DXeHzqjYdSD5Fy+sIks+qsy+waGOrN4SHV6+RpYhPYhI8aMreeBvgv+cHP2edTtaZ4 /Jj+x1rFlpHPJX7NrugaeeaCfIhxUnfOEazEi9vmqNCeAGYAV66mLN+qv1vNHUx5rMwPi5ZHL+f 40/ocES8Asp+HGelMZdFjjnuwgE7BDDcAivwSL/hdAOl3nSi3URBh67I1IntzX1kELmoOBRUSMv Jn2AX+b1PYw8N0rEPOvMCalBMukcUVCbuJegAYHKr9/jGVg4L9TttssRDVaf842wJh2Zh6HgT27 2YP3nOaYg5MrA5Q== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: David Plowman As this sensor captures RAW bayer frames, the colorspace should be V4L2_COLORSPACE_RAW instead of SRGB. Fixes: a8df5af695a1 ("media: ov5647: Add SGGBR10_1X10 modes") Signed-off-by: David Plowman Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 191954497e3dba4b1de4094b2ea1328a6e287003..c0f1121b025e5592d6fd4d5fd23= e4262dde2d84c 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -508,7 +508,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { { .format =3D { .code =3D MEDIA_BUS_FMT_SBGGR10_1X10, - .colorspace =3D V4L2_COLORSPACE_SRGB, + .colorspace =3D V4L2_COLORSPACE_RAW, .field =3D V4L2_FIELD_NONE, .width =3D 2592, .height =3D 1944 @@ -529,7 +529,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { { .format =3D { .code =3D MEDIA_BUS_FMT_SBGGR10_1X10, - .colorspace =3D V4L2_COLORSPACE_SRGB, + .colorspace =3D V4L2_COLORSPACE_RAW, .field =3D V4L2_FIELD_NONE, .width =3D 1920, .height =3D 1080 @@ -550,7 +550,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { { .format =3D { .code =3D MEDIA_BUS_FMT_SBGGR10_1X10, - .colorspace =3D V4L2_COLORSPACE_SRGB, + .colorspace =3D V4L2_COLORSPACE_RAW, .field =3D V4L2_FIELD_NONE, .width =3D 1296, .height =3D 972 @@ -571,7 +571,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { { .format =3D { .code =3D MEDIA_BUS_FMT_SBGGR10_1X10, - .colorspace =3D V4L2_COLORSPACE_SRGB, + .colorspace =3D V4L2_COLORSPACE_RAW, .field =3D V4L2_FIELD_NONE, .width =3D 640, .height =3D 480 --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 0D9EB32ABEF; Mon, 15 Dec 2025 07:31:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783874; cv=none; b=VUIhMevK6ytIXIeHklN3SyTwKy8zvjW7QTbKNMnJn0nlvTmtM81dc8vOq7O7c9NIBbbWeKx0a/M/WUFLsGJaDsyT9IJGO3+BLCsUhdoNZNJUEv2NjK16qDDOjlRLJGCBNwlKzHBnY7pvh0C9qOmPDmpSWZDvQt1MjTZEui3EtCs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783874; c=relaxed/simple; bh=Pl/hH+BNqw39kKJVWn7FBhDR2ywqsJ/MxZlWpkgdix0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ISionGtD6jQNc0wt4sg4eaeNV55YosJgoQcgc8kvgvpL1axet/kiAehRiLVP1wsyYI1Nfm94puTxtir4I2ujGrFFP2tyJgCBxWWZvl0WGQoJvSblHoZ6nv2OeU89HdRozwbtUjafM83ZyPDSJfYny+UYC927EEdIPszCZe54jQU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=TYBnGNRt; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="TYBnGNRt" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 5F7DEC6F; Mon, 15 Dec 2025 08:31:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783866; bh=Pl/hH+BNqw39kKJVWn7FBhDR2ywqsJ/MxZlWpkgdix0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=TYBnGNRt9yRugHyG+Sb50OwS7L8h6DRl8qUq1yUYjNRypt3QJpXnez6mydwaOFiDa cY7JNTEmTrD6jMAjkDgAcOKW5Jwr3SBSylXro0SncmiATiT3YCzLxWwt8r/Qbzh10L 6ldX1Q3dVpnoGBNLCyvevSAV+H8zAtE35PwJ5VgE= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:01 +0530 Subject: [PATCH v3 05/16] dt-bindings: media: ov5647: Add optional regulators 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: <20251215-b4-rpi-ov5647-v3-5-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1211; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=Pl/hH+BNqw39kKJVWn7FBhDR2ywqsJ/MxZlWpkgdix0=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jbM+thdBdueZo7/JHv86ddXbTm4TII+4Hk7 mELWHBmrQuJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+42wAKCRBD3pH5JJpx RUoxEAC5wcXMmq6xYriK06NAPFOw9ZMvbfWR0vdgTrV6jez5XKNIcXxtq2nIT/6t1jS3nwkPerY I8hZs9dfklsk9MUaWqpRyAO3I/oK2jXLDid0pha9p1x0uZUM8nNaC6DIiTQOfc4+H8eAg6RXNMT 7YcU+6UGIFyjvO46V7tdoI7bnyIKkjTcuyqJnBwjbfXTQKa0tSs9naP0ybogr+aTe4UUndPdC3d wR5zuybYBiEDvBNw6VMsK5oPjRk6CdAUVdGuSHSSjqYeeKqKlNgeKLCenZQ8NqRtXORAK72AV9D dMo5qp0/lc842VHvstPtCllmFTDruBPRlG+9I23tf5eWGrjbrBYAZLfcwRSHVeMMRzkTPmCFxH1 oNi65fJ67OenohupLcJFUwZPntshYmoN+4/Rsbe+hwOyEnOyDaqTlEPrbr9n4OnQv15wgH9Ps+Q hTDYY1jgaToGqE3EV9MU7fIkCvHFo13WlxtQGJbx7OdFJAMglyDoMG6NdjLi8Sl2+ji0/WOPTsn bFp6eYNqcFGsAuC1eCMHs8QyjS0ZZRE/Bti5iW7sK7V9Ppz/dY0lcHMw2QwPtp41GnhJCIsktpN MdkzGZDvYq7NUbTNO40nuZU2mUoF6vBWkwufcNZTj6Rd0MEjZSwMXqtiqOPhIb1p3J/MQk8bRei TS4UCWFO0L1tyCQ== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 The OV5647 camera sensor takes 3 voltage supplies. So define those in the bindings as optional regulators, to not break existing users. Acked-by: Krzysztof Kozlowski Signed-off-by: Jai Luthra --- Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml b= /Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml index a2abed06a099b41c7b165c0650e3967ec43a4962..9d3f7f1789cdedb357dae2e18b0= 3c5af3c0e68e3 100644 --- a/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml @@ -30,6 +30,15 @@ properties: description: Reference to the GPIO connected to the pwdn pin. Active h= igh. maxItems: 1 =20 + avdd-supply: + description: Analog voltage supply, 2.8 volts + + dvdd-supply: + description: Digital core voltage supply, 1.5 volts + + dovdd-supply: + description: Digital I/O voltage supply, 1.7 - 3.0 volts + port: $ref: /schemas/graph.yaml#/$defs/port-base additionalProperties: false --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 7A4A232B9B9; Mon, 15 Dec 2025 07:31:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783888; cv=none; b=b7ks108RtWCo3YqJiPMrIGwKwcsSkEdlOuTUhmhxy4aHiGkgqWQFNkxM9xeq4LYIFgdrdBp3SbXFw365KqGc59Z+vczJjUW+x5Mn1SsVlvWhcSc2/FJ9POH7g96rodLm51QWWkrhDvxx+InQDvdCbcisScbHCmL5Qx8JY2eYEKI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783888; c=relaxed/simple; bh=zPZgRLwVjnlgCuKqeRvcMrA4dlvPujhby4eouLW4PTg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K9KcIrndG9XBg9YfwEfnO+yd73etaNH6mfKQtkOTcKD38xzh/2BNAvM4JVJDiouTVV69oreL/SImGj/urgew3sV4ni5Cfeg5L1tuLFazs5rJ1NgcJKY9AgIN0bT89W+LF8xZ0ywL9F8iWIARZLq/SalfD2oyi6iL1Eo5pxCVaIE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=HmXP39gs; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="HmXP39gs" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 1CF1DC6F; Mon, 15 Dec 2025 08:31:19 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783880; bh=zPZgRLwVjnlgCuKqeRvcMrA4dlvPujhby4eouLW4PTg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=HmXP39gsmpirztVjd8KuhE5oESyE08BEAfs3mGsGfMczGWwLT9lujQHwGhDDrg4Ty OrfVRyuTHz0TfKZ1t1EVgRnKcICtZbE/UNjiGzx1NTvQVtz3mPVTitH3T/r1FuvTWa 6eI3ISrWngUcRqXKtQ8QJAk90vTuYBH/7SZNMirU= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:02 +0530 Subject: [PATCH v3 06/16] media: i2c: ov5647: Add support for regulator control 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: <20251215-b4-rpi-ov5647-v3-6-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3681; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=1h7ZxbMy6ynz3DbAHx9qnsw1Awuwkhi+WXWbjzUa3/4=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jcMoL8ZqsuoUSJj0NNF/Ji8nC7+H2xkT5lq 8mrg9eHqG+JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+43AAKCRBD3pH5JJpx RaYLD/48yGXxVVS1nsu6LCDbf68pblnM7+HpLXVcL07rN4Cr2JnAepHeSmet6lUAo/ows9hd+Qw IieAtge/CsuOkS+PevruNjv/rh3VxMfKCc1fLcQNplPovwwVsCpEJCywCHUp3v+vWCH74JtxU8Z hhyj/k/z93Q2Y5ptgmqyK7uit48ssE18xvnzfaYCnh04j5XEiDKJMDF3jgd40oOqEDylqhGhCBK IlYuDrsfDhGSdFSiY10ealAly8GidMdIp33sp0db9LRFpuyUG0EXoOn5li+VOA/4pf/3wSLEzzb GDubYNf8YwwfgfEO+mv80+s096j7Zjghy5LR2a9zGb0N2+FwILYhogDRTg1eTbT7Afbdj58mY3b gNba6tcaVtWfh3BmCRNuvSiRKDyz9FouVmq4iKRVI4MJkzPJjIOS0Veqx5qd2r4t94oDxG9cNKg CBiPZ7Iq4BCUHhGcxf6427P45WYbuMVkApHhTCQamLkHXUXNG9fJfoxsrFkCb0fGhbH5aY/7a3q ch/Tao64lk0cNF5TPvvJ/G/3RtnB+1TI1XB2xBAUzHJW/oPQmxWgAnp1KQPzIiGGNKR6TIknI+W mp2lVi6Js5eAXV+fvbEaws5aoD9ne8NbeR+/7CJporfeyy1YumACWSIJ+hesZdANqFLU3jTg5Pe eO+Yk/P15YNt6uQ== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson The driver supported using GPIOs to control the shutdown line, but no regulator control. Add regulator hooks. Signed-off-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index c0f1121b025e5592d6fd4d5fd23e4262dde2d84c..dbc134af06a26e0e31b12a6360d= 794afa8bad5dd 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -81,6 +82,15 @@ #define OV5647_EXPOSURE_DEFAULT 1000 #define OV5647_EXPOSURE_MAX 65535 =20 +/* regulator supplies */ +static const char * const ov5647_supply_names[] =3D { + "avdd", /* Analog power */ + "dovdd", /* Digital I/O power */ + "dvdd", /* Digital core power */ +}; + +#define OV5647_NUM_SUPPLIES ARRAY_SIZE(ov5647_supply_names) + struct regval_list { u16 addr; u8 data; @@ -102,6 +112,7 @@ struct ov5647 { struct mutex lock; struct clk *xclk; struct gpio_desc *pwdn; + struct regulator_bulk_data supplies[OV5647_NUM_SUPPLIES]; bool clock_ncont; struct v4l2_ctrl_handler ctrls; const struct ov5647_mode *mode; @@ -777,11 +788,20 @@ static int ov5647_power_on(struct device *dev) =20 dev_dbg(dev, "OV5647 power on\n"); =20 - if (sensor->pwdn) { - gpiod_set_value_cansleep(sensor->pwdn, 0); - msleep(PWDN_ACTIVE_DELAY_MS); + ret =3D regulator_bulk_enable(OV5647_NUM_SUPPLIES, sensor->supplies); + if (ret < 0) { + dev_err(dev, "Failed to enable regulators: %d\n", ret); + return ret; + } + + ret =3D gpiod_set_value_cansleep(sensor->pwdn, 0); + if (ret < 0) { + dev_err(dev, "pwdn gpio set value failed: %d\n", ret); + goto error_reg_disable; } =20 + msleep(PWDN_ACTIVE_DELAY_MS); + ret =3D clk_prepare_enable(sensor->xclk); if (ret < 0) { dev_err(dev, "clk prepare enable failed\n"); @@ -808,6 +828,8 @@ static int ov5647_power_on(struct device *dev) clk_disable_unprepare(sensor->xclk); error_pwdn: gpiod_set_value_cansleep(sensor->pwdn, 1); +error_reg_disable: + regulator_bulk_disable(OV5647_NUM_SUPPLIES, sensor->supplies); =20 return ret; } @@ -837,6 +859,7 @@ static int ov5647_power_off(struct device *dev) =20 clk_disable_unprepare(sensor->xclk); gpiod_set_value_cansleep(sensor->pwdn, 1); + regulator_bulk_disable(OV5647_NUM_SUPPLIES, sensor->supplies); =20 return 0; } @@ -1284,6 +1307,16 @@ static const struct v4l2_ctrl_ops ov5647_ctrl_ops = =3D { .s_ctrl =3D ov5647_s_ctrl, }; =20 +static int ov5647_configure_regulators(struct device *dev, + struct ov5647 *sensor) +{ + for (unsigned int i =3D 0; i < OV5647_NUM_SUPPLIES; i++) + sensor->supplies[i].supply =3D ov5647_supply_names[i]; + + return devm_regulator_bulk_get(dev, OV5647_NUM_SUPPLIES, + sensor->supplies); +} + static int ov5647_init_controls(struct ov5647 *sensor) { struct i2c_client *client =3D v4l2_get_subdevdata(&sensor->sd); @@ -1416,6 +1449,10 @@ static int ov5647_probe(struct i2c_client *client) return -EINVAL; } =20 + ret =3D ov5647_configure_regulators(dev, sensor); + if (ret) + dev_err_probe(dev, ret, "Failed to get power regulators\n"); + mutex_init(&sensor->lock); =20 sensor->mode =3D OV5647_DEFAULT_MODE; --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 3D92E285CAE; Mon, 15 Dec 2025 07:31:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783905; cv=none; b=XKLuIdVgBX1ugcep7/PCxvH1GC4er9BWWhhZbVVyExxxCuahx/UrUPK34Ycakpz+KCFiXe/7gFTaoSaNJyYs6wQCWvDZQC8+56mPF50m5TslLba4IhqyFrtjMTCrTMziFWbFShM4B9nXjHTysm0GD6b3Vh1c/oU4W8cx0ku9YwQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783905; c=relaxed/simple; bh=WlpbZmmjqKJS3DmyyAUMl6LDaznhjOwdS3TShMr19Mk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PVDMx8ump7cjwz2mqHdR6k3TnjbPnVG1GiI8GnVPotOD4ZU1Zm22z1Z5Y1r1nMMR1HjCon6qg5v2uy8ZEmBW0Mgvi0QdubZtFJjcmtu0WUteR1Ki2XB9JdCmrDbR9TWUMSp4yREiYi1aQRupi9ao3UXc5FmqPOntl8e18LWm+Vg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=b/2QGkC6; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="b/2QGkC6" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B8644581; Mon, 15 Dec 2025 08:31:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783898; bh=WlpbZmmjqKJS3DmyyAUMl6LDaznhjOwdS3TShMr19Mk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=b/2QGkC6XutwtAuniMvtAAnyjvxty5/d+NZztk5Ego3U1qLUm3jienlLpox6bTEZa AVIdCYCn10WRm16woHxJOVMi1R3QkrgFvdqD63oNLTUrqeniD79UMhtT2nLV1Iiw9T TBb961/k0f0gINTNrldDbCuXZPpKu8Yi1ViG9SEQ= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:03 +0530 Subject: [PATCH v3 07/16] dt-bindings: media: ov5647: Allow props from video-interface-devices 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: <20251215-b4-rpi-ov5647-v3-7-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra , Krzysztof Kozlowski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1229; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=WlpbZmmjqKJS3DmyyAUMl6LDaznhjOwdS3TShMr19Mk=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jdX8wYI7b5QDRVsm3XJBS7rBOWKIjBpAWsF 228WTlXW+mJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+43QAKCRBD3pH5JJpx Rac2EAComk9dX51zxGk8JvdT/ltpyvTt3VtmjLVmBjl2pgBcZ1rBdx1/Ju6jkPAJnzLKw8/xo9b uCHclh2qmDqX4de3vDjQnt9iX4sTqYzhjIwbrB33/2zvSQJ/AUPsZxRY9JK02BsFmCzxn5b0RO4 0MSHat26qcn8tKB3ekkZL8MBauQf1aNefQXoRvtsWPrrkkvODquHRZwCUicH2f3tDT8qupAWovP b0/fNbQPD59YrGdEbVyNDG/fIFTHtlXaeTzaQxP7q+G+1EMiZ5g+YVUSUum8S8YOWVSugveYMp9 dVCiwgqMFQfhOgRoG/GQvQOt9wirkBHAIWdj1V5TATGu4rDMNk/7aKPHuYN6PKvF4sQo0uU3x5U XIhIMVDJcrKCm/2tiIjXTDJh3xnRPagENasTYvXc05GxkDpMxs/U4wdz0zcUBfLQtVm7VksB9kZ 5zTMomDnalj1XKPU3JHTa/yI9koDL9grCn7NJ67F8Dxy8Pf5F04WOT0qyFD9ZkdCwXFzyqYJFui 2Nh0+Y6ALYOLt6pSXlUpi45WIGTy0Pz/pd/KN0lAvDlsRhF4lvp+tRxpK4paygTnXyc5+ceW3eu Qagg7aLNBpiuTwdYNIjFHEt4uxh7DEPYQ4wmxigR9zUFG0q58ld2PSV8XTU418SzGXup/gIAl+A s0KmjDmdDto1mKw== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 Allow properties from video-interface-devices. The change is identical to commit 08fbd355be3d ("media: dt-bindings: sony,imx219: Allow props from video-interface-devices") Reviewed-by: Krzysztof Kozlowski Signed-off-by: Jai Luthra --- Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml b= /Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml index 9d3f7f1789cdedb357dae2e18b03c5af3c0e68e3..2d7937a372a2b0f12c6837b6f0d= 790b4bea7f553 100644 --- a/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml +++ b/Documentation/devicetree/bindings/media/i2c/ovti,ov5647.yaml @@ -14,6 +14,9 @@ description: |- The OV5647 is a raw image sensor with MIPI CSI-2 and CCP2 image data interfaces and CCI (I2C compatible) control bus. =20 +allOf: + - $ref: /schemas/media/video-interface-devices.yaml# + properties: compatible: const: ovti,ov5647 @@ -57,7 +60,7 @@ required: - clocks - port =20 -additionalProperties: false +unevaluatedProperties: false =20 examples: - | --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 D691C30E83F; Mon, 15 Dec 2025 07:32:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783922; cv=none; b=t4vcCbmAzqm/xyl7Nw795eQ9EIGSeJKHjkeZdT45LZJDwuEj9Lm0Baq4Au4wv72ioZzVEzZO/N3kmxJPijcdshLkJohj2hip9c8w4h3aTCMY0/DRTDJ7ox0YvkiF0+fxoNbL18pjUkKjhR4rQFlxyO3/V1v0gzOoQMI2ezGPOSQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783922; c=relaxed/simple; bh=Vp2bdqWj7XiU3ZXC/8jNvb1g/2ee4MN05jLCZKPQiA0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V6zJWI52un/Jk4zTjf8jhXfVw38OLeZtWkduI7NlkSPEfalLdj3WCdfG3c8p1GzGQmvFTMzuLIFCBIHazyUSCDhHTopovCOtrK2Uy8Px3ZfIZ4YQPKyOLqWQPBSaDcE6VIIof9nuozkjHIEafvfmXNwxlLrFkRPmXbNjoL7wzNw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=GFb28qFU; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="GFb28qFU" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 607B5581; Mon, 15 Dec 2025 08:31:54 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783914; bh=Vp2bdqWj7XiU3ZXC/8jNvb1g/2ee4MN05jLCZKPQiA0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=GFb28qFULiwTlUMqZBJ09N9S/n6t16JoQZelaFmEu2r+cedjdWwbleW0x5FV5NuoW iyG+7M3EnHz26QMzD/hr2/Q1h5eEaeTn4muO6V4bzlW2rEi+2ZVPJF65Q2tc1H4c5+ bTEZ+lkG3ARaKCmwlgNRRucvT52B23BI7KaApFDc= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:04 +0530 Subject: [PATCH v3 08/16] media: i2c: ov5647: Parse and register properties 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: <20251215-b4-rpi-ov5647-v3-8-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1531; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=F6ta0vueo7eu8kDxEN/XO7biufHV8rAG8pCDIPMqhJc=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jeJRHEKNSaECWuL30Pxls0LhaBOMiruRBd4 NClbWDvglaJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+43gAKCRBD3pH5JJpx RTKKEADSjPWkLElG/H/X26CbuTrZBXleo8RsxAuUrOPxIYr0ypYt29MVVstcGgTG8a3NtwoXG42 vytM9gE+YxuE6GR5AOQLEkwnT1EkQp0m5uiiCfoR/D4wyAl+FdqV+TXKIU+8zv2wTZwZD1k50BE 1qCYwxbRo57ax7lUYobdzjIGgXDRdlrTGal4QfAHDcQj8084TL7h38gPk3juHtD5d1dTDLzMhMK 6bugqwIStueQMURyTsLmre07f/2b5oC0SpdPMJFN8NtZ1Fi3O+N0Ctm9o5J6B0fqL2enPHBf1MI Mh2Oce9U/Bxon5kDYsZR+Rtb+uR16oeyA36wVb3KcrYMcRgv/ljMqfGUJrNw+w4+LTeUp0W2/Tl i3cFt7csKgZf88q16HpCYtUv6JVQSXN0vFeyNQaYc+sxyqkKjCvuTSy0utpIYIdUqj9V9/IYt/F K6vmCdMXGcxNVigYSe3W+7aQD4jyZjZhASZhA6cHBKIUYCT/h3H2BLM5QZtJOZKKNDDydD9Zv4B FScHwVM2dJltKGcFLbMUZGh3PQG9Wjm2AnrNWn7Mwn7MOxmVt1GlW6Z/cT+o7ql5CyKUK7Es80l S9RTbw1w0WesO0W1ucmzDLcRAeJa54wzzk+16uawxn4MEd/+pT638Cx44g93GFyb6t+Z9/AidAI JoGcIDabRKxikBg== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Laurent Pinchart Parse device properties and register controls for them using the V4L2 fwnode properties helpers. Signed-off-by: Laurent Pinchart Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index dbc134af06a26e0e31b12a6360d794afa8bad5dd..5009fd8c05a64d7e06f66f8f75f= 0a881cd0b95c1 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1320,9 +1320,11 @@ static int ov5647_configure_regulators(struct device= *dev, static int ov5647_init_controls(struct ov5647 *sensor) { struct i2c_client *client =3D v4l2_get_subdevdata(&sensor->sd); + struct v4l2_fwnode_device_properties props; int hblank, exposure_max, exposure_def; + struct device *dev =3D &client->dev; =20 - v4l2_ctrl_handler_init(&sensor->ctrls, 9); + v4l2_ctrl_handler_init(&sensor->ctrls, 11); =20 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, V4L2_CID_AUTOGAIN, 0, 1, 1, 0); @@ -1371,6 +1373,11 @@ static int ov5647_init_controls(struct ov5647 *senso= r) ARRAY_SIZE(ov5647_test_pattern_menu) - 1, 0, 0, ov5647_test_pattern_menu); =20 + v4l2_fwnode_device_parse(dev, &props); + + v4l2_ctrl_new_fwnode_properties(&sensor->ctrls, &ov5647_ctrl_ops, + &props); + if (sensor->ctrls.error) goto handler_free; =20 --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 75A6432C95C; Mon, 15 Dec 2025 07:32:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783936; cv=none; b=MOsiqYIhemScNGXdR6WdIbCpjsAQZO7hblYAkibWls5alSxAsXXmZ20ezBfItlYfwr+JjeqjG4sn414cSQRab2HB+QzDnFgLcqBYhEZ4YW2k95ly3tSxOJNsrz7ONBipgp0mfEfI/mv0Zna/cm1mtDbSJHUwZid6FHFLWD41GTw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783936; c=relaxed/simple; bh=klMUtdyTu+St9Mah4o1XXKQLWF3jzg4MYFUbu5CB4fY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g35xdj5PAOtjoEejPqEdYnQDaf5TvrYZCD2bIz45Uli32ivbGr3w3nFlWpxfq5N+oadOkoozfysi9KDHfCwADTdoFXj4XqwZDn5RNjXeqqFsYYafwj/AVAtR5sWSEosuzpR4R1qTKw5KjtSk9erVGn/z+JHFlNgAVIRHTSDUI6A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=cCU5JEZF; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="cCU5JEZF" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id D4702EB4; Mon, 15 Dec 2025 08:32:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783928; bh=klMUtdyTu+St9Mah4o1XXKQLWF3jzg4MYFUbu5CB4fY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=cCU5JEZFrqrIiQdlzwx1u2FXuv1UeQN21SVA2eIYlPI5Q/u5IGnmqm17tmCLFeXxS zhh4KW6cvfhqyeu2a38lzFr4Fj4Sv7IJX7MPlC8GpqmT4arZCW5x/mZMOtXCT7cg1k ojppuuQUuvEjHuuN9k7jzC15mz3I2uYRA+pDLgt8= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:05 +0530 Subject: [PATCH v3 09/16] media: i2c: ov5647: Support HFLIP and VFLIP 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: <20251215-b4-rpi-ov5647-v3-9-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6914; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=lR4Al1EI2luJCAQV8ZaeuTd88Dge1UeeByvXETR961M=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jfCTvrOlNteiMibtxAW1KfOLCi5x6fiUycG m1NV6c+L0yJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+43wAKCRBD3pH5JJpx RbR+D/wNFC2cAUVcwBxtJk5ax43oi3ItNwh527qmg1J5yihGB6XQ8y07WJxpWeIMtEGWncobZQG ZkCP3mDBJzV61q9iXpWOXPf9oF4j9ptBOpu3K3YF0UA3YcD2c9bsa7/biL/+l8mSjQA2PsmDhri amTEoXe9l0SADTW7kM0jlOleoB6yMDzLo4++SHSL1gWKTgLSBaoNt/L8ZJv9r1TK35dLfuu39Gz 8Ilxx+sd9WEw8ZQ/i7aU1hADottYW1MhSofn7QJH1fsJ0PUvXoHyVrfBJp7EIJuHGRTnyF7yWx8 kjj2+1LXsbumnK7hWymwc4FjmT5oLq7BeS6ONibNxS1584DvwX4jrXKSRzE/5RsC86svn903vBH yJ0V/dk3r8/BGLCSt8OBoojLWbiA+Wum5T64X+4FYzELe848/I9hJRbAFVPhq38RBOm85AnFJtO /qFqXlji2Fay0HW8i0tHCCmooji7QX0PqvoPX95oILqhCriOZcp8MTkjPYGtqbolr2trz2W2EWE n8KRdT/2t7e2nqNAFo4R8lO1MLtG9tRRkFsBPnQHfuIrOtb5y0DL9wzMSLbR4ruG9ravp6pgxdw hYORA2Td7mmdJTDXwtAYyCv2SjuQjrvI9BaWRTwpvf5RC7uec7bg1DZiw73hDLHLXsuZ4YIl1QC N8Jn0kOeHXLmSIg== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: David Plowman Add missing controls for horizontal and vertical flipping. The sensor readout mirrors in the horizontal direction by default (if 0x3821[1] =3D 0) which can make things unnecessarily difficult for applications. The register table prior to this commit was setting that bit explicitly, to achieve a normally oriented image. Now that we have userspace controls for HFLIP, we keep the convention and report the non-mirrored image (with 0x3821[1] =3D 1) as horizontal_flip=3D0, and vice versa. Signed-off-by: David Plowman Reviewed-by: Jacopo Mondi Co-developed-by: Jai Luthra Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 81 ++++++++++++++++++++++++++++++++++++++++++= ---- 1 file changed, 74 insertions(+), 7 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 5009fd8c05a64d7e06f66f8f75f0a881cd0b95c1..07411494e32446d921b80adda52= d66926fc07645 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -55,6 +55,8 @@ #define OV5647_REG_GAIN_LO 0x350b #define OV5647_REG_VTS_HI 0x380e #define OV5647_REG_VTS_LO 0x380f +#define OV5647_REG_TIMING_TC_V 0x3820 +#define OV5647_REG_TIMING_TC_H 0x3821 #define OV5647_REG_FRAME_OFF_NUMBER 0x4202 #define OV5647_REG_MIPI_CTRL00 0x4800 #define OV5647_REG_MIPI_CTRL14 0x4814 @@ -120,6 +122,8 @@ struct ov5647 { struct v4l2_ctrl *hblank; struct v4l2_ctrl *vblank; struct v4l2_ctrl *exposure; + struct v4l2_ctrl *hflip; + struct v4l2_ctrl *vflip; }; =20 static inline struct ov5647 *to_sensor(struct v4l2_subdev *sd) @@ -161,7 +165,7 @@ static struct regval_list ov5647_2592x1944_10bpp[] =3D { {0x3036, 0x69}, {0x303c, 0x11}, {0x3106, 0xf5}, - {0x3821, 0x06}, + {0x3821, 0x02}, {0x3820, 0x00}, {0x3827, 0xec}, {0x370c, 0x03}, @@ -250,7 +254,7 @@ static struct regval_list ov5647_1080p30_10bpp[] =3D { {0x3036, 0x62}, {0x303c, 0x11}, {0x3106, 0xf5}, - {0x3821, 0x06}, + {0x3821, 0x02}, {0x3820, 0x00}, {0x3827, 0xec}, {0x370c, 0x03}, @@ -414,7 +418,7 @@ static struct regval_list ov5647_2x2binned_10bpp[] =3D { {0x4800, 0x24}, {0x3503, 0x03}, {0x3820, 0x41}, - {0x3821, 0x07}, + {0x3821, 0x03}, {0x350a, 0x00}, {0x350b, 0x10}, {0x3500, 0x00}, @@ -430,7 +434,7 @@ static struct regval_list ov5647_640x480_10bpp[] =3D { {0x3035, 0x11}, {0x3036, 0x46}, {0x303c, 0x11}, - {0x3821, 0x07}, + {0x3821, 0x03}, {0x3820, 0x41}, {0x370c, 0x03}, {0x3612, 0x59}, @@ -956,6 +960,26 @@ static const struct v4l2_subdev_video_ops ov5647_subde= v_video_ops =3D { .s_stream =3D ov5647_s_stream, }; =20 +/* + * This function returns the mbus code for the current settings of the HFL= IP + * and VFLIP controls. + */ +static u32 ov5647_get_mbus_code(struct v4l2_subdev *sd) +{ + struct ov5647 *sensor =3D to_sensor(sd); + /* The control values are only 0 or 1. */ + int index =3D sensor->hflip->val | (sensor->vflip->val << 1); + + static const u32 codes[4] =3D { + MEDIA_BUS_FMT_SGBRG10_1X10, + MEDIA_BUS_FMT_SBGGR10_1X10, + MEDIA_BUS_FMT_SRGGB10_1X10, + MEDIA_BUS_FMT_SGRBG10_1X10 + }; + + return codes[index]; +} + static int ov5647_enum_mbus_code(struct v4l2_subdev *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_mbus_code_enum *code) @@ -963,7 +987,7 @@ static int ov5647_enum_mbus_code(struct v4l2_subdev *sd, if (code->index > 0) return -EINVAL; =20 - code->code =3D MEDIA_BUS_FMT_SBGGR10_1X10; + code->code =3D ov5647_get_mbus_code(sd); =20 return 0; } @@ -974,7 +998,7 @@ static int ov5647_enum_frame_size(struct v4l2_subdev *s= d, { const struct v4l2_mbus_framefmt *fmt; =20 - if (fse->code !=3D MEDIA_BUS_FMT_SBGGR10_1X10 || + if (fse->code !=3D ov5647_get_mbus_code(sd) || fse->index >=3D ARRAY_SIZE(ov5647_modes)) return -EINVAL; =20 @@ -1007,6 +1031,8 @@ static int ov5647_get_pad_fmt(struct v4l2_subdev *sd, } =20 *fmt =3D *sensor_format; + /* The code we pass back must reflect the current h/vflips. */ + fmt->code =3D ov5647_get_mbus_code(sd); mutex_unlock(&sensor->lock); =20 return 0; @@ -1054,6 +1080,8 @@ static int ov5647_set_pad_fmt(struct v4l2_subdev *sd, exposure_def); } *fmt =3D mode->format; + /* The code we pass back must reflect the current h/vflips. */ + fmt->code =3D ov5647_get_mbus_code(sd); mutex_unlock(&sensor->lock); =20 return 0; @@ -1229,6 +1257,31 @@ static int ov5647_s_exposure(struct v4l2_subdev *sd,= u32 val) return ov5647_write(sd, OV5647_REG_EXP_LO, (val & 0xf) << 4); } =20 +static int ov5647_s_flip(struct v4l2_subdev *sd, u16 reg, u32 ctrl_val) +{ + u8 reg_val; + int ret; + + /* + * TIMING TC REG20 (Vertical) and REG21 (Horizontal): + * - [2]: ISP mirror/flip + * - [1]: Sensor mirror/flip + * + * We only use sensor flip. + * + * Using ISP flip retains the BGGR pattern at the cost of changing the + * pixel array readout. This affects the selection rectangles in ways + * that are not very well documented, and would be tougher to deal with + * for applications compared to reading a different bayer pattern. + */ + ret =3D ov5647_read(sd, reg, ®_val); + if (ret) + return ret; + + return ov5647_write(sd, reg, ctrl_val ? reg_val | BIT(1) + : reg_val & ~BIT(1)); +} + static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl) { struct ov5647 *sensor =3D container_of(ctrl->handler, @@ -1291,6 +1344,14 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl) /* Read-only, but we adjust it based on mode. */ break; =20 + case V4L2_CID_HFLIP: + /* There's an in-built hflip in the sensor, so account for that here. */ + ret =3D ov5647_s_flip(sd, OV5647_REG_TIMING_TC_H, !ctrl->val); + break; + case V4L2_CID_VFLIP: + ret =3D ov5647_s_flip(sd, OV5647_REG_TIMING_TC_V, ctrl->val); + break; + default: dev_info(&client->dev, "Control (id:0x%x, val:0x%x) not supported\n", @@ -1324,7 +1385,7 @@ static int ov5647_init_controls(struct ov5647 *sensor) int hblank, exposure_max, exposure_def; struct device *dev =3D &client->dev; =20 - v4l2_ctrl_handler_init(&sensor->ctrls, 11); + v4l2_ctrl_handler_init(&sensor->ctrls, 13); =20 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, V4L2_CID_AUTOGAIN, 0, 1, 1, 0); @@ -1373,6 +1434,12 @@ static int ov5647_init_controls(struct ov5647 *senso= r) ARRAY_SIZE(ov5647_test_pattern_menu) - 1, 0, 0, ov5647_test_pattern_menu); =20 + sensor->hflip =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, + V4L2_CID_HFLIP, 0, 1, 1, 0); + + sensor->vflip =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, + V4L2_CID_VFLIP, 0, 1, 1, 0); + v4l2_fwnode_device_parse(dev, &props); =20 v4l2_ctrl_new_fwnode_properties(&sensor->ctrls, &ov5647_ctrl_ops, --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 F052B32E132; Mon, 15 Dec 2025 07:32:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783951; cv=none; b=az9CknI3m6f6+o0KhaDm5010Oop8ZJY9KAKBWEic2AKuxh+x3qEaAYShapiXma95XsbHliqtxMlLGntoBzO2q8j0u00mT6V87He2zoCuko6xHwkfU1KSjFy6iEv6iz9RnHVte+TpUsMiv8NyaKtlCMGieC72AdUesaTNBg31v+g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783951; c=relaxed/simple; bh=9/6Kjg7yNpKl6KPGvD6QdVx/4zbqWbKaYAAGlKz2L7Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z+Guxk0bWxFJ3fZcm5G823ZxnNaL3WsXCabWESbh5dlteluqAVfUUaU5I+Uqaqvxu9+R2okTVvafG6KIhi7Qyro9HXI97gA52BHooEUGWN7Vd+JGoU7KH96KBQUBJTgVKtnpJ+Ujm2eulwEUWxrujWuX4xLs2Ih/e3LtkaaYXxs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=ayLELz4/; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="ayLELz4/" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 70FA9EB4; Mon, 15 Dec 2025 08:32:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783943; bh=9/6Kjg7yNpKl6KPGvD6QdVx/4zbqWbKaYAAGlKz2L7Y=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ayLELz4/X2jZeGRhclPcp9woSnz271dytmcUoFhzlKybluwfBct0jcz7xa2kxg4Ao XSy01KFQs1vsL5BafY89Trj/0ibYEJ8UFDtoCPqOuxiDDaJIpne6cmaV/qyNGKspAc 3wHqMvHfLlOC9GDeb6y/rgS6gWQBqt+DTSootJVs= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:06 +0530 Subject: [PATCH v3 10/16] media: i2c: ov5647: Use v4l2_async_register_subdev_sensor for lens binding 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: <20251215-b4-rpi-ov5647-v3-10-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=928; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=JQFJnQQUjjGSi8Ih4eUMXZveJ2XvZZqxZu/NmOzJT14=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jgNnfOi0f4ngBHSUYrzYvLtDLT35kebfUss EOWPV7+9vCJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+44AAKCRBD3pH5JJpx RUejEACjgSxifgZCjcS3mawiwCwXrkFZGbu9IDinBO46GjqIWQqdbZZFe0WDWAIsLpevfBdF9yJ f6lTqDXABwtsrkr+JJIMO39OmDWe2Y9bXd5WPLE5v+8JI7A0Q+vDLmJzQPu4BzdgT13xAScBPQ9 dmeTR73TnoRsTZnN2xFt5XcGpWaM/j/qJf+AmW6Ycio2Q1fgM/RSO7K1Zk1YLW88rJsmwmWYOgd dlc3Iq6yaFjPnLrPodYgMjPeilTSPBrExjekVVc6lDEyEKy2W5qXJqK9D7FBlNP2KmPoiid2lMV 87pgU2ogZUvDWXeAzosxtaQnpjUIJ0uG+C4TjPKRYG/VBacXksGXJABQgDlMUcGoNtfdRb+MUSu lI2jVWLDXTv9xU/l2BAzFl9gGov3TUXuxWGQ3+nthKNsyGPJeE7CRFtSnBV58H+GRIkhK+vMxDn U0/WisEJU0+o0NYRO/t4+hdtWTSwj0tZ6+2sEVxW0QoFXX2srXRQmFy2ADqn+ccuMkq4XMsxsPc nUWu3t33cjjlXixuybRU6j7xHAlhzr57ZhNt+VsZjOUJG0WssnOIAdRbpwbsEhmFLeu1r86P36R Wsy5nikGOrKzlEJ/beDq29bdRGmp3OdiP48FejgzKOnq4aCvmVdycg0jtUWqikx0yaqyVjjzQwA tUUu5btD5AArw/g== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson v4l2_async_register_subdev doesn't bind in lens or flash drivers, but v4l2_async_register_subdev_sensor does. Switch to using v4l2_async_register_subdev_sensor. Signed-off-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 07411494e32446d921b80adda52d66926fc07645..052fdf0d33a593f9795641ec607= 528f3d6a54723 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1554,7 +1554,7 @@ static int ov5647_probe(struct i2c_client *client) if (ret < 0) goto power_off; =20 - ret =3D v4l2_async_register_subdev(sd); + ret =3D v4l2_async_register_subdev_sensor(sd); if (ret < 0) goto power_off; =20 --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 A6E9732E6B5; Mon, 15 Dec 2025 07:32:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783965; cv=none; b=REgLe1en8aqoNPSUz24EqU5epJ/3ZEhA0u0yvAIAmsyO0YM0pR2OGL5UfUyXYp2SD7/aOtZYqVfZW3rMV1weFjVnX/iBb5JUA0CnCXBxSBoIIKNXUP9VlJZ2lEGtxzBLqTltNERY2FhMkWBY6rrU3MdwHh49riCAEs9LiQY6Ong= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783965; c=relaxed/simple; bh=5RmybB//uGZtA09y4X6yaZHmDmqZCV5tXrjwSaXytvI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fQJehQX49q0WmfNUY8hy3XeFf4OydZmRLCEpBWeymaF5UlK/Mlta2l9Oc2RvzKrV7mR/wt8ewsW59FweDLRuextBpQISRsnf5IjTnio3NI9GMZvWxcYk6vSL9wqkrj/wDM/Dye2O1AjW8oRF/rH+x+m2NSa0bFF+J/mLftBJnDw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=E4HOTzDM; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="E4HOTzDM" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 1EEC1581; Mon, 15 Dec 2025 08:32:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783957; bh=5RmybB//uGZtA09y4X6yaZHmDmqZCV5tXrjwSaXytvI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=E4HOTzDMNnGi9Y1gQQXLpRjANZCMWLD32OqzTGK1KZMiWO91P6WiqATSCfRdnwIjD RJJ+lQ144ABMGOXFTqh7VUIOjbns7sfz4MSlxbk2AnXgjX6/8zubrXn3zEdDYUAAMO nIF6mnRw+mVnbZ61S4LrFXomjyGvw4n4XA7yJ4fI= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:07 +0530 Subject: [PATCH v3 11/16] media: i2c: ov5647: Add control of V4L2_CID_HBLANK 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: <20251215-b4-rpi-ov5647-v3-11-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4382; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=AfO8ofB8E1I6v4Z0kIGCSmY+ew/jROlfukpTBRxlpAY=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jhSx7zPnifszZri7UqHX0OfCFzAF8z10TJj pYlKtz5y8mJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+44QAKCRBD3pH5JJpx RTUMD/9L6/nFYdMEuwtlQ5J1PneX0rXbht2z+YVJUJDRhSWzn7Zmpqq3eLhDQ3PC5lc11+6fige r5nUVTPwjny/b10VdpqiEYyWpmveRBR1cEvldbKjUUrEleRyaoDD8vD9O+5g9wgaVrOaeb9VwRe zT5C6bdIW4oY3oto09XCUF5pt1pzEWiyfhOEqEVSXrbsOjuy7XkuXgQbdxktlVHnbuwe/ySxaox zcisoPSQyvd55X0MZ/kSERRiFKEd5Gj0gH5yTSusyn6GSA7iXQ0M1J5RzaJUCQveyvQFOtSEBY5 p9N02B99g+YCjEENKhN1Iz1an2/7t9YpZGFGeQj+zFVZjzVZKqJpPZAVpLsNHkOrGLku3YTxfj5 9YJXBG7ABi/iI+wp2NKDWIabslJFUW4drNILpIZc7lLUn7luY7nm4Ep5NmL7C3OyKSS/G6nt+tQ NXH7roO/sJ+kOmRnIZWw9gfZXOrgSXr2blszSQlSlSPgX+aWEJiwbHeHSAJ3JWkpW+3woNgQOJi 63y+6ves+h2gs61anZxp7xkyXpbK/4wrHO1eZgWEflCY/oiD8wAGL1dGrJh22pbgwreZ8u8N4nZ 5P5ccrgi3APKMOaMwPSg+wdQHWk98xUrnzioYu4T02o+mZUSRxRdxHVym+sDE74g6pyayu5a/4j bf5L0vYeU/xnK0Q== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson The driver did expose V4L2_CID_HBLANK, but as a READ_ONLY control. The sensor only uses the HTS register to control the line length, so convert this control to read/write, with the appropriate ranges. Adopt the old fixed values as the minimum values permitted in each mode to avoid issues of it not streaming. This should allow exposure times up to ~3 seconds (up from ~1sec). Signed-off-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 052fdf0d33a593f9795641ec607528f3d6a54723..9e075fcc891862a61f0c624711f= 75cdbe0a3f352 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -53,6 +53,8 @@ #define OV5647_REG_AEC_AGC 0x3503 #define OV5647_REG_GAIN_HI 0x350a #define OV5647_REG_GAIN_LO 0x350b +#define OV5647_REG_HTS_HI 0x380c +#define OV5647_REG_HTS_LO 0x380d #define OV5647_REG_VTS_HI 0x380e #define OV5647_REG_VTS_LO 0x380f #define OV5647_REG_TIMING_TC_V 0x3820 @@ -79,6 +81,8 @@ #define OV5647_VBLANK_MIN 24 #define OV5647_VTS_MAX 32767 =20 +#define OV5647_HTS_MAX 0x1fff + #define OV5647_EXPOSURE_MIN 4 #define OV5647_EXPOSURE_STEP 1 #define OV5647_EXPOSURE_DEFAULT 1000 @@ -187,8 +191,6 @@ static struct regval_list ov5647_2592x1944_10bpp[] =3D { {0x3a19, 0xf8}, {0x3c01, 0x80}, {0x3b07, 0x0c}, - {0x380c, 0x0b}, - {0x380d, 0x1c}, {0x3814, 0x11}, {0x3815, 0x11}, {0x3708, 0x64}, @@ -276,8 +278,6 @@ static struct regval_list ov5647_1080p30_10bpp[] =3D { {0x3a19, 0xf8}, {0x3c01, 0x80}, {0x3b07, 0x0c}, - {0x380c, 0x09}, - {0x380d, 0x70}, {0x3814, 0x11}, {0x3815, 0x11}, {0x3708, 0x64}, @@ -375,8 +375,6 @@ static struct regval_list ov5647_2x2binned_10bpp[] =3D { {0x3809, 0x10}, {0x380a, 0x03}, {0x380b, 0xcc}, - {0x380c, 0x07}, - {0x380d, 0x68}, {0x3811, 0x0c}, {0x3813, 0x06}, {0x3814, 0x31}, @@ -450,8 +448,6 @@ static struct regval_list ov5647_640x480_10bpp[] =3D { {0x3a19, 0xf8}, {0x3c01, 0x80}, {0x3b07, 0x0c}, - {0x380c, 0x07}, - {0x380d, 0x3c}, {0x3814, 0x35}, {0x3815, 0x35}, {0x3708, 0x64}, @@ -1063,7 +1059,8 @@ static int ov5647_set_pad_fmt(struct v4l2_subdev *sd, mode->pixel_rate, 1, mode->pixel_rate); =20 hblank =3D mode->hts - mode->format.width; - __v4l2_ctrl_modify_range(sensor->hblank, hblank, hblank, 1, + __v4l2_ctrl_modify_range(sensor->hblank, hblank, + OV5647_HTS_MAX - mode->format.width, 1, hblank); =20 vblank =3D mode->vts - mode->format.height; @@ -1333,6 +1330,10 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl) ret =3D ov5647_write16(sd, OV5647_REG_VTS_HI, sensor->mode->format.height + ctrl->val); break; + case V4L2_CID_HBLANK: + ret =3D ov5647_write16(sd, OV5647_REG_HTS_HI, + sensor->mode->format.width + ctrl->val); + break; case V4L2_CID_TEST_PATTERN: ret =3D ov5647_write(sd, OV5647_REG_ISPCTRL3D, ov5647_test_pattern_val[ctrl->val]); @@ -1340,7 +1341,6 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl) =20 /* Read-only, but we adjust it based on mode. */ case V4L2_CID_PIXEL_RATE: - case V4L2_CID_HBLANK: /* Read-only, but we adjust it based on mode. */ break; =20 @@ -1416,10 +1416,11 @@ static int ov5647_init_controls(struct ov5647 *sens= or) sensor->mode->pixel_rate, 1, sensor->mode->pixel_rate); =20 - /* By default, HBLANK is read only, but it does change per mode. */ hblank =3D sensor->mode->hts - sensor->mode->format.width; sensor->hblank =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, - V4L2_CID_HBLANK, hblank, hblank, 1, + V4L2_CID_HBLANK, hblank, + OV5647_HTS_MAX - + sensor->mode->format.width, 1, hblank); =20 sensor->vblank =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, @@ -1449,7 +1450,6 @@ static int ov5647_init_controls(struct ov5647 *sensor) goto handler_free; =20 sensor->pixel_rate->flags |=3D V4L2_CTRL_FLAG_READ_ONLY; - sensor->hblank->flags |=3D V4L2_CTRL_FLAG_READ_ONLY; sensor->sd.ctrl_handler =3D &sensor->ctrls; =20 return 0; --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 42C8C32E756; Mon, 15 Dec 2025 07:32:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783978; cv=none; b=T2UHHHd6XAq3cy1H5n6IzWxPtrOlOsOmdQzFbtpLyDJXG+6fK3MI7mrBI8v/dzGVNSuEmymbHECScKG3LBdrbR4csLCA4WIlv4MWZUHyrlVwuhkjW4CdABe0LugdRYEcgkANZyTggyeQbGkVFby7DuQU1holDDjNy7LuOHSG0Y4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783978; c=relaxed/simple; bh=dBfT5rE31VW18pG/2QsOKGbcGvVz0lzgTp4a5nddwXQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WZ6Tt+owbktyHXjaqj3Ujdl7vomv9G6fJI7/8i8jT+PLQ5x+urZEirF/UqYfsw7ZcXFjGMU5hrcADkCOnTW5+eDmC85TUnNuIZKcnT0r269ya6u43LGSWuOAG0JmyOBiaSN3T7Czz4GSSUz80hXnNMGKTQkwoCRim7cF/b5AULI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=vNK0dT5A; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="vNK0dT5A" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id E605F581; Mon, 15 Dec 2025 08:32:50 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783971; bh=dBfT5rE31VW18pG/2QsOKGbcGvVz0lzgTp4a5nddwXQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=vNK0dT5A1SJxNcLW32uomONzpPtIPlsRyI3X+j7eOol0nQF5mGBwvX8Jf/Ji9VjmJ wRXWisAtaA9ZOJ7T2V+ZQi8rB43W/AlWFVP4+Y7uAu97D9bj8Qg7ARziDPF9ObtR/b oo84eersqvq1s6ml2H22gwFfaPHJEnH+2x0WCdHE= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:08 +0530 Subject: [PATCH v3 12/16] media: i2c: ov5647: Tidy up mode registers to make the order common 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: <20251215-b4-rpi-ov5647-v3-12-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2493; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=ppExTKADW3EnH1s5FM7iGMoVKQacDbYBgyxwZgPJYAU=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jivB1+b2zhoA4suu/U+FkFW+5DAkd9bGhtM TWiEbESdu+JAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+44gAKCRBD3pH5JJpx RcVDEACVSXWsYjjGAX1enFeyKb3zHqs26R2aVDQqaP+GRM/GidxTbZWISoUiuIFkb4EImbsqqlS JN4ZhrN6OELxlG6UMaYVvJRkdCivRkG57dCjIp4wEe4qUsbV2yo05Zn6uPyrcrngCSHOy7M2Mub 7yFC0oYgDz6wICIkSa2HpR6RjDgCtJT4YMe3eMzlrUaI5U1M3GWy5OMRdu+Zu07iYlLFQ6cazgZ 675CFoGOl1v+miq+MYVsLg4sQ0ssXc+2rJ6GsJ0+cR8cifpONgLZEHPzfKmY4OzxQm45QkwZ/oP oH8/kKFt2Ljm2Q0w4JCB227Kms6viE3Uf81gk3PTEdDrHvR5qjmMbYdOWYkxRC+ZyWW9vcFf1nw boFSufUS8vIdPFrecfDYJ5G5oT161heso1rbl2RJDdocIpfiWJAhYAgvmSg2co4ViqyyxwRVkpz 9ls5hjnfz9uzyxVXiT9g/ZvOMsQCmKD2LSyldbobvr03amq/6YF7n6xTKesvRjbh+lI/WDqldNv NfG1pkLedZrXbcx9ooI9ZXF4EcdNJsgdd19li7b/dxPFjIDYw0Zq1sjNbXc4aYa8eftaq6cQJ5X eIugYk5SqNt41s4qEguN6T0dByaUW6/emjjDYcBKa2l+9cF4/Q4meV4SYbkLOd9j806hbxiFaJV Ob6QXDuKKO9ASVA== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson To make comparisons of the mode registers easier, put the registers for the binned and VGA modes in the same order as the others. Signed-off-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 9e075fcc891862a61f0c624711f75cdbe0a3f352..37c9e8d7d1112378009dd085547= aea40dffb3ebd 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -343,6 +343,8 @@ static struct regval_list ov5647_2x2binned_10bpp[] =3D { {0x3036, 0x62}, {0x303c, 0x11}, {0x3106, 0xf5}, + {0x3821, 0x03}, + {0x3820, 0x41}, {0x3827, 0xec}, {0x370c, 0x03}, {0x3612, 0x59}, @@ -415,8 +417,6 @@ static struct regval_list ov5647_2x2binned_10bpp[] =3D { {0x4837, 0x16}, {0x4800, 0x24}, {0x3503, 0x03}, - {0x3820, 0x41}, - {0x3821, 0x03}, {0x350a, 0x00}, {0x350b, 0x10}, {0x3500, 0x00}, @@ -429,20 +429,27 @@ static struct regval_list ov5647_2x2binned_10bpp[] = =3D { static struct regval_list ov5647_640x480_10bpp[] =3D { {0x0100, 0x00}, {0x0103, 0x01}, - {0x3035, 0x11}, + {0x3034, 0x1a}, + {0x3035, 0x21}, {0x3036, 0x46}, {0x303c, 0x11}, + {0x3106, 0xf5}, {0x3821, 0x03}, {0x3820, 0x41}, + {0x3827, 0xec}, {0x370c, 0x03}, {0x3612, 0x59}, {0x3618, 0x00}, {0x5000, 0x06}, {0x5003, 0x08}, {0x5a00, 0x08}, - {0x3000, 0xff}, - {0x3001, 0xff}, - {0x3002, 0xff}, + {0x3000, 0x00}, + {0x3001, 0x00}, + {0x3002, 0x00}, + {0x3016, 0x08}, + {0x3017, 0xe0}, + {0x3018, 0x44}, + {0x301c, 0xf8}, {0x301d, 0xf0}, {0x3a18, 0x00}, {0x3a19, 0xf8}, @@ -468,6 +475,7 @@ static struct regval_list ov5647_640x480_10bpp[] =3D { {0x3632, 0xe2}, {0x3633, 0x23}, {0x3634, 0x44}, + {0x3636, 0x06}, {0x3620, 0x64}, {0x3621, 0xe0}, {0x3600, 0x37}, @@ -496,19 +504,6 @@ static struct regval_list ov5647_640x480_10bpp[] =3D { {0x4001, 0x02}, {0x4004, 0x02}, {0x4000, 0x09}, - {0x3000, 0x00}, - {0x3001, 0x00}, - {0x3002, 0x00}, - {0x3017, 0xe0}, - {0x301c, 0xfc}, - {0x3636, 0x06}, - {0x3016, 0x08}, - {0x3827, 0xec}, - {0x3018, 0x44}, - {0x3035, 0x21}, - {0x3106, 0xf5}, - {0x3034, 0x1a}, - {0x301c, 0xf8}, {0x4800, 0x34}, {0x3503, 0x03}, {0x0100, 0x01}, --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 54D9932F75C; Mon, 15 Dec 2025 07:33:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783993; cv=none; b=CvOJBbFmaHkE7RoGpxaD/yppgLcNJa7j/t+Br4ZkKeZl523CR/QnNNG6APY+iXZecG3An/g/d+KyjWYGZd64SLRVXfyh3jNqNubw6pIEl2KXWQfnjbTili1eCtUOqH0agDOckpKsL32Vav7RmoXvtCAtN14MBN0xhKQz1Zl+Lqo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765783993; c=relaxed/simple; bh=0qNtTwZQEOdD0pnkiBEmKWhEHvNTUkNxEkGbU1bFUWg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=socPiXTsVP9ufDtOdjyKENcd6vERGjNFo+LilHIQBvXiBE6y8C7OhiXThwUl2XsJS68MQWgOPgB1+CuVrPYyrI64PbogMWTVPTcyadrNrUT4j/7ccBXXMSzK7MIIZiUejPgCnzG7lSXwSXRx2Q7ZjhUWK0OzaY80FAURKPWgLdg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=dGVNgOia; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="dGVNgOia" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id BF019C6F; Mon, 15 Dec 2025 08:33:04 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783985; bh=0qNtTwZQEOdD0pnkiBEmKWhEHvNTUkNxEkGbU1bFUWg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=dGVNgOiaI22/2epTKuIyFEb7lepvNEfee4gGMRdteJW3E7pptxoexkaOceN1ApC4B re7UDrQrBZ09mVnMKgusgmEqnzVbGDrgt/QOSuRIKLfyOs8uPyjZQUXmX1qpalkbLN lL9lPMSrKjwNQVneTf7X5H+73ncwN0HmOjJUa/54= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:09 +0530 Subject: [PATCH v3 13/16] media: i2c: ov5647: Separate out the common registers. 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: <20251215-b4-rpi-ov5647-v3-13-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=8412; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=zyPrmE1fMkX4jS1TGCWmPKP8pxGHjB/vAFBey9oEOBI=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jjYmqeyDH5Jx4AW+QLmQsk9LH5PmcII+56K Z6RdEFF2JaJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+44wAKCRBD3pH5JJpx RdHzEACYGlFAcgSxq6h4PpRPwEq01EBFC6k2zFZiH9eeYMVOigg+BDEvTnVxetq2HJ06eSWm/8B G6noRu3d74LbRZTuBNSucsGr3uxLofDpZE6Bm2UhSvlIC5QAiVvUWsVJoLaMCP2Rp60KyXoZV8k E2p60k+aRyzAndTimhiJYGDqmL/jDW7Cwk38RGp8RNepQ78dDoTBCI3xFxYcr1bX1i11Jlq4sHF q5t6FCbo+Y732ov/ok6qt3/+1FH25jmP/gtNo+rmv6xDmagXmS826gt9bKlQuDnVxvhTV26eCzI VF83jyalU9OXIY95JXyuxX37OuOPiFktNiwUYv7t/90GpvEcXFwKHxa3DCtUb3xbIlGah830YpG VHYiRTCMtQv0k+rdRnb6E8YvIbBh47AYlHHshMtsBGwivHT0RplTZnqqtX+2foC//vVEP0xDF2T oYZH5/sam2u+MsQrzMv4K+0yGgU+eBmheOZpH2RH9m0dlLo9nOLOAUVmf1NfWMJLCwMpNv4H5Zn SIYu+1tB019X1NUGbCOju5pOt0i8WlvDcookVsuuKE7r0D8oH7QXeNlhKtNEaXNX9wiRJK8er5/ dIfuEVSHmF5fa/bLd1rbd1LjKoq+iKVwfebUXcj7DaIsW0i/mn50BenlDqDhODsVaZ/RXvVJxtn f1GA/3x1XTYJBjA== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson There are many registers in common between all the modes. Pull those out into one common table. Signed-off-by: Dave Stevenson Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 243 ++++++++++-------------------------------= ---- 1 file changed, 50 insertions(+), 193 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 37c9e8d7d1112378009dd085547aea40dffb3ebd..0df18b388f6859222167994147b= a6b923f36ee49 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -161,22 +161,16 @@ static const struct regval_list sensor_oe_enable_regs= [] =3D { {0x3002, 0xe4}, }; =20 -static struct regval_list ov5647_2592x1944_10bpp[] =3D { +static struct regval_list ov5647_common_regs[] =3D { {0x0100, 0x00}, {0x0103, 0x01}, {0x3034, 0x1a}, {0x3035, 0x21}, - {0x3036, 0x69}, {0x303c, 0x11}, {0x3106, 0xf5}, - {0x3821, 0x02}, - {0x3820, 0x00}, {0x3827, 0xec}, {0x370c, 0x03}, - {0x3612, 0x5b}, - {0x3618, 0x04}, {0x5000, 0x06}, - {0x5002, 0x41}, {0x5003, 0x08}, {0x5a00, 0x08}, {0x3000, 0x00}, @@ -191,24 +185,6 @@ static struct regval_list ov5647_2592x1944_10bpp[] =3D= { {0x3a19, 0xf8}, {0x3c01, 0x80}, {0x3b07, 0x0c}, - {0x3814, 0x11}, - {0x3815, 0x11}, - {0x3708, 0x64}, - {0x3709, 0x12}, - {0x3808, 0x0a}, - {0x3809, 0x20}, - {0x380a, 0x07}, - {0x380b, 0x98}, - {0x3800, 0x00}, - {0x3801, 0x00}, - {0x3802, 0x00}, - {0x3803, 0x00}, - {0x3804, 0x0a}, - {0x3805, 0x3f}, - {0x3806, 0x07}, - {0x3807, 0xa3}, - {0x3811, 0x10}, - {0x3813, 0x06}, {0x3630, 0x2e}, {0x3632, 0xe2}, {0x3633, 0x23}, @@ -228,11 +204,6 @@ static struct regval_list ov5647_2592x1944_10bpp[] =3D= { {0x3f06, 0x10}, {0x3f01, 0x0a}, {0x3a08, 0x01}, - {0x3a09, 0x28}, - {0x3a0a, 0x00}, - {0x3a0b, 0xf6}, - {0x3a0d, 0x08}, - {0x3a0e, 0x06}, {0x3a0f, 0x58}, {0x3a10, 0x50}, {0x3a1b, 0x58}, @@ -240,52 +211,57 @@ static struct regval_list ov5647_2592x1944_10bpp[] = =3D { {0x3a11, 0x60}, {0x3a1f, 0x28}, {0x4001, 0x02}, - {0x4004, 0x04}, {0x4000, 0x09}, + {0x3503, 0x03}, +}; + +static struct regval_list ov5647_2592x1944_10bpp[] =3D { + {0x3036, 0x69}, + {0x3821, 0x02}, + {0x3820, 0x00}, + {0x3612, 0x5b}, + {0x3618, 0x04}, + {0x5002, 0x41}, + {0x3814, 0x11}, + {0x3815, 0x11}, + {0x3708, 0x64}, + {0x3709, 0x12}, + {0x3800, 0x00}, + {0x3801, 0x00}, + {0x3802, 0x00}, + {0x3803, 0x00}, + {0x3804, 0x0a}, + {0x3805, 0x3f}, + {0x3806, 0x07}, + {0x3807, 0xa3}, + {0x3808, 0x0a}, + {0x3809, 0x20}, + {0x380a, 0x07}, + {0x380b, 0x98}, + {0x3811, 0x10}, + {0x3813, 0x06}, + {0x3a09, 0x28}, + {0x3a0a, 0x00}, + {0x3a0b, 0xf6}, + {0x3a0d, 0x08}, + {0x3a0e, 0x06}, + {0x4004, 0x04}, {0x4837, 0x19}, {0x4800, 0x24}, - {0x3503, 0x03}, {0x0100, 0x01}, }; =20 static struct regval_list ov5647_1080p30_10bpp[] =3D { - {0x0100, 0x00}, - {0x0103, 0x01}, - {0x3034, 0x1a}, - {0x3035, 0x21}, {0x3036, 0x62}, - {0x303c, 0x11}, - {0x3106, 0xf5}, {0x3821, 0x02}, {0x3820, 0x00}, - {0x3827, 0xec}, - {0x370c, 0x03}, {0x3612, 0x5b}, {0x3618, 0x04}, - {0x5000, 0x06}, {0x5002, 0x41}, - {0x5003, 0x08}, - {0x5a00, 0x08}, - {0x3000, 0x00}, - {0x3001, 0x00}, - {0x3002, 0x00}, - {0x3016, 0x08}, - {0x3017, 0xe0}, - {0x3018, 0x44}, - {0x301c, 0xf8}, - {0x301d, 0xf0}, - {0x3a18, 0x00}, - {0x3a19, 0xf8}, - {0x3c01, 0x80}, - {0x3b07, 0x0c}, {0x3814, 0x11}, {0x3815, 0x11}, {0x3708, 0x64}, {0x3709, 0x12}, - {0x3808, 0x07}, - {0x3809, 0x80}, - {0x380a, 0x04}, - {0x380b, 0x38}, {0x3800, 0x01}, {0x3801, 0x5c}, {0x3802, 0x01}, @@ -294,77 +270,30 @@ static struct regval_list ov5647_1080p30_10bpp[] =3D { {0x3805, 0xe3}, {0x3806, 0x05}, {0x3807, 0xf1}, + {0x3808, 0x07}, + {0x3809, 0x80}, + {0x380a, 0x04}, + {0x380b, 0x38}, {0x3811, 0x04}, {0x3813, 0x02}, - {0x3630, 0x2e}, - {0x3632, 0xe2}, - {0x3633, 0x23}, - {0x3634, 0x44}, - {0x3636, 0x06}, - {0x3620, 0x64}, - {0x3621, 0xe0}, - {0x3600, 0x37}, - {0x3704, 0xa0}, - {0x3703, 0x5a}, - {0x3715, 0x78}, - {0x3717, 0x01}, - {0x3731, 0x02}, - {0x370b, 0x60}, - {0x3705, 0x1a}, - {0x3f05, 0x02}, - {0x3f06, 0x10}, - {0x3f01, 0x0a}, - {0x3a08, 0x01}, {0x3a09, 0x4b}, {0x3a0a, 0x01}, {0x3a0b, 0x13}, {0x3a0d, 0x04}, {0x3a0e, 0x03}, - {0x3a0f, 0x58}, - {0x3a10, 0x50}, - {0x3a1b, 0x58}, - {0x3a1e, 0x50}, - {0x3a11, 0x60}, - {0x3a1f, 0x28}, - {0x4001, 0x02}, {0x4004, 0x04}, - {0x4000, 0x09}, {0x4837, 0x19}, {0x4800, 0x34}, - {0x3503, 0x03}, {0x0100, 0x01}, }; =20 static struct regval_list ov5647_2x2binned_10bpp[] =3D { - {0x0100, 0x00}, - {0x0103, 0x01}, - {0x3034, 0x1a}, - {0x3035, 0x21}, {0x3036, 0x62}, - {0x303c, 0x11}, - {0x3106, 0xf5}, {0x3821, 0x03}, {0x3820, 0x41}, - {0x3827, 0xec}, - {0x370c, 0x03}, {0x3612, 0x59}, {0x3618, 0x00}, - {0x5000, 0x06}, {0x5002, 0x41}, - {0x5003, 0x08}, - {0x5a00, 0x08}, - {0x3000, 0x00}, - {0x3001, 0x00}, - {0x3002, 0x00}, - {0x3016, 0x08}, - {0x3017, 0xe0}, - {0x3018, 0x44}, - {0x301c, 0xf8}, - {0x301d, 0xf0}, - {0x3a18, 0x00}, - {0x3a19, 0xf8}, - {0x3c01, 0x80}, - {0x3b07, 0x0c}, {0x3800, 0x00}, {0x3801, 0x00}, {0x3802, 0x00}, @@ -381,42 +310,14 @@ static struct regval_list ov5647_2x2binned_10bpp[] = =3D { {0x3813, 0x06}, {0x3814, 0x31}, {0x3815, 0x31}, - {0x3630, 0x2e}, - {0x3632, 0xe2}, - {0x3633, 0x23}, - {0x3634, 0x44}, - {0x3636, 0x06}, - {0x3620, 0x64}, - {0x3621, 0xe0}, - {0x3600, 0x37}, - {0x3704, 0xa0}, - {0x3703, 0x5a}, - {0x3715, 0x78}, - {0x3717, 0x01}, - {0x3731, 0x02}, - {0x370b, 0x60}, - {0x3705, 0x1a}, - {0x3f05, 0x02}, - {0x3f06, 0x10}, - {0x3f01, 0x0a}, - {0x3a08, 0x01}, {0x3a09, 0x28}, {0x3a0a, 0x00}, {0x3a0b, 0xf6}, {0x3a0d, 0x08}, {0x3a0e, 0x06}, - {0x3a0f, 0x58}, - {0x3a10, 0x50}, - {0x3a1b, 0x58}, - {0x3a1e, 0x50}, - {0x3a11, 0x60}, - {0x3a1f, 0x28}, - {0x4001, 0x02}, {0x4004, 0x04}, - {0x4000, 0x09}, {0x4837, 0x16}, {0x4800, 0x24}, - {0x3503, 0x03}, {0x350a, 0x00}, {0x350b, 0x10}, {0x3500, 0x00}, @@ -427,42 +328,15 @@ static struct regval_list ov5647_2x2binned_10bpp[] = =3D { }; =20 static struct regval_list ov5647_640x480_10bpp[] =3D { - {0x0100, 0x00}, - {0x0103, 0x01}, - {0x3034, 0x1a}, - {0x3035, 0x21}, {0x3036, 0x46}, - {0x303c, 0x11}, - {0x3106, 0xf5}, {0x3821, 0x03}, {0x3820, 0x41}, - {0x3827, 0xec}, - {0x370c, 0x03}, {0x3612, 0x59}, {0x3618, 0x00}, - {0x5000, 0x06}, - {0x5003, 0x08}, - {0x5a00, 0x08}, - {0x3000, 0x00}, - {0x3001, 0x00}, - {0x3002, 0x00}, - {0x3016, 0x08}, - {0x3017, 0xe0}, - {0x3018, 0x44}, - {0x301c, 0xf8}, - {0x301d, 0xf0}, - {0x3a18, 0x00}, - {0x3a19, 0xf8}, - {0x3c01, 0x80}, - {0x3b07, 0x0c}, {0x3814, 0x35}, {0x3815, 0x35}, {0x3708, 0x64}, {0x3709, 0x52}, - {0x3808, 0x02}, - {0x3809, 0x80}, - {0x380a, 0x01}, - {0x380b, 0xe0}, {0x3800, 0x00}, {0x3801, 0x10}, {0x3802, 0x00}, @@ -471,41 +345,17 @@ static struct regval_list ov5647_640x480_10bpp[] =3D { {0x3805, 0x2f}, {0x3806, 0x07}, {0x3807, 0x9f}, - {0x3630, 0x2e}, - {0x3632, 0xe2}, - {0x3633, 0x23}, - {0x3634, 0x44}, - {0x3636, 0x06}, - {0x3620, 0x64}, - {0x3621, 0xe0}, - {0x3600, 0x37}, - {0x3704, 0xa0}, - {0x3703, 0x5a}, - {0x3715, 0x78}, - {0x3717, 0x01}, - {0x3731, 0x02}, - {0x370b, 0x60}, - {0x3705, 0x1a}, - {0x3f05, 0x02}, - {0x3f06, 0x10}, - {0x3f01, 0x0a}, - {0x3a08, 0x01}, + {0x3808, 0x02}, + {0x3809, 0x80}, + {0x380a, 0x01}, + {0x380b, 0xe0}, {0x3a09, 0x2e}, {0x3a0a, 0x00}, {0x3a0b, 0xfb}, {0x3a0d, 0x02}, {0x3a0e, 0x01}, - {0x3a0f, 0x58}, - {0x3a10, 0x50}, - {0x3a1b, 0x58}, - {0x3a1e, 0x50}, - {0x3a11, 0x60}, - {0x3a1f, 0x28}, - {0x4001, 0x02}, {0x4004, 0x02}, - {0x4000, 0x09}, {0x4800, 0x34}, - {0x3503, 0x03}, {0x0100, 0x01}, }; =20 @@ -701,6 +551,13 @@ static int ov5647_set_mode(struct v4l2_subdev *sd) if (ret < 0) return ret; =20 + ret =3D ov5647_write_array(sd, ov5647_common_regs, + ARRAY_SIZE(ov5647_common_regs)); + if (ret < 0) { + dev_err(&client->dev, "write sensor common regs error\n"); + return ret; + } + ret =3D ov5647_write_array(sd, sensor->mode->reg_list, sensor->mode->num_regs); if (ret < 0) { --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 6ED1032FA20; Mon, 15 Dec 2025 07:33:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765784006; cv=none; b=Ya2kfPcAOcJjzr1pHqKOybxwXj2vi1/oBo8eyeOmPjtIGEHbuxXpWcTXykNcH0Y2eVVqpvGxcgClNaDH3yWEVtOzOdow9GI//BSa0dEMIMVmwPF6+7jWRAcg3uYsfbwar1ZaNQuzOEg6taJ+M74DCT8tZnMWBaeadHZ1TguXU0k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765784006; c=relaxed/simple; bh=r0IED0kW3GNDxEBl8W4IJPaAkiS+yxjLybppDwqM6tw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MDoyKSpG0PnDpFWzE6dJD+QYPVTAjeQOD/P0C1hmQ3A+KuscYp5IKnpK33mT6YGeB7R5riVv+uQaarH17J32D5WDnDeW1fGFubyar9ECmKj7LdFBsb6dwq7JYbxckyfWh2TpzaqYZapFk3McyBKT9FO6h8JRQfKcMzPaFSUgJiY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=O9bBDjy5; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="O9bBDjy5" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id A3DDEC6F; Mon, 15 Dec 2025 08:33:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765783999; bh=r0IED0kW3GNDxEBl8W4IJPaAkiS+yxjLybppDwqM6tw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=O9bBDjy5pcUWd8YZegzs5FSL5xsxgM0Gbuk0O/gQb0hWrhF7GV6zFIISia8U8zBnY DpseYvxICq6vzVIZ3CYtC27rq7GSU7ix9qj2wY4U8kRB3O5vCXbx6Hm8HG9aViw/VB CJd+t4IlyUQrXlViPaUT+KBfgUXIci8UVAYdLb6g= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:10 +0530 Subject: [PATCH v3 14/16] media: i2c: ov5647: Use the same PLL config for full, 1080p, and binned modes 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: <20251215-b4-rpi-ov5647-v3-14-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1677; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=cxIQX+T89C6sGn1DZ198hoGUG3KWm8Kzeony9qcPzus=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jkMhv/H6U1cPkHuFVf4oOhVM5B9kUn0QxZQ IKS8GS9QceJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+45AAKCRBD3pH5JJpx RTIqD/44lUWYNfbPXY3lh4NNeVTq1sNuUM0Fbkjhmfu8YMSHt5ZuMRP/9Oh5NB6LpVhQHhC2uIh Ld92A6BtEYT3IFsbcn3qSWHdJStuAO/fQ4qWffCXfRzuNlG5dp2xTjEax2+Ad8PXJ4GsV9r5o7q qdFnsNu/8eJLfZIkXbHcKyggsBjngiRqXt5Ib1DKO2/smkvBM2bhcy/t+AVhUySOZnwNVOHkGuU Kk9ZaL0rR/25Xhyu600teJ6ntsZaOm1T3gEsJqVtGEG6+Tlq/gI7r6Uq5vwyYjSTy1vJX0/rI3T 5Cu9sUhEwKn3LCGWBrfVc7q9siiRWJqOWk7bE9mpch0fyXUIX2cBLj+qW1dZX+ZHXmq2/8BZOHL Qg2nGG1aVjwlVbrfx1z5iKWFZ4aS63kiVELhgBnt9wWLPv8EUW6n9So3Ga0ovjKy9cwYg8MC/im 3pJU/Iug9+Gnuq2haekdp+kEPm6/FTjYz0nHBuaa74wdC82vOknylBR4aWVtwd4sv13X291tQyI Z7eAycn0+tGCAEwPN1/na2uz1zYXDVZpDA11fDN5yoHoVhOSFN5kic/SGgqmpV4iCsrGgyyd6d/ z5mYeAgbVsVn6hm7R4A6kQnH5eYwt3EZ3sDVgeTwez1jNVHvkfErYGUnZmFxF6wEw4/YA78jtoj WPTTWotzcCw/BBw== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson In order to simplify the driver slightly, use the same PLL configuration, and hence pixel rate and link frequency (to be added) for the full, 1080p, and binned modes. Signed-off-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 0df18b388f6859222167994147ba6b923f36ee49..cbdd0f8fc8de9c0f4251aa4c8af= 62ca1ad8fb168 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -252,7 +252,7 @@ static struct regval_list ov5647_2592x1944_10bpp[] =3D { }; =20 static struct regval_list ov5647_1080p30_10bpp[] =3D { - {0x3036, 0x62}, + {0x3036, 0x69}, {0x3821, 0x02}, {0x3820, 0x00}, {0x3612, 0x5b}, @@ -288,7 +288,7 @@ static struct regval_list ov5647_1080p30_10bpp[] =3D { }; =20 static struct regval_list ov5647_2x2binned_10bpp[] =3D { - {0x3036, 0x62}, + {0x3036, 0x69}, {0x3821, 0x03}, {0x3820, 0x41}, {0x3612, 0x59}, @@ -396,7 +396,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .width =3D 1928, .height =3D 1080, }, - .pixel_rate =3D 81666700, + .pixel_rate =3D 87500000, .hts =3D 2416, .vts =3D 0x450, .reg_list =3D ov5647_1080p30_10bpp, @@ -417,7 +417,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .width =3D 2592, .height =3D 1944, }, - .pixel_rate =3D 81666700, + .pixel_rate =3D 87500000, .hts =3D 1896, .vts =3D 0x59b, .reg_list =3D ov5647_2x2binned_10bpp, --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 EDA8D33031A; Mon, 15 Dec 2025 07:33:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765784020; cv=none; b=Li9i5Hfi45RRjBDv1IQEOZ+26/nyDTeQbkGQo+e9Lvo7yOVwfQYcuD49oARb594yjZjENBVJW/xlcdXzUfp72JbmhxdD4krqcBOd3tq7YYaYYZiY3mpY11XCVUw9c2/Sy5UXZbF8EglI4l0d2rS6qyUO3gfGMd7cJRG2dIZQXxg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765784020; c=relaxed/simple; bh=mDvI9W+VX8B2pl9BC6rcbSYJ7RJgiMppcLeL/kgmlHc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X7AZWY2UgGhmyBKMBLw97IvG8rCzdOg80ltFc945U7mP9+T1jT31nQQVZxTyU9Lbdb497ktpGWpybFPF6BhmmNJQnM/5z9VAdX18Ve3zXqW9W+TnlapqCQj50xvWEQ9hsJxjAV3mQkZ9m95ywP+UOYGy1CmH+UVjtjJyDG0Z7Uk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=NpWMXl9w; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="NpWMXl9w" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 709E5581; Mon, 15 Dec 2025 08:33:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765784013; bh=mDvI9W+VX8B2pl9BC6rcbSYJ7RJgiMppcLeL/kgmlHc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NpWMXl9wuxFcst9mHxl4LKz+rwt9EjXV+Gm12yCMn4zwpCj/f7IrQ/EIvnrnmbVse cFNMOAX8/8UTl02HyijHbZuirkd2PUciLNBuz/awQOb6C2XaSnvTd1XzNu8j6nDFuN iuFClpM323ujdN9ACVQPBsJIUCBLz5cAMeQnI8To= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:11 +0530 Subject: [PATCH v3 15/16] media: i2c: ov5647: Tidy up PIXEL_RATE control 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: <20251215-b4-rpi-ov5647-v3-15-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2008; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=mDvI9W+VX8B2pl9BC6rcbSYJ7RJgiMppcLeL/kgmlHc=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jluwc2P3hwGoZkiUGsZY303y3rx+CAdgV5c oZ6ZOg6EVGJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+45QAKCRBD3pH5JJpx RYatEACGAHdoQo8g/pgVJhXdnUIpM77PcWwkumbvEGGlto7rMbWTmKOiIrPnFIQlbFgL1JhyQ1w M79Qi8Aa6yTh5G63YJl4v8GDHLuXMpZp7cJxRP5E9F/wcKkPYMVJ/PiZY9WFu1o7f+jzjT8Apzx EtA8otPBM0ym2q4Mx9l3M2dPyaaXQsy52VBlP0ynEADwxAj0GsUbzcYpH4h0RMZAsf/AVeHGbd6 cxmxlz+hcsiAIYeJcndAV4fEoDyFKp2BZ+4l+RgZdDGIIej05aW2FXYAQif8CPiy5Eu8o1fl29L D6ejtqMQj03bp8jdmQiHAMZ0Wu2S7h89P/bkCNG9si1d2TaW6Rb3sfugs6T1PLlND7PaBLafq1I 2SZLC8uM2x9zmfpLKy09wwEXsdlRxzh5zN7c0bQTrKWNGLXLBbconvoyrT4wCXUmX/eT1EhNrV4 gWHHH9L7M7BzB3u+cUAvpwxrGSBQLXXbTTdVwH1are2fI4jluuzRFZ0QmEmcDwAnCdu8iXKCM99 /yhbLwsNELLJxwC3zgf40W3WmONFC+czcPEcXa6MxvjpLyMzReJ8cYT+OkIMj6uFrnZ8yfuWj++ D2KqJXL+fl4G17SvpVgKQvGZEhIvCFn6CGhAZMkUU72u/NQFU+/oW8wkzyPowg4Ztu2rdKHQHsm mhlVndUATP6YNoA== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 The pixel rate control is marked as read-only by the framework itself, so no need to mark it explicitly in the driver. Also, we can set the ops to NULL to avoid checking for it in the s_ctrl implementation. Suggested-by: Jacopo Mondi Reviewed-by: Dave Stevenson Reviewed-by: Jacopo Mondi Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index cbdd0f8fc8de9c0f4251aa4c8af62ca1ad8fb168..02d751967ab2c4a8dbe4a504738= c2c0b36b6cb68 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -1190,12 +1190,6 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl) ret =3D ov5647_write(sd, OV5647_REG_ISPCTRL3D, ov5647_test_pattern_val[ctrl->val]); break; - - /* Read-only, but we adjust it based on mode. */ - case V4L2_CID_PIXEL_RATE: - /* Read-only, but we adjust it based on mode. */ - break; - case V4L2_CID_HFLIP: /* There's an in-built hflip in the sensor, so account for that here. */ ret =3D ov5647_s_flip(sd, OV5647_REG_TIMING_TC_H, !ctrl->val); @@ -1262,7 +1256,7 @@ static int ov5647_init_controls(struct ov5647 *sensor) V4L2_CID_ANALOGUE_GAIN, 16, 1023, 1, 32); =20 /* By default, PIXEL_RATE is read only, but it does change per mode */ - sensor->pixel_rate =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, + sensor->pixel_rate =3D v4l2_ctrl_new_std(&sensor->ctrls, NULL, V4L2_CID_PIXEL_RATE, sensor->mode->pixel_rate, sensor->mode->pixel_rate, 1, @@ -1301,7 +1295,6 @@ static int ov5647_init_controls(struct ov5647 *sensor) if (sensor->ctrls.error) goto handler_free; =20 - sensor->pixel_rate->flags |=3D V4L2_CTRL_FLAG_READ_ONLY; sensor->sd.ctrl_handler =3D &sensor->ctrls; =20 return 0; --=20 2.52.0 From nobody Wed Dec 17 00:06:08 2025 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (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 C5D38330D32; Mon, 15 Dec 2025 07:33:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765784034; cv=none; b=JOv54vkzwlZGxLg0kNJ/dw3sVJUoiCEPRGOcZRFQs+frxTHq1DvPnbzix4NwJMbCMiq4foorBGs56KU9eB5r2oThxogM44a6Gtj6Z7Cz6w85kLiPsZV9hmpoCbZ+3Qdj+FOS/MKdEFs90yoUZ9Jkns5TzkIGFkkB13j0q/MJ2EM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765784034; c=relaxed/simple; bh=jleOSP7Tgn+ABBAUO5yDEWHMZfB1w2yN56IEROvhqXw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PbqyJGeUQ9AeWfAW+/e8SGUgaL3J3jRfSlHcEEGBG1CRLVVPe5Xc9j8nxDUAeXAXM92GQD4AAFk0ZnUr9Di2oPgzcrA94bOliuhxPREutuAy3wTOUW4JHgYCqz/jeAan2HRD9O+fOwwBN/8sTDHjkLrp+ca0u7lsfh5tRzrAlUw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=olPnYGzD; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="olPnYGzD" Received: from mail.ideasonboard.com (unknown [223.190.82.135]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 80783581; Mon, 15 Dec 2025 08:33:46 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1765784027; bh=jleOSP7Tgn+ABBAUO5yDEWHMZfB1w2yN56IEROvhqXw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=olPnYGzDTuzmLpHhWgJHuNtcWU8TeGYUcM+eXhCBEt/NP5Eet++EKU1GQfwVhDcq0 QPBBef+BIjOlOZQx8pCz+zNwSaycJ6n0NmPzqD62RaZzd16KfNuM/Y7fhgh+JAAJPI M4EcWT8s/uBVNeh6pIOoB0wcc0+s0/HglrbOjs14= From: Jai Luthra Date: Mon, 15 Dec 2025 12:58:12 +0530 Subject: [PATCH v3 16/16] media: i2c: ov5647: Add V4L2_CID_LINK_FREQUENCY control 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: <20251215-b4-rpi-ov5647-v3-16-4c25e3c883b2@ideasonboard.com> References: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> In-Reply-To: <20251215-b4-rpi-ov5647-v3-0-4c25e3c883b2@ideasonboard.com> To: Sakari Ailus , Dave Stevenson , Jacopo Mondi , Mauro Carvalho Chehab , Naushir Patuck , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Mauro Carvalho Chehab , Kieran Bingham , David Plowman , Laurent Pinchart , Peter Robinson , Stefan Wahren , "Ivan T. Ivanov" , Jacopo Mondi , Jai Luthra X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3722; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=2m5uFJslIvUHVycELyZ6k66Dl7YGPmVx+HUrjjEpWJg=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBpP7jmbCCsTLxJ2HbG6Ze4aezrBB0RDqUh22sU2 5RhD/EAMdmJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCaT+45gAKCRBD3pH5JJpx Ra7dEACusKi7XrNPehosGzHDbFO/gMRgTXXNA0+z4nZMf1OQ6KZCYlYVLbvjDmYYkPAELsQzewg 0M9PPdwdrW2q03UhyBXjv4QGfeHc2xR9s7eSg532IJ04k1tgrkmCqkOXnp7bdGUtMLm8iCNXUae 29pWEc6KiqhNTtMPMOy9i3vdHzSvDw9GAvQJJq+SDfGiIfU/IsaFgpkHUjgx/E25LOPhjp9iDif CMcUAkXM8B29YyVcq36vOJmrHlf7RQ5J6xlwnOjK360mSqwR+Z+XFuwPaurdKNhG7yGbxGpcfDl VKcmmVEEMX3jwC88qU36f94sI67AE4CvllZfDBANEOfe5H0YwA00FhYFMhUFgtqiqC8fMLFJQup XC6f28RDu9uR9JWBc8PCmAzUuCkU5AZP/rNtdy5QXnOeodOn4Rsjqu4AZTEFlxKg9rLZrfd+F66 dazM3kO+IEcebuePDi67jI4yIeguK958WVtky+lLFpsreH9NTDVsKFWsl6jvvZys3ClnHo9t/Vu m+8V1I692UOBIsqP8+sjQz5tnK8iE2VmHLwk/N2WyNi9vzut8ihtJArM3jQExsOp8ekcrZT116V wCBeXfxbZQtEl9eUvDlBQpXj64rr1zNbyaLbIB8sGm6maG/R8nirqw6YmJbTqyeZDerUR3Ho51p mH++yjlvegsprcg== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 From: Dave Stevenson The link frequency can vary between modes, so add it as a control. Signed-off-by: Dave Stevenson Signed-off-by: Jai Luthra --- drivers/media/i2c/ov5647.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c index 02d751967ab2c4a8dbe4a504738c2c0b36b6cb68..761eb22f53244b6883439f1eda7= 940b30bed1146 100644 --- a/drivers/media/i2c/ov5647.c +++ b/drivers/media/i2c/ov5647.c @@ -97,6 +97,13 @@ static const char * const ov5647_supply_names[] =3D { =20 #define OV5647_NUM_SUPPLIES ARRAY_SIZE(ov5647_supply_names) =20 +#define FREQ_INDEX_FULL 0 +#define FREQ_INDEX_VGA 1 +static const s64 ov5647_link_freqs[] =3D { + [FREQ_INDEX_FULL] =3D 218750000, + [FREQ_INDEX_VGA] =3D 208333000, +}; + struct regval_list { u16 addr; u8 data; @@ -106,6 +113,7 @@ struct ov5647_mode { struct v4l2_mbus_framefmt format; struct v4l2_rect crop; u64 pixel_rate; + unsigned int link_freq_index; int hts; int vts; const struct regval_list *reg_list; @@ -128,6 +136,7 @@ struct ov5647 { struct v4l2_ctrl *exposure; struct v4l2_ctrl *hflip; struct v4l2_ctrl *vflip; + struct v4l2_ctrl *link_freq; }; =20 static inline struct ov5647 *to_sensor(struct v4l2_subdev *sd) @@ -376,6 +385,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .height =3D 1944 }, .pixel_rate =3D 87500000, + .link_freq_index =3D FREQ_INDEX_FULL, .hts =3D 2844, .vts =3D 0x7b0, .reg_list =3D ov5647_2592x1944_10bpp, @@ -397,6 +407,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .height =3D 1080, }, .pixel_rate =3D 87500000, + .link_freq_index =3D FREQ_INDEX_FULL, .hts =3D 2416, .vts =3D 0x450, .reg_list =3D ov5647_1080p30_10bpp, @@ -418,6 +429,7 @@ static const struct ov5647_mode ov5647_modes[] =3D { .height =3D 1944, }, .pixel_rate =3D 87500000, + .link_freq_index =3D FREQ_INDEX_FULL, .hts =3D 1896, .vts =3D 0x59b, .reg_list =3D ov5647_2x2binned_10bpp, @@ -438,7 +450,8 @@ static const struct ov5647_mode ov5647_modes[] =3D { .width =3D 2560, .height =3D 1920, }, - .pixel_rate =3D 55000000, + .pixel_rate =3D 58333000, + .link_freq_index =3D FREQ_INDEX_VGA, .hts =3D 1852, .vts =3D 0x1f8, .reg_list =3D ov5647_640x480_10bpp, @@ -927,6 +940,8 @@ static int ov5647_set_pad_fmt(struct v4l2_subdev *sd, sensor->exposure->minimum, exposure_max, sensor->exposure->step, exposure_def); + + __v4l2_ctrl_s_ctrl(sensor->link_freq, mode->link_freq_index); } *fmt =3D mode->format; /* The code we pass back must reflect the current h/vflips. */ @@ -1231,7 +1246,7 @@ static int ov5647_init_controls(struct ov5647 *sensor) int hblank, exposure_max, exposure_def; struct device *dev =3D &client->dev; =20 - v4l2_ctrl_handler_init(&sensor->ctrls, 13); + v4l2_ctrl_handler_init(&sensor->ctrls, 14); =20 v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, V4L2_CID_AUTOGAIN, 0, 1, 1, 0); @@ -1287,6 +1302,14 @@ static int ov5647_init_controls(struct ov5647 *senso= r) sensor->vflip =3D v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops, V4L2_CID_VFLIP, 0, 1, 1, 0); =20 + sensor->link_freq =3D + v4l2_ctrl_new_int_menu(&sensor->ctrls, NULL, V4L2_CID_LINK_FREQ, + ARRAY_SIZE(ov5647_link_freqs) - 1, + sensor->mode->link_freq_index, + ov5647_link_freqs); + if (sensor->link_freq) + sensor->link_freq->flags |=3D V4L2_CTRL_FLAG_READ_ONLY; + v4l2_fwnode_device_parse(dev, &props); =20 v4l2_ctrl_new_fwnode_properties(&sensor->ctrls, &ov5647_ctrl_ops, --=20 2.52.0