From nobody Sat Sep 26 13:08:19 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 B4C9946A5F8 for ; Tue, 1 Sep 2026 07:31:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788247894; cv=none; b=Ery0BAZWq0bxJKsI56T1beUlM1Sl4zQ1NF3fKYiUlg0NfgSxP78fhESsNFKZ9DArxOkYBqX5qXXtXSQgbLl7msPIiy/N7U7ftOTHG6uFM1CbD/eb6qVvn2Z26O7e29FnAXzD9Y4jKO1peiuxftoElMrXEQVtlbIp+0AQ4rMD3/8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788247894; c=relaxed/simple; bh=TcAXQjm3y4bxY72fFI+XTJk2M6ZXHTIsdSnWHX2Ufxk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JcBmeVyCjVCy4I7fv/M8EX6LdJDkVER6pLY8Cp6igm6+zwRBv4u3Tw9AoKgOE1uZmzf7Y/r2mlVIh51K/Gr+PSNYOe5zL7j2d0BqZdQVu4Du0mT0XAYjM1lmV+z+zGCAeBxg079JGFPGgsw0PmI0wo78hdsjQorALZcQ2Ipclco= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=C9fEybIt; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Y553jR/l; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="C9fEybIt"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Y553jR/l" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68179JLg1709549 for ; Tue, 1 Sep 2026 07:31:31 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= VgKDv1xcq0t3CD7zLa+LminS2DbKGmggIsaKAN93+/4=; b=C9fEybItt1aLSL7D gPa5E5Rwn++JCN5nyo0Bt2u9tJANQp8969+knanaURYIPcKnx3aCxPC0MhxAqQoK yyHOt97UtL6ugaLxBTMl0CyBeUnjapsFhJ3CG3cA8oGgpJcDsFa2A2ykgGs3Z0KO tWfUNOjKvXn5mjK60weB4qtshe1XgS77OetIjxTUhtq/SKlDZvP8wRnOUJNY9mlm vhF/i4LpOtCAcayMHG8ey8BesqXtfqzqbEV1BhEwI/gn36PyTSD+PQq3ywS8CO9P 7XnBGw/m/aXSzMC07zgrKNfC/k3Y3rULnVt1BzXF+Ctb7LQb/99oV95QALa5er3D 5ZgTPw== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gdp8fs0yy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 07:31:31 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-93918756165so997913985a.0 for ; Tue, 01 Sep 2026 00:31:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788247891; x=1788852691; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=VgKDv1xcq0t3CD7zLa+LminS2DbKGmggIsaKAN93+/4=; b=Y553jR/l7Bphc53psUYJlpgAdADS7NerdtfFO+X5AH3W0eglRknloWFkm3eHjtEHVl aOacBBYhb19u7bb/5gmGNVKh0gx8NG6lvhtpNLcrV1yAK7F/XMylGjq9xkcFvnpeW5Hz gV/391mrwvTDYHlTuq+Y81tUIPkAKL4608+33+Rkurj/MqlaABNz9lBDtTA6rQZ5YIkN V3XxWOqDCjL4DvJPGU1dNPgJWxwqC1mPc2dgn4mua8Iy9Mzg0ZNwLCYocOEq2kv5UjfN B0uGlhGg1scrMskvaHqmCO6u8SqaU2PW/wxuf2zvAPDpRwis2vmzy9n6J9YD4ALkSBvF ILOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788247891; x=1788852691; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=VgKDv1xcq0t3CD7zLa+LminS2DbKGmggIsaKAN93+/4=; b=Ls5jkC5Cm0Sxrkpw2ECjyesvCPVwqmCSC/QuNl0bsAnlQcdYMrovljUl3x6V7i2X3n i5ba1LcKYzP4Vsz8gO1a/rsK/h7pfaxEPdoR2dITu3NGdMqSDuoORFEfpHH8JUOws9ec GDYFjrgM/OdZ6lK8RUJYB6U9mZqhMobF0MAkwCnJv9vrxdbsd4nna0WQQGeI7t6jMgLC 2pNv+XO56q2Sa44I9F5miNksVUdTk1oo0wBawpAq/+zwb2CfgDKEPJwHEEb0dxew0HLO dOxeyEUtGTKO8KHJ/bcS2wrN2TRZi6H/ILCOjnIe3z8fnIUU2uPaNpu6v8wsyK7cKMqd 0KXg== X-Forwarded-Encrypted: i=1; AHgh+RqFuPwUiDSAS2WjvNs004XQ20c+Uiq92apdlC4jD5x+oSKA3KTNyo5TdQJeNnpB+LP7IwuZ4p4Oy8wxIRo=@vger.kernel.org X-Gm-Message-State: AFuF++lwl9wPLrxp6xYVGGzeWW16/tlUvgJ6DLMITL3DF6VEMGqR3OTR yNQzY/dhrNCs69SoiBsoT9zBsoO8d9aGl7XyBn8aCA7GRG8LXCa3pjCnf6SU/yfB2qSzHfE+6Pj XfQIYsiq6GY9+IzCTCXy5fa4J12ZUH8cl0FP7RTEMO0OmcS5jrtQ712ZneRpr455e2po= X-Gm-Gg: AR+sD10if2BDIi/VzxtJJLIV5F4ka4cVMM84izrkD/0Q4O3RJuvCU93LajTN1OWtWVz uHY2HkzdfNHzLpKudtNpVEcU43rk+cUm+e1PeBM9fgjVt6vYLsssMPZQaoItStJpDK/eFqbgwv3 odttqYqaQpS8CAMevgzs/DhXeKgw6RnBurDuPKfHznv8Egf5Ye4DNF+M9uGPyzmIb+mYgQbDG53 CNYbT89PZ+D80/2s4T5V0QaPEQPj4zF3vVqn1tJ1j9MKBS7oVGyLbbArmfvlcKWKXze+oN8rwTa xNf1ITlhQ2jhePh1S7080DiVVIBfwn5lhZoP1vvkig2/YElN8LMQ3uvZjSMok0MwqdoP9fvYwrM dC2J07LPoe0tLEmfwiJuX6blk5jCOJ52JUrhfpLF50HvGLg5HbfGV+diODZnIHiHzd1hk X-Received: by 2002:a05:620a:a183:20b0:938:8ddb:5e9b with SMTP id af79cd13be357-93947f81d7fmr689365985a.8.1788247890734; Tue, 01 Sep 2026 00:31:30 -0700 (PDT) X-Received: by 2002:a05:620a:a183:20b0:938:8ddb:5e9b with SMTP id af79cd13be357-93947f81d7fmr689361685a.8.1788247890180; Tue, 01 Sep 2026 00:31:30 -0700 (PDT) Received: from WENMLIU-LAB01.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-93918b0f825sm946766785a.40.2026.09.01.00.31.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 00:31:29 -0700 (PDT) From: Wenmeng Liu Date: Tue, 01 Sep 2026 15:31:04 +0800 Subject: [PATCH RESEND v5 1/4] dt-bindings: media: i2c: og0ve1b: Add OmniVision OG0VA1B camera sensor 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: <20260901-og0va1b-v5-1-b0400a9bac01@oss.qualcomm.com> References: <20260901-og0va1b-v5-0-b0400a9bac01@oss.qualcomm.com> In-Reply-To: <20260901-og0va1b-v5-0-b0400a9bac01@oss.qualcomm.com> To: Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sakari Ailus , Vladimir Zapolskiy Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Wenmeng Liu , Conor Dooley X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788247879; l=2177; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=TcAXQjm3y4bxY72fFI+XTJk2M6ZXHTIsdSnWHX2Ufxk=; b=vCml7d1QeXb6g7Kayy7R89q1qf9zYTdDvGknRrpcZLeOWfjVdbZAPUtWr+XH3uAfb7WG+ZXnU EOi3zT1tkCyBHVbizUO85dmCEt1vAyIKGoO/NuC4bZgC5x3wGus+UGR X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Proofpoint-GUID: 0JRiBulVUHxjBqkB9ul1uC76GBvrSU8P X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA2NiBTYWx0ZWRfX/SUDFCvOGWpP 65N2qNN3ZJ3n/8r81Qrne5hPJzk0hP9pA4RSx90dD2gNXMhBbswCoVFdqvA7EbXMfRuHf83bNC/ opq26zWRO6Y/FUqYEHIxYXuGqvPozo4= X-Proofpoint-ORIG-GUID: 0JRiBulVUHxjBqkB9ul1uC76GBvrSU8P X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA2NiBTYWx0ZWRfX9Ir8y84b3MGj Pk0Gk1Lf4ywiEMTAIuJxZoS16czjC44cgRySonTfCGzW/9LUPj9WSyRlTjjrbNt1gGg/aQ1q0H2 I3FsIccpmELt43z2Yz7gnoVoAOyzWfCUwXypqMOqmAU0zp6kTMZ+3MyP55NrMSNAxIuptXeDmEH 6CZ3sKyr9EaEtEWHLGtZ5/33ddtdN8y4FkJUoaFI7VVDYcufJyzmO+V/lUe/efOZ3AXZvkTw8xY QGQV3fH7dbklAFnR8GbscTPTkzi5c5Siuxm78Xo4z5By0gDrCI4uKbdv34DKXjuw0eP5hM0MqRN U3l2s0jIkUyKl5gVGcFab7PnMxuzlq6vDQxWYi/cObbQe95LotCQwBbVPBOQCwljxKNyDVI/3H0 Ucbe8vNJWlQrLKr4mLqmvDx+DXsTkZbzE+FoNrDGU6hCn1XJbCP4r1wujC29SvoHgBQQepGqVso 65WwUqoG4XSFi+EyTaQ== X-Authority-Analysis: v=2.4 cv=BPWDalQG c=1 sm=1 tr=0 ts=6a967f53 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=gEfo2CItAAAA:8 a=XYAwZIGsAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=M65GHGH_L51Dv4RaLaoA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 a=sptkURWiP4Gy88Gu7hUp:22 a=E8ToXWR_bxluHZ7gmE-Z:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_02,2026-08-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 malwarescore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010066 The OmniVision OG0VA1B is a monochrome image sensor closely related to the already supported OG0VE1B. It shares the same SCCB control interface, power supplies and MIPI D-PHY description, but differs in its chip ID, register programming and output format. Generalise the binding title and description to cover both sensors. Acked-by: Conor Dooley Reviewed-by: Vladimir Zapolskiy Signed-off-by: Wenmeng Liu --- .../devicetree/bindings/media/i2c/ovti,og0ve1b.yaml | 15 ++++++++---= ---- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Documentation/devicetree/bindings/media/i2c/ovti,og0ve1b.yaml = b/Documentation/devicetree/bindings/media/i2c/ovti,og0ve1b.yaml index bd2f1ae23e6547032361924a6953000bab1129df..b6fa9645c7c6cb3fa907478684d= 02b01d916fea1 100644 --- a/Documentation/devicetree/bindings/media/i2c/ovti,og0ve1b.yaml +++ b/Documentation/devicetree/bindings/media/i2c/ovti,og0ve1b.yaml @@ -4,14 +4,13 @@ $id: http://devicetree.org/schemas/media/i2c/ovti,og0ve1b.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# =20 -title: OmniVision OG0VE1B Image Sensor +title: OmniVision OG0VA1B and OG0VE1B Image Sensors =20 description: - OmniVision OG0VE1B image sensor is a low power consuming monochrome - image sensor. The sensor is controlled over a serial camera control - bus protocol (SCCB), the widest supported image size is 640x480 at - 120 frames per second rate, data output format is 8/10-bit RAW - transferred over one-lane MIPI D-PHY at up to 800 Mbps. + OmniVision OG0VA1B and OG0VE1B are low power consuming monochrome image + sensors. The sensors are controlled over a serial camera control bus + protocol (SCCB), the widest supported image size is 640x480, data output + format is 8/10-bit RAW transferred over one-lane MIPI D-PHY. =20 maintainers: - Vladimir Zapolskiy @@ -21,7 +20,9 @@ allOf: =20 properties: compatible: - const: ovti,og0ve1b + enum: + - ovti,og0va1b + - ovti,og0ve1b =20 reg: maxItems: 1 --=20 2.34.1 From nobody Sat Sep 26 13:08:19 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 1BE19469836 for ; Tue, 1 Sep 2026 07:31:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788247900; cv=none; b=uy5btMfwNVvZL0sD4NykrmXkY/BIaCgsYWGa1xgxqR5kqGVEAP8WKT9zgFPqvoa6dPa1c78WGpQWtDSzjwc1WUmYCuaAzIYW+rjB2lPoRK2GxCmYLUBiEqanump0aOUjWgHAE8w0yZ71N+A+0sFYcqlJ4Cm5wcOZcKU13fFQao0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788247900; c=relaxed/simple; bh=SlQ5VdwZvVStQeZ2eNH8zzR3a+C3sg3kvTYpgF54crQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VjySwIk9wGPmKKRgpdr4Rl/nvtwPKOsN3FABcWLGSuraXG7TXNf3tcwsl4EEeXFWyNRyPEb8qCJksJe61IlpvHXLoWwW4gDVMNzOSPUkmaS4EeOvtd86D0o3saFx7mn0+vrsuYWE1hWQt0iOh6C52cwsDB3onqAxaX9q+olootQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=lqbLSOqY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Towon0+2; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="lqbLSOqY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Towon0+2" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68179PJs2321959 for ; Tue, 1 Sep 2026 07:31:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= oEX3ve3HSx05suSaJfa1Byw2nUsa5ubBf9KhTj7eXdc=; b=lqbLSOqYAexpgYaW NmIFEarmQEXrLcAFN0PG+O6UUUsaT7Qyr5Hw2ikzisNHF3E5mz8lOZI9LwnYuOkK k793p0AdR731+oV+Ggor4F97VL3is94sLTa6ctKCij8Gyv+e1X9kajKHwW6tpOlK ZsnMEfLa2eC06AEa2nQveLqPhL5eyEHB7ztybVRIBjKhpo+mSLfPPH5t3Azvl/zk OB34FVTTjbMgysIHtG9c5B8dFnWykZhp8TJ+pQQeyRmI0aVevrQTcxraOHUXgTDX DIP9tVeygf9H6lriQFkQLWKsm9sZRvuCx+hokLQVz+vdPsXpEkkg+obFS0XzAqn2 CyyQmw== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gdfchapd7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 07:31:37 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-9382f9430deso127493785a.1 for ; Tue, 01 Sep 2026 00:31:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788247897; x=1788852697; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=oEX3ve3HSx05suSaJfa1Byw2nUsa5ubBf9KhTj7eXdc=; b=Towon0+2Q9xt7Tn9j/cfT7ZblzSUDnitSQPvBQuFeAs+toqYWieSDZ3igQkL01Zz07 169ZZYA4nXenoLcJZTqFgLz+tJQjfGp26QT7OpC/PUEfKd8MlPxyq6K7P9+lHfUxHC0Y 1ybfq+4MFzBlsuSAqCPEzsrxlkSqnjsEjx5/BZAuL2gJTYIKsWhHJkTOnidK1VqEr1yY kfkfqVYDyFMhyqtYIe7IokncmqyfXpVKYgVA6Slv2/x8pTuvLfN8sRF+TQcmSRlS94z0 pb7RvAZAbhcFIpMQHLIzAvIykJZudpf+MHRSUKWxy//kh1heY6ZrtK+6cnr9DyPMJVr3 VJUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788247897; x=1788852697; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=oEX3ve3HSx05suSaJfa1Byw2nUsa5ubBf9KhTj7eXdc=; b=UJVXUg/pbQ7107nKYAf3D4hPXxCYDhfoIt9pPzcLiD4pB6FnaX7R80w8zMyp/SXMQv sL/2FX7zbxaXs5T/mGmWVzDoibugZaFyombbTYsKyMU20Pn6YA8JpqabBxx2I+6jhNXn GURDP49gbNoViQ/OE3OzGP/imoRGOq0EI0JJFFqbGB4x2z8sYW0MHmRFxYZXgZiCAZB5 19k5VkanK+Hln6te8+W0/vtzyQ4YK1G1Y/mmRfSgO8GqP+DMTR+X2WqpHn9mr6dHRfwe 6S9aW0b4sjKFITPNFkXOnHfFXg+pS+IstOGFEQNcpjlIorDRpmBSsduPefz/o74am4eM ZzmQ== X-Forwarded-Encrypted: i=1; AHgh+RqaZtDS6KJT0w1EozNQJ2J7g5Y5oAuALV2e+CDrPRun92+ioALxee6SQczQOmz5pg75Sz+jjySsR/LLT2Y=@vger.kernel.org X-Gm-Message-State: AFuF++lJj+1+fBe7TxFN+XC+lP4XY2rPOe/g079Ykqcu9VWuBx2TDWPo 4zqHw7am0kkwq5LhJlKKB+zJbzYZ7iFpm9Rup21tIvXcZwHEr+T7FUtiZiWzY+4ODyhhdwwFMBY sn6ltyFS/PbCymrEzBY6WhEkCCy926GGqjT6kl4cvEImIVD6tUVpLzy/CVEo7iKxC/Lc= X-Gm-Gg: AR+sD13n5puKI9e6NxpI0sW7bzaoI1KrVSqmWLzYNHlF4ZiLrFznKK5vtXAFNQwc8yC r1kBxTZogmfSbS8BhGuTrKaHEtPi69lq2dvxKqsMiZyVIVP8aKH4L4tehjQwo5vQbht8lIDI7O0 JfIJIioE3ax89qXbhevqgDygf9KvFpOLHc24lhgV3JrNV6xGXZ2WPHQo8TvabIOdlLJcV2irFS0 mJOfJOyqQemxY7OKAY91W8XveCRgr75xCTJS+tMdw+X3WeKLYAKNu4JJGGCQEhVVa4PuhtR3QA1 1qeCZThSUKxRe7DxF3/0C4IX8lO+fWV7uaVEW0DUic0ZPhtolvje+ajZhBYzxzjTMjvbTQZak+q PyKYhbjcnmnpr7Ju3vfTwsU781/rs4L0vsgxWF4XvPZ9mQziMfJvNm2JbM/0CdrnZP+Bt X-Received: by 2002:a05:620a:7101:b0:936:ca57:25da with SMTP id af79cd13be357-9391396bbf1mr3297858185a.37.1788247895819; Tue, 01 Sep 2026 00:31:35 -0700 (PDT) X-Received: by 2002:a05:620a:7101:b0:936:ca57:25da with SMTP id af79cd13be357-9391396bbf1mr3297854385a.37.1788247895352; Tue, 01 Sep 2026 00:31:35 -0700 (PDT) Received: from WENMLIU-LAB01.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-93918b0f825sm946766785a.40.2026.09.01.00.31.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 00:31:34 -0700 (PDT) From: Wenmeng Liu Date: Tue, 01 Sep 2026 15:31:05 +0800 Subject: [PATCH RESEND v5 2/4] media: i2c: og0ve1b: Use monochrome-appropriate test pattern name 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: <20260901-og0va1b-v5-2-b0400a9bac01@oss.qualcomm.com> References: <20260901-og0va1b-v5-0-b0400a9bac01@oss.qualcomm.com> In-Reply-To: <20260901-og0va1b-v5-0-b0400a9bac01@oss.qualcomm.com> To: Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sakari Ailus , Vladimir Zapolskiy Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Wenmeng Liu X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788247879; l=842; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=SlQ5VdwZvVStQeZ2eNH8zzR3a+C3sg3kvTYpgF54crQ=; b=iO6+Xl2Bs5MIFb+zyzdwJ5KnH2bH94waL30vJH91jONK5TBQF1w4COF/EQjWi/dnCRlXRFhDV jR4JUzDt+J3DWWO6X7wojOdX7Bffg/iVIKNzMlYyoeJLAi8jHeU4UwJ X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Proofpoint-ORIG-GUID: h8cFza9gWK0X74xkaxZnVM8rhlI_E2r2 X-Authority-Analysis: v=2.4 cv=G9Ms1dk5 c=1 sm=1 tr=0 ts=6a967f59 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=ni8zlDty7YU4e_isgz4A:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-GUID: h8cFza9gWK0X74xkaxZnVM8rhlI_E2r2 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA2NiBTYWx0ZWRfX1mLBykNSG9Zd KpnD5+nLF2aQpGI2ak3+05LyTbnF0R2oPCwsu0ljzNay0FkowJ/FR85BH3zqMptytIxvC4918qj GsfEVddgs5KxGkYw/+3A5+wsRUde5c4= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA2NiBTYWx0ZWRfX/oH/C5NjBD8O Fv9Cs/qvjfkcdlg8xPUTSC7XLS5fP6Ohc8qLSdM28MlzlZldwBtMeWDM5W7nCq4bzfGs0nNBZQ/ 3L8YsXeP1dn0X0zX0bi6DlDQkDTeBHTflHl6iriWhymfEip/ApRAZUswftSDN3hOeX5PFJfT2xO p+7ZrApiVzGtauh/6wfv7FxmXHHETb2BhHkKyBgfmFKadjd3km+AzArt/d+MCWtOq0WYYIZUQyh 4qcT8iUzpOikU4hlG/GrZPXhKNhL6Bm5h8tlpkHQvmPr6bbXVj0/ELfKjkliBkYGQ+tuCzoneU+ NFR0g3OSS2DdB3wlBdcmlBgqBl1NgUk7+lmweC8zKTeR5V/rjDpohcF+n1KSyaEflLq6X1kooAP 2yNeapZzZN2dRLfffBOCE4Oip9HgAmkWbx+FSviT2oFbBe3OzvJ4iCJ+Cu9VRFlD7N0ibNj6hHc Om2MEofB5vlXggrzujA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_02,2026-08-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 adultscore=0 phishscore=0 malwarescore=0 impostorscore=0 spamscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010066 OG0VE1B is a monochrome sensor and cannot produce coloured test patterns, so the "Vertical Colour Bars" test pattern name is misleading. Rename it to "Standard Test Bar" to match the OG0VA1B naming. Signed-off-by: Wenmeng Liu --- drivers/media/i2c/og0ve1b.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/og0ve1b.c b/drivers/media/i2c/og0ve1b.c index 84a28cdcade10f8fbcf945999e88f84641b9bc0d..da5c8e49d4a811f55736bd89c69= 22856f2e7391c 100644 --- a/drivers/media/i2c/og0ve1b.c +++ b/drivers/media/i2c/og0ve1b.c @@ -72,7 +72,7 @@ struct og0ve1b_mode { =20 static const char * const og0ve1b_test_pattern_menu[] =3D { "Disabled", - "Vertical Colour Bars", + "Standard Test Bar", }; =20 static const char * const og0ve1b_supply_names[] =3D { --=20 2.34.1 From nobody Sat Sep 26 13:08:19 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 774FF46AA6B for ; Tue, 1 Sep 2026 07:31:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788247906; cv=none; b=G1+HPO7GCUUr68xBFkn84+pUmGfDZQ41ja1AkFG58if203EY8gNZ+Y4dumgyQLUkCZ900B6vQuf04X94ewhyqwZDkDgX4qXeTtcEqWT/gP1B2Sw9rtP8bk1oFJqy2qK/CWeNyPrVwkQvIFfrCeH5s4JjKfbG5J2YhYWtcU28qek= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788247906; c=relaxed/simple; bh=v7MWIqfZGj0yHDCscd2nMkMidCP3VrHdRkNj3te5k4Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dQzTlN9LLBbJZzspuxhjIlnus5Caek3q1cvy2Dkwc887Up5tqjheJHuvuhoD0w2Bt3452xN3AGN/rvGIUiR964XoJ4R80unysoKL5EL5uZOQ7gNQ6IqDdfqHp97vwK5GPXi37OtbUZ+vw++OU9E6I6XqpMSpDzVNi12lG+q9rT4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=O9JvBEEj; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=FanxHnPK; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="O9JvBEEj"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="FanxHnPK" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68179J3I1975534 for ; Tue, 1 Sep 2026 07:31:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= QX8sc1P0bS5z/s1DFAa4RJ5nBk8cITbsWxAeNOYvxes=; b=O9JvBEEj68YcCyd9 3j085LUtuNN7YfBlw6toPO/zSh5K/5zVAxdx475qRq0KEc32y2WUIi/AkcLOdKHY qoFLSLhirylY9XyqtxjYIWxptJNVII3RVdkeIJyG+QW2gR5+SjB3BwVmyTbicFHh bLMTEH8p5ndt46UkRIxIZphdD5fzr0UZRL0fxS3i7pnylps713ulOCa3r8uD/Zug o2SiPeGi9OOu0M7y+LBJlhyyxFw+rNnnToSkwAFAe/aPBv3lZWtHM8QjuXte/Ph+ P4ri7Dkdr9KDEf1bC5k5qywFVRxu2SX9IwHkExQxMH56QXQzu2fEf3oZiYUCqTKU cj5STg== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gdp7r11xj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 07:31:41 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-936708f129aso581480085a.0 for ; Tue, 01 Sep 2026 00:31:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788247901; x=1788852701; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=QX8sc1P0bS5z/s1DFAa4RJ5nBk8cITbsWxAeNOYvxes=; b=FanxHnPKsMnngYElpUuoPha40dNZOf/k/TBUTUfXxiA1Fd4AzSr9foD/rAx6wCj7OG IfSP1WeskTFOjE0NQ9Z4Sb39jrl2JVSJzld+xTD6vUivBoMPkgI5Tu88McGEP2Atyfbk ebuMthELrMq4R+PI4Abo0bTdjZC0CcLd2W4E4ETXWwvFfNpFPHbtYNLGpc38jYwYUOzd y91d0KiuM0PZ/JKDX6D8PF+GXx4fOBfsDN7opCctVNViJdBdJkK4iJMSXi4Z2XUvAQcU fF8d/pCgOaLgBCT4BeDq/mqBWuqpZow/DL3Bi4D7WAK4W2IvsiJhfjnaWp2t9gwohP5k Hj6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788247901; x=1788852701; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=QX8sc1P0bS5z/s1DFAa4RJ5nBk8cITbsWxAeNOYvxes=; b=dXzvcWHfuWB0N7dnPuK+7Se0bk+G1QABL6SaIGAq+CurD+T0JaWhw6EZlKUX3Uub+B UtbI3utUQ5ALTAMP9cQjHrZ/lDuoRkq3lwa4XK81Yj6C4j4Pc6zgwSzgntUew7hPjKVj OfIsIcNf6E0cHqh9C1QfsQercw4wquzuDF16okfqKORYcjgs0uCLz+6IAax+DyU61iug ejvKtFg11JwbccvpHbtLBsXriJJyXx7CmrEZKSVGUEnKdrwZFsj/0XvLehl6OnK9eAYz j7UEPdFy2Y0f4K1GwVBdXeB0CBpFdjFbUGJ/ArVTGxafeV3fty3/5xJjZa18E9N0Nfh7 Pk6Q== X-Forwarded-Encrypted: i=1; AHgh+RpvsFBVBqfUaSzohD4PkSSmUrY/TNDvTXAPMsBskx8MGG1A2DC+GIPfYOxOyiVzKjXvaV9UondQdZrpCuQ=@vger.kernel.org X-Gm-Message-State: AFuF++k+XQyj4/2rZp4cVSfWnC+ZZctwGGv/muzSUcK53fEfrUgUa+oj rXypYqqyXwgqL/ZvtFCKm0PHA23zrGmRXCPtG4c8uKFTCqeVWaleguZuxb/xCZ8osfwNqHGrgCE zq+tK5NpR64gpgMANsaovHbt+P87HAPABXZpbKgaKHWI0vPpc1WNjCt36y/BXxX3ldq0= X-Gm-Gg: AR+sD11roP/zrj6gwPpwvG54eaOq61lhODzmyEPkJ1B+k50jash8b0dYM1l6TLisnaA dJh9N/mqTK+LLc/GGo8tzuiRj5ta+R25VI0FJEAR2sILbtpyVw4T+HqOadr+M05w+6MwDYpeYl9 1rWE5pS1/TurpT939J5iq3vYC2FQGW+9+8XyeLCJ/wnkXTsfqsch2j3yPyEZYem32HSuvZvAvvR sspJoEVq6F3Kiv5u9kmKc+qHDQmvfMi1qfiVHG7FJ02iYyRKCRfX9OSG/vcK84lwekEu9d4Fw/3 IEl/gCk4jhttWThrgvGwuZKSKRyaySvngt+UG04QoJQErPMSD4kZScqFelxUgnmm0jGZfLmwjkA xTXm/WOcReUr/oMAiBGday1WcRM4NPnHQFb0ooOCBxPdeSgLfwobPLXtVzbM/qJQxH3op X-Received: by 2002:a05:620a:2906:b0:930:9091:f0ce with SMTP id af79cd13be357-939481032e1mr786772385a.22.1788247901080; Tue, 01 Sep 2026 00:31:41 -0700 (PDT) X-Received: by 2002:a05:620a:2906:b0:930:9091:f0ce with SMTP id af79cd13be357-939481032e1mr786769185a.22.1788247900574; Tue, 01 Sep 2026 00:31:40 -0700 (PDT) Received: from WENMLIU-LAB01.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-93918b0f825sm946766785a.40.2026.09.01.00.31.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 00:31:40 -0700 (PDT) From: Wenmeng Liu Date: Tue, 01 Sep 2026 15:31:06 +0800 Subject: [PATCH RESEND v5 3/4] media: i2c: og0ve1b: Introduce per-sensor data structure 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: <20260901-og0va1b-v5-3-b0400a9bac01@oss.qualcomm.com> References: <20260901-og0va1b-v5-0-b0400a9bac01@oss.qualcomm.com> In-Reply-To: <20260901-og0va1b-v5-0-b0400a9bac01@oss.qualcomm.com> To: Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sakari Ailus , Vladimir Zapolskiy Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Wenmeng Liu X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788247879; l=10303; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=v7MWIqfZGj0yHDCscd2nMkMidCP3VrHdRkNj3te5k4Y=; b=6rzC+tqveV2DLSkNwKVyRVI37iOFiTvIMSmLsdeevgz08DHhaIwlB5N/AOqK++jfc5MqFMcT8 SXcJi+njTGdAZxZH7RVDSRXp2DYru8U7JfMQWkOk3HYJzyIUsBDj5/o X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Authority-Analysis: v=2.4 cv=beZbluPB c=1 sm=1 tr=0 ts=6a967f5d cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=aIh3vjFOF9panSEBuokA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA2NiBTYWx0ZWRfX6ojsLERky3zu RvZoXOjR7NPzHrBigEe6VoGQmDf8zrIS9+CKm/WpOXvgGPvrT0baN0gV9bn5do91YcdWKWyJua6 S2i3s3Ygs3PA3JyWpXOi8DXGfSnEzEtmRYFVYojTxHSftcS0dyZNiGmIv1AQIGxxHjsrmGoNxI6 0Rzw1zoJZwcHnm0hoeg/5IUW3jDZQ5RHD0zmfSsmSVWJDq5PqLB4bXRYhdXiX8V68mzdTrbraHw JMUw1o1em6Q1Xz73fNR7R8mpOuZC+0DvIZ/Kvzq3Cs2CGiurjg89YQsjwyvhcA+LaFzv8xixwKh I7hEkPXvcGCcPW0ka1ko2fkx8+DBPDuaWZ2v4lm58jz6V46F3U8CPkeywL/g6GvUXqF7THIw+Kd SfA/JVoo/sqSyAGrJzI66EgxSou3J6YqeLWXKlaVglFzazSJZmlGp7BHuIgLZU8iRAFGTBBB/TW h+ZS8lQgUayJh/C0FXg== X-Proofpoint-GUID: i04z4EffL8BPHZ0aIJOn0uTbonUXG90e X-Proofpoint-ORIG-GUID: i04z4EffL8BPHZ0aIJOn0uTbonUXG90e X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA2NiBTYWx0ZWRfX+qruNv4qm1t8 ++vUecbvPx1hzUwd3lU6TVSbdx8Ylav7pTBus/ZRlwZCAxr/L6g6Kj3MMpxmUsrf5fyw2GgusMC k73pmHDkTQAqTFTro5XZXVa8sb1WGZI= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_02,2026-08-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 impostorscore=0 priorityscore=1501 malwarescore=0 spamscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010066 Refactor the driver to separate sensor-specific data from the common driver code. Introduce a sensor_data structure, populated through i2c_get_match_data(), to hold the chip ID, MCLK frequency, link frequencies and supported modes. Test pattern programming is described by a per-sensor callback, and each mode stores its media bus format code (rather than a bits-per-pixel value) so that sensors with a different output format can be supported. Reviewed-by: Vladimir Zapolskiy Tested-by: Vladimir Zapolskiy Signed-off-by: Wenmeng Liu --- drivers/media/i2c/og0ve1b.c | 100 +++++++++++++++++++++++++++++++---------= ---- 1 file changed, 72 insertions(+), 28 deletions(-) diff --git a/drivers/media/i2c/og0ve1b.c b/drivers/media/i2c/og0ve1b.c index da5c8e49d4a811f55736bd89c6922856f2e7391c..f560d5d90fda94abf4bc622c5e4= f861b078b811f 100644 --- a/drivers/media/i2c/og0ve1b.c +++ b/drivers/media/i2c/og0ve1b.c @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -65,11 +66,23 @@ struct og0ve1b_mode { u32 height; /* Frame height in pixels */ u32 hts; /* Horizontal timing size */ u32 vts; /* Default vertical timing size */ - u32 bpp; /* Bits per pixel */ + u32 code; /* MEDIA_BUS_FMT code */ =20 const struct og0ve1b_reg_list reg_list; /* Sensor register setting */ }; =20 +struct og0ve1b; + +struct og0ve1b_sensor_data { + u64 chip_id; + unsigned long mclk_freq; + int (*enable_test_pattern)(struct og0ve1b *og0ve1b, u32 pattern); + const s64 *link_freq_menu; + int num_link_freqs; + const struct og0ve1b_mode *modes; + int num_modes; +}; + static const char * const og0ve1b_test_pattern_menu[] =3D { "Disabled", "Standard Test Bar", @@ -99,6 +112,8 @@ struct og0ve1b { =20 /* Saved register value */ u64 pre_isp; + + const struct og0ve1b_sensor_data *data; }; =20 static const struct cci_reg_sequence og0ve1b_640x480_120fps_mode[] =3D { @@ -247,13 +262,13 @@ static const struct cci_reg_sequence og0ve1b_640x480_= 120fps_mode[] =3D { { CCI_REG8(0x3f47), 0x35 }, }; =20 -static const struct og0ve1b_mode supported_modes[] =3D { +static const struct og0ve1b_mode og0ve1b_supported_modes[] =3D { { .width =3D 640, .height =3D 480, .hts =3D 792, .vts =3D 568, - .bpp =3D 8, + .code =3D MEDIA_BUS_FMT_Y8_1X8, .reg_list =3D { .regs =3D og0ve1b_640x480_120fps_mode, .num_regs =3D ARRAY_SIZE(og0ve1b_640x480_120fps_mode), @@ -273,11 +288,21 @@ static int og0ve1b_enable_test_pattern(struct og0ve1b= *og0ve1b, u32 pattern) return cci_write(og0ve1b->regmap, OG0VE1B_REG_PRE_ISP, val, NULL); } =20 +static const struct og0ve1b_sensor_data og0ve1b_data =3D { + .chip_id =3D OG0VE1B_CHIP_ID, + .mclk_freq =3D OG0VE1B_MCLK_FREQ_24MHZ, + .enable_test_pattern =3D og0ve1b_enable_test_pattern, + .link_freq_menu =3D og0ve1b_link_freq_menu, + .num_link_freqs =3D ARRAY_SIZE(og0ve1b_link_freq_menu), + .modes =3D og0ve1b_supported_modes, + .num_modes =3D ARRAY_SIZE(og0ve1b_supported_modes), +}; + static int og0ve1b_set_ctrl(struct v4l2_ctrl *ctrl) { struct og0ve1b *og0ve1b =3D container_of(ctrl->handler, struct og0ve1b, ctrl_handler); - const struct og0ve1b_mode *mode =3D &supported_modes[0]; + const struct og0ve1b_mode *mode =3D &og0ve1b->data->modes[0]; s64 exposure_max; int ret; =20 @@ -314,7 +339,7 @@ static int og0ve1b_set_ctrl(struct v4l2_ctrl *ctrl) ctrl->val + mode->height, NULL); break; case V4L2_CID_TEST_PATTERN: - ret =3D og0ve1b_enable_test_pattern(og0ve1b, ctrl->val); + ret =3D og0ve1b->data->enable_test_pattern(og0ve1b, ctrl->val); break; default: ret =3D -EINVAL; @@ -330,10 +355,19 @@ static const struct v4l2_ctrl_ops og0ve1b_ctrl_ops = =3D { .s_ctrl =3D og0ve1b_set_ctrl, }; =20 +static s64 og0ve1b_pixel_rate(const struct og0ve1b_sensor_data *data) +{ + const struct og0ve1b_mode *mode =3D &data->modes[0]; + unsigned int bpp =3D mode->code =3D=3D MEDIA_BUS_FMT_Y8_1X8 ? 8 : 10; + + return div_u64(data->link_freq_menu[0], bpp); +} + static int og0ve1b_init_controls(struct og0ve1b *og0ve1b) { struct v4l2_ctrl_handler *ctrl_hdlr =3D &og0ve1b->ctrl_handler; - const struct og0ve1b_mode *mode =3D &supported_modes[0]; + const struct og0ve1b_mode *mode =3D &og0ve1b->data->modes[0]; + const struct og0ve1b_sensor_data *data =3D og0ve1b->data; s64 exposure_max, pixel_rate, h_blank, v_blank; struct v4l2_fwnode_device_properties props; struct v4l2_ctrl *ctrl; @@ -343,12 +377,12 @@ static int og0ve1b_init_controls(struct og0ve1b *og0v= e1b) =20 ctrl =3D v4l2_ctrl_new_int_menu(ctrl_hdlr, &og0ve1b_ctrl_ops, V4L2_CID_LINK_FREQ, - ARRAY_SIZE(og0ve1b_link_freq_menu) - 1, - 0, og0ve1b_link_freq_menu); + data->num_link_freqs - 1, + 0, data->link_freq_menu); if (ctrl) ctrl->flags |=3D V4L2_CTRL_FLAG_READ_ONLY; =20 - pixel_rate =3D og0ve1b_link_freq_menu[0] / mode->bpp; + pixel_rate =3D og0ve1b_pixel_rate(data); v4l2_ctrl_new_std(ctrl_hdlr, &og0ve1b_ctrl_ops, V4L2_CID_PIXEL_RATE, 0, pixel_rate, 1, pixel_rate); =20 @@ -407,7 +441,7 @@ static int og0ve1b_init_controls(struct og0ve1b *og0ve1= b) static void og0ve1b_update_pad_format(const struct og0ve1b_mode *mode, struct v4l2_mbus_framefmt *fmt) { - fmt->code =3D MEDIA_BUS_FMT_Y8_1X8; + fmt->code =3D mode->code; fmt->width =3D mode->width; fmt->height =3D mode->height; fmt->field =3D V4L2_FIELD_NONE; @@ -421,8 +455,8 @@ static int og0ve1b_enable_streams(struct v4l2_subdev *s= d, struct v4l2_subdev_state *state, u32 pad, u64 streams_mask) { - const struct og0ve1b_reg_list *reg_list =3D &supported_modes[0].reg_list; struct og0ve1b *og0ve1b =3D to_og0ve1b(sd); + const struct og0ve1b_reg_list *reg_list =3D &og0ve1b->data->modes[0].reg_= list; int ret; =20 ret =3D pm_runtime_resume_and_get(og0ve1b->dev); @@ -484,13 +518,14 @@ static int og0ve1b_set_pad_format(struct v4l2_subdev = *sd, struct v4l2_subdev_state *state, struct v4l2_subdev_format *fmt) { + struct og0ve1b *og0ve1b =3D to_og0ve1b(sd); struct v4l2_mbus_framefmt *format; const struct og0ve1b_mode *mode; =20 format =3D v4l2_subdev_state_get_format(state, 0); =20 - mode =3D v4l2_find_nearest_size(supported_modes, - ARRAY_SIZE(supported_modes), + mode =3D v4l2_find_nearest_size(og0ve1b->data->modes, + og0ve1b->data->num_modes, width, height, fmt->format.width, fmt->format.height); @@ -505,10 +540,12 @@ static int og0ve1b_enum_mbus_code(struct v4l2_subdev = *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_mbus_code_enum *code) { + struct og0ve1b *og0ve1b =3D to_og0ve1b(sd); + if (code->index > 0) return -EINVAL; =20 - code->code =3D MEDIA_BUS_FMT_Y8_1X8; + code->code =3D og0ve1b->data->modes[0].code; =20 return 0; } @@ -517,15 +554,18 @@ static int og0ve1b_enum_frame_size(struct v4l2_subdev= *sd, struct v4l2_subdev_state *sd_state, struct v4l2_subdev_frame_size_enum *fse) { - if (fse->index >=3D ARRAY_SIZE(supported_modes)) + struct og0ve1b *og0ve1b =3D to_og0ve1b(sd); + const struct og0ve1b_sensor_data *data =3D og0ve1b->data; + + if (fse->index >=3D data->num_modes) return -EINVAL; =20 - if (fse->code !=3D MEDIA_BUS_FMT_Y8_1X8) + if (fse->code !=3D data->modes[fse->index].code) return -EINVAL; =20 - fse->min_width =3D supported_modes[fse->index].width; + fse->min_width =3D data->modes[fse->index].width; fse->max_width =3D fse->min_width; - fse->min_height =3D supported_modes[fse->index].height; + fse->min_height =3D data->modes[fse->index].height; fse->max_height =3D fse->min_height; =20 return 0; @@ -534,13 +574,14 @@ static int og0ve1b_enum_frame_size(struct v4l2_subdev= *sd, static int og0ve1b_init_state(struct v4l2_subdev *sd, struct v4l2_subdev_state *state) { + const struct og0ve1b_mode *mode =3D &to_og0ve1b(sd)->data->modes[0]; struct v4l2_subdev_format fmt =3D { .which =3D V4L2_SUBDEV_FORMAT_TRY, .pad =3D 0, .format =3D { - .code =3D MEDIA_BUS_FMT_Y8_1X8, - .width =3D supported_modes[0].width, - .height =3D supported_modes[0].height, + .code =3D mode->code, + .width =3D mode->width, + .height =3D mode->height, }, }; =20 @@ -586,9 +627,9 @@ static int og0ve1b_identify_sensor(struct og0ve1b *og0v= e1b) return ret; } =20 - if (val !=3D OG0VE1B_CHIP_ID) { - dev_err(og0ve1b->dev, "chip id mismatch: %x!=3D%llx\n", - OG0VE1B_CHIP_ID, val); + if (val !=3D og0ve1b->data->chip_id) { + dev_err(og0ve1b->dev, "chip id mismatch: %llx!=3D%llx\n", + og0ve1b->data->chip_id, val); return -ENODEV; } =20 @@ -624,8 +665,8 @@ static int og0ve1b_check_hwcfg(struct og0ve1b *og0ve1b) ret =3D v4l2_link_freq_to_bitmap(og0ve1b->dev, bus_cfg.link_frequencies, bus_cfg.nr_of_link_frequencies, - og0ve1b_link_freq_menu, - ARRAY_SIZE(og0ve1b_link_freq_menu), + og0ve1b->data->link_freq_menu, + og0ve1b->data->num_link_freqs, &freq_bitmap); =20 v4l2_fwnode_endpoint_free(&bus_cfg); @@ -686,6 +727,9 @@ static int og0ve1b_probe(struct i2c_client *client) return -ENOMEM; =20 og0ve1b->dev =3D &client->dev; + og0ve1b->data =3D i2c_get_match_data(client); + if (!og0ve1b->data) + return -ENODEV; =20 v4l2_i2c_subdev_init(&og0ve1b->sd, client, &og0ve1b_subdev_ops); =20 @@ -700,7 +744,7 @@ static int og0ve1b_probe(struct i2c_client *client) "failed to get XVCLK clock\n"); =20 freq =3D clk_get_rate(og0ve1b->xvclk); - if (freq && freq !=3D OG0VE1B_MCLK_FREQ_24MHZ) + if (freq && freq !=3D og0ve1b->data->mclk_freq) return dev_err_probe(og0ve1b->dev, -EINVAL, "XVCLK clock frequency %lu is not supported\n", freq); @@ -819,7 +863,7 @@ static const struct dev_pm_ops og0ve1b_pm_ops =3D { }; =20 static const struct of_device_id og0ve1b_of_match[] =3D { - { .compatible =3D "ovti,og0ve1b" }, + { .compatible =3D "ovti,og0ve1b", .data =3D &og0ve1b_data }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, og0ve1b_of_match); --=20 2.34.1 From nobody Sat Sep 26 13:08:19 2026 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 2333F46D09A for ; Tue, 1 Sep 2026 07:31:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788247911; cv=none; b=RXi/yzhDxSiVm3j1S09OW2pEeWc1khdghcb+r+C4+6JPXN9hml+sopYnJ8HrNDnEJji+ZryvheF4GFfUOk1ygfkQEbFzscmSS/Ug/TUk1bDAGS2eUxZ+uDfLekJBom8ILwPhneICUFbLTdeo5W8mL2un40y6sJs+0SnNX5/sDYw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788247911; c=relaxed/simple; bh=ykUUSv77OEo5PaKCMO9ysrO1o42/MAKasnMbnUkbxUk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CX2OojHOW1WDMdhErrLV6RJWSFbo+PQKO0mDsKB1LhlR5AWerQSkszTSTrQapMkptL6+rjGcSt7EfUlGLodWRwclRWdIKEOr+9Kobc2P0PGy0qMZx2CPv+phqqDw4v6jJ83kvqjhlKZb6bui6L7+A5G28JyOaWKC8njx2XOui00= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=BYXfowsC; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ePPJG0Tu; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="BYXfowsC"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ePPJG0Tu" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68179JUU1975498 for ; Tue, 1 Sep 2026 07:31:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= SZDO19ey1PFMEeLfuEOzBYiZLgBVDFsoMKyTR2K1raU=; b=BYXfowsCjkV2AhHu iIy75VKD5tTwU47aHjSdcQ2pu5caxE4PEkUr1Q9js3WJ06OuazdX9MY4yOgj4dWp 9Tx0Pgf7V4qHxXMEuClcLpMKEYw5r9mDjenJC59E6qFak4HPNNw3NSxruIQrb47p gYeD+TeblnCF6ZHiqweZ+LN5GiuCTvXeDyLl8cz+FxjxMWXPT9Gqnx2067NanRFg rCQhB986hPC8issXO7MVSbn275nRoNyIqZz5OC1SSSVp9u/PDhTADlaPPnnaTCIQ 4nDUMWTq0H1bgFoKx02qKG4RBPMMsUIy7htDVW1xM1HtUxLoWtGT3+AqPUam72Pg mqP3DQ== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gdp7r11y3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 07:31:46 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-938153538caso111938185a.1 for ; Tue, 01 Sep 2026 00:31:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788247906; x=1788852706; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=SZDO19ey1PFMEeLfuEOzBYiZLgBVDFsoMKyTR2K1raU=; b=ePPJG0TuvI5GEboN2jY7jufleXaO9RgZcaYsZjMOkqXh2vlibICYq5E6kmAkjZFaf+ 1kRgR2AgYEClRJHlwj4LAWU8t8YimeHut/hFbA+dBdxohA/fMqOsku+RU21hAhTqdaFX vXTZvKNyo2cNa0dLX631Pds9po0OhX2WYnbydbhHR7jn4M11LNTXyxOg2YUy4RS7uM/0 OfNI8u2TLhweO58McDLknyAdtuRrW8+hD9wUvAm587Vy+DRtFTqcA7Pq3mjAvk3C42T1 ldy9+4+gWI8/XzG+tILvHkjrvE8zBJ16FS4BnNmwI2o1ccHTQdrK/IMm32kx2RJDzQV8 TIsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788247906; x=1788852706; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=SZDO19ey1PFMEeLfuEOzBYiZLgBVDFsoMKyTR2K1raU=; b=cpSQScEOxAEFAZNftjuQi2pIov8oMUf/vDIdXcMiUvH5XHzFezm36e3ph4tdHw0dPz ng1qSto44vvCrOmIjJQN8zub7NpZ3on1orMQ8xGuFwnEDf48L/EVulQX6IdzxsErQmoh 4a5L8m4dN3WeNBMOdKP/Vqg/ycl98p12PiEK5ckW8fqHorEzB930vzq8QWOwnNn2Wbd8 3n5G7Dk2NJWKoGZLbOTMHepqyHb1LRqzu1KuYGx0HZgruIJyAYrglyHxDQqmv8mIoG46 C/YiR/urJvKX8kJkfrUFHWzaVIvo8Z3db8qw137aXvAn40XHzpghJmNoUFYLisgQKYvO 69hA== X-Forwarded-Encrypted: i=1; AHgh+RpjNPZF++Qj03dfwuTQAfBETZdT4OjZVm5PP+BoX/ZStxVF/ZabBV8Hz4jDIK6v1/X9QkpkdyanU0uiqmw=@vger.kernel.org X-Gm-Message-State: AFuF++kPkU25uRhuzGfnkfdLBVchZEZMPhUIHsn0+33YtgONF2jGWB7j K07sBVXqgCAL3Np6ggYuOPXKMC9/9aNS6+IZXpx0bAVt9nO6bQbUmG6u8wW0bXVot7PvwohheGT cATJcan9lxhSnYoiDqCqRZRJpD0Ry4BvP3zG9luLSpXPgG3AR3qzq34yvmS9QvCMs2iA= X-Gm-Gg: AR+sD12MaMuW+6UY3czgn4qjQy0hlsXdpu+NKeLEj76kaocLXEAe4BEVbXcmI+Qiu/1 +HF19T0Wy66ml3AHxI8CpU7Rzb/Z2muuskSw6avguB9uzDGR7gPwlA0vqx1ghmX8ZHaOs+UX/1t lOrX90AFHsonQlwBTmeS5d0s0SI69rfgtsRWoNF11Ocyo5rnXu0XKpyBoyBqh7xLtvsrv6i54Sh I1rgtnDE+Ji3CAcOfCjrBiKhQZ7vexkHCU+39MnnzSGYgyhTFrr0UuVQ581f1Tsnp61xIL+LcE8 ohdO/oCaMU+tXGPJFI3j7vLpXqjpellEEnCXKCmSYYQQT9vNmobUa0nT6COs9p7rHOxvM6fkeAz x08PZX07Fnr2lHAY0y+6mwR8my0Cvuzj0/jrBnsw2B7IhCSvn+rbZB8bRJxTJv7cWHZ7o X-Received: by 2002:a05:620a:a0c9:10b0:939:595:e132 with SMTP id af79cd13be357-939137b133amr2890136085a.5.1788247906107; Tue, 01 Sep 2026 00:31:46 -0700 (PDT) X-Received: by 2002:a05:620a:a0c9:10b0:939:595:e132 with SMTP id af79cd13be357-939137b133amr2890132585a.5.1788247905602; Tue, 01 Sep 2026 00:31:45 -0700 (PDT) Received: from WENMLIU-LAB01.ap.qualcomm.com (Global_NAT1_IAD_FW.qualcomm.com. [129.46.232.65]) by smtp.gmail.com with ESMTPSA id af79cd13be357-93918b0f825sm946766785a.40.2026.09.01.00.31.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 00:31:45 -0700 (PDT) From: Wenmeng Liu Date: Tue, 01 Sep 2026 15:31:07 +0800 Subject: [PATCH RESEND v5 4/4] media: i2c: og0ve1b: Add support for OmniVision OG0VA1B 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: <20260901-og0va1b-v5-4-b0400a9bac01@oss.qualcomm.com> References: <20260901-og0va1b-v5-0-b0400a9bac01@oss.qualcomm.com> In-Reply-To: <20260901-og0va1b-v5-0-b0400a9bac01@oss.qualcomm.com> To: Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sakari Ailus , Vladimir Zapolskiy Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Wenmeng Liu X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1788247879; l=13942; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=ykUUSv77OEo5PaKCMO9ysrO1o42/MAKasnMbnUkbxUk=; b=y+wnv5eh9De4dz2jijNaQZKZ7w4zlCdfDq/mUiBCS4dtbD7QSF0dPnc382Iyk9QLm6RwaH7zk 9YowMxvG6YSCsx93cuvyV7NyrMGhNWjf0wT8g7Bae/RZzLj+BZ4xgec X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Authority-Analysis: v=2.4 cv=beZbluPB c=1 sm=1 tr=0 ts=6a967f62 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=kvSDJSb0XTZWr82cfuIA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA2NiBTYWx0ZWRfX95VbeC6f4mH6 R5MeC6Ho5ksf2BagxUT3RtQKSsc3gMIuI0ykWu8m6wGa9IZF0ElINb+6i8s+JBkgypIVMP2BFRK 7WHSulF6xq9zVyuEzGayx6KMLTTHdJhb/yd8dnHFfjJ2179ETrS91VR7+4M65U4XRVK1eeczqyU KcS0Cf9pECRj1tlQiPpdpAhKzsJr2VTamLqPUXiboFlAXoO4/Br3QQB98s1VeG/IC7nv0jBgliI TlgjD325U7fqbGFQSAn6qsABpsDveLnQCob2ydpKHIZbLhd16oQy7k4gUetJwuulzmbXP2eOAWF 5mXq/1pfJN1Ckw2dyYsz8EX8EPOLLlrK75n6zl7P5gjhYUAjgtFVJoJTBajTTigHblNEFLURn9C tNtI/0pXUSq23FNPsPGiLdZIPAt6tO2xdt+sTTpoRijNQAXbVakl2xrfgEh3BaOKtYI1kDQ5nGA 3IiPykcu5C/XR1Rz/8A== X-Proofpoint-GUID: KTXz_GUiqOScxOM6mVCgF7yD-EWHXDLU X-Proofpoint-ORIG-GUID: KTXz_GUiqOScxOM6mVCgF7yD-EWHXDLU X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA2NiBTYWx0ZWRfX83qwKLnLp4Is IqqhahhPNPAmTmLjdJ6daBWFfvLYIAbqS4G5KB9QrmljVZcVE0WduQ5buZy/IR824WCJL9wy5zK dBagwUfVqsf9XkEusreehVz/GncxNXo= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-09-01_02,2026-08-31_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 impostorscore=0 priorityscore=1501 malwarescore=0 spamscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010066 The OmniVision OG0VA1B is a monochrome image sensor closely related to the OG0VE1B. It shares the SCCB control interface, power supplies and the single-lane MIPI D-PHY description, and differs in its chip id, the test pattern register, the register programming and the output format (10-bit RAW instead of 8-bit). Add an og0ve1b_sensor_data entry describing the OG0VA1B together with its 640x480 60fps register sequence. Reviewed-by: Vladimir Zapolskiy Tested-by: Vladimir Zapolskiy # og0ve1b Signed-off-by: Wenmeng Liu --- drivers/media/i2c/og0ve1b.c | 278 ++++++++++++++++++++++++++++++++++++++++= ++-- 1 file changed, 266 insertions(+), 12 deletions(-) diff --git a/drivers/media/i2c/og0ve1b.c b/drivers/media/i2c/og0ve1b.c index f560d5d90fda94abf4bc622c5e4f861b078b811f..7b8555a833c255652204d5f4c87= c8d701c3008e6 100644 --- a/drivers/media/i2c/og0ve1b.c +++ b/drivers/media/i2c/og0ve1b.c @@ -15,10 +15,14 @@ #include #include =20 +#define OG0VA1B_LINK_FREQ_480MHZ (480 * HZ_PER_MHZ) +#define OG0VA1B_MCLK_FREQ_19_2MHZ (19200 * HZ_PER_KHZ) + #define OG0VE1B_LINK_FREQ_500MHZ (500 * HZ_PER_MHZ) #define OG0VE1B_MCLK_FREQ_24MHZ (24 * HZ_PER_MHZ) =20 -#define OG0VE1B_REG_CHIP_ID CCI_REG24(0x300a) +#define OG0V_REG_CHIP_ID CCI_REG24(0x300a) +#define OG0VA1B_CHIP_ID 0xc75641 #define OG0VE1B_CHIP_ID 0xc75645 =20 #define OG0VE1B_REG_MODE_SELECT CCI_REG8(0x0100) @@ -46,12 +50,18 @@ #define OG0VE1B_REG_VTS CCI_REG16(0x380e) #define OG0VE1B_VTS_MAX 0xffff =20 -/* Test pattern */ +/* Test pattern - OG0VA1B uses 0x5100, OG0VE1B uses 0x5e00 */ +#define OG0VA1B_REG_TEST_PATTERN CCI_REG8(0x5100) +#define OG0VA1B_TEST_PATTERN_BAR_SHIFT 2 #define OG0VE1B_REG_PRE_ISP CCI_REG8(0x5e00) #define OG0VE1B_TEST_PATTERN_ENABLE BIT(7) =20 #define to_og0ve1b(_sd) container_of(_sd, struct og0ve1b, sd) =20 +static const s64 og0va1b_link_freq_menu[] =3D { + OG0VA1B_LINK_FREQ_480MHZ, +}; + static const s64 og0ve1b_link_freq_menu[] =3D { OG0VE1B_LINK_FREQ_500MHZ, }; @@ -74,15 +84,31 @@ struct og0ve1b_mode { struct og0ve1b; =20 struct og0ve1b_sensor_data { + const char *name; u64 chip_id; unsigned long mclk_freq; int (*enable_test_pattern)(struct og0ve1b *og0ve1b, u32 pattern); + const char * const *test_pattern_menu; + int num_test_patterns; + bool cache_test_pattern_reg; + /* Exposure register unit: OG0VE1B 1/16 line (4), OG0VA1B whole lines (0)= . */ + unsigned int exposure_shift; + /* Pixel rate multiplier: OG0VA1B uses CSI-2 DDR (2), OG0VE1B keeps 1. */ + unsigned int pixel_rate_mul; const s64 *link_freq_menu; int num_link_freqs; const struct og0ve1b_mode *modes; int num_modes; }; =20 +static const char * const og0va1b_test_pattern_menu[] =3D { + "Disabled", + "Standard Test Bar", + "Top-Bottom Darker Test Bar", + "Right-Left Darker Test Bar", + "Bottom-Top Darker Test Bar", +}; + static const char * const og0ve1b_test_pattern_menu[] =3D { "Disabled", "Standard Test Bar", @@ -116,6 +142,196 @@ struct og0ve1b { const struct og0ve1b_sensor_data *data; }; =20 +static const struct cci_reg_sequence og0va1b_640x480_60fps_mode[] =3D { + { CCI_REG8(0x0302), 0x31 }, + { CCI_REG8(0x0303), 0x02 }, + { CCI_REG8(0x0304), 0x01 }, + { CCI_REG8(0x0305), 0x90 }, + { CCI_REG8(0x0306), 0x00 }, + { CCI_REG8(0x0323), 0x02 }, + { CCI_REG8(0x0325), 0x68 }, + { CCI_REG8(0x0326), 0xd8 }, + { CCI_REG8(0x3006), 0x0e }, + { CCI_REG8(0x300d), 0x08 }, + { CCI_REG8(0x3018), 0xf0 }, + { CCI_REG8(0x301c), 0xf0 }, + { CCI_REG8(0x3020), 0x20 }, + { CCI_REG8(0x3040), 0x0f }, + { CCI_REG8(0x3022), 0x01 }, + { CCI_REG8(0x3107), 0x40 }, + { CCI_REG8(0x3216), 0x01 }, + { CCI_REG8(0x3217), 0x00 }, + { CCI_REG8(0x3218), 0xc0 }, + { CCI_REG8(0x3219), 0x55 }, + { CCI_REG8(0x3506), 0x01 }, + { CCI_REG8(0x3507), 0x50 }, + { CCI_REG8(0x3508), 0x01 }, + { CCI_REG8(0x3509), 0x00 }, + { CCI_REG8(0x350a), 0x01 }, + { CCI_REG8(0x350b), 0x00 }, + { CCI_REG8(0x350c), 0x00 }, + { CCI_REG8(0x3541), 0x00 }, + { CCI_REG8(0x3542), 0x40 }, + { CCI_REG8(0x3605), 0x90 }, + { CCI_REG8(0x3606), 0x41 }, + { CCI_REG8(0x3612), 0x00 }, + { CCI_REG8(0x3620), 0x08 }, + { CCI_REG8(0x3630), 0x17 }, + { CCI_REG8(0x3631), 0x99 }, + { CCI_REG8(0x3639), 0x88 }, + { CCI_REG8(0x3668), 0x00 }, + { CCI_REG8(0x3674), 0x00 }, + { CCI_REG8(0x3677), 0x3f }, + { CCI_REG8(0x368f), 0x06 }, + { CCI_REG8(0x36a2), 0x19 }, + { CCI_REG8(0x36a4), 0xf1 }, + { CCI_REG8(0x36a5), 0x2d }, + { CCI_REG8(0x3706), 0x30 }, + { CCI_REG8(0x370d), 0x72 }, + { CCI_REG8(0x3713), 0x86 }, + { CCI_REG8(0x3715), 0x03 }, + { CCI_REG8(0x3716), 0x00 }, + { CCI_REG8(0x376d), 0x24 }, + { CCI_REG8(0x3770), 0x3a }, + { CCI_REG8(0x3778), 0x00 }, + { CCI_REG8(0x37a8), 0x03 }, + { CCI_REG8(0x37a9), 0x00 }, + { CCI_REG8(0x37df), 0x7d }, + { CCI_REG8(0x3800), 0x00 }, + { CCI_REG8(0x3801), 0x00 }, + { CCI_REG8(0x3802), 0x00 }, + { CCI_REG8(0x3803), 0x00 }, + { CCI_REG8(0x3804), 0x02 }, + { CCI_REG8(0x3805), 0x8f }, + { CCI_REG8(0x3806), 0x01 }, + { CCI_REG8(0x3807), 0xef }, + { CCI_REG8(0x3808), 0x02 }, + { CCI_REG8(0x3809), 0x80 }, + { CCI_REG8(0x380a), 0x01 }, + { CCI_REG8(0x380b), 0xe0 }, + { CCI_REG8(0x380c), 0x01 }, + { CCI_REG8(0x380d), 0x78 }, + { CCI_REG8(0x380e), 0x08 }, + { CCI_REG8(0x380f), 0x30 }, + { CCI_REG8(0x3810), 0x00 }, + { CCI_REG8(0x3811), 0x08 }, + { CCI_REG8(0x3812), 0x00 }, + { CCI_REG8(0x3813), 0x08 }, + { CCI_REG8(0x3814), 0x11 }, + { CCI_REG8(0x3815), 0x11 }, + { CCI_REG8(0x3816), 0x00 }, + { CCI_REG8(0x3817), 0x01 }, + { CCI_REG8(0x3818), 0x00 }, + { CCI_REG8(0x3819), 0x05 }, + { CCI_REG8(0x3820), 0x40 }, + { CCI_REG8(0x3821), 0x04 }, + { CCI_REG8(0x3823), 0x00 }, + { CCI_REG8(0x3826), 0x00 }, + { CCI_REG8(0x3827), 0x00 }, + { CCI_REG8(0x382b), 0x52 }, + { CCI_REG8(0x384a), 0xa2 }, + { CCI_REG8(0x3858), 0x00 }, + { CCI_REG8(0x3859), 0x00 }, + { CCI_REG8(0x3860), 0x00 }, + { CCI_REG8(0x3861), 0x00 }, + { CCI_REG8(0x3866), 0x0c }, + { CCI_REG8(0x3867), 0x07 }, + { CCI_REG8(0x3884), 0x00 }, + { CCI_REG8(0x3885), 0x08 }, + { CCI_REG8(0x3888), 0x50 }, + { CCI_REG8(0x3893), 0x6c }, + { CCI_REG8(0x3898), 0x00 }, + { CCI_REG8(0x389a), 0x04 }, + { CCI_REG8(0x389b), 0x01 }, + { CCI_REG8(0x389c), 0x0b }, + { CCI_REG8(0x389d), 0xdc }, + { CCI_REG8(0x38b1), 0x04 }, + { CCI_REG8(0x38b2), 0x00 }, + { CCI_REG8(0x38b3), 0x08 }, + { CCI_REG8(0x38c1), 0x46 }, + { CCI_REG8(0x38c9), 0x02 }, + { CCI_REG8(0x38d4), 0x06 }, + { CCI_REG8(0x38d5), 0x5a }, + { CCI_REG8(0x38d6), 0x08 }, + { CCI_REG8(0x38d7), 0x3a }, + { CCI_REG8(0x391f), 0x00 }, + { CCI_REG8(0x3920), 0xaa }, + { CCI_REG8(0x3921), 0x00 }, + { CCI_REG8(0x3922), 0x00 }, + { CCI_REG8(0x3923), 0x00 }, + { CCI_REG8(0x3924), 0x00 }, + { CCI_REG8(0x3925), 0x00 }, + { CCI_REG8(0x3926), 0x00 }, + { CCI_REG8(0x3927), 0x00 }, + { CCI_REG8(0x3928), 0x10 }, + { CCI_REG8(0x3929), 0x01 }, + { CCI_REG8(0x392a), 0xb4 }, + { CCI_REG8(0x392b), 0x00 }, + { CCI_REG8(0x392c), 0x10 }, + { CCI_REG8(0x392d), 0x01 }, + { CCI_REG8(0x392e), 0x78 }, + { CCI_REG8(0x392f), 0x4a }, + { CCI_REG8(0x391e), 0x01 }, + { CCI_REG8(0x389f), 0x08 }, + { CCI_REG8(0x38a0), 0x00 }, + { CCI_REG8(0x38a1), 0x00 }, + { CCI_REG8(0x3a06), 0x06 }, + { CCI_REG8(0x3a07), 0x78 }, + { CCI_REG8(0x3a08), 0x08 }, + { CCI_REG8(0x3a09), 0x80 }, + { CCI_REG8(0x3a52), 0x00 }, + { CCI_REG8(0x3a53), 0x01 }, + { CCI_REG8(0x3a54), 0x0c }, + { CCI_REG8(0x3a55), 0x04 }, + { CCI_REG8(0x3a58), 0x0c }, + { CCI_REG8(0x3a59), 0x04 }, + { CCI_REG8(0x4000), 0xcf }, + { CCI_REG8(0x4003), 0x40 }, + { CCI_REG8(0x4008), 0x04 }, + { CCI_REG8(0x4009), 0x13 }, + { CCI_REG8(0x400a), 0x02 }, + { CCI_REG8(0x400b), 0x34 }, + { CCI_REG8(0x4010), 0x71 }, + { CCI_REG8(0x4042), 0xc3 }, + { CCI_REG8(0x4306), 0x04 }, + { CCI_REG8(0x4307), 0x12 }, + { CCI_REG8(0x4500), 0x70 }, + { CCI_REG8(0x4509), 0x00 }, + { CCI_REG8(0x450b), 0x83 }, + { CCI_REG8(0x4604), 0x68 }, + { CCI_REG8(0x481b), 0x44 }, + { CCI_REG8(0x481f), 0x30 }, + { CCI_REG8(0x4823), 0x44 }, + { CCI_REG8(0x4825), 0x35 }, + { CCI_REG8(0x4837), 0x11 }, + { CCI_REG8(0x4f00), 0x04 }, + { CCI_REG8(0x4f10), 0x04 }, + { CCI_REG8(0x4f21), 0x01 }, + { CCI_REG8(0x4f22), 0x00 }, + { CCI_REG8(0x4f23), 0x54 }, + { CCI_REG8(0x4f24), 0x51 }, + { CCI_REG8(0x4f25), 0x41 }, + { CCI_REG8(0x5000), 0x3f }, + { CCI_REG8(0x5001), 0x80 }, + { CCI_REG8(0x500a), 0x00 }, + { CCI_REG8(0x5100), 0x00 }, + { CCI_REG8(0x5111), 0x20 }, +}; + +static const struct og0ve1b_mode og0va1b_supported_modes[] =3D { + { + .width =3D 640, + .height =3D 480, + .hts =3D 752, + .vts =3D 2096, + .code =3D MEDIA_BUS_FMT_Y10_1X10, + .reg_list =3D { + .regs =3D og0va1b_640x480_60fps_mode, + .num_regs =3D ARRAY_SIZE(og0va1b_640x480_60fps_mode), + }, + }, +}; + static const struct cci_reg_sequence og0ve1b_640x480_120fps_mode[] =3D { { CCI_REG8(0x30a0), 0x02 }, { CCI_REG8(0x30a1), 0x00 }, @@ -276,6 +492,17 @@ static const struct og0ve1b_mode og0ve1b_supported_mod= es[] =3D { }, }; =20 +static int og0va1b_enable_test_pattern(struct og0ve1b *og0ve1b, u32 patter= n) +{ + u64 val =3D 0; + + if (pattern) + val =3D ((pattern - 1) << OG0VA1B_TEST_PATTERN_BAR_SHIFT) | + OG0VE1B_TEST_PATTERN_ENABLE; + + return cci_write(og0ve1b->regmap, OG0VA1B_REG_TEST_PATTERN, val, NULL); +} + static int og0ve1b_enable_test_pattern(struct og0ve1b *og0ve1b, u32 patter= n) { u64 val =3D og0ve1b->pre_isp; @@ -288,10 +515,31 @@ static int og0ve1b_enable_test_pattern(struct og0ve1b= *og0ve1b, u32 pattern) return cci_write(og0ve1b->regmap, OG0VE1B_REG_PRE_ISP, val, NULL); } =20 +static const struct og0ve1b_sensor_data og0va1b_data =3D { + .name =3D "og0va1b", + .chip_id =3D OG0VA1B_CHIP_ID, + .mclk_freq =3D OG0VA1B_MCLK_FREQ_19_2MHZ, + .enable_test_pattern =3D og0va1b_enable_test_pattern, + .test_pattern_menu =3D og0va1b_test_pattern_menu, + .num_test_patterns =3D ARRAY_SIZE(og0va1b_test_pattern_menu), + .exposure_shift =3D 0, + .pixel_rate_mul =3D 2, + .link_freq_menu =3D og0va1b_link_freq_menu, + .num_link_freqs =3D ARRAY_SIZE(og0va1b_link_freq_menu), + .modes =3D og0va1b_supported_modes, + .num_modes =3D ARRAY_SIZE(og0va1b_supported_modes), +}; + static const struct og0ve1b_sensor_data og0ve1b_data =3D { + .name =3D "og0ve1b", .chip_id =3D OG0VE1B_CHIP_ID, .mclk_freq =3D OG0VE1B_MCLK_FREQ_24MHZ, .enable_test_pattern =3D og0ve1b_enable_test_pattern, + .test_pattern_menu =3D og0ve1b_test_pattern_menu, + .num_test_patterns =3D ARRAY_SIZE(og0ve1b_test_pattern_menu), + .cache_test_pattern_reg =3D true, + .exposure_shift =3D 4, + .pixel_rate_mul =3D 1, .link_freq_menu =3D og0ve1b_link_freq_menu, .num_link_freqs =3D ARRAY_SIZE(og0ve1b_link_freq_menu), .modes =3D og0ve1b_supported_modes, @@ -332,7 +580,8 @@ static int og0ve1b_set_ctrl(struct v4l2_ctrl *ctrl) break; case V4L2_CID_EXPOSURE: ret =3D cci_write(og0ve1b->regmap, OG0VE1B_REG_EXPOSURE, - ctrl->val << 4, NULL); + ctrl->val << og0ve1b->data->exposure_shift, + NULL); break; case V4L2_CID_VBLANK: ret =3D cci_write(og0ve1b->regmap, OG0VE1B_REG_VTS, @@ -360,7 +609,7 @@ static s64 og0ve1b_pixel_rate(const struct og0ve1b_sens= or_data *data) const struct og0ve1b_mode *mode =3D &data->modes[0]; unsigned int bpp =3D mode->code =3D=3D MEDIA_BUS_FMT_Y8_1X8 ? 8 : 10; =20 - return div_u64(data->link_freq_menu[0], bpp); + return div_u64(data->link_freq_menu[0] * data->pixel_rate_mul, bpp); } =20 static int og0ve1b_init_controls(struct og0ve1b *og0ve1b) @@ -413,8 +662,8 @@ static int og0ve1b_init_controls(struct og0ve1b *og0ve1= b) =20 v4l2_ctrl_new_std_menu_items(ctrl_hdlr, &og0ve1b_ctrl_ops, V4L2_CID_TEST_PATTERN, - ARRAY_SIZE(og0ve1b_test_pattern_menu) - 1, - 0, 0, og0ve1b_test_pattern_menu); + data->num_test_patterns - 1, + 0, 0, data->test_pattern_menu); =20 if (ctrl_hdlr->error) return ctrl_hdlr->error; @@ -621,7 +870,7 @@ static int og0ve1b_identify_sensor(struct og0ve1b *og0v= e1b) u64 val; int ret; =20 - ret =3D cci_read(og0ve1b->regmap, OG0VE1B_REG_CHIP_ID, &val, NULL); + ret =3D cci_read(og0ve1b->regmap, OG0V_REG_CHIP_ID, &val, NULL); if (ret) { dev_err(og0ve1b->dev, "failed to read chip id: %d\n", ret); return ret; @@ -633,10 +882,12 @@ static int og0ve1b_identify_sensor(struct og0ve1b *og= 0ve1b) return -ENODEV; } =20 - ret =3D cci_read(og0ve1b->regmap, OG0VE1B_REG_PRE_ISP, - &og0ve1b->pre_isp, NULL); - if (ret) - dev_err(og0ve1b->dev, "failed to read pre_isp: %d\n", ret); + if (og0ve1b->data->cache_test_pattern_reg) { + ret =3D cci_read(og0ve1b->regmap, OG0VE1B_REG_PRE_ISP, + &og0ve1b->pre_isp, NULL); + if (ret) + dev_err(og0ve1b->dev, "failed to read pre_isp: %d\n", ret); + } =20 return ret; } @@ -732,6 +983,8 @@ static int og0ve1b_probe(struct i2c_client *client) return -ENODEV; =20 v4l2_i2c_subdev_init(&og0ve1b->sd, client, &og0ve1b_subdev_ops); + v4l2_i2c_subdev_set_name(&og0ve1b->sd, client, + og0ve1b->data->name, NULL); =20 og0ve1b->regmap =3D devm_cci_regmap_init_i2c(client, 16); if (IS_ERR(og0ve1b->regmap)) @@ -863,6 +1116,7 @@ static const struct dev_pm_ops og0ve1b_pm_ops =3D { }; =20 static const struct of_device_id og0ve1b_of_match[] =3D { + { .compatible =3D "ovti,og0va1b", .data =3D &og0va1b_data }, { .compatible =3D "ovti,og0ve1b", .data =3D &og0ve1b_data }, { /* sentinel */ } }; @@ -881,5 +1135,5 @@ static struct i2c_driver og0ve1b_i2c_driver =3D { module_i2c_driver(og0ve1b_i2c_driver); =20 MODULE_AUTHOR("Vladimir Zapolskiy "); -MODULE_DESCRIPTION("OmniVision OG0VE1B sensor driver"); +MODULE_DESCRIPTION("OmniVision OG0VE1B/OG0VA1B sensor driver"); MODULE_LICENSE("GPL"); --=20 2.34.1