From nobody Sun Jun 14 07:35:02 2026 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) (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 22279383C8B for ; Fri, 1 May 2026 09:57:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777629451; cv=none; b=tcAnIDaqXbsd8x632SdEgCYjZZcErOWcmKZ+T8nxUx3EEawnyOO75ltPW9vC6eNvQF6/2YhPt2l/MMvZ27KqDQPkk61LbtA8OjTmvoU5GnCULxc6BCS+tavNSNek4nxrMiec/Uc5+3poNhvc2LGTXwYJn9KAnTpq48LL1J1gupo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777629451; c=relaxed/simple; bh=2DUEGmGBfiPDJoF4glzsd2tFfRCHmiYNGIfP0DCGq+w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IdQeEX0bI8In//Fe8olh/NICcb2nb/J211gm1tFf/m3GWq88BvQbb0LUz1vN+lVi+LJnX1HfExALGyAGR2TIHcZVP28aS8jfsT1pQWS/VS3Ly63BtlAguut58tVYcupCU7ccofv0N+neJquc7ByHFwRyvs+vGybdTDVRRBgKsXo= 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=dwZOMb5C; arc=none smtp.client-ip=209.85.215.171 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="dwZOMb5C" Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-c7973bbc16dso1062711a12.0 for ; Fri, 01 May 2026 02:57:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777629446; x=1778234246; 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=JtSAsL8S4A9Pm+EutLuBtDes8X3zjz/YG0VQuIH4tno=; b=dwZOMb5CpDEnflCXEZAdlHqGEiK/YSzD26v70I+yW7X6beGdfRlYYQun4r1KOnKdgZ flz1btELguqel73XwmyFt4cQJ65l2K8A3uST2LMq5N01TjaY9k/Iy+4Ti4CV1ZhwfFzE p/hRxBxKzK6RoxQTkkFFgP4Qm3ySXeoEtGdM8YxbGIPOfULUrqPVDZ31cnzlz6hlkE/B 0nXjvGv2gxQB/eEyLPoDrKmUqy40xnOLrGLErq269dFTvJDEP9hhNuNy5J4HWKM0X7T+ KeklZsU2P2JU5JRfq37thb8yPNYSV/A8ikP2Di+8JDSSMlX+8NCgyj7xO2HxfX1bn/2a G+RA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777629446; x=1778234246; 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=JtSAsL8S4A9Pm+EutLuBtDes8X3zjz/YG0VQuIH4tno=; b=dgYnMvHBjfRDBKqsiyD8CIpiQTaEGlQcd1TKSnR/dBom8K6RfM5uYM2DMoGjN9wk3+ ILZfejMao9KAYRzdgsoS1QhNywkm1fcVJz0wbFIAjnr6XeIpUDggh4U1bIuQlmEoNCEO 9BFwsArQMeTNdSBVGq9MslqF2O6S4v7lZdSa6gQjiCEPqAWGe7uZAe0fwmvGD0omc0DP rd/grFlikS7CLde7b6lulCnzpl4y3JpVxks1VSDOyPZU21g+r4sa/UXwFYMGgN3ZQ2vn ETh7Bi/koFXqKFnDxc3ff2dsv3yHFvX5OIl8qtru9ghPfMP/bPLJ1dvXygSVFGpJKwFP bNJw== X-Forwarded-Encrypted: i=1; AFNElJ943syDmXgH6toFF5OMp8mxGi9jExFGPGg1A8hIXhxXo5vvhq22PTnDacyeAGWKdL0wM4Z6B6If8lbCzkQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yy7o+X3B2iKDIom8/9jH+CQQT20prHIWM4by1sT2gXTu4cY9dvf gXYnHG4t7zQobj6L8/kcX2OpzTKcoa8Fy4MbWbXfBhznvvo9+H4COzId X-Gm-Gg: AeBDiev/8pViFKqfa45goJa3oQhVP1iQ/zYsHBnKz5XJHh2bzSu4irPlYhRTsvmVWIb VMNweEEAJiJl5KzxGkYfRNwGaKlaHd1vy6GlZiKFVlkZaU5hPjxz2BQcGirRxiSajx/k/JPygWC ILYnHohHxfNP3zPSdHN4YFZfcrjb7cnvxBNNGDaqjtWAvTzxGS0qU5x0rPXRXVIzTnZ5jgY7EXo DXC9Sl6IYDX78VuQofBk8HxTIe6BWaSN9+apkkHTKqaX0LUTZN58BvVuRaMtcJRDXkURpiye7KX +j04RWbev1ON5KdXBQAlLNj8cO4blWEce0UirCD301quEgQDVZSdgpYjNuiWXBHFTpwsk9hFxfm EYAay99gkXxjOlL9IFZroPSc85WGhphwM3/ngDpPpPqsCnoMxbxSu6si9D3Xq8YEYxjpy3/1rxj 0RcdPPNU8D2iUApg== X-Received: by 2002:a05:6a20:3ca3:b0:3a3:a177:11f2 with SMTP id adf61e73a8af0-3a3cf8f73bbmr8146741637.56.1777629445727; Fri, 01 May 2026 02:57:25 -0700 (PDT) Received: from nuvole ([2409:8a34:5f36:7c14::f7f]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7ffbcac2cfsm1731381a12.32.2026.05.01.02.57.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 02:57:25 -0700 (PDT) From: Pengyu Luo To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Sakari Ailus , Martin Kepplinger-Novakovic , Mauro Carvalho Chehab , Hans Verkuil Cc: devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Pengyu Luo Subject: [PATCH v2 1/4] media: hi846: fix hi846_write_reg_16 handling Date: Fri, 1 May 2026 17:54:30 +0800 Message-ID: <20260501095433.1609309-2-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260501095433.1609309-1-mitltlatltl@gmail.com> References: <20260501095433.1609309-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 --- remove `else` in v2 --- 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..7f069aca0fce 100644 --- a/drivers/media/i2c/hi846.c +++ b/drivers/media/i2c/hi846.c @@ -1271,6 +1271,8 @@ static void hi846_write_reg_16(struct hi846 *hi846, u= 16 reg, u16 val, int *err) if (*err < 0) return; =20 + *err =3D 0; + put_unaligned_be16(reg, buf); put_unaligned_be16(val, buf + 2); ret =3D i2c_master_send(client, buf, sizeof(buf)); --=20 2.54.0 From nobody Sun Jun 14 07:35:02 2026 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) (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 AF9EF385501 for ; Fri, 1 May 2026 09:57:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777629459; cv=none; b=JCBI3KkggYcXU52KPhsl9oxlsu7H+rxPuYsg1cZwTr1PtWWy1C7YrTLzknoEXNTk18wb5FTvvIg4j+fq9eQAihQsVdX1d4oWq4w69vDRpth2EuTgZBoJW5PNlss3Fa+cjDNLBXxkGKzS2l+ZKFTYHQSbPDboxhz3YVKaJCdoiYg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777629459; c=relaxed/simple; bh=XGBLXAIDkYUbzl5baaOUU6KR6BYYFAzHPw0R+XSs704=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dzvw9Iz0i4slX9YYf0IRhzYMh9F4fmcUWrVDyLnXYofn4BiVHvcbO4UQyDWMPDOF+EhpD/ZKKsmLIdWKF+RdzdYdDgmAXuMA9KJXGe+OAm9a5AdlJ+iaNbHX79l8GgbEBMOXMp6V+Ri3m1MQ27/keL2KCLAftER13IvdA2/gTnc= 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=Mr1DeRWJ; arc=none smtp.client-ip=209.85.215.171 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="Mr1DeRWJ" Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-c7ffe8eeaf2so162025a12.0 for ; Fri, 01 May 2026 02:57:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777629454; x=1778234254; 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=o3ovUkWgYWEpqqlsycCJZaa2Pww05sUjyxsTGBfrzAA=; b=Mr1DeRWJF/DMQFtiwlZm21AdgJQgYlC7Qpwz71S4v6sKxzZdUXDiE7A9oOgU59J2Iu 3zvdAIrbvfBFUPpf/9KIR1WQGmGVHRNefifZ0Z9Dv1dJySdp8D+gkQWa/E4QKEc4KWKL w1WkFtrAh1GwJUoO7vs+eOKNSfVAUVmhQa0YVWAJE9ejADRjTCLULzoRKox3weY6ny2H /+zyTRlCD6RKUXVSGBrfUBKgxND6y7QfFt4D28mbTgGt7tY3ae3cLbAeMCl2gMqH9TaN pjVmAVa6wQZSVFdD9C5DYriZWbegf8L9qw2fIeGE/EZim0nVZOFEAYAzeXrQaD3PKi+G osjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777629454; x=1778234254; 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=o3ovUkWgYWEpqqlsycCJZaa2Pww05sUjyxsTGBfrzAA=; b=FWGCRvWBgxT06N5NOYwh9k5EcjLVmL3vcnyf8t0znox2OB2Jz/fRHtmWekMXInN9vg g5yQ6gzuMcsrJvV1gaGmrRes4RTCLuLiQAPOMq/YEn9Wz+RfHv431U9hnugWOz6M8/HV nz91qDiuem0i5IqlHilrH1W6JfSAzRMN0M+AiVvIBqc1xji2exBjBmPeJGuH9irua3WT iVPklLXV/plPjRwZMyqccWkPK1SLH9px0S7cdaW+F08IZXC3Lxvp5nW7NJbW0LvOQQG0 HFLrrQoQLepUefkr62oFJ1ifKsFe0jIY9L9dA6k2jmPENN9rKV53feYmDwclbs15hysM xBHw== X-Forwarded-Encrypted: i=1; AFNElJ9MHsRyjz7nvdCbyQFSFD2//JmyAramfeYnkEc1Y3MVpQD0+S7ckztDXOUC3Vlh3tRWzuNC8ZiNVdtW9A0=@vger.kernel.org X-Gm-Message-State: AOJu0Ywi5waXeZuobCHT3yQ3Def3YhBwHnbh3TqYWPsINXIlW1p5t0m/ uOASTGwshMRuShMzkm3upFGk3xIIawCLMjrctRc2DlyxgtnP4cFRTrS5 X-Gm-Gg: AeBDieuBud0zunXFnYAFEcvBYxDqLoW4QYvhCocg01HPAHCN86qC38jnniUaQPNmo1Q /UQDkz3gpMQrwAZivAu42PFSRBY7y20IqnV6n1eoXoSlsmIXhXnkJkogPModPdQ095lcopAoL8k MEbMXV7koWPjzb/2xmH66N6qLI8maOU8bVH0TfhKH+uXdOMpUzItwvrkLTKFkxOQ+6L8/KQ74Dk aSNUTpCOLKR9e8Jc1meeCefIBwiSWKnUnbvoTU+GbwFNytODHzH5DEnYu1FWbNtBCuFA9zYWuZh vDnzvFdhUolZsSFpos3H7I2JLZaocXwpRZ0s8FK1lywMHPscWoy+7bJpilxh5CguaqZbj5tlLUx ePnH2dqjjxUeCzVflViZkmiw60hpjtKRJ7pOf/6PlbHwaL293Ljpqjfk9bIhC9CvZTGV1FS9YwL yi8+KG2zTkydyW3w== X-Received: by 2002:a05:6a21:6d88:b0:39b:da83:91aa with SMTP id adf61e73a8af0-3a3cf8cbdc5mr7983611637.51.1777629453564; Fri, 01 May 2026 02:57:33 -0700 (PDT) Received: from nuvole ([2409:8a34:5f36:7c14::f7f]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7ffbcac2cfsm1731381a12.32.2026.05.01.02.57.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 02:57:33 -0700 (PDT) From: Pengyu Luo To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Sakari Ailus , Martin Kepplinger-Novakovic , Mauro Carvalho Chehab , Hans Verkuil Cc: devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Pengyu Luo Subject: [PATCH v2 2/4] media: hi846: fix link frequency handling Date: Fri, 1 May 2026 17:54:31 +0800 Message-ID: <20260501095433.1609309-3-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260501095433.1609309-1-mitltlatltl@gmail.com> References: <20260501095433.1609309-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" link frequency is tied to PLL configuration, lane count, and external clock rate, so use runtime here instead of hardcoding for specific configuration. To implement this, this commit did 1. dropped exposed link freqs as a v4l2_ctrl, since we are runtime now, it is inconvenient and unnecessary to expose it, and hi846_set_ctrl has nothing to do with it. 2. attached pll_cfg_2lane to current mode, and use it with clock, lane count to calculate link frequency, we use 2-lane config as default, but we can halve it easily for 4-lane case. 3. dropped mclk clock rate check. Fixes: e8c0882685f9 ("media: i2c: add driver for the SK Hynix Hi-846 8M pix= el camera") Suggested-by: Sakari Ailus Signed-off-by: Pengyu Luo --- drivers/media/i2c/hi846.c | 72 +++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/drivers/media/i2c/hi846.c b/drivers/media/i2c/hi846.c index 7f069aca0fce..3a0b1e124d9d 100644 --- a/drivers/media/i2c/hi846.c +++ b/drivers/media/i2c/hi846.c @@ -219,8 +219,8 @@ struct hi846_mode { /* Horizontal timing size */ u32 llp; =20 - /* Link frequency needed for this resolution */ - u8 link_freq_index; + /* PLL configuration for 4-lane link at this resolution */ + u16 pll_cfg_4lane; =20 u16 fps; =20 @@ -1040,13 +1040,6 @@ static const char * const hi846_test_pattern_menu[] = =3D { "Resolution Pattern", }; =20 -#define FREQ_INDEX_640 0 -#define FREQ_INDEX_1280 1 -static const s64 hi846_link_freqs[] =3D { - [FREQ_INDEX_640] =3D 80000000, - [FREQ_INDEX_1280] =3D 200000000, -}; - static const struct hi846_reg_list hi846_init_regs_list_2lane =3D { .num_of_regs =3D ARRAY_SIZE(hi846_init_2lane), .regs =3D hi846_init_2lane, @@ -1061,7 +1054,7 @@ static const struct hi846_mode supported_modes[] =3D { { .width =3D 640, .height =3D 480, - .link_freq_index =3D FREQ_INDEX_640, + .pll_cfg_4lane =3D 0x4924, /* HI846_REG_PLL_CFG_MIPI2_H */ .fps =3D 120, .frame_len =3D 631, .llp =3D HI846_LINE_LENGTH, @@ -1086,7 +1079,7 @@ static const struct hi846_mode supported_modes[] =3D { { .width =3D 1280, .height =3D 720, - .link_freq_index =3D FREQ_INDEX_1280, + .pll_cfg_4lane =3D 0x4924, /* HI846_REG_PLL_CFG_MIPI2_H */ .fps =3D 90, .frame_len =3D 842, .llp =3D HI846_LINE_LENGTH, @@ -1112,7 +1105,7 @@ static const struct hi846_mode supported_modes[] =3D { { .width =3D 1632, .height =3D 1224, - .link_freq_index =3D FREQ_INDEX_1280, + .pll_cfg_4lane =3D 0x4924, /* HI846_REG_PLL_CFG_MIPI2_H */ .fps =3D 30, .frame_len =3D 2526, .llp =3D HI846_LINE_LENGTH, @@ -1161,7 +1154,6 @@ struct hi846 { struct v4l2_ctrl_handler ctrl_handler; u8 nr_lanes; =20 - struct v4l2_ctrl *link_freq; struct v4l2_ctrl *pixel_rate; struct v4l2_ctrl *vblank; struct v4l2_ctrl *hblank; @@ -1192,21 +1184,37 @@ static const struct hi846_datafmt *hi846_find_dataf= mt(u32 code) return NULL; } =20 -static inline u8 hi846_get_link_freq_index(struct hi846 *hi846) +static u64 +hi846_get_link_freq(struct hi846 *hi846, const struct hi846_mode *cur_mode) { - return hi846->cur_mode->link_freq_index; -} + u16 cfg =3D cur_mode->pll_cfg_4lane; + u64 mclk =3D clk_get_rate(hi846->clock); =20 -static u64 hi846_get_link_freq(struct hi846 *hi846) -{ - u8 index =3D hi846_get_link_freq_index(hi846); + /* NOTE: 6, 7 actually map to 8, 10, but the used won't be that big */ + u8 post_div1 =3D 1 + FIELD_GET(GENMASK(10, 8), cfg); + u8 post_div2 =3D 1 << FIELD_GET(GENMASK(12, 11), cfg); + + /* + * HI846_REG_PLL_CFG_MIPI1_H =3D 0x025a, it is fixed in listed modes + * [11:8]: 0x02 =3D> pre_div =3D 3 + * [7:0]: 0x5a =3D> multiplier =3D 90 + */ + u64 link_freq =3D mclk / 3 * 90 / post_div1 / post_div2; + /* + * for shared modes, since lane count is halved for 2-lane, then getting + * link_freq doubled to match the same data rate. Since 720x480 is + * 2-lane only(i.e. reg_list_4lane.num_of_regs =3D=3D 0), no pll cfg for + * 4-lane, the pll cfg is actually for 2-lane, so use the cfg as is. + */ + if (hi846->nr_lanes =3D=3D 2 && cur_mode->reg_list_4lane.num_of_regs) + link_freq *=3D 2; =20 - return hi846_link_freqs[index]; + return link_freq; } =20 static u64 hi846_calc_pixel_rate(struct hi846 *hi846) { - u64 link_freq =3D hi846_get_link_freq(hi846); + u64 link_freq =3D hi846_get_link_freq(hi846, hi846->cur_mode); u64 pixel_rate =3D link_freq * 2 * hi846->nr_lanes; =20 do_div(pixel_rate, HI846_RGB_DEPTH); @@ -1426,14 +1434,6 @@ static int hi846_init_controls(struct hi846 *hi846) =20 ctrl_hdlr->lock =3D &hi846->mutex; =20 - hi846->link_freq =3D - v4l2_ctrl_new_int_menu(ctrl_hdlr, &hi846_ctrl_ops, - V4L2_CID_LINK_FREQ, - ARRAY_SIZE(hi846_link_freqs) - 1, - 0, hi846_link_freqs); - if (hi846->link_freq) - hi846->link_freq->flags |=3D V4L2_CTRL_FLAG_READ_ONLY; - hi846->pixel_rate =3D v4l2_ctrl_new_std(ctrl_hdlr, &hi846_ctrl_ops, V4L2_CID_PIXEL_RATE, 0, @@ -1503,10 +1503,10 @@ static int hi846_set_video_mode(struct hi846 *hi846= , int fps) u64 frame_length; int ret =3D 0; int dummy_lines; - u64 link_freq =3D hi846_get_link_freq(hi846); + u64 link_freq =3D hi846_get_link_freq(hi846, hi846->cur_mode); =20 dev_dbg(&client->dev, "%s: link freq: %llu\n", __func__, - hi846_get_link_freq(hi846)); + link_freq); =20 do_div(link_freq, fps); frame_length =3D link_freq; @@ -1749,7 +1749,6 @@ static int hi846_set_format(struct v4l2_subdev *sd, mf->code =3D HI846_MEDIA_BUS_FORMAT; mf->field =3D V4L2_FIELD_NONE; =20 - __v4l2_ctrl_s_ctrl(hi846->link_freq, hi846_get_link_freq_index(hi846)); __v4l2_ctrl_s_ctrl_int64(hi846->pixel_rate, hi846_calc_pixel_rate(hi846)); =20 @@ -1950,16 +1949,17 @@ static int hi846_identify_module(struct hi846 *hi84= 6) static s64 hi846_check_link_freqs(struct hi846 *hi846, struct v4l2_fwnode_endpoint *ep) { - const s64 *freqs =3D hi846_link_freqs; - int freqs_count =3D ARRAY_SIZE(hi846_link_freqs); + int freqs_count =3D ARRAY_SIZE(supported_modes); + u64 link_freq; int i, j; =20 for (i =3D 0; i < freqs_count; i++) { + link_freq =3D hi846_get_link_freq(hi846, &supported_modes[i]); for (j =3D 0; j < ep->nr_of_link_frequencies; j++) - if (freqs[i] =3D=3D ep->link_frequencies[j]) + if (link_freq =3D=3D ep->link_frequencies[j]) break; if (j =3D=3D ep->nr_of_link_frequencies) - return freqs[i]; + return link_freq; } =20 return 0; --=20 2.54.0 From nobody Sun Jun 14 07:35:02 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (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 2E1DD385524 for ; Fri, 1 May 2026 09:57:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777629466; cv=none; b=s6ZeYxyVv+/QW92noEmjCIEOsyzqv9YJ/RXCsL860NktP/su1T5mPd01VzRfFVF4cDEaSwzAiYm1oN2xUKeauhWai7zqbWZtU0Z0rMPmxHBOQcC+rlu5jtwDeAuyl7YI+uPiwK3SsmNttR8Ehq5H2MqJZyTqDmLEDDNzLwIgZIM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777629466; c=relaxed/simple; bh=GYYm1WbFUMOA2zJHVwqVtBVm18ANWirY2AKzv459iyk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TFLWVVwwYfNBlQFu3R8b94sKsK7oBPLpw1CqCpA+bel6121wT8gCRg8I4LbTnURZmtOQVAn6cA5FJ41iYujwD6iJSlnkrLg+y+4HBBi6qVr7+gTazkIyOwAe5+I/BQ4fMf8uMCTlW3c4SqrQ4XC3Bizs/NZ40ZAu0yqQ7RNfAXM= 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=EtnPpSPh; arc=none smtp.client-ip=209.85.216.53 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="EtnPpSPh" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-364c5317d67so1588494a91.2 for ; Fri, 01 May 2026 02:57:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777629461; x=1778234261; 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=M3ob51ZJDmb5EvjSVaP9m9WkKZYm4JcxG03UmWgTm9Q=; b=EtnPpSPhE8G9g6U8Y33SUpT/DZqWaRm1NsA0L4tnrxNP7A8wrWChvZjEhMYjN5KQj8 80yNsL4+e1IEQIJwvYfapMo534srf+L//p3FH+aE1DC3Ntqn7Qbdnk5i24RY/kd4Ziua dHdzY1muohg1jLChHKGmeASUpCQ8uQ2efJGEdY/UyFQpyxCaEH34ZyL5IcQQLVCZy9K1 OsmUr557XHvn0fwUIVP3RdEa9gE2CBu6E+SoYrsGeKiaOa5uT2zMiAp0ZT6krYnqMPgB 2nM4JTolASVcSPamshlyogE/CBfe5q6muY+9ua0YFcGxAjCbytw9hdjr8945JhaJWBAv JBBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777629461; x=1778234261; 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=M3ob51ZJDmb5EvjSVaP9m9WkKZYm4JcxG03UmWgTm9Q=; b=jneuqwNTtU/5PQ1EYko0n0QsoOd/4qB79gWQXJal2ccz87R7X2nhX8TzOIABEtrnZ6 JZZpuqLceG1WCJ1brFzCmLZ6YSg54Dw+EVSNmNofP9iHbdurwiV9A0aijClv6t7kgmvO TBWEGQM13c00QvcE3moTslEwqLQaJ1SSCsri6gpSVwtw8CadhxEpARGK+9WjaB3YZAbx 6ubdH6cw3oK/NbRuGnpJYFdycV091TO+O3elLAXaR3tFCd8cZ/V8FMZjtT5zBPZJJbAY tiXl3xmwfi7ujWGWkC0b0k/uRKpRUkIj0bA24K7e2X5KFuXLIiTcfxHeRF84tt0L+J+A yZwQ== X-Forwarded-Encrypted: i=1; AFNElJ/eoXdfTa/W7DJenDmsK9oTa4+zLqaK3jCDTE1bGSlQQ+vMBCPVAsjtGZZ0Yfp/jbRsMIALcoHNqXOAujs=@vger.kernel.org X-Gm-Message-State: AOJu0YzbuhvUcbx2Krbjyh/KeAEO6/T4BXBkATxFtnIYp8TTRRxQEl4d MIOWZMQtxYdGQtIfgkSnpXkcasFnEs/KIDL9Ag/IQO/WImx6tzdw+SgE X-Gm-Gg: AeBDieslA1cQ9cwCWFxv5EXfvVqqkkr7tE0jurpomzBIK2TqwkWCgFVtSceB1eDjncN l2tAD6w6Y2CxCFXufz1Lkf/e/Te4H/GEA/1mUBOVXgB/dft4Mv0aKZDxLkIh6HEOtk/5h8dXruX WaVozKwBciWGW/zkS8vKDCCsZBUVvsz2wi3M90sydLnumrIpPc1yWpn1V5rVQKe4OaKKJ8qyGHn P9TM6GiCe1kQ5Pju2q8XNuSJRIyuIERnMwIAU7Ygs9UJIHXQDk7d7PCNxxoaVmla+U8H2E1MtZ/ 0tWBLJyuw9SBClGaTedq5214Jtz2jqnT10OtiHwLW4Gnv52xXYcuhPTwv/YppwPmT5JMbjzwY1Y h0I9WkfHxo0KyctDTiWrVe8TRIxFGs5ejDiRIZlAb+SFynR0aCB6Llxy4rj/YK2LYkrbgjvdbUU mnz/CdQswhHmo2Qw== X-Received: by 2002:a05:6a20:5493:b0:3a0:b781:4c78 with SMTP id adf61e73a8af0-3a3cf5f759dmr7089603637.15.1777629460890; Fri, 01 May 2026 02:57:40 -0700 (PDT) Received: from nuvole ([2409:8a34:5f36:7c14::f7f]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7ffbcac2cfsm1731381a12.32.2026.05.01.02.57.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 02:57:40 -0700 (PDT) From: Pengyu Luo To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Sakari Ailus , Martin Kepplinger-Novakovic , Mauro Carvalho Chehab , Hans Verkuil Cc: devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Pengyu Luo Subject: [PATCH v2 3/4] media: hi846: Add 6MP and 8MP modes support Date: Fri, 1 May 2026 17:54:32 +0800 Message-ID: <20260501095433.1609309-4-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260501095433.1609309-1-mitltlatltl@gmail.com> References: <20260501095433.1609309-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 --- No changes in v2 --- drivers/media/i2c/hi846.c | 152 +++++++++++++++++++++++++++++++++++++- 1 file changed, 151 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/hi846.c b/drivers/media/i2c/hi846.c index 3a0b1e124d9d..c786a54fc6f9 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", @@ -1127,7 +1227,57 @@ static const struct hi846_mode supported_modes[] =3D= { .width =3D 1632 * 2, .height =3D 1224 * 2, }, - } + }, + { + .width =3D 3264, + .height =3D 1836, + .pll_cfg_4lane =3D 0x4124, /* HI846_REG_PLL_CFG_MIPI2_H */ + .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, + .pll_cfg_4lane =3D 0x4124, /* HI846_REG_PLL_CFG_MIPI2_H */ + .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 From nobody Sun Jun 14 07:35:02 2026 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) (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 51459285CAD for ; Fri, 1 May 2026 09:57:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777629473; cv=none; b=Xc3+KeODIeekHbPJyhwb2QE+PRa2dEB1M7zJo6Mmj0u6ZxgM3FKK5Q64AEQ25QSd7KxFd83HEsVLHsQ7uvIhs/nsL/q47NzDdZZT3hP2YzIsOkUCRccbbcNssLSdmejs5VCWbghTA4h03lvrpD56zFWijldQV7yFHr84nX5ygEI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777629473; c=relaxed/simple; bh=u0+cl5+Er6WaymYzamEFJC39ZKeWrnJt8oCo63e9YIE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bu0hk78jhTVtb1S5io/pA8utwAhWvx4gHyQcFxjH1ZLnxOf2GKqJbu4oF7gnttLH4yqZr546Mn91Awu92WvJvG3Gso6IugfUryA3tmM61qctaseumI5P00bJaKJ96s5t5IpgTqZiHl8nCuiQpEjO6hZW5st47RCP6nwFYryZnPw= 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=LG6Ce19Q; arc=none smtp.client-ip=209.85.210.177 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="LG6Ce19Q" Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-834f1075805so1309656b3a.2 for ; Fri, 01 May 2026 02:57:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777629469; x=1778234269; 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=N8cBbebvkgmNYiigpFW0uBFgVevOeLSPr7Jmw5f7oUM=; b=LG6Ce19QKUjyUE7KNfuoAZrL7Ob4MIFnreDowrGA8I8t1L9zt6D0ieahInWDOdZWXn jEH0Rij6oVCip3U1KSQM4IZoATJBd4N0r7bdqJZOOvoEsWUpRxEGBmEnR9EfdokC4eLh CfVpb+lbG9Xwn5JmZGTK0obviVZ5CG17s2J+arAKYk0Rn3owGQ1fE7BBQSEmMDfeAD7L mp99mi/Jwv80c00t5YQAuQpA7CqYZzsjFUGT3/rIO5lROmDLRPHGzRpNbpZhSEhT0+wT TwT/f0RpFKEwB0N0vEM6K8W0oePVgC22Kes2XNsPescpVcagV/iccJHRkxp33DqWjQlU tdsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777629469; x=1778234269; 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=N8cBbebvkgmNYiigpFW0uBFgVevOeLSPr7Jmw5f7oUM=; b=BuyW4vo5clZ8elAgpzqQV9FKZiekOnIGSq2QToa30DLOWHZ7EoZ6MHyuiZOTVIJGef +YJJftZiYYX4JlO6eYIIUXFCEBTl40Ltwafg4oXZhwEIlfavzVocKkAcCV9WhNfdSVue s25zOMHUSC6m5pa8pwH6u4B311fMqjfmIAkcaJuMhGIbItKS1rGfPzxKDJbx9+FIdgJv D9tmwFBph5/OA+fraFnSTrGXCVsYTY7cZ4CaDO81W8SCp0RH4brPt2hybWspFWOzTtAW 9Pzv96rAtEkDFtdmVjtRxcJH77LepETnH90JqsI1Zp1Q5Ql0hKrVWFejZ7GZQ/322nkp TMFg== X-Forwarded-Encrypted: i=1; AFNElJ+LTX2RkDXEEyhMPznKPvlPCFE3ltupeTfn2pOmAPrscxt+EOn7bZkT74YPljzvza0QUIIzWHEBMw1kLvU=@vger.kernel.org X-Gm-Message-State: AOJu0YxqO/oV+BDuwEctMh8JEbKS0nU739J7hxKlGEnujVuf6i+jXPHt QvitOGlVbg0MjnFZSTtcoo/s7FMeCVmMF7KEwEa09QpEMCOFsinZ9aDt X-Gm-Gg: AeBDieu5VXJxwMebCwBBN7iN7SZuzqYag9PBuLuQkWV7x83zscEVLslIsxTi7LAloMj FwRdhBvY5g/Lb4qosMnHeNkVUr0HlsTnp5GXW/ofd4HJ79jWr1xwibIRqoRqWzr2uXXJGkeaj3R bsrbjewXhWs6tDde4mxvPYvKXLA/g3k7EobQ3x1Mbi6Z871lziNYXx2CEvWr1o5PO5jInbeX8Qu k2j6IPn43ngizaN2/WuIclxZJm3DxbNar03u9JzSN9SZ41PYCPwsvJkGbK7M5ndkFEKAVgEICxt VZqdgicOCsi8q66OtRWDoRedqBZWgK61bjPEyQqV7cbXG2LSLkJSZQe1XYi8zR6Xc+gSbTlYS07 aPV0KC3SIHi8DErrzN44wwLLcXRWiC72UnXfxkcEy0xPZbV/WV72TQtz3ZQo3+B/DlbbAuTXAox dwk3sO7hez70i0EA== X-Received: by 2002:a05:6a20:258e:b0:398:a1ca:7a2a with SMTP id adf61e73a8af0-3a3cf8d8f18mr8009215637.48.1777629469654; Fri, 01 May 2026 02:57:49 -0700 (PDT) Received: from nuvole ([2409:8a34:5f36:7c14::f7f]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7ffbcac2cfsm1731381a12.32.2026.05.01.02.57.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 May 2026 02:57:49 -0700 (PDT) From: Pengyu Luo To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Sakari Ailus , Martin Kepplinger-Novakovic , Mauro Carvalho Chehab , Hans Verkuil Cc: devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Pengyu Luo Subject: [PATCH v2 4/4] arm64: dts: imx8mq-librem5: Correct link frequency list Date: Fri, 1 May 2026 17:54:33 +0800 Message-ID: <20260501095433.1609309-5-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260501095433.1609309-1-mitltlatltl@gmail.com> References: <20260501095433.1609309-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" According to the hi846 datasheet and the register lists, they are mclk / prediv * multiplier / post_div1 / post_div2 =3D 25Mhz / 3 * 90 / 1 / {1,2} =3D 187.5Mhz, 375Mhz for the detail, please check PATCH 2/4. Signed-off-by: Pengyu Luo --- arch/arm64/boot/dts/freescale/imx8mq-librem5.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/freescale/imx8mq-librem5.dtsi b/arch/arm64= /boot/dts/freescale/imx8mq-librem5.dtsi index f5d529c5baf3..cc5604172192 100644 --- a/arch/arm64/boot/dts/freescale/imx8mq-librem5.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mq-librem5.dtsi @@ -1122,7 +1122,7 @@ port { camera1_ep: endpoint { data-lanes =3D <1 2>; link-frequencies =3D /bits/ 64 - <80000000 200000000 300000000>; + <187500000 375000000>; remote-endpoint =3D <&mipi1_sensor_ep>; }; }; --=20 2.54.0