From nobody Tue Aug 25 21:06:04 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 48448340283 for ; Fri, 31 Jul 2026 06:45:30 +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=1785480331; cv=none; b=MOMQVXhJrVd4X7JAgw3DWk/sWtpFIWCD+7joMsk5DaushJLVHS5+8CsqzPCamLCa/f8BJNm6iS2SnJz6F2V2/EDow8+EFIcZ7hmLsjIsuhCdCWpW/HhjbZMXubxAd1d7/FR+4yNUwRRKWlahbYbZvoFIhc3QRwTKAkX/lj5ba/k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785480331; c=relaxed/simple; bh=TcAXQjm3y4bxY72fFI+XTJk2M6ZXHTIsdSnWHX2Ufxk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PzHg0VM30htw5W5iL24a8cj1Hai2TkREUYdECG/5g7NpjpWB836Hfr/LdQXDdnyAb6RskMtjqTcrUl+9awoga6xYMgdK6LYCY4DcCZEZSOt/yorf2eba8gAoBcZMoFv3qFGEzVdXM3Nx4EwGfgVsiglHS7HxSSIqyJnFQhWsKls= 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=GywL9LQ3; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZaWN9twy; 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="GywL9LQ3"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZaWN9twy" 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 66V5HNRh3235683 for ; Fri, 31 Jul 2026 06:45:29 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=GywL9LQ3IZW23JDk LmcfQkarKRz58Wfv2ZPxvvo3QOT/VeDden+ySm46pHcwc1JyikV+2BtIwULz0z8s kSfiI1d7wlpOIzGbCp1pp4dexoGwb/6Qpj6Vj9xGI0FZxuZrvbCFG640QmyiSSMJ tXIPsResh+HkwB8g5fjIsliZ9KlVtZOoH9Kpp5Qw0BPuu9J0MHuNFAzqASKTzskG MCbIWl77lUs3W9zbiqmMoCg2tAw6VF5Ubz7ino92hHZUtc93a2gdSg5vBm2y0Cle 3osGnTLkc3IrxV/C5JCjQkRN80jsFcDyAnHbH9dMbnt0sj+EMevAofXyU3R2COmF MnEzEA== 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 4frne50aa1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 06:45:29 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-92e55721a8cso70315485a.1 for ; Thu, 30 Jul 2026 23:45:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785480329; x=1786085129; 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=ZaWN9twypoC1VM6cQy8yvBWptPOzWB4zq4kYJ3sONLQG2PMKZ9iv12/LhZd1+3PDNF RFKvpMTRuivUltZfn+HOVqOvid7R2M6MMjB2R9gZv2Iq3kqku0wfkikLa6cV4XLUO6ra z/la9lwqL7Pa4+I6WnTMUKG4n4Lw0SYo1/lCAST6jTOhrJDohkeZsYoAWh6pdDRGQdj7 JxmB5Yq+KQFrRTQ+CkrVov3SQkZ9X+MQL/r2oO4paJRuJUrTcvKDjBhI5v2fuvPUaXpG uqLPRQ0gbEvpG1fRnyTTvvKGCIQnj9wBENlqA5tfTOSkjuCH48Oyyqn0dX4YD1oaag1w +jpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785480329; x=1786085129; 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=nmm48g1pNi6sp5Acm+4fiZDUH2Ae2OfaOI46EAARtloNaozwYQXIYSsCzqdflR0nb3 FV/Jpw9Lvr9tfKSwWhtYzmCFJGqw89DLhfVxHHRxs5w73d7Mif+pIYwbpafO8GuHD0Sz 7NvnBq6AkEYHb0gEkhyh8mKpI7J0YjjSCRBGCv4qIarua2vp8kxBmvyIncCGrJVTs/k0 MXmdSCG6dufdoMdHhg+mm/YmUo5JOXUoP9X7144J5X2Ron9hN4OoNp6BlCeMwv1b6xEm CYoUxNJPL9weiHFMOzteZ6T6+VGA1XQVf1JSKcBwdiSWt5yaWM29W8D6Aujmc+xLn5GB W/Ew== X-Forwarded-Encrypted: i=1; AHgh+RolYwrohWrcWizoe8qxmyC8dTdSDqgunL2ZA+gTuwrv8opnfnp5fXWpKs95ouFVbjMIZF+jr8Xr9k5oztk=@vger.kernel.org X-Gm-Message-State: AOJu0YyKoWOqCmf9PgEQGtzMMsmSKo63Ka/IsoCTDgUlnK4FxArTOYUt mqcqPS9QKveGkphCtcHNtMDvqlb1LcAZnQ0U0rCp2YnFm1FLt3o5rFDTxN0zjD5Pqoav+P/yn+Q +TRyVFR+ioUgkBdzwPEeNMLEHSAxPklLpL2rtBbA5umJmNcllkwEW0L4vAlWCLOEnQNo= X-Gm-Gg: AR+sD10hQXy9gMsrg+9JTLRECMvPQUzFpaDBC/aZ8+FoRa750hoVId1i4eb/g/aeRZB RSEHVP0myRsaUFMOWt61THdji1V4WAHxc1m7Jo13C8q9tkYe2CYCDtjz31FXKut2nM1KBOPFrj7 nFakzq3eXYqI/tzYUyxKr/ybo5G9LpBc6tcbL6K0yEc2JG/kvbzAtdyfAxgAHIKd0fDQrukPqwd f7m56Re7e2vkSzgP0kEveevTU6EpxJhqf73z+yOBqk84RYaFaqLcqgrT3ujhiYAUUnDwjGhtS8f ZpJ9TIpkybVLyD5xhVZYnt4WeLAV1u/I862b0XLRUNFX4P+grBZjpIC5RjM3A7I1zDIR9u0YXQ2 bNvk2NCwtxIWgVYwcNz0YwCdOPY9EUdwN7/EOpA+0haeKSCfXm7Aq6MIIM53px28PeIKY X-Received: by 2002:a05:620a:261a:b0:934:9271:d0fd with SMTP id af79cd13be357-93496826c12mr89411285a.45.1785480328440; Thu, 30 Jul 2026 23:45:28 -0700 (PDT) X-Received: by 2002:a05:620a:261a:b0:934:9271:d0fd with SMTP id af79cd13be357-93496826c12mr89408985a.45.1785480327958; Thu, 30 Jul 2026 23:45:27 -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-934971773ffsm46107685a.29.2026.07.30.23.45.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jul 2026 23:45:27 -0700 (PDT) From: Wenmeng Liu Date: Fri, 31 Jul 2026 14:44:54 +0800 Subject: [PATCH 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: <20260731-og0va1b-v5-1-c2b90b601241@oss.qualcomm.com> References: <20260731-og0va1b-v5-0-c2b90b601241@oss.qualcomm.com> In-Reply-To: <20260731-og0va1b-v5-0-c2b90b601241@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=1785480319; l=2177; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=TcAXQjm3y4bxY72fFI+XTJk2M6ZXHTIsdSnWHX2Ufxk=; b=txv2N5Mi5yoDN2E2sGLmnJTrHlpRzeQeJ4lpgu+RhNcer4AVsfZVeS10D/ydD2izmfNHi2g7s ZGG5J9I23ziCVkRLeaxfOnoNYrRq8qgdwDefLv3SdpFOfymO43kPcIf X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Authority-Analysis: v=2.4 cv=ftzsol4f c=1 sm=1 tr=0 ts=6a6c4489 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s: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-Spam-Info: AW1haW4tMjYwNzMxMDA0NSBTYWx0ZWRfX8DT/K+srSJlW cHyAP8Sab9Zde4uPb6tadqm+NvcJq/7zRqWuCSPivFY+lqpm/pnvn7vEonTMpqA0v/mP+MfFcoa xPwnZvqUIVIl/NBLcNP0J9bTc/ld6os= X-Proofpoint-ORIG-GUID: L183x9VkW6H7_Rptym8aW6L81a2g7Z57 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA0NSBTYWx0ZWRfX39jkDum6UwlG kl7F2HG/OnGr3TjnUPcPHfcs6Uj3RQ6l7jqykaOJ0tIbOxZazPPQE9V9cF8j/HT96h8bznD43a3 u28bByT31XD/RTEHSbOvTVLNITkD0OFWzXfy/nPyUDoA1l4J3TE+5vRFXvp7Z3aQ9J3mUQdJjH/ N1cDMmh2PL5NgET/p4vFCoUL4fNJRu9K2ZPyu7TP/8UcbES17D9XbWqifA74YSphZM/Fxh7mkQc dAusFfvijDHKbOs1SDR9kC/OGlAiN42QWUUvRGz1GCKc4acenC+Hq2HF/gN5Cm/Xc4WLb/ibR4M o8CwRdXnepJD5cdTgGaTIUmfrBiowYHVI0m1xICDnh50ZTK6V1FyzJxxc44iVnyYWxIujl4tx4v KNmWNl7K6qc37YgmECD2yN0Ngn9dZ1xb2YDfK01OO0zy4NTXro0UwefAtvC0HbFK6ADxBvvk5Sb Z9mTMEOJCbIt4gkBLOQ== X-Proofpoint-GUID: L183x9VkW6H7_Rptym8aW6L81a2g7Z57 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_02,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 impostorscore=0 malwarescore=0 suspectscore=0 bulkscore=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-2607310045 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 Tue Aug 25 21:06:04 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 02A9721A434 for ; Fri, 31 Jul 2026 06:45:44 +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=1785480346; cv=none; b=nRR1wRVItvy0M477p1n2ejXRYwPRiY7cTZqS5GXswaxMVgeejdU7Evf6KUCPIVcNfnVDJ5nxb9o4yGFZoISrYDTebc/yRdwXxqHgnPp1YYHMfHzmWjhak82mRwIiCwmXXle8crIkgtddyYLbGTmjpT/ZnS2207D6QUWG9PRQ1v4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785480346; c=relaxed/simple; bh=SlQ5VdwZvVStQeZ2eNH8zzR3a+C3sg3kvTYpgF54crQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uHUoSO/9fTPbXaGiwDYWJ9zkOV0reZ/4WUZVA3G0u07NqJUA5CMWCe4TXwxNW3G5Bx/48FaxNZL5dyJC6tvMZWM98oull9HCwJIJhTdiuyEMQ79c6CRSe6sRqAlwFrx8APfpprfHPbEPJZS385a6+cmm8SPEc8W7OQ6E9Kq64DI= 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=adWYO4vO; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=YB/9AkVS; 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="adWYO4vO"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="YB/9AkVS" 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 66V4ux6X3278067 for ; Fri, 31 Jul 2026 06:45:44 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=adWYO4vOwJgRdG/G A8CKQSxXdVGZLUX6WWrTyQJ+g/QDgimY57Pq5Ug4RAlTsvdKWjf+l10IsRYRWIRr Cl9SjoE6BB5D4DhoRTkD852YbG3nUijwtIyHxO5mhychWgP8bqiMMjw8SpuOOUzr 64FBwWwIu4g3VfKokQZg0XweK9dbi0Aj5ew5XYDjYZ6gic6veqF6g4D1P4DhA5OT ZrcQSOv7fZEiDF9UggXD8pSXUT2sAL+RdLF+apZaGZsHRKjGhHrgdYny09anVUX7 ckqfSOz7HNRLoCm3l6PeE22PMOf5sHlOGLTWX5irfSn5WX3EVz6ROeYcNjQ7wUOU mCNgOA== 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 4frn0f8cty-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 06:45:43 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-934993d0f39so15092685a.0 for ; Thu, 30 Jul 2026 23:45:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785480343; x=1786085143; 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=YB/9AkVSNz5hZRBv+pGmWfHWuKinp4GEyoZLewhdNFrMiso4m7MapbeTFdhejwBSOv RU2vO3n85ngG7G1KwWwO31e1INh/o2bw+VottIIlvBIiEwGTHmsQ+s3w9sehulwZED2v 3AqCGjAQohDgzMZ9Wti4DbGTdYdbhW/t05dDrBbSYI/NqQxDnOmkz2Ivu7OwaRyG3aEF jQ1PMeiKNKWC54TTrr6vj2QR3s3XCh9WUvOiG8reo7uc0SQw7/Y96+qP8T5hyKDYp4aT KgywYPXJO3gMF3aa4PvmzEmIt0LVGRftA1+IYAmncaPtA6OyREv0f5AEMAQ2oo5i8HjD uAWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785480343; x=1786085143; 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=Z9bzWG2H7/D7kLn4wAK3VR2ynrQoFUkOAMYS+ObiU+iaUHxtTRN+vkEAQY0moEJdHx 1kdryR4o4lcfLqGdwL7M5v/JBnhjjCo3U/MO9h6wXp8Re1yKKG2oj8b1Ms9ZGPj3RsDZ oCvsXw5Q/yQdFkCo7E/AewMzNLJHw+a0HbVcxeFKiNMSzOyNbuH2/fDo5qBo0mGeeGVK sxgrtmC5wxdcENlQfHcL+xYyFAsStbGm2K8hnZq8Iuxp9n3d15FezMPh+gG54+rAjmHh JuqfBqlnuvVD2Qizz9fswjaRKz0f9fI1iP+51J6CGTWhodLg1Mv3CUUZNprm0GDbrHwI FemA== X-Forwarded-Encrypted: i=1; AHgh+RpJsd67j7KH7CX4E+Jis93e13cbfVo2Ps4VInul+wQvkB0INSxDEwk9MBtmaOVmBcxRswtsrGBaNHFLbGk=@vger.kernel.org X-Gm-Message-State: AOJu0Yy7b+QXLYcsPCp46Pv5SxAgaCie1k0YLOUoL3T4SXKZtHLOzA3G 0M1zjSDO9oDYXZ+ffceDNNr8b03QsPj8jPTvnGOMpZWBFqqmoBqDT6E+cHTTBWSFNAz9Jrl9lkv o7OugxWYLVS2DHVeSY+APt3cW/WSmBZtpQ+fTSc6ashvVJbWROTrFpBO/LpKVX6E4MSw= X-Gm-Gg: AR+sD11A6c+/DlVkiJ0kAznhIEgROgAl19mvlnfPP5/zv3UW1GoV2APKpfnQtE/SAwT rTjJzRGqbwR5dZhiIXtA5I2TlquEMNuFTkILD0+ebzrkdlBfc89qQQxKrEAWe/svJs3w5Ch55p8 u89IOfuLZbjIPMgfcm91tR+6oxRKYwvp/wYJjswHfZkupazAmVZ9kRbiJRMsCwtRXzCU6RIoWTB eEXMoJYz/upRgMeo14oKeGvlMBxgM+t4Fr4srEAVjHM1Rc0znmMyvQdbOmjjw3N3hbEEEtOmjqt L7CFX8Fcqy78VQ9LHzbmTH5DhUV4Nk9iUzm7R+DeaKTsKmqNhixz8lbVrmHoXcUDfziFg2q9pKE y9SVce09rwI+zhWnU3U/ogaW0tYW/T6CLbXoLGqy+9dAp4siTdeCwFWbkS8sn5o9i88UI X-Received: by 2002:a05:620a:414d:b0:910:bb22:d426 with SMTP id af79cd13be357-93499b29b89mr44159685a.33.1785480343120; Thu, 30 Jul 2026 23:45:43 -0700 (PDT) X-Received: by 2002:a05:620a:414d:b0:910:bb22:d426 with SMTP id af79cd13be357-93499b29b89mr44101585a.33.1785480332259; Thu, 30 Jul 2026 23:45:32 -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-934971773ffsm46107685a.29.2026.07.30.23.45.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jul 2026 23:45:31 -0700 (PDT) From: Wenmeng Liu Date: Fri, 31 Jul 2026 14:44:55 +0800 Subject: [PATCH 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: <20260731-og0va1b-v5-2-c2b90b601241@oss.qualcomm.com> References: <20260731-og0va1b-v5-0-c2b90b601241@oss.qualcomm.com> In-Reply-To: <20260731-og0va1b-v5-0-c2b90b601241@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=1785480319; l=842; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=SlQ5VdwZvVStQeZ2eNH8zzR3a+C3sg3kvTYpgF54crQ=; b=2DQRx1++4zk31hdYTsA1ieBxVttN4ZS5A49UTh3/vBvU3L6iwD81kRnk66/xlHdNmScErKxRb O0pWAgBUvk9DQsXiM9527lpqZkYC4xWwj2Iff6WEWIn5a//Y4XNAwX+ X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA0NSBTYWx0ZWRfXxPc9QoUzd8Rm WIIIqQiwT3QR7oHK3ZpBL7sr4jU3F3b58R1BbeRDreTQt6v4RxMmphsegBbbC2sfLWP+5IOuMMt vXSGaZ6JYpKJlDdA2eVtLcxmtuVdkW8= X-Authority-Analysis: v=2.4 cv=HJTz0Itv c=1 sm=1 tr=0 ts=6a6c4497 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA: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=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-ORIG-GUID: J1Z-lnyQ_6fQAeUGMuHPpMr_5rx8wtDt X-Proofpoint-GUID: J1Z-lnyQ_6fQAeUGMuHPpMr_5rx8wtDt X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA0NSBTYWx0ZWRfXwxYyiRWumCZd M5tk3MfK4dryy6qBycy/QYzcqRc5A8IRFk6TNW39xeApcFi3alZsEd3k8QV8SfBSY71vXbybx98 csaIQD5lhNT43G9zcNM3e3WQ0LCC03qy/miJYr/y1q3o57xzDlnxiAJPhv+Ao03YYVBRadJjnM/ N0YJRYUfSlcCKwujshyahX8GGQfSZX9utyLzp2eADZCdw7KF/jYj16eNqbqNqSqzw8YITIismGb swPOXBq1olYKBh9kTOZ/7vVXTuJZip6+aCC27miosE+ur9vvlP48wKjxWkHhk6+qK4r6pqxTyOV b+5mcuiXbmGNZlfPrm4V/T8tSLvmpJAM1HfY9eAaqPhjQj81S1NJtjm/SaPDOQ0rZbVbopbkQOy FL5qVCn0P07zD2h5/oNvjWM/AmwgHAzZ8FjpviwLrCMqyl1y1wSafgJfe2bqN8LTClnUsigaqY7 eDNbN1a+3aFuc1JkiVQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_02,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 impostorscore=0 adultscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 priorityscore=1501 phishscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310045 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 Reviewed-by: Vladimir Zapolskiy --- 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 Tue Aug 25 21:06:04 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 79B4D3148D8 for ; Fri, 31 Jul 2026 06:45:45 +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=1785480347; cv=none; b=bAaN6Piru7eGz0mRS3GoqlgX+5hTj0GUe43Q+8lKRBQWWbqWmW+nG5x7N8tgvAVsQsQuUXkrYO4b70VMH1E59xgb/oSWVZfHtR4pYC4PWSImcJv5YwkrOfUoiq+fRlLXGcnBmaVg9F41sE58DWxi/MCMKvBIwv4BojnyPswofco= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785480347; c=relaxed/simple; bh=v7MWIqfZGj0yHDCscd2nMkMidCP3VrHdRkNj3te5k4Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IPFzY+p9R4G/PY1rzXWNzAMgT9av3EI4dAtGND4D4ER74sY7QtSbRmw6ru7b3Y0filKMLvkVU1triVnOYsWJOOjatzibAPwUhzpeCmuQTz3GMg1ZcC6CRnAVTaahnICIsnKOKoJvQH+EuVs5Zdu4XuulKftqT+4NC8DFan20jR0= 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=OysohSV+; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BJAFm+Fl; 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="OysohSV+"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BJAFm+Fl" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 66V67Dd02960535 for ; Fri, 31 Jul 2026 06:45:44 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=OysohSV+2m3jfK6O ek+gU0e5FCc+KttJmQnxeJY9ADRlzm/H3FFaqci+k+f5TQ12wSzM7qbBgZZFfDLQ ELUa5zX3aV2Rk9Agxa6nQ4Ia90QMAPr5Kz5IPVVk7cBxFVkg9lY8xU9J/lPH6Plx dO7b7di5Jxoouf5s/9x1u8yl5AeVIT+fWFZS8FKBFTU3bHUEu3dlNlKaZErSzxxM ZF1niuRwAzC1EF+/YXogvdMaqKPWAG6UE0pdPzbEEFjZRolI4Jf9zRlmITeaK9vO JeTkUJmFgy0APlSafiWpfZrUfOzHCIvVZl8M+7J8vx4c+WUZO/8CrEUc4dJLK978 ua/ZbA== 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 4frp5kg4k7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 06:45:44 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-92e4f946461so77364385a.2 for ; Thu, 30 Jul 2026 23:45:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785480344; x=1786085144; 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=BJAFm+FluNKKMHhVuAd+HZSLG/yWhxtPVrncWr4Ry2gvHh+xkOxVvm5Jgnp3mPXpBW gniAAUgXHwK+/dH0L7tJgkkcWDqJESQ1LR3QlALCqM92DO7MGOLkdE/gEXSg2JIzuV76 a+oztGIVMYUkU4TRjUFT+4/JdzF+219P1hiad6CtrsDTkuHHNQD9lbcL/+nBKkxqYfBQ 4kKOXbaYFzRnawHJ2+gixYj2g0jM1yPZppA1bvvYtBPsUsqeaUy4EsV6JYICYOCb9NBa 32S23lKRgmi1Vk+O8hAAspPBIXMwhcMXy7lJ++o87Jin09pCtLI3KuDcK1MHH9Ff+OYJ 0rfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785480344; x=1786085144; 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=A45IFdlHHW9FaA4wk4dxZL5KeYDs3bS6zt4MB5azV4lnTse8YoZQI3bzjmw1+hOsn8 zgUOnHvuk3MnznuC0SkY0g119wprCgkadzFuAKLShdjAec0DW1R6fSFyqNBVth536NEh qMAvCzQkJ7PKb8Ht9/NBnq2GQ8wP7Y1mZx++a3bub2Bet1K7uCTbbj6IwbnmhRMKfC13 SM4oUBGvH7iFkAXOIe7eLxYM2MwxBwbFkqZ45KANHYEVBO9ojlCfiG2tlzo39MOcvN0Q e8JV1OA5LCjiF9bn5hD4EwfIK9QS4RJoxE+Hjid5umN0xUiJr5rU+tk1TWc/YbPpxc19 LsIw== X-Forwarded-Encrypted: i=1; AHgh+RpzDI11b8CdR4KtushrsrBqlsr/yWHIGdsLqrcymY82YM04rLJa+tp4RFPqEVejnyJwtBfYiSpzdmzz0EQ=@vger.kernel.org X-Gm-Message-State: AOJu0YygvgEJ6kIns7SY33qGDeJ/aVbCJFPA+mI2bR9NARugeA9R88fb v96c+LTDxKmkae+KfqL3kLUmQch99Bu+xiGkfipLSbbaAPOguItr+QDfSaWtV50TM3v6Bv8AbCN A4HvcbQ9mhQVW65TGpcv/kphnOagiuHn2b+STE9jbrzTd3RDcjRh8GQ5mcLdl1rSLGzE= X-Gm-Gg: AR+sD13pdC5i/r43FH/NN6bGx5ZjzRnpwH32qxToF9vUAplqjOUYHtXot2JIDEuUIt2 7iQPaUxMHXiFoehc1W9dJcl/F0H2dp8g8QaPyBeaNvA3/JIBh1teyOWd3wnnv1rSRHSEyvJkhWA ICIWHVLtqty4ubvziXbrtBUGgkHoV0UttpZ0vTI1uy4Ui3ZnUtnxZvzuV3tokcWXOuY4CsIil5A 4mBWoker2H0Nq3ovwouu7O80a7VQktzwkR/BCrTMD3PL3gAPYzGfaSNAlBRF5Y/Qsttz4+90B99 rleOuhTKjn33WT0UGMvBCobaxwObHfs7l8Amw8Jn/EofQ3OSYPiFIRV3sh8Rj71CpeffjIbmbck NEOvs6Ky7xcubuUNuZOEEekgXtxFOqNSNWScU+HRRP1rr6kpILMn868311rc5medCfXai X-Received: by 2002:a05:620a:269a:b0:92e:520a:ffab with SMTP id af79cd13be357-9349ad168f2mr22249785a.38.1785480343590; Thu, 30 Jul 2026 23:45:43 -0700 (PDT) X-Received: by 2002:a05:620a:269a:b0:92e:520a:ffab with SMTP id af79cd13be357-9349ad168f2mr22246685a.38.1785480343136; Thu, 30 Jul 2026 23:45:43 -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-934971773ffsm46107685a.29.2026.07.30.23.45.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jul 2026 23:45:42 -0700 (PDT) From: Wenmeng Liu Date: Fri, 31 Jul 2026 14:44:56 +0800 Subject: [PATCH 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: <20260731-og0va1b-v5-3-c2b90b601241@oss.qualcomm.com> References: <20260731-og0va1b-v5-0-c2b90b601241@oss.qualcomm.com> In-Reply-To: <20260731-og0va1b-v5-0-c2b90b601241@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=1785480319; l=10303; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=v7MWIqfZGj0yHDCscd2nMkMidCP3VrHdRkNj3te5k4Y=; b=T82jPshnhu4Gw0J9/gnKAMJdkwCuES3GjyZzbXj0uSsY0Ei0/FQ+vKVBDAZi9p6HdUY4JK2ZK NvHPr63qFmTBAhhwg1OkCIDCh/prQFKJPn6q4Jy9mdiZwK0y5nI8bJJ X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA0NSBTYWx0ZWRfXzhYSfWc3ej9V q66QeJfnLVDNFwd6XcKcDQ8OrILiypEwIXHiOaaKG8dKZXnPj5FHq66X/ZZjGD3yW8W402ZeTHn lC8hxXwi+SmmHjoprHLlEwQR93kehN8= X-Proofpoint-GUID: KKZBLsfpllqYiodf7mCZiaMtDcHYY1FF X-Proofpoint-ORIG-GUID: KKZBLsfpllqYiodf7mCZiaMtDcHYY1FF X-Authority-Analysis: v=2.4 cv=c/Obhx9l c=1 sm=1 tr=0 ts=6a6c4498 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=aIh3vjFOF9panSEBuokA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA0NSBTYWx0ZWRfX5JJrgz9xDOB8 VMMKPVVrbSCpLWVNB2iFHac7eehJMI+5oY6on7NvV6I13KLfCoON3PlWx8aHX7Ma4ATGQJOwfSN M1tmFRK14pOXz2r0vQ5Tinlr+GN/xOQNZR+F35bbtv8ToyiPNxfgehxIPrDC9+54VCvwGDpqVla RrhkVW8WqPN51xo/QY88tQAytMg0zyvarmb8aOOXme6dStLJM0jMRZTV0Y3sJxvMzT88mcR9hhj jtdpSRKv3O5QXAJGyxvaH7D63F+gN7suVc5HFmPaX9sLP5Jih136GwNuiWtNwRJgUCQu+U7eS48 P4r33qQTnQfSlSx69jKFzmEBw5lZ9qPM+vH/Dxi7wxhD9e1lStAr4nigR+2hDPUmbXD9N/0QLAp Jm6OXgTBj4BcTM35GBLmD89dPTLDiy7Vqym7BNnJxIsnkilnP00LwMgdYry7hSfEt4qJ1cFIrE+ iDX0VmK5+mzpLMQsiZQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_02,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 suspectscore=0 spamscore=0 bulkscore=0 malwarescore=0 phishscore=0 adultscore=0 lowpriorityscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310045 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 Tue Aug 25 21:06:04 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 1F456340260 for ; Fri, 31 Jul 2026 06:45:49 +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=1785480354; cv=none; b=L9tA8yVlvV0GG51G4h9SaLzf+IHDv4EaWvNLa2X+di/dOrl9rza3csmq5c4iJKrET8SNaJ7Y8MXSWzazKgpV7Cwvg1001gop7PtOIgMNFp72mzuOzKxlt0gTOuLN6CEsoDJs+Y8br2VkuZch7Nsz5LnjNldbK23gF775acSKgi0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785480354; c=relaxed/simple; bh=ykUUSv77OEo5PaKCMO9ysrO1o42/MAKasnMbnUkbxUk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aRpDmyuQ4V9YD9P5XdzUuJgdz6CJEEY+tPUezwi8aIR8gLItBEQ83bIDbc9obGDD0jCrR1XKz0dkKqUHyZgJLi+gh3b3I/xoJtZVWH2WbCOY+Wvbvsnpsjx1jVfJuWrKf1/bMvu6KAJGicLfW5W3Ka9lW00xGDRhdPgCE61oslg= 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=px1jlHMd; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=SqeY3lNW; 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="px1jlHMd"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SqeY3lNW" 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 66V4utLY3277936 for ; Fri, 31 Jul 2026 06:45:49 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=px1jlHMdVZDuliie dXpF1/OsilbIY5O8rmm6Q4pYrziZn/vOf29icBuQSnwNRxJdkfW6NNqv1JAZcozi I1SHyZMFOUkRJ/ZoK6gT3CgY4SHw6S/VT9RJmfZyLP35w2JuypXGTud5jSUjX2pG Kg54PWppeQ73Jv0SX/l5PknAjbS2NbT2Y24lxmR0kxxOYEcTAYaUR54ntuF1kKfD UTrc/QDW494bFPxhtNXOmw3kdjHPDaUFtGwghjKequQkqdIbJAyrwQgCWamfyHUH Y4bjiCdP+YLGJolD/9MVVVLJeVIeecu9bos40wg8NDe/PTpsK+Pe5dx0V0FeI01s tBIW5Q== 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 4frn0f8cuf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 31 Jul 2026 06:45:48 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-933023a5980so109490085a.3 for ; Thu, 30 Jul 2026 23:45:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1785480348; x=1786085148; 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=SqeY3lNWtizh6elpNYwP66wjtEG/umh+dBhsz0N4B15Ghm9tcdL7tn84BnQ5uKiBBu 3owazD4rNU1WXD46FTaRri5Ym3TYO4vUZAQ/Q4coto0MQGVetbiHaK2aHETm2Wc4a6tJ /pBXpYWY9HYjdCudmMIXY4DwR2kP+RkbKci5Ym1MQlvzOWIHOtRNmAE8lZFPgFcbzWSX 3jrl6dVmczbbjXlF4eWad4Afcrfs4U2P29L/izG6A9ynL3B/KzYLcHYFkfyb/+x3a96g fLamYiPOwgcDyKObEVyVRtYnl63qdwdKbW6bBdbGkEUBB1SEmeZVjemb9p+CxqS//FFT 4tlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785480348; x=1786085148; 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=mxluI87u3KHI5g6JtHazhQTQ9bXfj74o8dj8GijhJ5eQ537iZWUQtVml+5h+/g6Pbk CUqrary03UUZX2S4n6rk4P6apHYOuWX55ERrWITX6lhk9XjhyrdiXRInnCTvFbP7oI+k K8j+EbH/glnh4HUKgLQcnJ7nHMi8oeQ/A84RtOmvw1ZS4wKyeXlz0Q9Rtc55ge4noFj4 kjqRBh2lVGfFs+ggRdvcTtQwLAw/Fz1wnOB3UbN+lZAE73Vw3ALAs4iJnmxRs36TmADi Cu01fbG9bNdpDBtK+GyCmLXDsMRyUba9C6KTGweQiv9PPuc+/vaK6Zpk//kDsBAekpDQ ZS6w== X-Forwarded-Encrypted: i=1; AHgh+RqZiEPtuQO5EjfB3ssYV4QQUcNMFtw32vM1HinYy7FOT8H0qsJc7hCAzvUuyCfZD9uFTC2it0riItS2dKA=@vger.kernel.org X-Gm-Message-State: AOJu0YyDZPx8yvUFfAbS3i1ZMGJVPcKiaYWV/mMkUDopShacvjtFfsHt PVNhTuVtdr/HGwLj9w18kkz26jNjxGNen/YCk1ZDi/QCK0eMqjsftYwE3eOTBoL9XiOJi2mYs1S Wh88v9GKlaooZXwP7tj9vPiz03XloNhheokfkaKt5+vUudwoxKnA1VEBFvlkaEnEz9mBa1Zbs+4 qG5A== X-Gm-Gg: AR+sD10i2i1lvlcW+aHxsKnK01xHg0G68k+K1jHqmPMHgxzVNQ/4uNhsjiCTMH+60Gx Xe7HdQvq98FqJCgpYA59so+fGPM/8E8/AW0aU0h68bFOj/dnrGKSwgJqzZbUvG6JiF7lEYN1JXg 9bg00N+1vnKWtY4xSaszPQSRPk6VxPgp81aV5Q+mTfTJITEhdkFRTWq98MNLS7+IosZZS9QvlbV L+X7Vw/jJvm2n0Mhps4wGaKZ2kQQVp/3KIMU3Y2yHKA9HjJKrANj8MnVNW8SFTdAyk5VisAaijv ZTDDAXYWHlkaYAQDVIddHfxe8LLjGIgZRZAb/gx++PCXLU0XkXsNh78aYo7wHzKLaQ3yZ6JHOq0 SAf6MtKCbFimx0r9AkuVB7zUPl1vsBqmrFlUFOD1blr4OGj/pgL79LeZi1g6IlcGG9gYm X-Received: by 2002:a05:620a:a403:20b0:932:e9c2:f4fc with SMTP id af79cd13be357-934965b4656mr71254385a.16.1785480347972; Thu, 30 Jul 2026 23:45:47 -0700 (PDT) X-Received: by 2002:a05:620a:a403:20b0:932:e9c2:f4fc with SMTP id af79cd13be357-934965b4656mr71252785a.16.1785480347505; Thu, 30 Jul 2026 23:45:47 -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-934971773ffsm46107685a.29.2026.07.30.23.45.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jul 2026 23:45:47 -0700 (PDT) From: Wenmeng Liu Date: Fri, 31 Jul 2026 14:44:57 +0800 Subject: [PATCH 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: <20260731-og0va1b-v5-4-c2b90b601241@oss.qualcomm.com> References: <20260731-og0va1b-v5-0-c2b90b601241@oss.qualcomm.com> In-Reply-To: <20260731-og0va1b-v5-0-c2b90b601241@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=1785480319; l=13942; i=wenmeng.liu@oss.qualcomm.com; s=20250925; h=from:subject:message-id; bh=ykUUSv77OEo5PaKCMO9ysrO1o42/MAKasnMbnUkbxUk=; b=B1V3NJArnR4mnjHwY0iBWukZUgMZyPVNRXssQjO0IY45cLsQAVxMd3RaEzh54PUCvWZr/vHju c7hawDQikSSDLq4M+uuLqZIR9p8H5zSw5HFMa+s0ZjYLOiDCb1bZeqP X-Developer-Key: i=wenmeng.liu@oss.qualcomm.com; a=ed25519; pk=fQJjf9C3jGDjE1zj2kO3NQLTbQEaZObVcXAzx5WLPX0= X-Proofpoint-Spam-Info: AW1haW4tMjYwNzMxMDA0NSBTYWx0ZWRfXymAMTBp6DFN5 Y7xoXGejKpGihg7PLg6xf/6PR4CsY+8+S/u+SaJpnSM4Rjup1hdKH2qpc8jg3no9vluLXzuqLVd Oy/4uYj/5h4ofpO4UAUpsv5pFRIYink= X-Authority-Analysis: v=2.4 cv=HJTz0Itv c=1 sm=1 tr=0 ts=6a6c449c cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=C3Dk8TwHQYyIj7nOf9RCJw==:17 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=kvSDJSb0XTZWr82cfuIA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: ZUtWjaLM5y5pwSDNYySNzyP9vtqOmkQm X-Proofpoint-GUID: ZUtWjaLM5y5pwSDNYySNzyP9vtqOmkQm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzMxMDA0NSBTYWx0ZWRfX0v+zLbWmyzXa RD91fXjqy29E8azY4r+08eQUa1xaPp1NSWmV1s/Kg6y0TliPYbwaI8mjJ+zdM++UxPpdsA7aKpZ /mrqvFRLp29Y14KrgkHp/2SllXdRMh0E88dwtnW4EFNjzXtIwGBNG7sxgGF+unXKJ2cZ7KAyM/4 UIWR4ORZ0Ia4jXJ4LpM88IZrWrtsS4jKu784SMReOSxCqE6/vSXwMtTBv8jNElkL2EtBUbjWqtt 9cJge5UMhII1OQoQqBdK8evp/9MaHT8l+v5bb9s7JRfu+y2QVyWKNsQ24uPkXH9zsc3sNOiAzZe +F9ZIqO/pw8KrtLXUVD0SYgUxh6jrcmHq6R6n0Y5aWHNRXfWhGce9vkFOQN0MVDDdqMaxnsbRto HVJsQ3cZ9cWzt9kI6ARUYJ9oTBDN6STdTwyzkElx2Ul9B05dI2mlVa4EmP/r502ejshoFohywgZ 2B4MfEQte/8qCRTu3DA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-31_02,2026-07-30_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 impostorscore=0 adultscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 priorityscore=1501 phishscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607310045 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