From nobody Mon Jun 8 04:25:35 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 745AD2EBDFA; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780404416; cv=none; b=d7O7DgVY/UNe5arxwRCPkmQCTWOOj2p2kW0LhzWDdyQFQaFFEqvJn5+PGjK6pUkZYVuZT3viCr9OKoncaMhSMwMV602TTkZPdOuA49HGwYXz/Ck0YqE4IQfYwpLW8E9hCB8Z0uZdgYpp8VMAa+AT+0qNKoyw3Pv8lDsIOcHnmj0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780404416; c=relaxed/simple; bh=ZMpGPuvn4IaPZjXHlCdX0rIw9Inyhlg6G6HpScd9FxI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oVOIVN89vqWM+K6GYztc/IPqa6aFFAHQgrse4XhywuF9cO1WVu+fOGW/eNoD9lfApak2eF7tfWJzLOoZDsXSqj6EN4ssmDH51s7D6uJATzeL5+fqDqFWZI/vwCypUK5GFWRZiogFusC9CcZlEiS+qYUpNu1gGu3zh+0c6nkOop8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=q/oiZ4H2; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="q/oiZ4H2" Received: by smtp.kernel.org (Postfix) with ESMTPS id 24DECC2BCC9; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1780404416; bh=ZMpGPuvn4IaPZjXHlCdX0rIw9Inyhlg6G6HpScd9FxI=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=q/oiZ4H2PnJCU6pxjVuG+GaP7Icz+tzq6hmZiDXdPVsuNjVcyFlFZwMCmtaUV6mY9 Bb2q1HwnccUxaPmA4XpCrSBD3vh6COjhohaf/I65mmhWRDNfBhEOuoZywr9lF4FZhM ezREOw5PomhsHcv4B9TDN6UgLlrNVN91VFpmPec4aRmsasRgwBuB546Qc0nWlwspg8 QN/EUP8TyJHlWmdMl6P3fSLk6uLZ7crKtsboCpfgYN+0kRFaxZMIdX3RcRQDqBEJiA gWVChpRfRFjqF3HTWKZFkuJBb4sLOQc+BKmprFbnT1uryauUyeL8kVkgLVSBeBU+U0 EzF+3GbsJjtKg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 11271CD6E60; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) From: Roman Vivchar via B4 Relay Date: Tue, 02 Jun 2026 15:46:54 +0300 Subject: [PATCH 1/4] dt-bindings: iio: adc: mediatek,mt6359-auxadc: add mt6323 PMIC AUXADC 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: <20260602-mt6323-adc-v1-1-68ec737508ee@protonmail.com> References: <20260602-mt6323-adc-v1-0-68ec737508ee@protonmail.com> In-Reply-To: <20260602-mt6323-adc-v1-0-68ec737508ee@protonmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Matthias Brugger , AngeloGioacchino Del Regno , Lee Jones Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Ben Grisdale , Roman Vivchar X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780404414; l=2572; i=rva333@protonmail.com; s=20260510; h=from:subject:message-id; bh=jMfKWstu+T8IwFVfEIbxc9fRDKEABkD/ksMe6fGugAE=; b=MkqBdlNVRGVUXe60gRZL7buQ5mbme0yP4EhtfIX7YkbEMK18P50xxDbkAfxj9MOXP8KmEMcH+ v/Z8/EWYkhbCoad9wjWfCt+UMU6dJjTDy3KFvhatpo4HgLpC7qeIR/F X-Developer-Key: i=rva333@protonmail.com; a=ed25519; pk=zww/nWjBGoQ4POXCG0BV6fx2iuXK6jx77rsKPA5YK5Y= X-Endpoint-Received: by B4 Relay for rva333@protonmail.com/20260510 with auth_id=777 X-Original-From: Roman Vivchar Reply-To: rva333@protonmail.com From: Roman Vivchar The MediaTek mt6323 PMIC includes an AUXADC used for battery voltage, temperature, and other internal measurements. Add the devicetree binding documentation and the associated header file defining the ADC channel constants. Also change the description to the 'MT6350 series and similar' because the binding already includes more than mt635x series PMICs. Signed-off-by: Roman Vivchar Acked-by: Conor Dooley Tested-by: Ben Grisdale # Amazon Echo Dot (2nd Ge= neration) --- .../bindings/iio/adc/mediatek,mt6359-auxadc.yaml | 3 ++- .../dt-bindings/iio/adc/mediatek,mt6323-auxadc.h | 24 ++++++++++++++++++= ++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/iio/adc/mediatek,mt6359-auxa= dc.yaml b/Documentation/devicetree/bindings/iio/adc/mediatek,mt6359-auxadc.= yaml index 5d4ab701f51a..852eb7336a5a 100644 --- a/Documentation/devicetree/bindings/iio/adc/mediatek,mt6359-auxadc.yaml +++ b/Documentation/devicetree/bindings/iio/adc/mediatek,mt6359-auxadc.yaml @@ -4,7 +4,7 @@ $id: http://devicetree.org/schemas/iio/adc/mediatek,mt6359-auxadc.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# =20 -title: MediaTek MT6350 series PMIC AUXADC +title: MediaTek MT6350 series and similar PMIC AUXADC =20 maintainers: - AngeloGioacchino Del Regno @@ -19,6 +19,7 @@ description: properties: compatible: enum: + - mediatek,mt6323-auxadc - mediatek,mt6357-auxadc - mediatek,mt6358-auxadc - mediatek,mt6359-auxadc diff --git a/include/dt-bindings/iio/adc/mediatek,mt6323-auxadc.h b/include= /dt-bindings/iio/adc/mediatek,mt6323-auxadc.h new file mode 100644 index 000000000000..6ee9a9ecffc1 --- /dev/null +++ b/include/dt-bindings/iio/adc/mediatek,mt6323-auxadc.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ + +#ifndef _DT_BINDINGS_MEDIATEK_MT6323_AUXADC_H +#define _DT_BINDINGS_MEDIATEK_MT6323_AUXADC_H + +#define MT6323_AUXADC_BATON2 0 +#define MT6323_AUXADC_CH6 1 +#define MT6323_AUXADC_BAT_TEMP 2 +#define MT6323_AUXADC_CHIP_TEMP 3 +#define MT6323_AUXADC_VCDT 4 +#define MT6323_AUXADC_BATON1 5 +#define MT6323_AUXADC_ISENSE 6 +#define MT6323_AUXADC_BATSNS 7 +#define MT6323_AUXADC_ACCDET 8 +#define MT6323_AUXADC_AUDIO0 9 +#define MT6323_AUXADC_AUDIO1 10 +#define MT6323_AUXADC_AUDIO2 11 +#define MT6323_AUXADC_AUDIO3 12 +#define MT6323_AUXADC_AUDIO4 13 +#define MT6323_AUXADC_AUDIO5 14 +#define MT6323_AUXADC_AUDIO6 15 +#define MT6323_AUXADC_AUDIO7 16 + +#endif --=20 2.54.0 From nobody Mon Jun 8 04:25:35 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 7D1C62F7EE3; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780404416; cv=none; b=JKrSO+68wBu5YSA0Rzcdrs8vnTmpG1k3LhPqB3k5qgp1/onLdPBtX4i2QnholPfWnFOMR/ak3ToOj4AzchjG75crSBUnO+4Sd0bDc3QueuJzbE/wdws3qjU6IQ0mdK5MxgnGUQC2iSdP1xVyvilRVOWjCq67qMOfNktf6oOTBOs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780404416; c=relaxed/simple; bh=JYAiBDSgog+rgvCej9RrtMZIgJFYyLBrSJcbUzXEbjo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TAJsaIJGz4GAM9siizv7KYdBxSsOwFelFTXWeZxkYhg7ZNb67DxUh6tKElQIBAdKfEt/VT6Foyfkaa8Wfj5yin6RvMcfQxJfbKHiL+l57DifnVWOo5gXHtYlbJDgqhX0ql0PE45/uiDr7WSfjQ+ZyMAIa/Gkr9cq2L2pC5baVH4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Sj1JqE4e; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Sj1JqE4e" Received: by smtp.kernel.org (Postfix) with ESMTPS id 34307C2BCC7; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1780404416; bh=JYAiBDSgog+rgvCej9RrtMZIgJFYyLBrSJcbUzXEbjo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Sj1JqE4e46j+RCPh0I2Wo0nZiAGsQhKOzCHiNbniLMiVWNu7BhqjQmH1MfwdTJ5vE jiOCdcvTMpnrL4h/e5biMyH50tjxrx+W6fOokUfVXQ7D/cr9VBNagfJxvSkxs3U63f rR01BPTPEDbmuO2PgB2YJpdNTIN4fS+AD3iCpiWg9VCrtk7o7tyPQ+u28i9H3Fo+Ii CJjBqA9fw+AqrBcO/erirOSSv7D3oUoeHQ2nCCdX3zIosvarey55De2yAuL+e+Vg10 X5rcKyGVI2k8WG/jpXt+eYvHXTWZlfuLV7wraMtfqwtZZoAGY3i7i6jWO4n4HA98yW v+EN7lzz/pFUA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2014CCD6E4A; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) From: Roman Vivchar via B4 Relay Date: Tue, 02 Jun 2026 15:46:55 +0300 Subject: [PATCH 2/4] iio: adc: mt6323-auxadc: add mt6323 PMIC AUXADC driver 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: <20260602-mt6323-adc-v1-2-68ec737508ee@protonmail.com> References: <20260602-mt6323-adc-v1-0-68ec737508ee@protonmail.com> In-Reply-To: <20260602-mt6323-adc-v1-0-68ec737508ee@protonmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Matthias Brugger , AngeloGioacchino Del Regno , Lee Jones Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Ben Grisdale , Roman Vivchar X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780404414; l=11966; i=rva333@protonmail.com; s=20260510; h=from:subject:message-id; bh=/ogpG2sgedVW1+zdR6RGxPXqiJewxShnS+2sbJL9GW4=; b=JbI2g17WBiDJNIVBrCpjTW4M+d0JrCs40GkxKmhf6BZcHJ8m8sCPOX7XsS61CYsQPxnd+W2MF Pl8ILIVeKpcDM20ErC5/8HbbZaGpjpHkYlgMEeWEqeFboFCbJ9oHyxl X-Developer-Key: i=rva333@protonmail.com; a=ed25519; pk=zww/nWjBGoQ4POXCG0BV6fx2iuXK6jx77rsKPA5YK5Y= X-Endpoint-Received: by B4 Relay for rva333@protonmail.com/20260510 with auth_id=777 X-Original-From: Roman Vivchar Reply-To: rva333@protonmail.com From: Roman Vivchar The mt6323 AUXADC is a 15-bit ADC used for system monitoring. This driver provides support for reading various channels including battery and charger voltages, battery and chip temperature, current sensing and accessory detection. Add a driver for the AUXADC found in the MediaTek mt6323 PMIC. Tested-by: Ben Grisdale # Amazon Echo Dot (2nd Ge= neration) Signed-off-by: Roman Vivchar --- MAINTAINERS | 8 ++ drivers/iio/adc/Kconfig | 11 ++ drivers/iio/adc/Makefile | 1 + drivers/iio/adc/mt6323-auxadc.c | 299 ++++++++++++++++++++++++++++++++++++= ++++ 4 files changed, 319 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index d1cc0e12fe1f..c9ad2417a3ef 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -16256,6 +16256,14 @@ S: Maintained F: Documentation/devicetree/bindings/mmc/mtk-sd.yaml F: drivers/mmc/host/mtk-sd.c =20 +MEDIATEK MT6323 PMIC AUXADC DRIVER +M: Roman Vivchar +L: linux-iio@vger.kernel.org +L: linux-mediatek@lists.infradead.org (moderated for non-subscribers) +S: Maintained +F: drivers/iio/adc/mt6323-auxadc.c +F: include/dt-bindings/iio/adc/mediatek,mt6323-auxadc.h + MEDIATEK MT6735 CLOCK & RESET DRIVERS M: Yassine Oudjana L: linux-clk@vger.kernel.org diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig index 60038ae8dfc4..a03614b46041 100644 --- a/drivers/iio/adc/Kconfig +++ b/drivers/iio/adc/Kconfig @@ -1137,6 +1137,17 @@ config MCP3911 This driver can also be built as a module. If so, the module will be called mcp3911. =20 +config MEDIATEK_MT6323_AUXADC + tristate "MediaTek MT6323 PMIC AUXADC driver" + depends on MFD_MT6397 + help + Say yes here to enable support for MediaTek MT6323 PMIC Auxiliary ADC. + This driver provides multiple channels for system monitoring, + such as battery voltage, PMIC temperature, and others. + + This driver can also be built as a module. If so, the module will be + called mt6323-auxadc. + config MEDIATEK_MT6359_AUXADC tristate "MediaTek MT6359 PMIC AUXADC driver" depends on MFD_MT6397 diff --git a/drivers/iio/adc/Makefile b/drivers/iio/adc/Makefile index c76550415ff1..58161750d6e3 100644 --- a/drivers/iio/adc/Makefile +++ b/drivers/iio/adc/Makefile @@ -99,6 +99,7 @@ obj-$(CONFIG_MCP320X) +=3D mcp320x.o obj-$(CONFIG_MCP3422) +=3D mcp3422.o obj-$(CONFIG_MCP3564) +=3D mcp3564.o obj-$(CONFIG_MCP3911) +=3D mcp3911.o +obj-$(CONFIG_MEDIATEK_MT6323_AUXADC) +=3D mt6323-auxadc.o obj-$(CONFIG_MEDIATEK_MT6359_AUXADC) +=3D mt6359-auxadc.o obj-$(CONFIG_MEDIATEK_MT6360_ADC) +=3D mt6360-adc.o obj-$(CONFIG_MEDIATEK_MT6370_ADC) +=3D mt6370-adc.o diff --git a/drivers/iio/adc/mt6323-auxadc.c b/drivers/iio/adc/mt6323-auxad= c.c new file mode 100644 index 000000000000..da6c11a5079c --- /dev/null +++ b/drivers/iio/adc/mt6323-auxadc.c @@ -0,0 +1,299 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2026 Roman Vivchar + * + * Based on drivers/iio/adc/mt6359-auxadc.c + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#define AUXADC_STRUP_CON10_RSTB_SEL BIT(7) +#define AUXADC_STRUP_CON10_RSTB_SW BIT(5) + +#define AUXADC_TOP_CKPDN2_CTL_CK BIT(5) + +#define AUXADC_TRIM_CH2_MASK GENMASK(11, 10) +#define AUXADC_TRIM_CH4_MASK GENMASK(9, 8) +#define AUXADC_TRIM_CH5_MASK GENMASK(5, 4) +#define AUXADC_TRIM_CH6_MASK GENMASK(3, 2) + +#define AUXADC_CON27_VREF18_ENB_MD BIT(15) +#define AUXADC_CON27_MD_STATUS BIT(0) + +#define AUXADC_CON19_GPS_STATUS BIT(1) + +#define AUXADC_CON26_VREF18_SELB BIT(1) +#define AUXADC_CON26_DECI_GDLY_SEL BIT(0) + +#define AUXADC_CON11_VBUF_EN BIT(4) + +#define AUXADC_CON19_DECI_GDLY_MASK GENMASK(15, 14) +#define AUXADC_ADC19_BUSY_MASK GENMASK(15, 1) +#define AUXADC_READY_MASK BIT(15) +#define AUXADC_DATA_MASK GENMASK(14, 0) + +#define AUXADC_CON9_OSR_MASK GENMASK(12, 10) +#define AUXADC_DEFAULT_OSR 3 + +#define AUXADC_LOW_CHANNEL_MASK GENMASK(9, 0) +#define AUXADC_AUDIO_CHANNEL_MASK GENMASK(8, 0) + +#define MTK_PMIC_IIO_CHAN(_name, _chan, _addr, _ch_type) \ +{ \ + .type =3D _ch_type, \ + .indexed =3D 1, \ + .channel =3D _chan, \ + .address =3D _addr, \ + .datasheet_name =3D __stringify(_name), \ + .info_mask_separate =3D BIT(IIO_CHAN_INFO_RAW) | \ + BIT(IIO_CHAN_INFO_SCALE), \ +} + +static const struct iio_chan_spec mt6323_auxadc_channels[] =3D { + MTK_PMIC_IIO_CHAN(baton2, MT6323_AUXADC_BATON2, MT6323_AUXADC_ADC6,= IIO_VOLTAGE), + MTK_PMIC_IIO_CHAN(ch6, MT6323_AUXADC_CH6, MT6323_AUXADC_ADC11= , IIO_VOLTAGE), + MTK_PMIC_IIO_CHAN(bat_temp, MT6323_AUXADC_BAT_TEMP, MT6323_AUXADC_ADC5,= IIO_VOLTAGE), + MTK_PMIC_IIO_CHAN(chip_temp, MT6323_AUXADC_CHIP_TEMP, MT6323_AUXADC_ADC4,= IIO_VOLTAGE), + MTK_PMIC_IIO_CHAN(vcdt, MT6323_AUXADC_VCDT, MT6323_AUXADC_ADC2,= IIO_VOLTAGE), + MTK_PMIC_IIO_CHAN(baton1, MT6323_AUXADC_BATON1, MT6323_AUXADC_ADC3,= IIO_VOLTAGE), + MTK_PMIC_IIO_CHAN(isense, MT6323_AUXADC_ISENSE, MT6323_AUXADC_ADC1,= IIO_VOLTAGE), + MTK_PMIC_IIO_CHAN(batsns, MT6323_AUXADC_BATSNS, MT6323_AUXADC_ADC0,= IIO_VOLTAGE), + MTK_PMIC_IIO_CHAN(accdet, MT6323_AUXADC_ACCDET, MT6323_AUXADC_ADC7,= IIO_VOLTAGE), +}; + +/** + * struct mt6323_auxadc - Main driver structure + * @regmap: Regmap from PWRAP + * @lock: Mutex to serialize AUXADC reading vs configuration + * + * The MediaTek MT6323 (as well as a lot of other PMICs) has the following= hierarchy: + * PMIC AUXADC <- PMIC MFD <- SoC PWRAP (wrapper for PWRAP FSM) + * + * Therefore, PWRAP regmap should be obtained using dev->parent->parent. + */ +struct mt6323_auxadc { + struct regmap *regmap; + struct mutex lock; +}; + +static int mt6323_auxadc_prepare_channel(struct mt6323_auxadc *auxadc) +{ + struct regmap *map =3D auxadc->regmap; + u32 val; + int ret; + + ret =3D regmap_read(map, MT6323_AUXADC_CON19, &val); + if (ret) + return ret; + + /* The ADC is idle. */ + if (!(val & AUXADC_CON19_DECI_GDLY_MASK)) + return 0; + + ret =3D regmap_read_poll_timeout(map, MT6323_AUXADC_ADC19, val, + !(val & AUXADC_ADC19_BUSY_MASK), + 10, 500); + if (ret) + return ret; + + return regmap_clear_bits(map, MT6323_AUXADC_CON19, + AUXADC_CON19_DECI_GDLY_MASK); +} + +static int mt6323_auxadc_request(struct mt6323_auxadc *auxadc, + unsigned long channel) +{ + struct regmap *map =3D auxadc->regmap; + int ret; + + ret =3D regmap_set_bits(map, MT6323_AUXADC_CON11, AUXADC_CON11_VBUF_EN); + if (ret) + return ret; + + ret =3D regmap_clear_bits(map, MT6323_AUXADC_CON22, BIT(channel)); + if (ret) + return ret; + + return regmap_set_bits(map, MT6323_AUXADC_CON22, BIT(channel)); +} + +static int mt6323_auxadc_read(struct mt6323_auxadc *auxadc, + const struct iio_chan_spec *chan, int *out) +{ + struct regmap *map =3D auxadc->regmap; + u32 reg =3D chan->address; + u32 val; + int ret; + + ret =3D regmap_read_poll_timeout(map, reg, val, (val & AUXADC_READY_MASK), + 1 * USEC_PER_MSEC, 100 * USEC_PER_MSEC); + if (ret) + return ret; + + *out =3D FIELD_GET(AUXADC_DATA_MASK, val); + + return 0; +} + +static int mt6323_auxadc_read_raw(struct iio_dev *indio_dev, + const struct iio_chan_spec *chan, + int *val, int *val2, long mask) +{ + struct mt6323_auxadc *auxadc =3D iio_priv(indio_dev); + int ret, mult; + + switch (mask) { + case IIO_CHAN_INFO_SCALE: + if (chan->channel =3D=3D MT6323_AUXADC_ISENSE || + chan->channel =3D=3D MT6323_AUXADC_BATSNS) + mult =3D 4; + else + mult =3D 1; + + /* 1800mV full range with 15-bit resolution. */ + *val =3D mult * 1800; + *val2 =3D 15; + + return IIO_VAL_FRACTIONAL_LOG2; + case IIO_CHAN_INFO_RAW: + scoped_guard(mutex, &auxadc->lock) { + ret =3D mt6323_auxadc_prepare_channel(auxadc); + if (ret) + return ret; + + ret =3D mt6323_auxadc_request(auxadc, chan->channel); + if (ret) + return ret; + + /* Hardware limitation: the AUXADC needs a delay to become ready. */ + fsleep(300); + + ret =3D mt6323_auxadc_read(auxadc, chan, val); + if (ret) + return ret; + } + return IIO_VAL_INT; + default: + return -EINVAL; + } +} + +static int mt6323_auxadc_init(struct mt6323_auxadc *auxadc) +{ + struct regmap *map =3D auxadc->regmap; + int ret; + + ret =3D regmap_set_bits(map, MT6323_STRUP_CON10, + AUXADC_STRUP_CON10_RSTB_SW | + AUXADC_STRUP_CON10_RSTB_SEL); + if (ret) + return ret; + + ret =3D regmap_set_bits(map, MT6323_TOP_CKPDN2, AUXADC_TOP_CKPDN2_CTL_CK); + if (ret) + return ret; + + ret =3D regmap_update_bits(map, MT6323_AUXADC_CON10, + AUXADC_TRIM_CH2_MASK | AUXADC_TRIM_CH4_MASK | + AUXADC_TRIM_CH5_MASK | AUXADC_TRIM_CH6_MASK, + FIELD_PREP(AUXADC_TRIM_CH2_MASK, 1) | + FIELD_PREP(AUXADC_TRIM_CH4_MASK, 1) | + FIELD_PREP(AUXADC_TRIM_CH5_MASK, 1) | + FIELD_PREP(AUXADC_TRIM_CH6_MASK, 1)); + if (ret) + return ret; + + ret =3D regmap_set_bits(map, MT6323_AUXADC_CON27, + AUXADC_CON27_VREF18_ENB_MD | + AUXADC_CON27_MD_STATUS); + if (ret) + return ret; + + ret =3D regmap_set_bits(map, MT6323_AUXADC_CON19, AUXADC_CON19_GPS_STATUS= ); + if (ret) + return ret; + + ret =3D regmap_set_bits(map, MT6323_AUXADC_CON26, + AUXADC_CON26_VREF18_SELB | + AUXADC_CON26_DECI_GDLY_SEL); + if (ret) + return ret; + + return regmap_update_bits(map, MT6323_AUXADC_CON9, AUXADC_CON9_OSR_MASK, + FIELD_PREP(AUXADC_CON9_OSR_MASK, AUXADC_DEFAULT_OSR)); +} + +static const struct iio_info mt6323_auxadc_iio_info =3D { + .read_raw =3D mt6323_auxadc_read_raw, +}; + +static int mt6323_auxadc_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct mt6323_auxadc *auxadc; + struct iio_dev *iio; + struct regmap *regmap; + int ret; + + regmap =3D dev_get_regmap(dev->parent->parent, NULL); + if (!regmap) + return dev_err_probe(dev, -ENODEV, "failed to get regmap\n"); + + iio =3D devm_iio_device_alloc(dev, sizeof(*auxadc)); + if (!iio) + return -ENOMEM; + + auxadc =3D iio_priv(iio); + auxadc->regmap =3D regmap; + + ret =3D devm_mutex_init(dev, &auxadc->lock); + if (ret) + return ret; + + ret =3D mt6323_auxadc_init(auxadc); + if (ret) + return dev_err_probe(dev, ret, "failed to initialize auxadc\n"); + + iio->name =3D "mt6323-auxadc"; + iio->info =3D &mt6323_auxadc_iio_info; + iio->modes =3D INDIO_DIRECT_MODE; + iio->channels =3D mt6323_auxadc_channels; + iio->num_channels =3D ARRAY_SIZE(mt6323_auxadc_channels); + + return devm_iio_device_register(dev, iio); +} + +static const struct of_device_id mt6323_auxadc_of_match[] =3D { + { .compatible =3D "mediatek,mt6323-auxadc" }, + { } +}; +MODULE_DEVICE_TABLE(of, mt6323_auxadc_of_match); + +static struct platform_driver mt6323_auxadc_driver =3D { + .driver =3D { + .name =3D "mt6323-auxadc", + .of_match_table =3D mt6323_auxadc_of_match, + }, + .probe =3D mt6323_auxadc_probe, +}; +module_platform_driver(mt6323_auxadc_driver); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("MediaTek MT6323 PMIC AUXADC Driver"); --=20 2.54.0 From nobody Mon Jun 8 04:25:35 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 745392EBB84; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780404416; cv=none; b=RXSvzeyDQ3HtnPbAAJByn4Zl6vFQtzBEOBvUbE/dgN1RHFe7eilEvGSW00czw/eFsgaDnooYXS4fvr/K0eKash2ZpQ7DHagqMuZb8roi8NSGK9+5fk/y0TQqutlqMHI2rNsmxp+rsk8PHDlx9oQzg7+/iVVrIW+Mua6QYNyPFpw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780404416; c=relaxed/simple; bh=D3ikDb5iz89iLJ6uZVHjbY5rTXXDcPWKbnxCOlfwCxY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BIcA5rsL2Qa2+GCuBghLyKCmlhrdJpKcySzOwzobURaJigGS6FCrJkjpMwTxgd6lCAgY3IshnZsiHq+4Lp9LMU9Z4nbeT3nCEwSSA9gH20J8/gh2VEhHyawH2SERi63y8NwU/HqbnN+Bw5Dluuhta6WuZlyCRCeX8FIKtxGUE14= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BIhrwPwi; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BIhrwPwi" Received: by smtp.kernel.org (Postfix) with ESMTPS id 3B2E6C2BCF6; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1780404416; bh=D3ikDb5iz89iLJ6uZVHjbY5rTXXDcPWKbnxCOlfwCxY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=BIhrwPwiM8g4fttLy9aIsNnH/HXqmS1h9CdqhY01C/OQPCYcWgWgjYIjKZ4N4CP7h ciMvQbX2Gd+MF8zYUksYOa8g0JyWeGHo8OQQAusZTTdxtOKS54UBmLgKLg1bUi3XBM yG8uSJU9L9o7OWz/CDC7t3uS2Ap96o/sJbaArFhJFohnXqzU5uRUGKCmTE7kjPCvuL vsip9xGWa+0yJoNLBQJgP9nQX6DSUPvgZq7JzZc2kzLCQqFGuCyHEMLbZZ2pyhkd4G ahTr1BjWp37NghpZ0VUz+eLQfu3l7h3P9nNRru4fx83n6zWk6P5qTb+S4r3cna0M54 WoLtks88FWkJw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2F9ACCD6E66; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) From: Roman Vivchar via B4 Relay Date: Tue, 02 Jun 2026 15:46:56 +0300 Subject: [PATCH 3/4] mfd: mt6397-core: add mt6323 AUXADC support 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: <20260602-mt6323-adc-v1-3-68ec737508ee@protonmail.com> References: <20260602-mt6323-adc-v1-0-68ec737508ee@protonmail.com> In-Reply-To: <20260602-mt6323-adc-v1-0-68ec737508ee@protonmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Matthias Brugger , AngeloGioacchino Del Regno , Lee Jones Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Ben Grisdale , Roman Vivchar X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780404414; l=903; i=rva333@protonmail.com; s=20260510; h=from:subject:message-id; bh=AtpQuSBNMLgpeH1t4ADFZid08i2lKNvKchWt3/88KCc=; b=hHqTj3fiBKUfx1mwToFKMg4mxiYBDhSI14CHc8RKMiNrj+xTjK+l/K5VUGG2PIddhi2qRwmaj +WTRIg8qJBBBt84gGp+lU+/04LQ2r9hJCJBrTx1/qokAEpXre49nNFw X-Developer-Key: i=rva333@protonmail.com; a=ed25519; pk=zww/nWjBGoQ4POXCG0BV6fx2iuXK6jx77rsKPA5YK5Y= X-Endpoint-Received: by B4 Relay for rva333@protonmail.com/20260510 with auth_id=777 X-Original-From: Roman Vivchar Reply-To: rva333@protonmail.com From: Roman Vivchar The mt6323 PMIC includes an AUXADC. Register the AUXADC in the mt6323 devices array to allow the corresponding driver to probe using compatible string. Tested-by: Ben Grisdale # Amazon Echo Dot (2nd Ge= neration) Signed-off-by: Roman Vivchar --- drivers/mfd/mt6397-core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c index 3e58d0764c7e..013b0857fb54 100644 --- a/drivers/mfd/mt6397-core.c +++ b/drivers/mfd/mt6397-core.c @@ -125,6 +125,9 @@ static const struct resource mt6323_pwrc_resources[] = =3D { =20 static const struct mfd_cell mt6323_devs[] =3D { { + .name =3D "mt6323-auxadc", + .of_compatible =3D "mediatek,mt6323-auxadc", + }, { .name =3D "mt6323-rtc", .num_resources =3D ARRAY_SIZE(mt6323_rtc_resources), .resources =3D mt6323_rtc_resources, --=20 2.54.0 From nobody Mon Jun 8 04:25:35 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 9E3BD3D9DBC; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780404416; cv=none; b=eGfZRcS74VL1wFMgQOKHXPehOkzQihGV+2ogA/8MO5wgpBcpYILPpzgUW2mK598S9W/sqMtIXeianV0siBFov42U5BOa4Z0sVBecRcGeqFUvXjug8AWXSuGpX8Ga+G4AvKCWo+wbllLvsVRBAqbDkUO5gwTG7lTMNafOruWXd0s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780404416; c=relaxed/simple; bh=6Uru3oiN+KUnWcz/gv4yCW62HmXWPmwm2tqYSe5EbcY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nhs6ymCDUvcMuFMLXRTZcfn8tem2s/N8G3SBbNEh88TFxlNts7pkNhfeD4fmQ8XTLkfJ2WseoYa+Ia8wYOdODI8AswBs0HEkkUUpQcee9OdsjPZHxBU5/iuh10nklRb5QN2KDOiJgkQUEDRdrUb7VK6UO7QHt0QwyFXfB6zMhj4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IeaFb349; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="IeaFb349" Received: by smtp.kernel.org (Postfix) with ESMTPS id 4CABDC2BD01; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1780404416; bh=6Uru3oiN+KUnWcz/gv4yCW62HmXWPmwm2tqYSe5EbcY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=IeaFb349Q+HRYXRQlupaSln8P+/YmYDtWARL5hQtpDhS6+qZj4GqkJIQxw0auVClp U9rjEw7ufl+JdnoWeeLBng63EzFdu7oH/Sh7dEX46Xrl0f2e8//6a5sKTZ3De1pg8o xtfA56FyOa/hjwnauGWzREwA5K3AxExzVf+rL1YTLydvgZBGslImwpFJJ+sqblixWn 3W16917Th+gNpr3WyFkMcsf+QtKCoa+nmJNPwWVxWLUZ7nbRWw8+NBUH0OpDG2iEZQ YOVHFM/8HhufELzA+goCgi6frXpFCnZFd6W637cTPBagZylhdQWgWXz9Dt09Iu4wZD zIughF6fl+T9g== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3E64DCD6E64; Tue, 2 Jun 2026 12:46:56 +0000 (UTC) From: Roman Vivchar via B4 Relay Date: Tue, 02 Jun 2026 15:46:57 +0300 Subject: [PATCH 4/4] ARM: dts: mediatek: mt6323: add AUXADC support 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: <20260602-mt6323-adc-v1-4-68ec737508ee@protonmail.com> References: <20260602-mt6323-adc-v1-0-68ec737508ee@protonmail.com> In-Reply-To: <20260602-mt6323-adc-v1-0-68ec737508ee@protonmail.com> To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Matthias Brugger , AngeloGioacchino Del Regno , Lee Jones Cc: linux-iio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Ben Grisdale , Roman Vivchar X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1780404414; l=814; i=rva333@protonmail.com; s=20260510; h=from:subject:message-id; bh=WC9jUSlABoGBdBqPU8PZ4ZIU5LJl1TAO11/EPH3tS8U=; b=p6K4bcmO7oG7L8/cv4DP5Dy2KGtC5QitgkODob+PUEPUi2NsUMycmvhmjhl7+oEORuDECXnQb 8wpeVkby3ogCqga99duGgN2KLBpDFhGoKg+mv/CV+vo4Uu2lvvRjKli X-Developer-Key: i=rva333@protonmail.com; a=ed25519; pk=zww/nWjBGoQ4POXCG0BV6fx2iuXK6jx77rsKPA5YK5Y= X-Endpoint-Received: by B4 Relay for rva333@protonmail.com/20260510 with auth_id=777 X-Original-From: Roman Vivchar Reply-To: rva333@protonmail.com From: Roman Vivchar Add the devicetree node for the mt6323 AUXADC. Tested-by: Ben Grisdale # Amazon Echo Dot (2nd Ge= neration) Signed-off-by: Roman Vivchar --- arch/arm/boot/dts/mediatek/mt6323.dtsi | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm/boot/dts/mediatek/mt6323.dtsi b/arch/arm/boot/dts/med= iatek/mt6323.dtsi index c230c865116d..c070f4b0936c 100644 --- a/arch/arm/boot/dts/mediatek/mt6323.dtsi +++ b/arch/arm/boot/dts/mediatek/mt6323.dtsi @@ -14,6 +14,11 @@ pmic: mt6323 { interrupt-controller; #interrupt-cells =3D <2>; =20 + mt6323_adc: adc { + compatible =3D "mediatek,mt6323-auxadc"; + #io-channel-cells =3D <1>; + }; + mt6323_leds: leds { compatible =3D "mediatek,mt6323-led"; #address-cells =3D <1>; --=20 2.54.0