From nobody Fri Jun 19 09:05:26 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 09E72391517 for ; Sat, 25 Apr 2026 10:56:16 +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=1777114578; cv=none; b=Efd0+PDxjBpgL9gNlF9eoRX36JfhPY6kGnSAtOj0Pnb6lxW0vDbEhkvyZs5O+SvH9OEIrEu47vjO4oRCWVKMG9eMtswG5y8mf67Scwvxtca7FoD2VX65tnrbRsFU9x/jzAkVoXkl6sPAKHxyKfDNL0TpJBe2DYfDBCOrt1LmDuY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777114578; c=relaxed/simple; bh=0DFMRmRmnT3HIcrBDMAr1tbxa08F3uNrVtX65Evd/tg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aMeeSVvT9xDOJ3lK8U0Ga+V8Wmf7kkblnhwRohAnyKOuBkBkZrgbook/UZXxz7EIcQywIkmHtTT5/rMXpKRsurl92E8uiKtz2KQHajCzo4qRU0LE7BmATmf1TIQz6Aojf38tbldESY9EOhsBslJsW9us3HnEwipOtoc1CTPRlWc= 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=pBKHsWUU; 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="pBKHsWUU" Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-2b2d3a9e149so45853195ad.1 for ; Sat, 25 Apr 2026 03:56:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777114576; x=1777719376; 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=pBKHsWUUQFqC4Jr2gMSQdSUOJyg57E/uvYIZTTf+HL8H5SieX2Fpn8kKEUpNwDasfF bJKz2FZ+XeLhXw7J22Hj60BkEhN2/QgcQ3fhDuie68MfQDq7n7A36v4OrjnqY1fRbIfO EvwCHmZSzRA0orFpglAahu2qb3iHjq3aOmbg8dhFokereqIHNdktTlPxlLY7Sw6uXEuw GI8ZRg9q8S96g9TLHCmwcGglupPTiXSaDSRzlA629oNdPLvLL4WLayY10BuJByh691qe DLmT63b0oOwKT+EWHGw1sX4N4qXvawPac8fqK0eHmNtEtWvZgCNfCjK9hEjINOcrtChV OXxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777114576; x=1777719376; 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=XIg1i6hxX8ikNdBvzTgYysbPCGmZtwFp0f9dRcWr8e9KfGuCXwhmMrLLQutXgApSn1 0x2/j2CjwKETUWqgAYx+PP6cg+N/1Duq2XXZkFV67HrBFgJCs2yHoz2R/7nMwbzAd6yr ox/ip0UxlvaWEY3Z8ZZ+uocO27NptV4mK3ZmKqcDqRDwa8nPi7nMAg9YJdZqAqcIsQus SPOKVVuvAZX9JwgFynCoN4ibRA7TIDX2nttehuoEVocSvVcmSrKc5+XyHO2I39Al92N5 4xM8niZ2g6KWksyy0nk0mI2hDCkM0PTWO3FecopwcFTUA1UjpccjbugnalcX7wiCaspz szWQ== X-Forwarded-Encrypted: i=1; AFNElJ9J7ihyC3jNKMwzuYi3jMSgb0MdIWWLWUwcIzaKfGNAsN70iWqvx4eLQWqdSB3DARyRe5TBOE75YrNr2jQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwTvuRxoXI5Z76kd0Uag41EDke9jEUV12yDco3nN+Op2tTfFvTy snXN5QZrqb3FaGsx7X1gMqhXSJAJ9crPc57uTSSQX1lWVCbV5Xw5kqYT X-Gm-Gg: AeBDietRuthYoFT5wVvMUG1BCK8vo/iev0alLAdjgxp5XYS83ABrpKmZ6VMyY2JImxJ 9uDGxQsoHeKy8N+fb9/oOuKBQwyMg6jHPZrXiiR1djah42Ezr1ngnDQzOZX4nUtzRw3Y2QeDyA3 iWAy8i10a5Y5PMCIjKf0oH9ee//Gq5OXPSYfnV9xo5htegUYrOJ+2p0BJINnFUpRaO5aWYzMYTE mc+4Fb2wbQhye/GL07x6EU6f359QfYjTh/p4T7FMM+NwQESVo9nJOzr5bY8xxIjKWshkqQex+qZ DuVFryjuryNAxFGKj0OQnfSKcRsEbuPI6qnEOTok8BpdQEYQiq5QlZ49OFUNv2kqsApXU2er7DJ amm7AdbwuYxp9S1d9KLvHZHztI6q79e1R5lyC6by3r4ICLMKmykU6H6RCNZ1dw6AW+CTs5onurz nENxn4EQzjhHaKOK3poXz+KvutwpX0 X-Received: by 2002:a17:903:11c3:b0:2ae:5346:d4e6 with SMTP id d9443c01a7336-2b5f9ef78e0mr323118295ad.28.1777114576428; Sat, 25 Apr 2026 03:56:16 -0700 (PDT) Received: from nuvole ([144.202.86.13]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa33486sm303832345ad.33.2026.04.25.03.56.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Apr 2026 03:56:15 -0700 (PDT) From: Pengyu Luo To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger-Novakovic , Sakari Ailus , Mauro Carvalho Chehab , Hans Verkuil , Martin Kepplinger Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Pengyu Luo Subject: [PATCH 1/4] media: hi846: fix hi846_write_reg_16 handling Date: Sat, 25 Apr 2026 18:52:57 +0800 Message-ID: <20260425105300.745044-2-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260425105300.745044-1-mitltlatltl@gmail.com> References: <20260425105300.745044-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 Fri Jun 19 09:05:26 2026 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (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 664CA392811 for ; Sat, 25 Apr 2026 10:56:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777114592; cv=none; b=ZJoKKQO7QpPYCs4S5f7lzqxF9dTf7OpGjUI8TOTwLNsxCC7zW6cRWIe+zWcftQGNNdJV/rm3gSXeq9PUBbHvDNqkWs/dWeBSOpFm31sxEp9pFBC2keAgmw7rw+1W4PujO0rOwMNMVqN8DhzteRkirm/aJ6+tIlTwEnYHhSVwdQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777114592; c=relaxed/simple; bh=FigZvmJ6e3ezsNXGyVPDbmmS8EdNURQUJM3t3MANHlA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pHSjURuHD36P77uMwDVFDZCWiIRRIx5TQQdMCft7+7eRgUtznOTJUmYUqZ+/c/Iwqn4U5RNSLtu9LRD25mEQ/NlkcIhOHfykHww89wE53jWJYbqk7ZitCFwQINx6T6Ccuq2yfZ0pPY8aHQ2F07MCjBNVCsugQKNwXlX4bRaaESY= 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=O7Hp0JeU; arc=none smtp.client-ip=209.85.214.181 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="O7Hp0JeU" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-2ad9a9be502so54602005ad.0 for ; Sat, 25 Apr 2026 03:56:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777114591; x=1777719391; 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=ZrPxbW2Ki+GMIMbXGlvA5ZceXyUNusJm2uzRjJG262s=; b=O7Hp0JeUUdAsa+WfzzmrpLXowDexaXdrpUmyuib/k+gtAk3keFLnT4p3JQ9Gsq2FsM Di/t8dU0fcsQSLUhnqnu/KZCghGsk4NfTAL7z9x0rYIUFsgQgk8yVaQkOVw9QCNdrStm d8ZmTJP6co6xm9U9BB5KypYZuMy7Va9QkHX9b9R3mQgFBXm6XfM6wFjzZmZMDxU2NwOn BuscB+uJdJkQqwmeFVijl5rN697zUWJedcvIxIhhvUBS2Fx4S4V1tP7wetfHiRMI4ktr dyFeX63+wUBtai1JoR9wviRb8B08JXCODgtWW7RJngsZzoE9h9DoSBjIEk7o0hVBz0+4 n0rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777114591; x=1777719391; 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=ZrPxbW2Ki+GMIMbXGlvA5ZceXyUNusJm2uzRjJG262s=; b=Pmzmt3Mvth/N1zaxYKOxEWFWadPf7VixVVmlziPf9fNOYddF8onVR6vFqZcrYyWRJ0 a1zJzY6qs0zLte/1NVIp+zqVxgPmpvj31Doz5znG4zZ315XKpz7BY4zgynVO5BMnj88d ccMPK3e0+HQkiIUKow0WNaBT7I9JC8yY+NJqI5WK2XBNcvWLL+GMDc2e5FOYMedfMDX5 imzUJ1HDvkVjZLb28H/O1R25ssRyO2fuTyJQA6XU5En+TGRfdxGQhFm57JbN6t/ohugC y0EfgHGBNKYbGIiYXDgowqCOEvZXTCZpDFC62EuY8sp0L0eoT6wLyC1y6imc5zSCw1kH cMtA== X-Forwarded-Encrypted: i=1; AFNElJ/aDCpaQHNcIYUF2rw16uPhy70/Kq5XaYF0/aB9hK3ELa8VpVsknZYhQgrHzhAlc2n19h0CrHpaik0rnE0=@vger.kernel.org X-Gm-Message-State: AOJu0YwcM69C4I1Q+sDUDSg2L+DdVc6Gmz+ux0q9uLjh3Hk94IOS/lsM NTHS22lArH5wHDU9o1RffthHfKpyylz4/FEzZj/rMs1zQor3ZMex5jjQ X-Gm-Gg: AeBDieu1EUOMDu/TzUawuZGlbtpFyhH05JAr7l1fQ4+G0Fg70U9IteNX71k8gSYgNuJ 76e7Q4UO+4auTgYVQk9/9WPxI+qsf0Ot3XsInpNZ7afSGIoOUcCcVj1jb0gKIenE1LHANxsiYcM BLQ6327T3/O3JdIpLrwrnChtdu/sLfpcCwVi9TFge2lF+NzTYAzi5IOljI/jwf37/o3eOX1FeJH uveaXeuWoKY4fKFBTtEY4qbroexETdw25t2LCJQiQsVJ3G19fyOQcFEzDwtM2iS+ARE69AehZly zvFe99dCricWysHZq8kuza7rRSXId2pZ+SNRR8IAr3MBiDHoU/0dwZaiybgc5SyPsYEUk0R3gVE cpG31hh0twkvn8H/FpOm9AIryN+UoJhbaz2MSOPrUCO6Z7TsWNgo9sNEdUbVhVt/uaD22vyk5YT RKm5JjNuBp9cX6mIrLU6g/jteLgu7m X-Received: by 2002:a17:903:1ae5:b0:2b2:ec46:dfd4 with SMTP id d9443c01a7336-2b5f9f1eb04mr401287745ad.22.1777114590804; Sat, 25 Apr 2026 03:56:30 -0700 (PDT) Received: from nuvole ([144.202.86.13]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa33486sm303832345ad.33.2026.04.25.03.56.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Apr 2026 03:56:30 -0700 (PDT) From: Pengyu Luo To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger-Novakovic , Sakari Ailus , Mauro Carvalho Chehab , Hans Verkuil , Martin Kepplinger Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Pengyu Luo Subject: [PATCH 2/4] media: hi846: Add 6MP and 8MP mode support Date: Sat, 25 Apr 2026 18:52:58 +0800 Message-ID: <20260425105300.745044-3-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260425105300.745044-1-mitltlatltl@gmail.com> References: <20260425105300.745044-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 | 159 +++++++++++++++++++++++++++++++++++++- 1 file changed, 158 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/hi846.c b/drivers/media/i2c/hi846.c index 09c109f3fba9..d6739a7c2324 100644 --- a/drivers/media/i2c/hi846.c +++ b/drivers/media/i2c/hi846.c @@ -1027,6 +1027,111 @@ 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}, + +// ? + // {0x0710, 0x074c}, + // {0x0f32, 0x025a}, + // {0x0f38, 0x025a}, +}; + +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 +1147,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 +1241,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 From nobody Fri Jun 19 09:05:26 2026 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (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 7A32B3845DA for ; Sat, 25 Apr 2026 10:56:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777114602; cv=none; b=UX194irR2E5P4oYC7Xd8YJ+C/j3mB7IAIGVYnx2u3DM0gOpNhisJYuRanz+8/yEktTOyYwmx+ivw4ehEqeP3hveFkUZoDRnIrweXqNzOvibY3pL7f22cQmgdl1+W5J7xkF9E/5pbfy8AnbG2VZjWy8+z8+EfraCNQg6joLFBc2s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777114602; c=relaxed/simple; bh=G8vVfNfEog92l5bB0QaSDlC5S4L8KtRUiECZfYd7jNk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=likMPyYRadhpB99X3uvZVmRWDXWhuuq13OAO1LdoPxH5P7UDzBE0eZjIdtDYpperPXohs48zV+P1ioIk1HfsDtjPD86bMWwDjOXVATgOK47fCHXz6j7Z29PlwvF+JJuxTRWrQ+lfSzMY8dH71mc4lDluLnLBSGwFuD1v3wc7iP4= 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=dkcJXycG; arc=none smtp.client-ip=209.85.214.181 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="dkcJXycG" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-2b23fcf90b2so82724275ad.3 for ; Sat, 25 Apr 2026 03:56:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777114601; x=1777719401; 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=n09TuySP0iJDtxFxYcR0L3xSG7A7SGVHN224gUHuUN0=; b=dkcJXycGhAbKAjTG2EFXBRakFC5BQLHhN7UYIwTllD03hbqxn6JBqbIc/uMNicOeXz BQdC/4RrCtwBf/cOBB1am0UAxkXnW2FIknAml6gQV4x+L58zCcW02B/WLtqWfXrCwYND sYCuMz2FSF9AnpJmxg/ahXcwfiFu5gHB5aTA9txO2be3hUXUHX2E8VuFray79wBZIqDt ai3H3JYKJFgjmzdNvpwM7Zrvef+BpGic/DkU1Ded3PRxDVSYLAR8jFUdFaSeDSYk69ar Lb5i+ahbbjwsgg55rp/53oupUpQ/qlaZAMrpPQ8hiiYcQdmvLqi+FSXDUwAZw4Ho2zTF WfIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777114601; x=1777719401; 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=n09TuySP0iJDtxFxYcR0L3xSG7A7SGVHN224gUHuUN0=; b=HrHBHjv+IXHg2DoFnquohkXj2pAkDTl5M0AWIZxMUZiW7xB0XLcz+u9FPaaoOVNoCN IL2XAhoq7is1koIsgttlZ735sKAnnxAOLZmrQ7Uz8JOa8DlKwHHD/yIOFpmLfWWk5LOA fZQvv6VtJ3+kAZy+Y21hb85BtTsz2h7h0OykXkM7pdfxc2iEaqAmqWQzYLDWdgLtlL7V fr0zwkKrWtym5MRs80Ea7GSn40wfM189fW0g8YNo8ARtSD4vKsZn7LMA2L8rmtFsUAa8 tPTJ0+xAVffLZ/Ths+AlOtOTmcbx10VKg/KI7M0WePqjJlrmVe/dr9YUz3vkSH//5CDS mNzg== X-Forwarded-Encrypted: i=1; AFNElJ8r2IegPCN8c8I9aaJdy6QQtBvq4uagsoWnQRpuVZjFDH9aX4l6g70M8uJocgx2FloUaK4p8T7yc66dEVk=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/4+rQ8b0lOORMuL4n349aunFeiYgpMKkLJ/BoA2442hnTU343 nGv3zcNvE5lp8UwVh2LyLRZAOkvDU4Uzmk4mwylHI7MVATa0dk2eze+Z X-Gm-Gg: AeBDietQUueAQTuPcsTtwspKy1BWEKLHhlDYfmd2F1NB2+8jryOZFL1pHi7+4NgfpPb hoUEF4Bzhd/8Rw2N1ojP3vFAIVEBotjk5ZsnB9b6Zk1nbYRvVWKi5VhfIOs6XKsULyWyBBRAmWU mwPQeUHU/ErKAMkIWrCvC5FpPOnZU2ehYNWKX0jj/Q2/TOHssfNbkg7kQGV+iTTe1N0U5a5IAN4 4Lz+/hbPpsqD8vOEW7U3zCmN/i7SYTRmeVGPuof88U0usH4bwH7JWYU+80ldPrbnVIAG1xZmzMh FYkuVfdlzgw9yTgcP7QrZ2LgRzhp/MjHlCH2Y+WexIOK9Te0we0pzx78WzMsmLYf9QVUcyx7tKG 9UKCm78ogQS4sBgPA3J2Ui1n62MTIbg0D17jBBh6ACQjX2XVSXy8fCHm+DtH/BMZmL4qrj4QV/Y R8uLdIVp8YeEXxTpK052yObin1AIvXqwYONFWbzuc= X-Received: by 2002:a17:902:ca8f:b0:2b2:4cd2:e162 with SMTP id d9443c01a7336-2b5f9f61d80mr253247955ad.34.1777114601035; Sat, 25 Apr 2026 03:56:41 -0700 (PDT) Received: from nuvole ([144.202.86.13]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa33486sm303832345ad.33.2026.04.25.03.56.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Apr 2026 03:56:40 -0700 (PDT) From: Pengyu Luo To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger-Novakovic , Sakari Ailus , Mauro Carvalho Chehab , Hans Verkuil , Martin Kepplinger Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Pengyu Luo Subject: [PATCH 3/4] arm64: dts: qcom: sc8280xp: gaokun3: add front camera sensor node Date: Sat, 25 Apr 2026 18:52:59 +0800 Message-ID: <20260425105300.745044-4-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260425105300.745044-1-mitltlatltl@gmail.com> References: <20260425105300.745044-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 found on my Gaokun3, descripting it. Note that it seems that only Goakun3(3.0GHz) version is equipped with Hi846. Goakun3(2.69GHz) version is equipped with S5K4H7. Signed-off-by: Pengyu Luo --- .../boot/dts/qcom/sc8280xp-huawei-gaokun3.dts | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts b/arch/ar= m64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts index 9819454abe13..39e559e91289 100644 --- a/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts +++ b/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts @@ -15,6 +15,7 @@ #include #include #include +#include #include #include =20 @@ -27,6 +28,7 @@ / { compatible =3D "huawei,gaokun3", "qcom,sc8280xp"; =20 aliases { + i2c2 =3D &cci2_i2c1; i2c4 =3D &i2c4; i2c15 =3D &i2c15; serial1 =3D &uart2; @@ -47,6 +49,21 @@ framebuffer0: framebuffer@c6200000 { }; }; =20 + leds { + compatible =3D "gpio-leds"; + + pinctrl-0 =3D <&cam_indicator_en>; + pinctrl-names =3D "default"; + + privacy_led: privacy-led { + function =3D LED_FUNCTION_INDICATOR; + color =3D ; + gpios =3D <&tlmm 34 GPIO_ACTIVE_HIGH>; + default-state =3D "off"; + panic-indicator; + }; + }; + wcd938x: audio-codec { compatible =3D "qcom,wcd9380-codec"; =20 @@ -98,6 +115,20 @@ switch-mode { }; }; =20 + vreg_camf_1p2: regulator-camf-1p2 { + compatible =3D "regulator-fixed"; + + regulator-name =3D "vreg_camf_1p2"; + regulator-min-microvolt =3D <1200000>; + regulator-max-microvolt =3D <1200000>; + + gpio =3D <&tlmm 44 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 =3D <&camf_1p2_reg_en>; + pinctrl-names =3D "default"; + }; + vreg_misc_3p3: regulator-misc-3p3 { compatible =3D "regulator-fixed"; =20 @@ -462,6 +493,13 @@ vreg_l8c: ldo8 { RPMH_REGULATOR_MODE_HPM>; }; =20 + vreg_l11c: ldo11 { + regulator-name =3D "vreg_l11c"; + regulator-min-microvolt =3D <2800000>; + regulator-max-microvolt =3D <2800000>; + regulator-initial-mode =3D ; + }; + vreg_l12c: ldo12 { regulator-name =3D "vreg_l12c"; regulator-min-microvolt =3D <1800000>; @@ -577,6 +615,66 @@ vreg_l10d: ldo10 { }; }; =20 +&camss { + vdda-phy-supply =3D <&vreg_l6b>; + vdda-pll-supply =3D <&vreg_l3b>; + + status =3D "okay"; + + ports { + port@3 { + csiphy3_ep: endpoint@0 { + reg =3D <0>; + + clock-lanes =3D <7>; + data-lanes =3D <0 1 2 3>; + remote-endpoint =3D <&hi846_ep>; + }; + }; + }; +}; + +&cci2 { + status =3D "okay"; +}; + +&cci2_i2c1 { + /* On Goakun3(2.69GHz), S5K4H7@2d, image quality is better than hi846 */ + camera_front: camera@20 { + compatible =3D "hynix,hi846"; + reg =3D <0x20>; + + pinctrl-0 =3D <&camf_rgb_default>; + pinctrl-names =3D "default"; + + clocks =3D <&camcc CAMCC_MCLK3_CLK>; + + assigned-clocks =3D <&camcc CAMCC_MCLK3_CLK>; + assigned-clock-rates =3D <24000000>; + + reset-gpios =3D <&tlmm 15 GPIO_ACTIVE_LOW>; + vddio-supply =3D <&vreg_l2c>; + vdda-supply =3D <&vreg_l11c>; + vddd-supply =3D <&vreg_camf_1p2>; + + leds =3D <&privacy_led>; + led-names =3D "privacy"; + + orientation =3D <0>; /* Front facing */ + rotation =3D <0>; + + port { + hi846_ep: endpoint { + data-lanes =3D <1 2 3 4>; + link-frequencies =3D /bits/ 64 <80000000 144000000 200000000 288000000= >; + remote-endpoint =3D <&csiphy3_ep>; + }; + }; + }; + + /* actuator???@58, Goakun3(2.69GHz) only, eeprom@50 */ +}; + &dispcc0 { status =3D "okay"; }; @@ -1318,6 +1416,36 @@ hstp-sw-ctrl-pins { }; }; =20 + cam_indicator_en: cam-indicator-en-state { + pins =3D "gpio34"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + camf_1p2_reg_en: camf-1p2-reg-en-state { + pins =3D "gpio44"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + camf_rgb_default: camf-rgb-default-state { + mclk-pins { + pins =3D "gpio17"; + function =3D "cam_mclk"; + drive-strength =3D <6>; + bias-disable; + }; + + sc-rgb-xshut-n-pins { + pins =3D "gpio15"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + }; + i2c4_default: i2c4-default-state { pins =3D "gpio171", "gpio172"; function =3D "qup4"; --=20 2.54.0 From nobody Fri Jun 19 09:05:26 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 AF85F3932E8 for ; Sat, 25 Apr 2026 10:56:51 +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=1777114613; cv=none; b=tBIHPLJClOrl0tTaEYyqUqEGP4+5hiQ+I6FdvluwzqrDr0H1yYnlhOTAcSXXN1iPmC/n2SJjF4Ui0zKi3WiaOUD0uL4FI2KN9JD5v+aQJRy9FXI6Yxg7ffEQBr1F6nhpPJgjer/W1+t0DApubFnRNBCdK6SqzDvdx8BDvYYytCA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777114613; c=relaxed/simple; bh=j92iOYgKQ7RjjOLofBQE3Vd++tZ0z/woMt8SEp8QCZo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=j6qBPPjjng7TmGiuBWGPuh2CwHAtKOg8guoiQqoJq68wskTwatqJrUHSeiEU3lhIRVsfuvOOci1ltExgK5e342wlpz+rXZf5sOD7f13Kxag8i6T30wi9XDC0dmjTFhkOjwvjmelzg57xQ00nb2NlHDKkJhA4U8x2pM6m0fXAr5c= 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=Cy/T4de0; 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="Cy/T4de0" Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-2ad9a9be502so54603035ad.0 for ; Sat, 25 Apr 2026 03:56:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777114611; x=1777719411; 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=hXgloxp5cdGXbJc9mmRLA5BQUt4nlOpF3BcjxCU2IHU=; b=Cy/T4de0glMoZvobRKvlj9PMd914hdEQHtP/N/WaVTSjrZLyFeN6v/o8Km+MEAOQBg Ml2qsU8mFNBt0c1eUIukhrEhk2n/5cvK/A/NR6lXcvdouM2hl/8SzXkO/D+AhtCFS8x0 4H4GU8HRjZ+bKEzVe0Q/O7B4TDXDIdUCL6xWuCQqeRPSDus/AOTWnSo+6ArEyqJr4LAN OoTkIFA0xpCMH3OxLdAu7E2Mk8y+dNl5DyPaOm5aFUJGBzLOqSI9GUX7pUM4TotC7x61 5w2IQ1WuH3iczDo8Pmj12x2QlyO3g7T/aUYQgMHQUZmafMxWrtPxPlNASs7H9aQ7aTip IvpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777114611; x=1777719411; 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=hXgloxp5cdGXbJc9mmRLA5BQUt4nlOpF3BcjxCU2IHU=; b=JHX3RhTa/EXa5zdYVEqQ+bLNXYTJlm6nY3G6WPEo4YUeuC5qSer9udahtAICxxAbzV v1TIMW8lwEgI5rJ/aaa32vzxl5CEgUXRYAdbFQOsOLUNlJDZlBmBUJNQRaxIWVljCT7j c3tqnqrnc1url/30B+XDBnLEoyV+lYIurPWbZjdlueCJMOxS4dqsOor5bKGfx8Rnqvge Ieji3zfvMuj7fmllr3NZVOD6ZO93NhITzxyfQ54vBd35bRbdvnUOLI2kIkwyLM/I8Svk ywpqQv0uvMdijeKNNdmBGh0kEHgwHWzGeoIuNxV236zAq+yqkJky24ne+BM8WM8lip2l lBoA== X-Forwarded-Encrypted: i=1; AFNElJ/yquUiHnHXKr9WhYWshbuZvjxWvAnjtqoWw/oMozhN5Q658QkBtqhLkmTvd9H2U7lPKDvc2TImcpIXH2A=@vger.kernel.org X-Gm-Message-State: AOJu0YyWYcLwJcrZNCtwtV0WpMq7ZRDxwaTyhD2Lh/0BGCNzh5tMRxJS ed6JnVYjJxFjOtUL/LqgLTDG//TP2m/QTavzqi0ZE3p851QvuQFG4Qis X-Gm-Gg: AeBDiete6QJuhmCReXv7HpO/KKZT8ndJReSYSKLBC/lEMTwZa/pr8Ubj1bIg4bPgG4B oMEoR9cwxVvs4lEJWrvBJsWb8VuhXoNPySJG4IwAqwBmb2mEa1wYeXtlRtZtviHcuwR1K69gbXa gGS1ZnE9U/4SN4EKmffqEWSKaZ4Qj8A9Llbg7yNfkzh7f6LZYJqLC2MQ0k8v1hOCoOEbGdHSepW XbeSxP5LSYm4Um9M+SQTT6ZEAVwFi8kjVyU3QWedrk55vJSGEd0j+S3/bTZjtkb9tEMb7RRjeaP wB/ZY9EmAnkTyO2rnsQPrZf9kPBMbhS3VlgDmumZTowMZvJlc4+yntGoAcWWAVYNkUIEUTtYddC WbdXOOlgknNhhEAhDERCfHMpGC32VXMaKaKI75A4g39BGS8uLJkJfQuFWSYvPAAF3YfW5/HoB5b suBUgmNYxpKaTMdxah5mNcD2TPM/we X-Received: by 2002:a17:902:a516:b0:2b2:4f43:b48c with SMTP id d9443c01a7336-2b5f9ea55d1mr247155295ad.14.1777114611051; Sat, 25 Apr 2026 03:56:51 -0700 (PDT) Received: from nuvole ([144.202.86.13]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5faa33486sm303832345ad.33.2026.04.25.03.56.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Apr 2026 03:56:50 -0700 (PDT) From: Pengyu Luo To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Martin Kepplinger-Novakovic , Sakari Ailus , Mauro Carvalho Chehab , Hans Verkuil , Martin Kepplinger Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Pengyu Luo Subject: [PATCH 4/4] arm64: dts: qcom: sc8280xp: gaokun3: describe rear camera module information as musch as possible Date: Sat, 25 Apr 2026 18:53:00 +0800 Message-ID: <20260425105300.745044-5-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260425105300.745044-1-mitltlatltl@gmail.com> References: <20260425105300.745044-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" The rear sensor is S5K3L6, describing it but dropping compatible string, since there is no upstream driver. A funcitonal downstream driver is in comment. The VCM is dw9714, describe it. Signed-off-by: Pengyu Luo --- Please take this patch as a RFC, I am not sure, how much I am allowed to add without a sensor driver. --- .../boot/dts/qcom/sc8280xp-huawei-gaokun3.dts | 129 +++++++++++++++++- 1 file changed, 123 insertions(+), 6 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts b/arch/ar= m64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts index 39e559e91289..76b1ecb3819d 100644 --- a/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts +++ b/arch/arm64/boot/dts/qcom/sc8280xp-huawei-gaokun3.dts @@ -22,12 +22,18 @@ #include "sc8280xp.dtsi" #include "sc8280xp-pmics.dtsi" =20 +/* remove due to gpio pins collision, skip 2nd instance won't break things= */ +/delete-node/ &cci1_i2c1; +/delete-node/ &cci1_i2c1_default; +/delete-node/ &cci1_i2c1_sleep; + / { chassis-type =3D "tablet"; model =3D "Matebook E Go"; compatible =3D "huawei,gaokun3", "qcom,sc8280xp"; =20 aliases { + i2c1 =3D &cci1_i2c0; i2c2 =3D &cci2_i2c1; i2c4 =3D &i2c4; i2c15 =3D &i2c15; @@ -52,9 +58,17 @@ framebuffer0: framebuffer@c6200000 { leds { compatible =3D "gpio-leds"; =20 - pinctrl-0 =3D <&cam_indicator_en>; + pinctrl-0 =3D <&cam_indicator_en>, <&camera_flash_en>; pinctrl-names =3D "default"; =20 + camera_flash: led { + function =3D LED_FUNCTION_FLASH; + color =3D ; + gpios =3D <&tlmm 93 GPIO_ACTIVE_HIGH>; + linux,default-trigger =3D "none"; + default-state =3D "off"; + }; + privacy_led: privacy-led { function =3D LED_FUNCTION_INDICATOR; color =3D ; @@ -129,6 +143,18 @@ vreg_camf_1p2: regulator-camf-1p2 { pinctrl-names =3D "default"; }; =20 + vreg_camr: regulator-camr { + compatible =3D "regulator-fixed"; + + regulator-name =3D "vreg_camr"; + + gpio =3D <&tlmm 92 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 =3D <&camr_reg_en>; + pinctrl-names =3D "default"; + }; + vreg_misc_3p3: regulator-misc-3p3 { compatible =3D "regulator-fixed"; =20 @@ -387,8 +413,8 @@ vreg_l1b: ldo1 { =20 vreg_l2b: ldo2 { regulator-name =3D "vreg_l2b"; - regulator-min-microvolt =3D <1904000>; - regulator-max-microvolt =3D <1904000>; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <2800000>; regulator-initial-mode =3D ; }; =20 @@ -433,10 +459,9 @@ vreg_l6b: ldo6 { =20 vreg_l7b: ldo7 { regulator-name =3D "vreg_l7b"; - regulator-min-microvolt =3D <1800000>; - regulator-max-microvolt =3D <1800000>; + regulator-min-microvolt =3D <2800000>; + regulator-max-microvolt =3D <2800000>; regulator-initial-mode =3D ; - regulator-boot-on; }; =20 vreg_l9b: ldo9 { @@ -622,6 +647,16 @@ &camss { status =3D "okay"; =20 ports { + port@0 { + csiphy0_ep: endpoint@0 { + reg =3D <0>; + + clock-lanes =3D <7>; + data-lanes =3D <0 1 2 3>; + remote-endpoint =3D <&s5k3l6_ep>; + }; + }; + port@3 { csiphy3_ep: endpoint@0 { reg =3D <0>; @@ -634,6 +669,58 @@ csiphy3_ep: endpoint@0 { }; }; =20 +&cci1 { + status =3D "okay"; +}; + +&cci1_i2c0 { + voice_coil_motor: vcm@c { + compatible =3D "dongwoon,dw9714"; + reg =3D <0xc>; + vcc-supply =3D <&vreg_l7b>; /* FIXME: require l2c on first */ + }; + + /* + * https://source.puri.sm/Librem5/linux/-/blob/pureos/latest/drivers/medi= a/i2c/s5k3l6xx.c + * + * This sensor has never been detected on Goakun3(2.69GHz) + */ + camera_rear: camera@10 { + reg =3D <0x10>; + + pinctrl-0 =3D <&camr_rgb_default>; + pinctrl-names =3D "default"; + + clocks =3D <&camcc CAMCC_MCLK4_CLK>; + clock-names =3D "mclk"; + clock-frequency =3D <24000000>; + + rstn-gpios =3D <&tlmm 7 GPIO_ACTIVE_LOW>; + + vddio-supply =3D <&vreg_camr>; + vdda-supply =3D <&vreg_l2b>; + vddd-supply =3D <&vreg_l2c>; + + /* &camera_flash can't be enabled directly for now */ + leds =3D <&privacy_led>; + led-names =3D "privacy"; + + lens-focus =3D <&voice_coil_motor>; + + orientation =3D <1>; + rotation =3D <180>; + + port { + s5k3l6_ep: endpoint { + data-lanes =3D <1 2 3 4>; + remote-endpoint =3D <&csiphy0_ep>; + }; + }; + }; + + /* eeprom@50/51 */ +}; + &cci2 { status =3D "okay"; }; @@ -1423,6 +1510,13 @@ cam_indicator_en: cam-indicator-en-state { bias-disable; }; =20 + camera_flash_en: camera-flash-en-state { + pins =3D "gpio93"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + camf_1p2_reg_en: camf-1p2-reg-en-state { pins =3D "gpio44"; function =3D "gpio"; @@ -1446,6 +1540,29 @@ sc-rgb-xshut-n-pins { }; }; =20 + camr_reg_en: camr-reg-en-state { + pins =3D "gpio92"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + camr_rgb_default: camr-rgb-default-state { + mclk-pins { + pins =3D "gpio6"; + function =3D "cam_mclk"; + drive-strength =3D <6>; + bias-disable; + }; + + sc-rgb-xshut-n-pins { + pins =3D "gpio7"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + }; + i2c4_default: i2c4-default-state { pins =3D "gpio171", "gpio172"; function =3D "qup4"; --=20 2.54.0