From nobody Sat Sep 26 13:18:37 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 C9DEA46D2C3 for ; Tue, 1 Sep 2026 07:40:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788248439; cv=none; b=u2UAr08KRncwNaBp8dHXtbyy+zqNJPZu5Oas6iaQHMREbCvvnowSmb/4RO2Az5GR9gkP5MnjQK3PMq9VEsMGKfK18aO+H+QNcMoFhggg/kEwcE2ghrGtawfYJt0wSBmnz2ZeX2J9zhun7ILNRAGRs+plRdJeamhKU/9X8DHIULo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788248439; c=relaxed/simple; bh=TcAXQjm3y4bxY72fFI+XTJk2M6ZXHTIsdSnWHX2Ufxk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PHQUp6fUCoJrhbqc79oQg70UarqWu4bm7h8U5/kDjleXEh5NVtobFn2pgE/rzf7XHRtCzQW9CCQzoNXXQ7tYkj3PyKrE2i5Zer0qpJdgiYL7R9Yegr4LkkBbXNQH1gP2F9V1RAuy83ZIoIplPJmBDi2ot10dhkxUeNfUHZfMJuY= 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=RD5usTbo; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Gzri5ELg; arc=none smtp.client-ip=205.220.168.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="RD5usTbo"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Gzri5ELg" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681792r1705425 for ; Tue, 1 Sep 2026 07:40: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= VgKDv1xcq0t3CD7zLa+LminS2DbKGmggIsaKAN93+/4=; b=RD5usTboIh0wJoaR G7pPnPR3vvmrc8rRlrHFPlvrDElLmcu7HjrK1Y2t5UzvzQ4Xg4zqYa8HKZdezxb9 pV5BVkm+yQ9p5ehsbZKxlGGwXitp6xo3xTOUUL2ZjaIqSCoIpCRkwKVejWhaWxgN qd7YnyTzIidkPHc9UMmz6IqCC/IQ0ixP1tRYegWWfbrVbhtokkMf+vfjfGZarz3d IVA+TrJERdYNsc30d6dxyZf2rFX46r0q7b2B4advFL2t5GOKkOLJDiQaijQYYxd9 E/jsAXEUqCApc4OMs44eXFYSqcLnFCYQaWXQ7vrpxXB/FsLbGZE2GrZyitveNZBA wm7/5A== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gdrcsgjm4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 07:40:36 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-92ec3146553so1074211985a.1 for ; Tue, 01 Sep 2026 00:40:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788248436; x=1788853236; 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=Gzri5ELgyGyhbOyPB7QypXsFL2gqouZ/1f3QRk4iDqaWyHb7qL0KDyksZaSUe5/5rN EwCt7n5a8DsYqPuupPXxzHV2Na+4UkeTcv4SQaK6C88kco4Hgk6hQ0rFWDoSfjRgzTFW EuYnBCUvZq2nOV6r+2g0drcPTS6nQp9yy+zMIdVlyeIWY5RYN+AqYEAajhgfnJmxT1Mp VCZ9xR2euA/3Ro28XnHr21mZkRtC10jtsNz5ArHBKQTXue8EZUhCnZcvDFkcX8pqnMV3 FosEDl5ic14nZ4Fz8piG03kNT1TrqT1EQcBfEw+9T/njaqLyN9Kkp2EXX4UPDodTFovc BAmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788248436; x=1788853236; 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=aNUcPTqh3m2y75N/XlHte4nqDODfdrIXFIvKtGtIkWonysTxqfvNyfl0OeGuGjns3E kSxihH0YbLvS7L1EwATcuaX50YTkNRmm9hl7GaSjCojFPi+0RB1UcQWTtLeuz/79rqyj jGkcvuMi8PV4iudWrhjDvDFFr14BMZnwC18vxIOMsFbtPlF+BaNZ6BUP8CgghZ5vpMkp 1Mo/LyYJ+IU3aOhDdLoZvFt1dq65cHw5DvmrJ3v3e98Al68VDWfW8LDz4DFWUuAlwXdV cpKTruhIipJR1hJhrE40YOw7RXnBWimq68d17d4PqV4xjEiOPqlwJFuGdDYzqHFjtHea fFZw== X-Forwarded-Encrypted: i=1; AHgh+RrH0siZC3yNA/bIXibwvdzTvyTAcg0Y7aCTSnZLafehRGbmSUe71Nf9n/p7HAlQBiQLvRQW1CrtqSfr/H0=@vger.kernel.org X-Gm-Message-State: AFuF++n6GBeYI8uh0muz1Byzu9PmZCWFTNClMKvCRYDcmwMrDJHJzJWu rCSx+rTdgvtoKVxkdAbxwWcznbp0AI18EJfbwMoOpqeVqLGdj/kYmAnpy28mGiIeQsBJ4G+hpiN 2YjTiBLdJppLZP3an6BVvtD/1RxZ3vBCOXFMmi3AnhAZ84shRSqs4GsbXpneNqsDIiNI= X-Gm-Gg: AR+sD12w1zASBevmfKm2slo9OeYD736QQUr2BXkbyoUoP1zy0Xk1sPXC7PhObPWkMfU YBpeM7QPbeE2NOU7zcSvRABhX1DAg92MuSAkqGFlOlngVRIHbIkxLeVvfs7U2jp4BANzOcxmDOz 1kZo/zGmo90c/uwUuUvpfznUNfU20Mi+zYBjExAoOpa6RmIIz55xagChR7WsGXRugsykgx1QmL4 mUJeJRlFYIZYzGhUu3Qks1ljNpW4l6/NYE9ud0gfk3kVy6/BNnWMCboVWV82aB8lvioxBUz7Xoj h7WHeOhZrwN0CGiDmmJX63kxBKpdgB9eACzlYwiMpDSi4KJg7HNsKBnwQyEfhu8lHhRhbIJyPOv QFW7PpZLAFI9+YqDWyqSoHtwtRvyaCyNG1aNJ+28CLv+J4lKzYVSJPpPPdyJMGa067L9s X-Received: by 2002:a05:620a:a414:10b0:937:6aa0:db7b with SMTP id af79cd13be357-939137b375bmr2860698685a.5.1788248435765; Tue, 01 Sep 2026 00:40:35 -0700 (PDT) X-Received: by 2002:a05:620a:a414:10b0:937:6aa0:db7b with SMTP id af79cd13be357-939137b375bmr2860695885a.5.1788248435296; Tue, 01 Sep 2026 00:40: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-939173f2758sm960412685a.37.2026.09.01.00.40.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 00:40:34 -0700 (PDT) From: Wenmeng Liu Date: Tue, 01 Sep 2026 15:40:04 +0800 Subject: [PATCH v6 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-v6-1-a05b2d04c892@oss.qualcomm.com> References: <20260901-og0va1b-v6-0-a05b2d04c892@oss.qualcomm.com> In-Reply-To: <20260901-og0va1b-v6-0-a05b2d04c892@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=1788248425; l=2177; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=TcAXQjm3y4bxY72fFI+XTJk2M6ZXHTIsdSnWHX2Ufxk=; b=yVRIHwAXVhXH14MvIsQ5q7D2SW+lzFPAbllEUFjWurhJQ0oOM8BbjapX6dQXsuGSsOZJ5Rb+k LqGT9Ow0Q/TChtnSjooIV26OJYLB2zKpBxYLUn60OMUaVPlCntM/jsQ X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA2NyBTYWx0ZWRfX9UB/azUcgrkj /9vWVuMbyIvqT5R2KdcVbxV0zVNZ0CgxF9j63tyuI4sbRNAnyzCHxHDZY8MisTG3/+1PLXr4pu1 Py3C0Pp9xt0zbPMx1sdAzuT1QIZDP/o= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA2NyBTYWx0ZWRfX3FhGTP5Wpssh doW5Fd5hGBOxwl5fzJ7sExaLskWsCL5jprnU2BAsL1PgsWlcu8duW896Zld8VrywxtTFMmQjZvU +FZO0FuTO6zEv9R/NPSBjkAKj5knkmuCd6GkNGO62a/EKEsEJ1Z9CSq1s7/sb8jpxwEOV6refEm uhhjRkA7EXiAaBdM9pe7Z6DkSNcp6oQUWK8FWZqbahJgD3wElD7zPQTJLLrCi+p4dcu5fQG9lHi 46V2z+8dyKUUtraHby31vu2IrBeHoDYax526sn2nXQsKqD5nop+0klHYTUYT+TDYgktVtf2JdF6 Q68S7B5cBw0XN2K4oVrh5Y4Ek/Ap7bGZ1cqf1U7R3uj5V1TV5d0EX1kwLY6hSpFjM1av2dAZm/6 MNNcxxe23Qadjd1RzyyAuoe/2X27fWTPlFjCnLQsXExHxXbRXpPKh9ENbltcS6zrJcHCWvuMXLr sF1/aqCmcWD7BZV7WnQ== X-Proofpoint-GUID: L7hi7z27qmqNJrvhNNR-Lv9NpY8x9EE9 X-Proofpoint-ORIG-GUID: L7hi7z27qmqNJrvhNNR-Lv9NpY8x9EE9 X-Authority-Analysis: v=2.4 cv=QsNuG1yd c=1 sm=1 tr=0 ts=6a968174 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=gEfo2CItAAAA:8 a=XYAwZIGsAAAA:8 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=M65GHGH_L51Dv4RaLaoA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO: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 bulkscore=0 impostorscore=0 phishscore=0 suspectscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 spamscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010067 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:18:37 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 2DAB446C85E for ; Tue, 1 Sep 2026 07:40:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788248443; cv=none; b=gOfv+Oc6d86QjEZ0qypbjJHbDzMwuNvhDtJV4xQw6CAwe4Z61Bn+MnJ/Qorhd2TVpy88lqn7XxUhojG7DgVAx+gpU0vxQZ4nQHMgEtXM539+9+jxwlVZD4pdA07f32MxH4JqZge8ji9MpEKUr9cxUN139tfn+UGg+STB0rOM7a0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788248443; c=relaxed/simple; bh=RhYbLOVuCVOj7lB/xe9Vh1IsoRjbmhLfW+6pU4fEYso=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ILF7n8bDUA3Y9tKsxpqgjsqHE7d8aideQzKMRrFA6mUCVjyxGkLo0VAufdPqtUDFjS1k0i7S0nV5Im16D0VtKbTFBuKLwnKRZypi8eMFYgq7TsNvgkdBicipgm+SD9IoMlbETMogvNQVKpwyXlnj/ktZtwYrAKYoI8FYy5PNTwU= 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=eiaaS1Hf; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CGPhSLIl; arc=none smtp.client-ip=205.220.168.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="eiaaS1Hf"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CGPhSLIl" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68179Eon1892416 for ; Tue, 1 Sep 2026 07:40:41 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= aDrmY2QxhsSRbfDjC2+TRp/S+s59Twvb0/++a3Ypvaw=; b=eiaaS1Hf+5qyT4s8 Q3h/n7e0pLj4pQJZgnSTcy6Zs6NdLE2gg7QiW7v48R2AMZAQr5zrDMb9lJ9EoO9W nQNIlyGJHMEDkz2Yc8OMPbX4Ezr48F1cQuETBvDAzixgRSpPyprtn426jNu8W9p6 myA6o1bJsKjU25vZiLD47k/HjeMOPKbMNd1sFEJJpxHJ5JefE5VRJCJgye2yC9DA UdtgHkx6NTl+5025UH5UROGT10UUhfGUlz73YNvnH8Yu+QFSe6E+TSUsl5Vx7m3Y 3emoZtZNhM4xXwWv1jJsoKpMvBsB7ZX9IgUf7I5AgFlIJASaVc+KSWtcOJew44Tg CGInIw== 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 4gdp7c94sg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 07:40:41 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-92ef13b61bcso914874885a.1 for ; Tue, 01 Sep 2026 00:40:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788248440; x=1788853240; 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=aDrmY2QxhsSRbfDjC2+TRp/S+s59Twvb0/++a3Ypvaw=; b=CGPhSLIlvHY0zQWtAi5a6KGk1X4ABbm4nY0bUokEk/QvnUVkQLba8UKUkEomm9EEEQ mDZ/CWOuFRU/l+3Z2LlaNnJpl+JkSAXttkZcZAyX3buPTuE+bwH/HXUpONWVUT8xx5lQ eyefn360ytBblyaTDZwmZLRjuCRZro6a06MynUXEU6K7zyxqI9sYtZ5pswXO33JIb9ai oeAHhzFXhMH/T4SKkb3IgG75A1NeuZvCc425ONJvQQqSgSKmFbq2g7v2gGoKjuTwEncr MGTLJ8xe0CVumOCy3WI9n/6QdqtIf5181Brr7sI29nwGraHL2tsapnBNsvsc0xGFm8NG oQaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788248440; x=1788853240; 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=aDrmY2QxhsSRbfDjC2+TRp/S+s59Twvb0/++a3Ypvaw=; b=FVArOmyQSg3EBoh3USnyT/BWSDEPkMDRwNqxT/xWJInZhBSo7HeIlZLUnOapQxyfQh eSJtFmPmJdXPlMHkPB2krzOgEx4XC8bIQVakhMDXWDK2DYSPaieMsPa04rN0VW3DSV9a 8/xY04AYYNAcZ7XIk3lOGbVkm643GWYEq3HtMhFqerZisRbJQo7QLS+ebhQau53mX5zs jtIchk2pU9zMs23CKJh8gtytnxGd1Y9U/eOu1j50H0EAbERAr0jRCn5wx3GKEJmer9br sLyLAdQ8hLgokYIEieY+VGMlGQ+RDdLLYuBkht5i+QJZM5aPg4Dh5CsWXmOeQI0qcMge kbWg== X-Forwarded-Encrypted: i=1; AHgh+RryiMJA7/TqemM0I3MBnikmyoBBHEbT6ecwnICItSkpw5InnbAEhNjP+Bazdm0BDCcPD1tcCPFIWI1oO5M=@vger.kernel.org X-Gm-Message-State: AFuF++m55n76pODFE666KZ++IM6ru42hg4gO3WB5962iStFTVYxQX66J Jl9TV12OeOTle5GLY3Rk0QsFXkQ6tEyFw2dh/uP22xE+MoAksNuZe2APA5pZqy8j6iM+QvvES+I iQz4Fab933W5c1Uc/oHd80t7oh16iuOs0RGnBX9elRBlyDlInmiN0tIp7LppWPHZMgN4= X-Gm-Gg: AR+sD10iGnJVZhBvSSAbp+6apwZjEvkAlPfgQ+lN+3fAU08lkvnp83YvBiPcdtyOoEK Kmweb0usEHlNdv0ZX2axE+SjymULkP2zrb81tIbI6mf7gfKnt1x5M8KgJvZm1kOo6YrO5Noglrv keP3vu6STP+RWNTOGHNvzHYbR7OK2RRuDoetyWm2S7aqlX+WZh8+B52L4N4A32vSd9rSCuScpiQ HQsqAL/ir1rnWydf/cRVw7Ll6m5A9iTlcg6Ta7mAJEsNfLgdtPKBzdKuu7jsGqFBm4Wi8/UEHgN THaSNAbjq45xebPPTqTtSGi39syPLGyTacOcxMVU/okFaOpN1ZN6x6awv7xTHHd/QBEaBQHN6iL +/RnCn3N3Sg+eXpgqlcUpf3ei83siEdrkm7pqisASH5ZvT6zSglRDKalMQeIAXCVLvOMb X-Received: by 2002:a05:620a:46a2:b0:930:f129:1a45 with SMTP id af79cd13be357-93913923d59mr3373546885a.30.1788248440226; Tue, 01 Sep 2026 00:40:40 -0700 (PDT) X-Received: by 2002:a05:620a:46a2:b0:930:f129:1a45 with SMTP id af79cd13be357-93913923d59mr3373543685a.30.1788248439803; Tue, 01 Sep 2026 00:40:39 -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-939173f2758sm960412685a.37.2026.09.01.00.40.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 00:40:39 -0700 (PDT) From: Wenmeng Liu Date: Tue, 01 Sep 2026 15:40:05 +0800 Subject: [PATCH v6 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-v6-2-a05b2d04c892@oss.qualcomm.com> References: <20260901-og0va1b-v6-0-a05b2d04c892@oss.qualcomm.com> In-Reply-To: <20260901-og0va1b-v6-0-a05b2d04c892@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=1788248425; l=907; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=RhYbLOVuCVOj7lB/xe9Vh1IsoRjbmhLfW+6pU4fEYso=; b=qaTbVgTFvLg6O4pT5iGS0YrMcz44At9ZTuK2U2ofrrKOtcKYhfCnWjcbIV11t0hjlDkn2IGvs crsQIsBDLykAlvDZIHcsvtBtXK3VSBBD5Mc8imDaNLfSlwJ/JJ0Bk46 X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Authority-Analysis: v=2.4 cv=OcyoyBTY c=1 sm=1 tr=0 ts=6a968179 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=yOCtJkima9RkubShWh1s:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=_aklYIXRtum3iaRq27IA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: 6wPZcniBBdGqWbww0dYcQgeLlWHeFzF2 X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA2NyBTYWx0ZWRfX9ixNPDkyXxWo xPNfuqQHAlxX57QTSI5F8+JZGAkkK/Qq5BSOwPMA0JTvznPt5Y3mE9Rl5w1ZbIdmg+j/xYMY0tV iwzoIRS7f+ByUH0/ww+A0BPh/ZRDgV4= X-Proofpoint-GUID: 6wPZcniBBdGqWbww0dYcQgeLlWHeFzF2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA2NyBTYWx0ZWRfX/quav+Q+FZ8j gfWrVh9BYF2cxLKj4XkG0CewQxA0BmcjcPAO3yj2ihJ5BOpsxVn5fCT9Mp5pQz4176wuYYfgfbI 3NlC36To0mzxmbChnslirgzflXoDKICfFXySwxbuHGwXVokZyJOiATdo/hiLAipb+hiwdvhFgcO 5BQ3jQtkZ8rw65tC3qBOi7T4nsxCyRo58bv5vYGCNJpgM7sK4G8WihED3XOgVmpnBURfr9f3v/G SfwxZJsF0z0WmxVsU1SRQceDvVX+/tMeEUX67eJwKIDnwwAHQMoVkRS2pmm3F1isJLTQHfrPoSd C4rvjYO4jXnj7QhxEoc7v9X7TDJxPXfeq0uLLkkiAymIHFwhh5UdLN78FjmoN3tYs/zsmMgQl2J nUd9AqV9yygE8d+ZVoTifoISau/YukYjnQrDVYDp0BJqxeaiwz4k2FWRrEG06qFDoooXqsE1Zgb ljrgqxkpvNCBZ5CrcWw== 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 clxscore=1015 adultscore=0 malwarescore=0 spamscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010067 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. Reviewed-by: Vladimir Zapolskiy 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:18:37 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 7A19746EC7C for ; Tue, 1 Sep 2026 07:40:47 +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=1788248449; cv=none; b=QC8o5ClAP/L4cY22TghD2sO7IYrJ9ma1N5b/h/GDXz+oYEO0lANaEC6HH/fJHuqY2hwmVOawpxot9FdPosWYPvXLAw99grP5TJtMp47j2ZGNSESR528hH3mD11BWsd6mlm7nZ7k8gWl6fxeF6TvdZ8/5NlZE6dS+khin3ZHlCfI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788248449; c=relaxed/simple; bh=v7MWIqfZGj0yHDCscd2nMkMidCP3VrHdRkNj3te5k4Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qmIGSe63h6msKOODl+yErS4bXIpSSgBsOt9ci1i8THEb/kmqxbqSJrAAXZiOZYzWUUqfFr9zDf874vQKpP1HoMUoe+BP0xiumW4jOLboCdh6qcTRORRyOa1oRq1tk0cEZgve3fg3y6TyXSNSX7pdc6ksIaxJNmlXub1+XfbPyck= 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=NCjRr2Ht; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=d1QjGNlP; 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="NCjRr2Ht"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="d1QjGNlP" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 68179C0c2061558 for ; Tue, 1 Sep 2026 07:40:46 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=NCjRr2Ht2hmMakG9 pUTWfAgZBzZPKAV6MD0Je/UeXkNRvqFPnMAhrdVUtMDLbSB/JmL1uU+I4HpNCLOs nAGlPpFg8V+6pVziOLeD7NUBzp+G8bZkbcnSil/SZNXhznXc0otgCSG5k82eZh7c VOlgENEg/zkrImOkeTRuBk2Ynh44X46Bs9XJdVWOD+NJZJftWA4+6c8ODTlBCBDm onb+mOZ7ZAzoKVEV3AtmyQ0xAnlkaTFif2/ZgFdyvxTDHHNtHa9mFRVcOzoT0db5 X5KATV3aLjvrBdzYEn3oxdoXcqsx9iGApB8UtUD3/VIUGd6R6FD2RWGcMy+w+MVg N8KySw== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4gdqbh0t7g-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 07:40:45 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-92e53b8a302so640023585a.1 for ; Tue, 01 Sep 2026 00:40:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788248445; x=1788853245; 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=d1QjGNlPKZG/Xq7dyg4gXWcNgO3W/eqx3VxGLy97oDwM4egZ3LQZxvXD+31ADXykpr xqnoEqbAOZJwxorTdv/MO8izQNgJD0pXvW9YIusnnN3CP784B/whl875bR7SQ3mcxIrs 9NnrTjkOR+pr3p0TGc+l0CMXM+9+0ay4ORHualc2hUovyAABTdEGSRhJ39pOwDqbA+qp R4dDD2xztfdquxARNVEHdDIxNCbaRQGqzI0jP8fhCFCVT+E+TvrPPUJu6IiBW/uinoyX 8bAnhMBsVYzdZlyH7yiA0Axa9mNhoybRDV/ZNetAp4LatWWjBCIcP0ouTv2q6BvlL7Sl 1y2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788248445; x=1788853245; 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=PbAHmU3KHtm178EFI7vzOkPmYcKCo3NSqVMDlu+rjtfBBGErV5Ys4Uw7RolrQj+I14 6zZRzHoRxgL+masiNyZguJXmEp0twDyD8QbEowUHwp759qHc7gzCsAP1zMoP8gJKV8zT brxDc91ASD9teDATB2TAqksNkJ4xhUTIxrlMrGiNIFq8MMaNF4wMJsoMdAi36PClrVr2 aJtubJhIalbXXPJel5sUbLTwSIlMfb9sVEHxN+4nKT7aK1YJ36By/sEbKFutG8RyX1WF HgQx1m1RDTLybf4d7xIMlRPnC2SlvD/qv2zhSRAqEz69xK9v4luznBxB/7oFqOjyUZg6 EE3w== X-Forwarded-Encrypted: i=1; AHgh+Rq8Ylwf/yFjyf2+zCqu6R9QqAO0PfvphmQ0uynHLyN3ItoQLAHUUqmwWHaVvOBYZWiVDbenzj/Ikfp0rXU=@vger.kernel.org X-Gm-Message-State: AFuF++nGpNRioLxpJQ3xql8OdNH+h58ST3PReX4NnCWwgrXxd2NRL/id oQBYPsI3fyFxH2vZGCM6xOhT0fGxyMWU46GBn5R9m1vrJVMIeCwA7bn6oEr6sGRRamVbX2/gn5u sKnkCaeXU4iUPK3mA/VN3jAGtkWkkBRkVcRtFsImTQzIglN/4Ae4BVtkKR+V9WPUYb1c= X-Gm-Gg: AR+sD12WT9YNtJnMAKfWf49vvVutAzRT9uRAfC78O4zw3HLgWvCmgNECcaxqlKMqWaB J+nEA5XUA5PFD1YAsAYvqzCYd9frvV45Rg5rtlpb8M7rqVdnY+BocBORlaL5uEiC+G3dNA6Ea+E bonrjSsxuodZYfn1xQUVcYURtY2Q5phKOTWnmTwMxBqHCz10fQ6ADvua8HUW1KRHE9HmD+t2t4g p8XFXK9+WmihRd22VUqk/8SwyEiiRuDbfM+ggmMcsUyAa6TvgVeXx8Cqyk87kGwuQZMP+GBG1cg beQ8+l6wmIL66c8EKiE+PnqvsWUjylidxEGAdAXTyk83vRP1Kl26tWOfCe8MH8NC5BdeDBzavKr qcHmoa1Fe7zhxh7ff+O+cVv0ByD0toaXBmbajBDQlnGGk+BKvok1xWeqNYB58GzoiITTN X-Received: by 2002:a05:620a:6988:b0:939:1c6:38ef with SMTP id af79cd13be357-9391374de9fmr3640366085a.6.1788248445090; Tue, 01 Sep 2026 00:40:45 -0700 (PDT) X-Received: by 2002:a05:620a:6988:b0:939:1c6:38ef with SMTP id af79cd13be357-9391374de9fmr3640358785a.6.1788248444279; Tue, 01 Sep 2026 00:40:44 -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-939173f2758sm960412685a.37.2026.09.01.00.40.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 00:40:43 -0700 (PDT) From: Wenmeng Liu Date: Tue, 01 Sep 2026 15:40:06 +0800 Subject: [PATCH v6 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-v6-3-a05b2d04c892@oss.qualcomm.com> References: <20260901-og0va1b-v6-0-a05b2d04c892@oss.qualcomm.com> In-Reply-To: <20260901-og0va1b-v6-0-a05b2d04c892@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=1788248425; l=10303; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=v7MWIqfZGj0yHDCscd2nMkMidCP3VrHdRkNj3te5k4Y=; b=98ApIynftEKaPmddBk6jSc+zz4ZN5QdQbdXFn5cZjVPYPvoP9PEr6QTnKHoXwv7xNItO2tevY xdcEeQVqsfrDfGoL7m4wrA2NgjDJ+qT1No5AmCQ3ADLjHcNmmeU5qSV X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA2NyBTYWx0ZWRfX/DYsijBJ2Drn j4ltH7yOODjCVdZAeb1+JjcmGfbCrZBs8tM3ydimYWJidIwBXUaIJ+DCzo9B7hMZpyLHMaq2wLh OYrbYoFA+qWUCtAEbA3roRnTy7HM/ys= X-Authority-Analysis: v=2.4 cv=R9wz39RX c=1 sm=1 tr=0 ts=6a96817d cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=VdqzKS8jKosA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=aIh3vjFOF9panSEBuokA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: hbYmY7JH8glv85P7TzXA7XTHzfjHsN5L X-Proofpoint-ORIG-GUID: hbYmY7JH8glv85P7TzXA7XTHzfjHsN5L X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA2NyBTYWx0ZWRfX2qAdKwD/DEoU wOoNCu2bkISzmPSqrwUrdcFnxBkxN0gLObQku7OCQ2elJ0RG5iSE08HQDa+KiiUoL5XCyTxqq1k D9l3kYUNICcXLGWpT1X60qjBN5wC6l1jN+sq65kIaJR5ozadlqap2ej75cORnAio3QauRclC+Ul aOz8bduMtryxsOK+7HuXDq5OHHS/OSwEwOMmxRtVPM5BGxuGrcJQnxN5HZaTlalmYxGA8+7Au1G Hcorod6VmMDhQEpGBM/QVVSyki4r/4WMg1GqksLR8Wqqz2ygiHmBLDYL8UnFJlN2abuV3BwHa+w jUzQynLuYETR4mxwpY3fS9fxXEvs0pfIklMj3jsILeSaz1yBgf4vmbritVrEu0RkZAEbLhXYBF1 xQmg9x2lZcjwACuAwcnwxFqtI1kRYZgEzQEm6R3t2NbWi5kJ3EqAbhpSG6tu1ImJv6Mnec0EeYl DO+VRCpfwb4C+BVpoWA== 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 bulkscore=0 adultscore=0 clxscore=1015 phishscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 impostorscore=0 spamscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010067 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:18:37 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 D749C468C14 for ; Tue, 1 Sep 2026 07:40:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788248454; cv=none; b=gDVppfz5TtlnuqSNMxWLp1xvppmK1DI16+titNjACFuFN9YKSFq3qd5uYzOZpoVsB9sbK/9hBJl+0TIuCLpJiT18I2/VSa1w45/fZ1SUnic5seg8TldPPFeu7sl4LNsIM2pVNBXSHQMCXOsNuaVKGRwUTAkWaLXDCIeOFvtYSoM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788248454; c=relaxed/simple; bh=ykUUSv77OEo5PaKCMO9ysrO1o42/MAKasnMbnUkbxUk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bPYlIFf/kHTDlCPpIL+qSwNBqgZmHX+tf4ldhcVtz5X+ZaO0VdDV3Jn44FoBt1VZcfBWl0vlGdddsOnN34kLW5SUBHPuhyHInR5ZGpPtZTPVWxrby/6j01qZOsHzMneYvUdSKvRpOnk1iTzs8jCP79nGqoi8uxBSwvnuwhg8RdI= 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=AGJYMCQB; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Zh4UTzR0; arc=none smtp.client-ip=205.220.168.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="AGJYMCQB"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Zh4UTzR0" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 681793qp705504 for ; Tue, 1 Sep 2026 07:40:51 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=AGJYMCQBWZZNkrc+ j1OZmbK5YQXLPa9Tq1tCTUmt7YqXq4whhNr322XsgRAjperwbvlhu6MfUtTuZGLv P3XcWXg1NhQiGMHwMkEagVzX5WMTNjYwM+91gwy7BRc3GWO8WkthQK6F4sw4ttih LPCUXcKoBQ+HbJ6rp2BN9HoDReEMq+o/AYtx5NI0PXbdJl3g9ygT7M6SJ2jJMjlV bBUtAf1npswwHzFhqmzrwaWfktLOb0qLsaO2CQo7Y94UcUsj7Meog01LiwTCrUe6 hqG3yignT+ByViqr1a+MY3qK50KclQS+cJnmf1FBUuFrbigkgaqH/dS4ptfuJPIw qnYgdw== 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 4gdrcsgjn3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 01 Sep 2026 07:40:50 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-92e4f946461so755270385a.2 for ; Tue, 01 Sep 2026 00:40:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1788248450; x=1788853250; 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=Zh4UTzR0CKT86YBD6bgTxoLW+l2eqTeccS3brZKPYQYilfTbVr8il/BEbBcC0F8Fiv kXGddTcRHpxewWY6UkcfC151HjgFWjYUiqERZczmEG1XfB7yEAxIf8uWROv10jpX3F1t 4sSlLG+g0v/LvhtI98NwwfjH+2xx8W5niGUATD6vWOIjWoCi+aX+ws3GiexqWPIDCaT5 UdhSZ+NYjJ45ddFr3WILc2NZ4osVPFgItNsxBQUlRWCaTSaKnGx8S3/mej1FQIZX+H/8 50lKN+HnchL31bgY/MNNIHNpvWIooR8XcJSZmAgWobos/nE6X4tBhM9p+rNwFJ/GZl7h 2SBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788248450; x=1788853250; 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=ZmHuahYZMWOPZp+QBhKhiUl6JI60sFTYeeDWc8dfndr0tAOvV//BcJuhKvLzTXTWSy nm1bwXPRf/Oukj0ie4L4pw2Y8oGd6kTvyawyNxcHXTQPnld5hkEgJ++NByZErAw3sCi0 8gqPvOxXbEJNCCe3NTn1JCB5NDjbtNUADjffgzJSdSUEuONaaKfpj9O0qJIPfxsca+Wh Y5CY4VchkxRVnW0IS0JqptJuXgcAVY73tTsHUSNORnImp34Hg+H9blwWXmATSIVsSyJF ICT2G9ofBukvs4mTJaEv9jFPVoo4lTGNMDBrb2QSApGFovGCf/uwJ5yz8txrUH5sqNar +yOg== X-Forwarded-Encrypted: i=1; AHgh+Rr/rWkk5d+pc+3rSsMLB6cTIOpA8PGP9wq+Alg7YLo4Fh9La5CK8xJ/gmBL5OOr1zhisuHqU4mlHgLfeXc=@vger.kernel.org X-Gm-Message-State: AFuF++lgdWqFpE9kPF/sGOJlT1Zf7KmrhOQoZjsGdAfg+0gQt709mFB9 su74HwvBW8WoanW7MEJV3lZUD9yfiUKRVLBl3bN4Kw5SvCXhAFiV0HDHJISH4ObFhojDAwGlCxm JeLCYAWTVIs1mNz8XNcYRaBYQIL8SkYwSvhcqZV3/U9LtYLcMkZ3IXMihEgNv64Ep740= X-Gm-Gg: AR+sD132Zls72SJEvYwoTc4UsggMgRDMEpUF4dQTlIhwG/mMqL8dWTzuDdfi5MEVqD0 cNdLN2V+vaACrrwn1Dy6r3IyhOdbp3dR3iENqw+ZF3kC4yhZnlJkECO3k7udGUmMBg/8tU3RRBi rNUFR5RIKOl9hNbBKhOtR1nBjiiRyrWLhvZJ5XqdeWWKUu1YNloU4syIX/CISYIHrD1sq9wmHsz J+17hhi+Dt2D0ndY0jQ1K7J2j8MWv7avsqSjErkzQRnHsEwYaf4/HNkcXi3lHnPUoyt8D9ZSAf3 AE3JhClKWyui0s3ztr2xW5zjIMlTpA7qdj+939b2+OXDnzfcVUR3SMPD7fmowB9Ps5A4eZbhgFu H6e5rZxwLg/fapCegImPhxcTkLwZe4OerjVaZlhoKHWVX+4w9s/E9r9hr2QZnncQFjeoT X-Received: by 2002:a05:620a:a18b:10b0:939:3a51:2490 with SMTP id af79cd13be357-93948035ffamr702059585a.15.1788248449748; Tue, 01 Sep 2026 00:40:49 -0700 (PDT) X-Received: by 2002:a05:620a:a18b:10b0:939:3a51:2490 with SMTP id af79cd13be357-93948035ffamr702056485a.15.1788248449214; Tue, 01 Sep 2026 00:40:49 -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-939173f2758sm960412685a.37.2026.09.01.00.40.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Sep 2026 00:40:48 -0700 (PDT) From: Wenmeng Liu Date: Tue, 01 Sep 2026 15:40:07 +0800 Subject: [PATCH v6 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-v6-4-a05b2d04c892@oss.qualcomm.com> References: <20260901-og0va1b-v6-0-a05b2d04c892@oss.qualcomm.com> In-Reply-To: <20260901-og0va1b-v6-0-a05b2d04c892@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=1788248425; l=13942; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=ykUUSv77OEo5PaKCMO9ysrO1o42/MAKasnMbnUkbxUk=; b=gJMjGjE1NRTv1jYlqevxuwK6cx8YKXPSuy8nr4VfwWpIlDgksLFB0UWPbo+b+DVcoBiziDlGV jw1zDpkyvi6AJmzkIiNp83IX6SR/cfFZnD8ki1dZSIhEwA5lKs0Ut9P X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Proofpoint-Spam-Info: AW1haW4tMjYwOTAxMDA2NyBTYWx0ZWRfX/w5uPAUDSDv2 UWX1MlTXk/Hce+NjExCQjH7IBT1NOcPkE94+SAX0wssrVitskIfzWfi4ZFOYheILpBvCyj8mFex yRA5b6nhSooOsO3EIp9zDcDxVr141XU= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwOTAxMDA2NyBTYWx0ZWRfX/SwYBbwIf+3z HbLiQbb1rl96qUZIgbpxT0E6sZ5Zoq9rz7Sy7rLXXkq3P8rJA7SPF0WfmdbjnXFndzYueT2pEHd fT1kn0lAE6DCzepOy35p774/2HO8iRj5/1dA6rfYhSqmlfb/kLy3YcOZqFl1e2pTSxIZ6WN8kFj +9BO0iG8D6/ekNUh3Ssayfi9pBV7RL+lOe7MSqF2PIACxn06gZykJa1fz3318w0T8hvkjK8ZGGz bZZ5mfcg+7Zw5F/zxbkdIH95+vGT9XOukc5Ttzy0EErRJGxiqWi+Eo92IPeqU24KyoRQOHDc/JC IZ1JQpk4qR9VUPcuu3H19OR/Clm1tUG1i9uSlvn776R6v7Qquay5PInSAEHaEmITp0wnayPB4le fME5Ke//TdKUcI9t6xdg1YLeAfg73BeaHMXXHMdg2duMEUJO/vvgXAIgZM7J4RZuRW4Jn2NyIS0 ZCyg5bG/rMaweTZBFmg== X-Proofpoint-GUID: mwG9QBhyOP6Q23PHGbOUmV4nAvT_tZgE X-Proofpoint-ORIG-GUID: mwG9QBhyOP6Q23PHGbOUmV4nAvT_tZgE X-Authority-Analysis: v=2.4 cv=QsNuG1yd c=1 sm=1 tr=0 ts=6a968183 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=DJpcGTmdVt4CTyJn9g5Z:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=kvSDJSb0XTZWr82cfuIA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB: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 bulkscore=0 impostorscore=0 phishscore=0 suspectscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 spamscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2609010067 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