From nobody Tue Jun 16 20:35:23 2026 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 808643A1A58 for ; Wed, 29 Apr 2026 07:07:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777446428; cv=none; b=tA5zBFtEP1UF0HYeAChvYzDBsn7PilYXt2tFoK8C5907+W130+ZiBR+GW22ORiVY2M23DEXvmt4ac15aqj7LLFSTwb0C518SHA5jLy67amrj41oi50KsDPB3OvbwQKyV3HxevNI2oACrV1vReEJJpQfp26C3ISpC1Wba4YjytTM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777446428; c=relaxed/simple; bh=0DFMRmRmnT3HIcrBDMAr1tbxa08F3uNrVtX65Evd/tg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=levXpq7yylgpv+n0JESO8OgaO/Kn6IBxWKPp0zOfb19bGiytsD8LmXFBSqBSQyoDLumypVKlERuci5C6DuuU3O0miT8DXY3U1Ho3EBhNjbtaJegatZpXxtc/qMQf/U4VVID+5+4Ok5TMPR0EqE47T3CpgROnOqnhk39iCboPTf8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZgTiP9vQ; arc=none smtp.client-ip=209.85.214.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZgTiP9vQ" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-2b2429f98d0so72822585ad.2 for ; Wed, 29 Apr 2026 00:07:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777446427; x=1778051227; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=s6Yo5rERlGwlb3Ci6vxCe4GRUzMyoCAKAgtEtNiZmzs=; b=ZgTiP9vQCgN93cRnreXEqy7RyvA3J3FZcKwq67zYgj0tseSo6FIENOMG7hBboCruJs qHQ+3F8E39PmgO2RSUGHN2ml1OhT5U7nXi7w+hQM1akMxCPvLxFRKs1KqoGcLXwIOJCt /JOf0n8dcPqdrUa4peEdRA405+L/5vOoOjmIhIcyTjoRRFTulng2ZJeCL8ktATxPODqz klt8ke4ImR0M6CVAvv2mgytztzhTe0Ctpd9D3MmT1Eha4d7Kdpe8Ef9EZIA6OBuu8z2K VzuwZjVdcKc4zffcP6e+XnjD4AugOHRB/wlryhxrQP+lr2BfAaoNsDY4IaYIa4dKEzYn Sq+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777446427; x=1778051227; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=s6Yo5rERlGwlb3Ci6vxCe4GRUzMyoCAKAgtEtNiZmzs=; b=KhSLJERXKU/MbXQExapXFuiIitO/mYcvFz2CmXQoLNmNqw1symth3v4ylzJGcancX6 M0Qa9h9slq4Q8wEgFFZ2TjzWx4kpLC5sancukksxCT2ubVZMzViI4dtQEHdoTW2FbnIl EOtawyHFLJbBctGCWdXNVU+Yc6Kitgt4bgtrI5iPrmI50DkMHDrjwIidwnCZ4b4p9PBq tjIRjk/vZM+IewHIWh/BDS9DEY9fUOHKOyJUzGu2sZ8epKP5H6KOXBX6FU2kFY5XznZF p96ot3hjH0Iw5y3VGsnGQMHiSecf3cqDjpDsNMusJVRJJDVzndXg/0yGow6bw3Jzvbbk +0VA== X-Forwarded-Encrypted: i=1; AFNElJ/DP1jbER5gmt/CJjG4jSLNolqpP67UHQZlFzyBAiocr4SnkslQnGms1QSKEJPJID725Tw1eVqYzgF84l0=@vger.kernel.org X-Gm-Message-State: AOJu0Yynt95kVMfZ2vaVKr19TW/JioiuXGCFYoGR5ydKkiQ6pqyX5tNz lp0wX0Tjkt9LtatoYIcTMJDMvTd7CbTBEBWWDmjvGi1X7lN3Af+62MpN X-Gm-Gg: AeBDiesBJR6A23IWw+k16k+Yuzr74rOiPV0QbpO1NyGumvlHal182L0kgG1OaxNi27l /tAP1ElbDXQQ3/GnMv//fwSi8H2HNo0uHVmxTPTw5/OoZEfC4BgtJ7CRJXk/65YrLSGMOV8Ou2J VLl/Nt9qwXSXgV+WfoW4EyJ0Wu1WJ1FHsEdrxOLAp/EipBex/Z1al03laYZ4WfqsidH7v12nRg+ NmkwdXy+NWgH0q6X8D2VYH1VfvP66bVf6I34TAJzXStkQUgvYkwGQTAvG9u22COQLU3jQphOkrn KU2DSaoMQzYrSLYMubBRlzmID+IX+kH7gcW3a8VjZUsXQmLhc3qdRiPQHadexL5TyzIT57X4+Yn UvXB6ZUguVRWl9BY33I4CMQYmQqWoCXumffdXUMiC8vlBaHrpQECncGte1CtOx1OKCaDrZniLMc I3yb++quQN6zRpz5usM9oiCgwsEyv1 X-Received: by 2002:a17:903:166e:b0:2b4:678c:5f1f with SMTP id d9443c01a7336-2b97c1534d6mr65672825ad.0.1777446426708; Wed, 29 Apr 2026 00:07:06 -0700 (PDT) Received: from nuvole ([144.202.86.13]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772e6dsm11872125ad.16.2026.04.29.00.06.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 00:07:06 -0700 (PDT) From: Pengyu Luo To: Sakari Ailus , Martin Kepplinger-Novakovic , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Pengyu Luo Subject: [PATCH 1/2] media: hi846: fix hi846_write_reg_16 handling Date: Wed, 29 Apr 2026 15:03:50 +0800 Message-ID: <20260429070351.1307204-2-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260429070351.1307204-1-mitltlatltl@gmail.com> References: <20260429070351.1307204-1-mitltlatltl@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" hi846_write_reg_16() does not clear a positive *err value on success. pm_runtime_get_if_in_use() returns a positive value when the device is already in use. When hi846_set_ctrl() passes &ret holding this positive value) to hi846_write_reg_16(), the function returns with ret as is, the positive value propagates back as a return code, which callers interpret as an error. Fix this by resetting *err to 0 only when it is positive. Fixes: 04fc06f6dc15 ("media: hi846: fix usage of pm_runtime_get_if_in_use()= ") Signed-off-by: Pengyu Luo --- drivers/media/i2c/hi846.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/media/i2c/hi846.c b/drivers/media/i2c/hi846.c index a3f77b8434ca..09c109f3fba9 100644 --- a/drivers/media/i2c/hi846.c +++ b/drivers/media/i2c/hi846.c @@ -1270,6 +1270,8 @@ static void hi846_write_reg_16(struct hi846 *hi846, u= 16 reg, u16 val, int *err) =20 if (*err < 0) return; + else + *err =3D 0; =20 put_unaligned_be16(reg, buf); put_unaligned_be16(val, buf + 2); --=20 2.54.0 From nobody Tue Jun 16 20:35:23 2026 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 12DAB3A1E96 for ; Wed, 29 Apr 2026 07:07:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777446443; cv=none; b=ODCKHOrzuwYcEiBCTmw9NTh7e+76W9ytP2ldnI8VhaxVqT4dANGSLQ8uAEDNpHVigVfcEMIPRU1W6K5BnDEWPlox5DCFd6ybabUEStbDaZrFi9X6qcLrdUMMIFI8A5gMkR3KIBdC8MMTY9+73bsW/n2AMoXjwgkmPpoqwFKwX6k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777446443; c=relaxed/simple; bh=STuMPaiIorE5/ZpGHFTixiueZ4xCup3lmUwU+kg2Q3s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gzWEa7ZaukHFKrRlweVrZaIEVB7ERRZOye/k0+YNdwpvQ+MmgAktJcL6Ja6SRJed/ziy7yZBcJlatZIvDqtabpxuKCkUC5UWSviLOLCcpdJg+0AMazSjtWYsCaLkVli0h9DTs0jkCLPVR35h0qlGLZzpO0MR6MemXElzD2glmZU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=eD8ugfLk; arc=none smtp.client-ip=209.85.214.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="eD8ugfLk" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2ad21f437eeso4076185ad.0 for ; Wed, 29 Apr 2026 00:07:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777446441; x=1778051241; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6oVFH+csygmP1sWydNHLJM4Vcbd2v84Tr8Rqn/xPsZw=; b=eD8ugfLkFW+kGzYRx996VCnYgsLJ/z26AVfdOIH0fKBxYyQYZVJX4k64xeQhh7kesL ZUwIiPrbs1FCGkJUDhsUZK/21IsLZURP1dn2N4lQcv3lBGUIBb1GsIEYAacCSQvN0O5e qwRnYe+jtYUe5h9xMDixlnP5lSmvxs7fWHeVbvHvX7mc3tBTXSh99HraWjMMn5GcD1Kv 0+7IF3qYhTrU3iAyamvsKkmkkgon1l8msT0oIwJHEN9M6ZrATv5QoBZS2WQIVnylGpB7 FFFcDDREaiFPqHJeHDqFC+bWfFi1VaaTQvr4lD5wuxFGPmRev0996pEVSA9+nU/JK03L mnDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777446441; x=1778051241; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6oVFH+csygmP1sWydNHLJM4Vcbd2v84Tr8Rqn/xPsZw=; b=rwrAU+L7AnkR+QoZP5aX6Iyh3OJ6SbNwWVB0IYuNmBpoxeB5jrgnRjridB7OkCVA2s AU4HVwwyVO27P934JbEDDJHhuxA4arRGBbUGCOfGo0l5+RGQykBJZyO0IBlZ0QbvZnId suj+TuiCPqOCIJptsV/R+WVP9Qld+vDDM+LW3GVtXyf8e5DvFaspJuUKyNoSH7WkJGBY Ds3izRMqafUj+fXxDGEXdXQo+jcLE9auGj67001UBGpVYmlxRrFGu44nDcbO33jqhO5B tbcdzTW/5cqjURH53YIR3JPOInf2S7E4YNvwS1y0S5FkkKjyL1MkiiMUvcL/ltsuSzZF /tAA== X-Forwarded-Encrypted: i=1; AFNElJ+XiPqJAvNe4yR7l5yXEWH1vwVR/IzgnNE0av6SWk9yfNgQlfpKyA+IoUyDoSGqGvxnbnWSE1F9qMMtKsg=@vger.kernel.org X-Gm-Message-State: AOJu0YzWIUIgN1Fm+VS+Y/8Of5w4a+11e31tyzskesBK7jHWvORePjy3 bQeog3AmCscUi5hFrZscWcJBeh2qU+KMXPI26q8WaxrcA+xbyPx899BP X-Gm-Gg: AeBDievQgIC4QbCgxNBCqMOcxGr/7arg3iT9oFvkQh2XYSkeb3Y7hPCenYJiiADgtBP N1O0sY1RwVkWGkJdIBtDeVgD4pTthrf9SUvD6RA2yuUZUa7MhQ4X/3fB4nSCglZLd3fTc18shXz W3U1jG9X8CbE5+WtVorOBjXwGhpOW4jahwkcvObR1whYX90QckPmYYibtRDQwt2ZUpv+ZL0/1hK MNjYhiGNC3K6DgEE4o+fiLvRYLRbbj058CvvBw6Cge7zXTMNWUkfd3wBKYhr0NuUu5WgduksLsG qzW+6C3ZWqIINS5Y4NKcx4S4uOCi7guxIgHmqX7G+1gZ8uaiGPCch00hCeaDpsnhz1DI6qOEK00 LubJl/rjfJ0ynfVFLwfI702NhzkVKtxEG+RWdzz3GblczGtzmuK6GXIen8yeSEfyWas+7mJXpr3 NVqxxCCTbKB+/442GcsTvUDDcRwqqnwVsC47Dx85E= X-Received: by 2002:a17:903:3846:b0:2b0:be79:e521 with SMTP id d9443c01a7336-2b9882607d0mr18559955ad.26.1777446441258; Wed, 29 Apr 2026 00:07:21 -0700 (PDT) Received: from nuvole ([144.202.86.13]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b988772e6dsm11872125ad.16.2026.04.29.00.07.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 00:07:20 -0700 (PDT) From: Pengyu Luo To: Sakari Ailus , Martin Kepplinger-Novakovic , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Pengyu Luo Subject: [PATCH 2/2] media: hi846: Add 6MP and 8MP modes support Date: Wed, 29 Apr 2026 15:03:51 +0800 Message-ID: <20260429070351.1307204-3-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260429070351.1307204-1-mitltlatltl@gmail.com> References: <20260429070351.1307204-1-mitltlatltl@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Hi846 is an 8MP sensor, but the upstream driver has only supported 2MP mode for years. This patch adds 6MP and 8MP modes to maximize sensor utilization. Note that these modes require 4-lane MIPI CSI-2, as the downstream driver only exposes 2MP, 6MP, and 8MP configurations in 4-lane operation on the target device. The register sequences are extracted from the downstream Windows driver. Signed-off-by: Pengyu Luo --- drivers/media/i2c/hi846.c | 154 +++++++++++++++++++++++++++++++++++++- 1 file changed, 153 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/hi846.c b/drivers/media/i2c/hi846.c index 09c109f3fba9..b8ae7344f1a0 100644 --- a/drivers/media/i2c/hi846.c +++ b/drivers/media/i2c/hi846.c @@ -1027,6 +1027,106 @@ static const struct hi846_reg mode_1632x1224_mipi_4= lane[] =3D { {HI846_REG_TG_ENABLE, 0x0100}, }; =20 +static const struct hi846_reg mode_3264x1836_config[] =3D { + {HI846_REG_MODE_SELECT, 0x0000}, + {HI846_REG_Y_ODD_INC_FOBP, 0x1111}, + {HI846_REG_Y_ODD_INC_VACT, 0x1111}, + {HI846_REG_Y_ADDR_START_VACT_H, 0x0172}, + {HI846_REG_Y_ADDR_END_VACT_H, 0x089d}, + {HI846_REG_UNKNOWN_005C, 0x2101}, + {HI846_REG_FLL, 0x09de}, + {HI846_REG_LLP, 0x0ed8}, + {HI846_REG_BINNING_MODE, 0x0022}, + {HI846_REG_HBIN_MODE, 0x0000}, + {HI846_REG_UNKNOWN_0A24, 0x0000}, + {HI846_REG_X_START_H, 0x0000}, + {HI846_REG_X_OUTPUT_SIZE_H, 0x0cc0}, + {HI846_REG_Y_OUTPUT_SIZE_H, 0x072c}, + {HI846_REG_EXPOSURE, 0x09d8}, + + /* For OTP */ + {HI846_REG_UNKNOWN_021C, 0x0001}, + {HI846_REG_UNKNOWN_021E, 0x0235}, + + {HI846_REG_ISP_EN_H, 0x014a}, + {HI846_REG_UNKNOWN_0418, 0x023e}, + {HI846_REG_UNKNOWN_0B02, 0xe04d}, + {HI846_REG_UNKNOWN_0B10, 0x6821}, + {HI846_REG_UNKNOWN_0B12, 0x0120}, + {HI846_REG_UNKNOWN_0B14, 0x0001}, + {HI846_REG_UNKNOWN_2008, 0x38fd}, + {HI846_REG_UNKNOWN_326E, 0x0000}, +}; + +static const struct hi846_reg mode_3264x1836_mipi_4lane[] =3D { + {HI846_REG_UNKNOWN_0900, 0x0300}, + {HI846_REG_MIPI_TX_OP_MODE, 0xc319}, + {HI846_REG_UNKNOWN_0914, 0xc109}, + {HI846_REG_TCLK_PREPARE, 0x061a}, + {HI846_REG_UNKNOWN_0918, 0x0407}, + {HI846_REG_THS_ZERO, 0x0a0b}, + {HI846_REG_TCLK_POST, 0x0e08}, + {HI846_REG_UNKNOWN_091E, 0x0a00}, + {HI846_REG_UNKNOWN_090C, 0x0427}, + {HI846_REG_UNKNOWN_090E, 0x0059}, + {HI846_REG_UNKNOWN_0954, 0x0089}, + {HI846_REG_UNKNOWN_0956, 0x0000}, + {HI846_REG_UNKNOWN_0958, 0xca80}, + {HI846_REG_UNKNOWN_095A, 0x9240}, + {HI846_REG_PLL_CFG_MIPI2_H, 0x4124}, + {HI846_REG_TG_ENABLE, 0x0100}, +}; + +static const struct hi846_reg mode_3264x2448_config[] =3D { + {HI846_REG_MODE_SELECT, 0x0000}, + {HI846_REG_Y_ODD_INC_FOBP, 0x1111}, + {HI846_REG_Y_ODD_INC_VACT, 0x1111}, + {HI846_REG_Y_ADDR_START_VACT_H, 0x0040}, + {HI846_REG_Y_ADDR_END_VACT_H, 0x09cf}, + {HI846_REG_UNKNOWN_005C, 0x2101}, + {HI846_REG_FLL, 0x09de}, + {HI846_REG_LLP, 0x0ed8}, + {HI846_REG_BINNING_MODE, 0x0022}, + {HI846_REG_HBIN_MODE, 0x0000}, + {HI846_REG_UNKNOWN_0A24, 0x0000}, + {HI846_REG_X_START_H, 0x0000}, + {HI846_REG_X_OUTPUT_SIZE_H, 0x0cc0}, + {HI846_REG_Y_OUTPUT_SIZE_H, 0x0990}, + {HI846_REG_EXPOSURE, 0x09d8}, + + /* For OTP */ + {HI846_REG_UNKNOWN_021C, 0x0001}, + {HI846_REG_UNKNOWN_021E, 0x0235}, + + {HI846_REG_ISP_EN_H, 0x014a}, + {HI846_REG_UNKNOWN_0418, 0x0000}, + {HI846_REG_UNKNOWN_0B02, 0xe04d}, + {HI846_REG_UNKNOWN_0B10, 0x6821}, + {HI846_REG_UNKNOWN_0B12, 0x0120}, + {HI846_REG_UNKNOWN_0B14, 0x0001}, + {HI846_REG_UNKNOWN_2008, 0x38fd}, + {HI846_REG_UNKNOWN_326E, 0x0000}, +}; + +static const struct hi846_reg mode_3264x2448_mipi_4lane[] =3D { + {HI846_REG_UNKNOWN_0900, 0x0300}, + {HI846_REG_MIPI_TX_OP_MODE, 0xc319}, + {HI846_REG_UNKNOWN_0914, 0xc109}, + {HI846_REG_TCLK_PREPARE, 0x061a}, + {HI846_REG_UNKNOWN_0918, 0x0407}, + {HI846_REG_THS_ZERO, 0x0a0b}, + {HI846_REG_TCLK_POST, 0x0e08}, + {HI846_REG_UNKNOWN_091E, 0x0a00}, + {HI846_REG_UNKNOWN_090C, 0x0427}, + {HI846_REG_UNKNOWN_090E, 0x0059}, + {HI846_REG_UNKNOWN_0954, 0x0089}, + {HI846_REG_UNKNOWN_0956, 0x0000}, + {HI846_REG_UNKNOWN_0958, 0xca80}, + {HI846_REG_UNKNOWN_095A, 0x9240}, + {HI846_REG_PLL_CFG_MIPI2_H, 0x4124}, + {HI846_REG_TG_ENABLE, 0x0100}, +}; + static const char * const hi846_test_pattern_menu[] =3D { "Disabled", "Solid Colour", @@ -1042,9 +1142,11 @@ static const char * const hi846_test_pattern_menu[] = =3D { =20 #define FREQ_INDEX_640 0 #define FREQ_INDEX_1280 1 +#define FREQ_INDEX_3264 2 static const s64 hi846_link_freqs[] =3D { [FREQ_INDEX_640] =3D 80000000, [FREQ_INDEX_1280] =3D 200000000, + [FREQ_INDEX_3264] =3D 288000000, }; =20 static const struct hi846_reg_list hi846_init_regs_list_2lane =3D { @@ -1134,7 +1236,57 @@ static const struct hi846_mode supported_modes[] =3D= { .width =3D 1632 * 2, .height =3D 1224 * 2, }, - } + }, + { + .width =3D 3264, + .height =3D 1836, + .link_freq_index =3D FREQ_INDEX_3264, + .fps =3D 30, + .frame_len =3D 2526, + .llp =3D HI846_LINE_LENGTH, + .reg_list_config =3D { + .num_of_regs =3D ARRAY_SIZE(mode_3264x1836_config), + .regs =3D mode_3264x1836_config, + }, + .reg_list_2lane =3D { + .num_of_regs =3D 0, + }, + .reg_list_4lane =3D { + .num_of_regs =3D ARRAY_SIZE(mode_3264x1836_mipi_4lane), + .regs =3D mode_3264x1836_mipi_4lane, + }, + .crop =3D { + .left =3D 0x46, + .top =3D 0x172, + .width =3D 3264, + .height =3D 1836, + }, + }, + { + .width =3D 3264, + .height =3D 2448, + .link_freq_index =3D FREQ_INDEX_3264, + .fps =3D 30, + .frame_len =3D 2526, + .llp =3D HI846_LINE_LENGTH, + .reg_list_config =3D { + .num_of_regs =3D ARRAY_SIZE(mode_3264x2448_config), + .regs =3D mode_3264x2448_config, + }, + .reg_list_2lane =3D { + .num_of_regs =3D 0, + }, + .reg_list_4lane =3D { + .num_of_regs =3D ARRAY_SIZE(mode_3264x2448_mipi_4lane), + .regs =3D mode_3264x2448_mipi_4lane, + }, + .crop =3D { + .left =3D 0x46, + .top =3D 0x40, + .width =3D 3264, + .height =3D 2448, + }, + }, }; =20 struct hi846_datafmt { --=20 2.54.0