* [PATCH v3 2/2] mfd: mt6397: Add basic support for MT6331+MT6332 PMIC
@ 2022-06-17 11:07 ` AngeloGioacchino Del Regno
0 siblings, 0 replies; 12+ messages in thread
From: AngeloGioacchino Del Regno @ 2022-06-17 11:07 UTC (permalink / raw)
To: lee.jones
Cc: robh+dt, krzysztof.kozlowski+dt, matthias.bgg,
angelogioacchino.delregno, johnson.wang, hsin-hsiung.wang,
devicetree, linux-arm-kernel, linux-mediatek, linux-kernel
Add support for the MT6331 PMIC with MT6332 Companion PMIC, found
in MT6795 Helio X10 smartphone platforms.
This combo has support for multiple devices but, for a start,
only the following have been implemented:
- Regulators (two instances, one in MT6331, one in MT6332)
- RTC (MT6331)
- Keys (MT6331)
- Interrupts (MT6331 also dispatches MT6332's interrupts)
There's more to be implemented, especially for MT6332, which
will come at a later stage.
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
---
drivers/mfd/mt6397-core.c | 47 ++
drivers/mfd/mt6397-irq.c | 9 +-
include/linux/mfd/mt6331/core.h | 40 ++
include/linux/mfd/mt6331/registers.h | 584 ++++++++++++++++++++++++
include/linux/mfd/mt6332/core.h | 65 +++
include/linux/mfd/mt6332/registers.h | 642 +++++++++++++++++++++++++++
include/linux/mfd/mt6397/core.h | 2 +
7 files changed, 1388 insertions(+), 1 deletion(-)
create mode 100644 include/linux/mfd/mt6331/core.h
create mode 100644 include/linux/mfd/mt6331/registers.h
create mode 100644 include/linux/mfd/mt6332/core.h
create mode 100644 include/linux/mfd/mt6332/registers.h
diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
index 1a368ad08f58..1c974132dc0b 100644
--- a/drivers/mfd/mt6397-core.c
+++ b/drivers/mfd/mt6397-core.c
@@ -12,10 +12,12 @@
#include <linux/regmap.h>
#include <linux/mfd/core.h>
#include <linux/mfd/mt6323/core.h>
+#include <linux/mfd/mt6331/core.h>
#include <linux/mfd/mt6358/core.h>
#include <linux/mfd/mt6359/core.h>
#include <linux/mfd/mt6397/core.h>
#include <linux/mfd/mt6323/registers.h>
+#include <linux/mfd/mt6331/registers.h>
#include <linux/mfd/mt6358/registers.h>
#include <linux/mfd/mt6359/registers.h>
#include <linux/mfd/mt6397/registers.h>
@@ -23,6 +25,9 @@
#define MT6323_RTC_BASE 0x8000
#define MT6323_RTC_SIZE 0x40
+#define MT6331_RTC_BASE 0x4000
+#define MT6331_RTC_SIZE 0x40
+
#define MT6358_RTC_BASE 0x0588
#define MT6358_RTC_SIZE 0x3c
@@ -37,6 +42,11 @@ static const struct resource mt6323_rtc_resources[] = {
DEFINE_RES_IRQ(MT6323_IRQ_STATUS_RTC),
};
+static const struct resource mt6331_rtc_resources[] = {
+ DEFINE_RES_MEM(MT6331_RTC_BASE, MT6331_RTC_SIZE),
+ DEFINE_RES_IRQ(MT6331_IRQ_STATUS_RTC),
+};
+
static const struct resource mt6358_rtc_resources[] = {
DEFINE_RES_MEM(MT6358_RTC_BASE, MT6358_RTC_SIZE),
DEFINE_RES_IRQ(MT6358_IRQ_RTC),
@@ -66,6 +76,11 @@ static const struct resource mt6323_keys_resources[] = {
DEFINE_RES_IRQ_NAMED(MT6323_IRQ_STATUS_FCHRKEY, "homekey"),
};
+static const struct resource mt6331_keys_resources[] = {
+ DEFINE_RES_IRQ_NAMED(MT6331_IRQ_STATUS_PWRKEY, "powerkey"),
+ DEFINE_RES_IRQ_NAMED(MT6331_IRQ_STATUS_HOMEKEY, "homekey"),
+};
+
static const struct resource mt6397_keys_resources[] = {
DEFINE_RES_IRQ_NAMED(MT6397_IRQ_PWRKEY, "powerkey"),
DEFINE_RES_IRQ_NAMED(MT6397_IRQ_HOMEKEY, "homekey"),
@@ -100,6 +115,27 @@ static const struct mfd_cell mt6323_devs[] = {
},
};
+/* MT6331 is always used in combination with MT6332 */
+static const struct mfd_cell mt6331_mt6332_devs[] = {
+ {
+ .name = "mt6331-rtc",
+ .num_resources = ARRAY_SIZE(mt6331_rtc_resources),
+ .resources = mt6331_rtc_resources,
+ .of_compatible = "mediatek,mt6331-rtc",
+ }, {
+ .name = "mt6331-regulator",
+ .of_compatible = "mediatek,mt6331-regulator"
+ }, {
+ .name = "mt6332-regulator",
+ .of_compatible = "mediatek,mt6332-regulator"
+ }, {
+ .name = "mtk-pmic-keys",
+ .num_resources = ARRAY_SIZE(mt6331_keys_resources),
+ .resources = mt6331_keys_resources,
+ .of_compatible = "mediatek,mt6331-keys"
+ },
+};
+
static const struct mfd_cell mt6358_devs[] = {
{
.name = "mt6358-regulator",
@@ -179,6 +215,14 @@ static const struct chip_data mt6323_core = {
.irq_init = mt6397_irq_init,
};
+static const struct chip_data mt6331_mt6332_core = {
+ .cid_addr = MT6331_HWCID,
+ .cid_shift = 0,
+ .cells = mt6331_mt6332_devs,
+ .cell_size = ARRAY_SIZE(mt6331_mt6332_devs),
+ .irq_init = mt6397_irq_init,
+};
+
static const struct chip_data mt6358_core = {
.cid_addr = MT6358_SWCID,
.cid_shift = 8,
@@ -261,6 +305,9 @@ static const struct of_device_id mt6397_of_match[] = {
{
.compatible = "mediatek,mt6323",
.data = &mt6323_core,
+ }, {
+ .compatible = "mediatek,mt6331",
+ .data = &mt6331_mt6332_core,
}, {
.compatible = "mediatek,mt6358",
.data = &mt6358_core,
diff --git a/drivers/mfd/mt6397-irq.c b/drivers/mfd/mt6397-irq.c
index 2924919da991..eff53fed8fe7 100644
--- a/drivers/mfd/mt6397-irq.c
+++ b/drivers/mfd/mt6397-irq.c
@@ -12,6 +12,8 @@
#include <linux/suspend.h>
#include <linux/mfd/mt6323/core.h>
#include <linux/mfd/mt6323/registers.h>
+#include <linux/mfd/mt6331/core.h>
+#include <linux/mfd/mt6331/registers.h>
#include <linux/mfd/mt6397/core.h>
#include <linux/mfd/mt6397/registers.h>
@@ -172,7 +174,12 @@ int mt6397_irq_init(struct mt6397_chip *chip)
chip->int_status[0] = MT6323_INT_STATUS0;
chip->int_status[1] = MT6323_INT_STATUS1;
break;
-
+ case MT6331_CHIP_ID:
+ chip->int_con[0] = MT6331_INT_CON0;
+ chip->int_con[1] = MT6331_INT_CON1;
+ chip->int_status[0] = MT6331_INT_STATUS_CON0;
+ chip->int_status[1] = MT6331_INT_STATUS_CON1;
+ break;
case MT6391_CHIP_ID:
case MT6397_CHIP_ID:
chip->int_con[0] = MT6397_INT_CON0;
diff --git a/include/linux/mfd/mt6331/core.h b/include/linux/mfd/mt6331/core.h
new file mode 100644
index 000000000000..df8e6b1e4bc1
--- /dev/null
+++ b/include/linux/mfd/mt6331/core.h
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+ */
+
+#ifndef __MFD_MT6331_CORE_H__
+#define __MFD_MT6331_CORE_H__
+
+enum mt6331_irq_status_numbers {
+ MT6331_IRQ_STATUS_PWRKEY = 0,
+ MT6331_IRQ_STATUS_HOMEKEY,
+ MT6331_IRQ_STATUS_CHRDET,
+ MT6331_IRQ_STATUS_THR_H,
+ MT6331_IRQ_STATUS_THR_L,
+ MT6331_IRQ_STATUS_BAT_H,
+ MT6331_IRQ_STATUS_BAT_L,
+ MT6331_IRQ_STATUS_RTC,
+ MT6331_IRQ_STATUS_AUDIO,
+ MT6331_IRQ_STATUS_MAD,
+ MT6331_IRQ_STATUS_ACCDET,
+ MT6331_IRQ_STATUS_ACCDET_EINT,
+ MT6331_IRQ_STATUS_ACCDET_NEGV = 12,
+ MT6331_IRQ_STATUS_VDVFS11_OC = 16,
+ MT6331_IRQ_STATUS_VDVFS12_OC,
+ MT6331_IRQ_STATUS_VDVFS13_OC,
+ MT6331_IRQ_STATUS_VDVFS14_OC,
+ MT6331_IRQ_STATUS_GPU_OC,
+ MT6331_IRQ_STATUS_VCORE1_OC,
+ MT6331_IRQ_STATUS_VCORE2_OC,
+ MT6331_IRQ_STATUS_VIO18_OC,
+ MT6331_IRQ_STATUS_LDO_OC,
+ MT6331_IRQ_STATUS_NR,
+};
+
+#define MT6331_IRQ_CON0_BASE MT6331_IRQ_STATUS_PWRKEY
+#define MT6331_IRQ_CON0_BITS (MT6331_IRQ_STATUS_ACCDET_NEGV + 1)
+#define MT6331_IRQ_CON1_BASE MT6331_IRQ_STATUS_VDVFS11_OC
+#define MT6331_IRQ_CON1_BITS (MT6331_IRQ_STATUS_LDO_OC - MT6331_IRQ_STATUS_VDFS11_OC + 1)
+
+#endif /* __MFD_MT6331_CORE_H__ */
diff --git a/include/linux/mfd/mt6331/registers.h b/include/linux/mfd/mt6331/registers.h
new file mode 100644
index 000000000000..e2be6bccd1a7
--- /dev/null
+++ b/include/linux/mfd/mt6331/registers.h
@@ -0,0 +1,584 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+ */
+
+#ifndef __MFD_MT6331_REGISTERS_H__
+#define __MFD_MT6331_REGISTERS_H__
+
+/* PMIC Registers */
+#define MT6331_STRUP_CON0 0x0
+#define MT6331_STRUP_CON2 0x2
+#define MT6331_STRUP_CON3 0x4
+#define MT6331_STRUP_CON4 0x6
+#define MT6331_STRUP_CON5 0x8
+#define MT6331_STRUP_CON6 0xA
+#define MT6331_STRUP_CON7 0xC
+#define MT6331_STRUP_CON8 0xE
+#define MT6331_STRUP_CON9 0x10
+#define MT6331_STRUP_CON10 0x12
+#define MT6331_STRUP_CON11 0x14
+#define MT6331_STRUP_CON12 0x16
+#define MT6331_STRUP_CON13 0x18
+#define MT6331_STRUP_CON14 0x1A
+#define MT6331_STRUP_CON15 0x1C
+#define MT6331_STRUP_CON16 0x1E
+#define MT6331_STRUP_CON17 0x20
+#define MT6331_STRUP_CON18 0x22
+#define MT6331_HWCID 0x100
+#define MT6331_SWCID 0x102
+#define MT6331_EXT_PMIC_STATUS 0x104
+#define MT6331_TOP_CON 0x106
+#define MT6331_TEST_OUT 0x108
+#define MT6331_TEST_CON0 0x10A
+#define MT6331_TEST_CON1 0x10C
+#define MT6331_TESTMODE_SW 0x10E
+#define MT6331_EN_STATUS0 0x110
+#define MT6331_EN_STATUS1 0x112
+#define MT6331_EN_STATUS2 0x114
+#define MT6331_OCSTATUS0 0x116
+#define MT6331_OCSTATUS1 0x118
+#define MT6331_OCSTATUS2 0x11A
+#define MT6331_PGSTATUS 0x11C
+#define MT6331_TOPSTATUS 0x11E
+#define MT6331_TDSEL_CON 0x120
+#define MT6331_RDSEL_CON 0x122
+#define MT6331_SMT_CON0 0x124
+#define MT6331_SMT_CON1 0x126
+#define MT6331_SMT_CON2 0x128
+#define MT6331_DRV_CON0 0x12A
+#define MT6331_DRV_CON1 0x12C
+#define MT6331_DRV_CON2 0x12E
+#define MT6331_DRV_CON3 0x130
+#define MT6331_TOP_STATUS 0x132
+#define MT6331_TOP_STATUS_SET 0x134
+#define MT6331_TOP_STATUS_CLR 0x136
+#define MT6331_TOP_CKPDN_CON0 0x138
+#define MT6331_TOP_CKPDN_CON0_SET 0x13A
+#define MT6331_TOP_CKPDN_CON0_CLR 0x13C
+#define MT6331_TOP_CKPDN_CON1 0x13E
+#define MT6331_TOP_CKPDN_CON1_SET 0x140
+#define MT6331_TOP_CKPDN_CON1_CLR 0x142
+#define MT6331_TOP_CKPDN_CON2 0x144
+#define MT6331_TOP_CKPDN_CON2_SET 0x146
+#define MT6331_TOP_CKPDN_CON2_CLR 0x148
+#define MT6331_TOP_CKSEL_CON 0x14A
+#define MT6331_TOP_CKSEL_CON_SET 0x14C
+#define MT6331_TOP_CKSEL_CON_CLR 0x14E
+#define MT6331_TOP_CKHWEN_CON 0x150
+#define MT6331_TOP_CKHWEN_CON_SET 0x152
+#define MT6331_TOP_CKHWEN_CON_CLR 0x154
+#define MT6331_TOP_CKTST_CON0 0x156
+#define MT6331_TOP_CKTST_CON1 0x158
+#define MT6331_TOP_CLKSQ 0x15A
+#define MT6331_TOP_CLKSQ_SET 0x15C
+#define MT6331_TOP_CLKSQ_CLR 0x15E
+#define MT6331_TOP_RST_CON 0x160
+#define MT6331_TOP_RST_CON_SET 0x162
+#define MT6331_TOP_RST_CON_CLR 0x164
+#define MT6331_TOP_RST_MISC 0x166
+#define MT6331_TOP_RST_MISC_SET 0x168
+#define MT6331_TOP_RST_MISC_CLR 0x16A
+#define MT6331_INT_CON0 0x16C
+#define MT6331_INT_CON0_SET 0x16E
+#define MT6331_INT_CON0_CLR 0x170
+#define MT6331_INT_CON1 0x172
+#define MT6331_INT_CON1_SET 0x174
+#define MT6331_INT_CON1_CLR 0x176
+#define MT6331_INT_MISC_CON 0x178
+#define MT6331_INT_MISC_CON_SET 0x17A
+#define MT6331_INT_MISC_CON_CLR 0x17C
+#define MT6331_INT_STATUS_CON0 0x17E
+#define MT6331_INT_STATUS_CON1 0x180
+#define MT6331_OC_GEAR_0 0x182
+#define MT6331_FQMTR_CON0 0x184
+#define MT6331_FQMTR_CON1 0x186
+#define MT6331_FQMTR_CON2 0x188
+#define MT6331_RG_SPI_CON 0x18A
+#define MT6331_DEW_DIO_EN 0x18C
+#define MT6331_DEW_READ_TEST 0x18E
+#define MT6331_DEW_WRITE_TEST 0x190
+#define MT6331_DEW_CRC_SWRST 0x192
+#define MT6331_DEW_CRC_EN 0x194
+#define MT6331_DEW_CRC_VAL 0x196
+#define MT6331_DEW_DBG_MON_SEL 0x198
+#define MT6331_DEW_CIPHER_KEY_SEL 0x19A
+#define MT6331_DEW_CIPHER_IV_SEL 0x19C
+#define MT6331_DEW_CIPHER_EN 0x19E
+#define MT6331_DEW_CIPHER_RDY 0x1A0
+#define MT6331_DEW_CIPHER_MODE 0x1A2
+#define MT6331_DEW_CIPHER_SWRST 0x1A4
+#define MT6331_DEW_RDDMY_NO 0x1A6
+#define MT6331_INT_TYPE_CON0 0x1A8
+#define MT6331_INT_TYPE_CON0_SET 0x1AA
+#define MT6331_INT_TYPE_CON0_CLR 0x1AC
+#define MT6331_INT_TYPE_CON1 0x1AE
+#define MT6331_INT_TYPE_CON1_SET 0x1B0
+#define MT6331_INT_TYPE_CON1_CLR 0x1B2
+#define MT6331_INT_STA 0x1B4
+#define MT6331_BUCK_ALL_CON0 0x200
+#define MT6331_BUCK_ALL_CON1 0x202
+#define MT6331_BUCK_ALL_CON2 0x204
+#define MT6331_BUCK_ALL_CON3 0x206
+#define MT6331_BUCK_ALL_CON4 0x208
+#define MT6331_BUCK_ALL_CON5 0x20A
+#define MT6331_BUCK_ALL_CON6 0x20C
+#define MT6331_BUCK_ALL_CON7 0x20E
+#define MT6331_BUCK_ALL_CON8 0x210
+#define MT6331_BUCK_ALL_CON9 0x212
+#define MT6331_BUCK_ALL_CON10 0x214
+#define MT6331_BUCK_ALL_CON11 0x216
+#define MT6331_BUCK_ALL_CON12 0x218
+#define MT6331_BUCK_ALL_CON13 0x21A
+#define MT6331_BUCK_ALL_CON14 0x21C
+#define MT6331_BUCK_ALL_CON15 0x21E
+#define MT6331_BUCK_ALL_CON16 0x220
+#define MT6331_BUCK_ALL_CON17 0x222
+#define MT6331_BUCK_ALL_CON18 0x224
+#define MT6331_BUCK_ALL_CON19 0x226
+#define MT6331_BUCK_ALL_CON20 0x228
+#define MT6331_BUCK_ALL_CON21 0x22A
+#define MT6331_BUCK_ALL_CON22 0x22C
+#define MT6331_BUCK_ALL_CON23 0x22E
+#define MT6331_BUCK_ALL_CON24 0x230
+#define MT6331_BUCK_ALL_CON25 0x232
+#define MT6331_BUCK_ALL_CON26 0x234
+#define MT6331_VDVFS11_CON0 0x236
+#define MT6331_VDVFS11_CON1 0x238
+#define MT6331_VDVFS11_CON2 0x23A
+#define MT6331_VDVFS11_CON3 0x23C
+#define MT6331_VDVFS11_CON4 0x23E
+#define MT6331_VDVFS11_CON5 0x240
+#define MT6331_VDVFS11_CON6 0x242
+#define MT6331_VDVFS11_CON7 0x244
+#define MT6331_VDVFS11_CON8 0x246
+#define MT6331_VDVFS11_CON9 0x248
+#define MT6331_VDVFS11_CON10 0x24A
+#define MT6331_VDVFS11_CON11 0x24C
+#define MT6331_VDVFS11_CON12 0x24E
+#define MT6331_VDVFS11_CON13 0x250
+#define MT6331_VDVFS11_CON14 0x252
+#define MT6331_VDVFS11_CON18 0x25A
+#define MT6331_VDVFS11_CON19 0x25C
+#define MT6331_VDVFS11_CON20 0x25E
+#define MT6331_VDVFS11_CON21 0x260
+#define MT6331_VDVFS11_CON22 0x262
+#define MT6331_VDVFS11_CON23 0x264
+#define MT6331_VDVFS11_CON24 0x266
+#define MT6331_VDVFS11_CON25 0x268
+#define MT6331_VDVFS11_CON26 0x26A
+#define MT6331_VDVFS11_CON27 0x26C
+#define MT6331_VDVFS12_CON0 0x26E
+#define MT6331_VDVFS12_CON1 0x270
+#define MT6331_VDVFS12_CON2 0x272
+#define MT6331_VDVFS12_CON3 0x274
+#define MT6331_VDVFS12_CON4 0x276
+#define MT6331_VDVFS12_CON5 0x278
+#define MT6331_VDVFS12_CON6 0x27A
+#define MT6331_VDVFS12_CON7 0x27C
+#define MT6331_VDVFS12_CON8 0x27E
+#define MT6331_VDVFS12_CON9 0x280
+#define MT6331_VDVFS12_CON10 0x282
+#define MT6331_VDVFS12_CON11 0x284
+#define MT6331_VDVFS12_CON12 0x286
+#define MT6331_VDVFS12_CON13 0x288
+#define MT6331_VDVFS12_CON14 0x28A
+#define MT6331_VDVFS12_CON18 0x292
+#define MT6331_VDVFS12_CON19 0x294
+#define MT6331_VDVFS12_CON20 0x296
+#define MT6331_VDVFS13_CON0 0x298
+#define MT6331_VDVFS13_CON1 0x29A
+#define MT6331_VDVFS13_CON2 0x29C
+#define MT6331_VDVFS13_CON3 0x29E
+#define MT6331_VDVFS13_CON4 0x2A0
+#define MT6331_VDVFS13_CON5 0x2A2
+#define MT6331_VDVFS13_CON6 0x2A4
+#define MT6331_VDVFS13_CON7 0x2A6
+#define MT6331_VDVFS13_CON8 0x2A8
+#define MT6331_VDVFS13_CON9 0x2AA
+#define MT6331_VDVFS13_CON10 0x2AC
+#define MT6331_VDVFS13_CON11 0x2AE
+#define MT6331_VDVFS13_CON12 0x2B0
+#define MT6331_VDVFS13_CON13 0x2B2
+#define MT6331_VDVFS13_CON14 0x2B4
+#define MT6331_VDVFS13_CON18 0x2BC
+#define MT6331_VDVFS13_CON19 0x2BE
+#define MT6331_VDVFS13_CON20 0x2C0
+#define MT6331_VDVFS14_CON0 0x2C2
+#define MT6331_VDVFS14_CON1 0x2C4
+#define MT6331_VDVFS14_CON2 0x2C6
+#define MT6331_VDVFS14_CON3 0x2C8
+#define MT6331_VDVFS14_CON4 0x2CA
+#define MT6331_VDVFS14_CON5 0x2CC
+#define MT6331_VDVFS14_CON6 0x2CE
+#define MT6331_VDVFS14_CON7 0x2D0
+#define MT6331_VDVFS14_CON8 0x2D2
+#define MT6331_VDVFS14_CON9 0x2D4
+#define MT6331_VDVFS14_CON10 0x2D6
+#define MT6331_VDVFS14_CON11 0x2D8
+#define MT6331_VDVFS14_CON12 0x2DA
+#define MT6331_VDVFS14_CON13 0x2DC
+#define MT6331_VDVFS14_CON14 0x2DE
+#define MT6331_VDVFS14_CON18 0x2E6
+#define MT6331_VDVFS14_CON19 0x2E8
+#define MT6331_VDVFS14_CON20 0x2EA
+#define MT6331_VGPU_CON0 0x300
+#define MT6331_VGPU_CON1 0x302
+#define MT6331_VGPU_CON2 0x304
+#define MT6331_VGPU_CON3 0x306
+#define MT6331_VGPU_CON4 0x308
+#define MT6331_VGPU_CON5 0x30A
+#define MT6331_VGPU_CON6 0x30C
+#define MT6331_VGPU_CON7 0x30E
+#define MT6331_VGPU_CON8 0x310
+#define MT6331_VGPU_CON9 0x312
+#define MT6331_VGPU_CON10 0x314
+#define MT6331_VGPU_CON11 0x316
+#define MT6331_VGPU_CON12 0x318
+#define MT6331_VGPU_CON13 0x31A
+#define MT6331_VGPU_CON14 0x31C
+#define MT6331_VGPU_CON15 0x31E
+#define MT6331_VGPU_CON16 0x320
+#define MT6331_VGPU_CON17 0x322
+#define MT6331_VGPU_CON18 0x324
+#define MT6331_VGPU_CON19 0x326
+#define MT6331_VGPU_CON20 0x328
+#define MT6331_VCORE1_CON0 0x32A
+#define MT6331_VCORE1_CON1 0x32C
+#define MT6331_VCORE1_CON2 0x32E
+#define MT6331_VCORE1_CON3 0x330
+#define MT6331_VCORE1_CON4 0x332
+#define MT6331_VCORE1_CON5 0x334
+#define MT6331_VCORE1_CON6 0x336
+#define MT6331_VCORE1_CON7 0x338
+#define MT6331_VCORE1_CON8 0x33A
+#define MT6331_VCORE1_CON9 0x33C
+#define MT6331_VCORE1_CON10 0x33E
+#define MT6331_VCORE1_CON11 0x340
+#define MT6331_VCORE1_CON12 0x342
+#define MT6331_VCORE1_CON13 0x344
+#define MT6331_VCORE1_CON14 0x346
+#define MT6331_VCORE1_CON15 0x348
+#define MT6331_VCORE1_CON16 0x34A
+#define MT6331_VCORE1_CON17 0x34C
+#define MT6331_VCORE1_CON18 0x34E
+#define MT6331_VCORE1_CON19 0x350
+#define MT6331_VCORE1_CON20 0x352
+#define MT6331_VCORE2_CON0 0x354
+#define MT6331_VCORE2_CON1 0x356
+#define MT6331_VCORE2_CON2 0x358
+#define MT6331_VCORE2_CON3 0x35A
+#define MT6331_VCORE2_CON4 0x35C
+#define MT6331_VCORE2_CON5 0x35E
+#define MT6331_VCORE2_CON6 0x360
+#define MT6331_VCORE2_CON7 0x362
+#define MT6331_VCORE2_CON8 0x364
+#define MT6331_VCORE2_CON9 0x366
+#define MT6331_VCORE2_CON10 0x368
+#define MT6331_VCORE2_CON11 0x36A
+#define MT6331_VCORE2_CON12 0x36C
+#define MT6331_VCORE2_CON13 0x36E
+#define MT6331_VCORE2_CON14 0x370
+#define MT6331_VCORE2_CON15 0x372
+#define MT6331_VCORE2_CON16 0x374
+#define MT6331_VCORE2_CON17 0x376
+#define MT6331_VCORE2_CON18 0x378
+#define MT6331_VCORE2_CON19 0x37A
+#define MT6331_VCORE2_CON20 0x37C
+#define MT6331_VCORE2_CON21 0x37E
+#define MT6331_VIO18_CON0 0x380
+#define MT6331_VIO18_CON1 0x382
+#define MT6331_VIO18_CON2 0x384
+#define MT6331_VIO18_CON3 0x386
+#define MT6331_VIO18_CON4 0x388
+#define MT6331_VIO18_CON5 0x38A
+#define MT6331_VIO18_CON6 0x38C
+#define MT6331_VIO18_CON7 0x38E
+#define MT6331_VIO18_CON8 0x390
+#define MT6331_VIO18_CON9 0x392
+#define MT6331_VIO18_CON10 0x394
+#define MT6331_VIO18_CON11 0x396
+#define MT6331_VIO18_CON12 0x398
+#define MT6331_VIO18_CON13 0x39A
+#define MT6331_VIO18_CON14 0x39C
+#define MT6331_VIO18_CON15 0x39E
+#define MT6331_VIO18_CON16 0x3A0
+#define MT6331_VIO18_CON17 0x3A2
+#define MT6331_VIO18_CON18 0x3A4
+#define MT6331_VIO18_CON19 0x3A6
+#define MT6331_VIO18_CON20 0x3A8
+#define MT6331_BUCK_K_CON0 0x3AA
+#define MT6331_BUCK_K_CON1 0x3AC
+#define MT6331_BUCK_K_CON2 0x3AE
+#define MT6331_BUCK_K_CON3 0x3B0
+#define MT6331_ZCD_CON0 0x400
+#define MT6331_ZCD_CON1 0x402
+#define MT6331_ZCD_CON2 0x404
+#define MT6331_ZCD_CON3 0x406
+#define MT6331_ZCD_CON4 0x408
+#define MT6331_ZCD_CON5 0x40A
+#define MT6331_ISINK0_CON0 0x40C
+#define MT6331_ISINK0_CON1 0x40E
+#define MT6331_ISINK0_CON2 0x410
+#define MT6331_ISINK0_CON3 0x412
+#define MT6331_ISINK0_CON4 0x414
+#define MT6331_ISINK1_CON0 0x416
+#define MT6331_ISINK1_CON1 0x418
+#define MT6331_ISINK1_CON2 0x41A
+#define MT6331_ISINK1_CON3 0x41C
+#define MT6331_ISINK1_CON4 0x41E
+#define MT6331_ISINK2_CON0 0x420
+#define MT6331_ISINK2_CON1 0x422
+#define MT6331_ISINK2_CON2 0x424
+#define MT6331_ISINK2_CON3 0x426
+#define MT6331_ISINK2_CON4 0x428
+#define MT6331_ISINK3_CON0 0x42A
+#define MT6331_ISINK3_CON1 0x42C
+#define MT6331_ISINK3_CON2 0x42E
+#define MT6331_ISINK3_CON3 0x430
+#define MT6331_ISINK3_CON4 0x432
+#define MT6331_ISINK_ANA0 0x434
+#define MT6331_ISINK_ANA1 0x436
+#define MT6331_ISINK_PHASE_DLY 0x438
+#define MT6331_ISINK_EN_CTRL 0x43A
+#define MT6331_ANALDO_CON0 0x500
+#define MT6331_ANALDO_CON1 0x502
+#define MT6331_ANALDO_CON2 0x504
+#define MT6331_ANALDO_CON3 0x506
+#define MT6331_ANALDO_CON4 0x508
+#define MT6331_ANALDO_CON5 0x50A
+#define MT6331_ANALDO_CON6 0x50C
+#define MT6331_ANALDO_CON7 0x50E
+#define MT6331_ANALDO_CON8 0x510
+#define MT6331_ANALDO_CON9 0x512
+#define MT6331_ANALDO_CON10 0x514
+#define MT6331_ANALDO_CON11 0x516
+#define MT6331_ANALDO_CON12 0x518
+#define MT6331_ANALDO_CON13 0x51A
+#define MT6331_SYSLDO_CON0 0x51C
+#define MT6331_SYSLDO_CON1 0x51E
+#define MT6331_SYSLDO_CON2 0x520
+#define MT6331_SYSLDO_CON3 0x522
+#define MT6331_SYSLDO_CON4 0x524
+#define MT6331_SYSLDO_CON5 0x526
+#define MT6331_SYSLDO_CON6 0x528
+#define MT6331_SYSLDO_CON7 0x52A
+#define MT6331_SYSLDO_CON8 0x52C
+#define MT6331_SYSLDO_CON9 0x52E
+#define MT6331_SYSLDO_CON10 0x530
+#define MT6331_SYSLDO_CON11 0x532
+#define MT6331_SYSLDO_CON12 0x534
+#define MT6331_SYSLDO_CON13 0x536
+#define MT6331_SYSLDO_CON14 0x538
+#define MT6331_SYSLDO_CON15 0x53A
+#define MT6331_SYSLDO_CON16 0x53C
+#define MT6331_SYSLDO_CON17 0x53E
+#define MT6331_SYSLDO_CON18 0x540
+#define MT6331_SYSLDO_CON19 0x542
+#define MT6331_SYSLDO_CON20 0x544
+#define MT6331_SYSLDO_CON21 0x546
+#define MT6331_DIGLDO_CON0 0x548
+#define MT6331_DIGLDO_CON1 0x54A
+#define MT6331_DIGLDO_CON2 0x54C
+#define MT6331_DIGLDO_CON3 0x54E
+#define MT6331_DIGLDO_CON4 0x550
+#define MT6331_DIGLDO_CON5 0x552
+#define MT6331_DIGLDO_CON6 0x554
+#define MT6331_DIGLDO_CON7 0x556
+#define MT6331_DIGLDO_CON8 0x558
+#define MT6331_DIGLDO_CON9 0x55A
+#define MT6331_DIGLDO_CON10 0x55C
+#define MT6331_DIGLDO_CON11 0x55E
+#define MT6331_DIGLDO_CON12 0x560
+#define MT6331_DIGLDO_CON13 0x562
+#define MT6331_DIGLDO_CON14 0x564
+#define MT6331_DIGLDO_CON15 0x566
+#define MT6331_DIGLDO_CON16 0x568
+#define MT6331_DIGLDO_CON17 0x56A
+#define MT6331_DIGLDO_CON18 0x56C
+#define MT6331_DIGLDO_CON19 0x56E
+#define MT6331_DIGLDO_CON20 0x570
+#define MT6331_DIGLDO_CON21 0x572
+#define MT6331_DIGLDO_CON22 0x574
+#define MT6331_DIGLDO_CON23 0x576
+#define MT6331_DIGLDO_CON24 0x578
+#define MT6331_DIGLDO_CON25 0x57A
+#define MT6331_DIGLDO_CON26 0x57C
+#define MT6331_DIGLDO_CON27 0x57E
+#define MT6331_DIGLDO_CON28 0x580
+#define MT6331_OTP_CON0 0x600
+#define MT6331_OTP_CON1 0x602
+#define MT6331_OTP_CON2 0x604
+#define MT6331_OTP_CON3 0x606
+#define MT6331_OTP_CON4 0x608
+#define MT6331_OTP_CON5 0x60A
+#define MT6331_OTP_CON6 0x60C
+#define MT6331_OTP_CON7 0x60E
+#define MT6331_OTP_CON8 0x610
+#define MT6331_OTP_CON9 0x612
+#define MT6331_OTP_CON10 0x614
+#define MT6331_OTP_CON11 0x616
+#define MT6331_OTP_CON12 0x618
+#define MT6331_OTP_CON13 0x61A
+#define MT6331_OTP_CON14 0x61C
+#define MT6331_OTP_DOUT_0_15 0x61E
+#define MT6331_OTP_DOUT_16_31 0x620
+#define MT6331_OTP_DOUT_32_47 0x622
+#define MT6331_OTP_DOUT_48_63 0x624
+#define MT6331_OTP_DOUT_64_79 0x626
+#define MT6331_OTP_DOUT_80_95 0x628
+#define MT6331_OTP_DOUT_96_111 0x62A
+#define MT6331_OTP_DOUT_112_127 0x62C
+#define MT6331_OTP_DOUT_128_143 0x62E
+#define MT6331_OTP_DOUT_144_159 0x630
+#define MT6331_OTP_DOUT_160_175 0x632
+#define MT6331_OTP_DOUT_176_191 0x634
+#define MT6331_OTP_DOUT_192_207 0x636
+#define MT6331_OTP_DOUT_208_223 0x638
+#define MT6331_OTP_DOUT_224_239 0x63A
+#define MT6331_OTP_DOUT_240_255 0x63C
+#define MT6331_OTP_VAL_0_15 0x63E
+#define MT6331_OTP_VAL_16_31 0x640
+#define MT6331_OTP_VAL_32_47 0x642
+#define MT6331_OTP_VAL_48_63 0x644
+#define MT6331_OTP_VAL_64_79 0x646
+#define MT6331_OTP_VAL_80_95 0x648
+#define MT6331_OTP_VAL_96_111 0x64A
+#define MT6331_OTP_VAL_112_127 0x64C
+#define MT6331_OTP_VAL_128_143 0x64E
+#define MT6331_OTP_VAL_144_159 0x650
+#define MT6331_OTP_VAL_160_175 0x652
+#define MT6331_OTP_VAL_176_191 0x654
+#define MT6331_OTP_VAL_192_207 0x656
+#define MT6331_OTP_VAL_208_223 0x658
+#define MT6331_OTP_VAL_224_239 0x65A
+#define MT6331_OTP_VAL_240_255 0x65C
+#define MT6331_RTC_MIX_CON0 0x65E
+#define MT6331_RTC_MIX_CON1 0x660
+#define MT6331_AUDDAC_CFG0 0x662
+#define MT6331_AUDBUF_CFG0 0x664
+#define MT6331_AUDBUF_CFG1 0x666
+#define MT6331_AUDBUF_CFG2 0x668
+#define MT6331_AUDBUF_CFG3 0x66A
+#define MT6331_AUDBUF_CFG4 0x66C
+#define MT6331_AUDBUF_CFG5 0x66E
+#define MT6331_AUDBUF_CFG6 0x670
+#define MT6331_AUDBUF_CFG7 0x672
+#define MT6331_AUDBUF_CFG8 0x674
+#define MT6331_IBIASDIST_CFG0 0x676
+#define MT6331_AUDCLKGEN_CFG0 0x678
+#define MT6331_AUDLDO_CFG0 0x67A
+#define MT6331_AUDDCDC_CFG0 0x67C
+#define MT6331_AUDDCDC_CFG1 0x67E
+#define MT6331_AUDNVREGGLB_CFG0 0x680
+#define MT6331_AUD_NCP0 0x682
+#define MT6331_AUD_ZCD_CFG0 0x684
+#define MT6331_AUDPREAMP_CFG0 0x686
+#define MT6331_AUDPREAMP_CFG1 0x688
+#define MT6331_AUDPREAMP_CFG2 0x68A
+#define MT6331_AUDADC_CFG0 0x68C
+#define MT6331_AUDADC_CFG1 0x68E
+#define MT6331_AUDADC_CFG2 0x690
+#define MT6331_AUDADC_CFG3 0x692
+#define MT6331_AUDADC_CFG4 0x694
+#define MT6331_AUDADC_CFG5 0x696
+#define MT6331_AUDDIGMI_CFG0 0x698
+#define MT6331_AUDDIGMI_CFG1 0x69A
+#define MT6331_AUDMICBIAS_CFG0 0x69C
+#define MT6331_AUDMICBIAS_CFG1 0x69E
+#define MT6331_AUDENCSPARE_CFG0 0x6A0
+#define MT6331_AUDPREAMPGAIN_CFG0 0x6A2
+#define MT6331_AUDMADPLL_CFG0 0x6A4
+#define MT6331_AUDMADPLL_CFG1 0x6A6
+#define MT6331_AUDMADPLL_CFG2 0x6A8
+#define MT6331_AUDLDO_NVREG_CFG0 0x6AA
+#define MT6331_AUDLDO_NVREG_CFG1 0x6AC
+#define MT6331_AUDLDO_NVREG_CFG2 0x6AE
+#define MT6331_AUXADC_ADC0 0x700
+#define MT6331_AUXADC_ADC1 0x702
+#define MT6331_AUXADC_ADC2 0x704
+#define MT6331_AUXADC_ADC3 0x706
+#define MT6331_AUXADC_ADC4 0x708
+#define MT6331_AUXADC_ADC5 0x70A
+#define MT6331_AUXADC_ADC6 0x70C
+#define MT6331_AUXADC_ADC7 0x70E
+#define MT6331_AUXADC_ADC8 0x710
+#define MT6331_AUXADC_ADC9 0x712
+#define MT6331_AUXADC_ADC10 0x714
+#define MT6331_AUXADC_ADC11 0x716
+#define MT6331_AUXADC_ADC12 0x718
+#define MT6331_AUXADC_ADC13 0x71A
+#define MT6331_AUXADC_ADC14 0x71C
+#define MT6331_AUXADC_ADC15 0x71E
+#define MT6331_AUXADC_ADC16 0x720
+#define MT6331_AUXADC_ADC17 0x722
+#define MT6331_AUXADC_ADC18 0x724
+#define MT6331_AUXADC_ADC19 0x726
+#define MT6331_AUXADC_STA0 0x728
+#define MT6331_AUXADC_STA1 0x72A
+#define MT6331_AUXADC_RQST0 0x72C
+#define MT6331_AUXADC_RQST0_SET 0x72E
+#define MT6331_AUXADC_RQST0_CLR 0x730
+#define MT6331_AUXADC_RQST1 0x732
+#define MT6331_AUXADC_RQST1_SET 0x734
+#define MT6331_AUXADC_RQST1_CLR 0x736
+#define MT6331_AUXADC_CON0 0x738
+#define MT6331_AUXADC_CON1 0x73A
+#define MT6331_AUXADC_CON2 0x73C
+#define MT6331_AUXADC_CON3 0x73E
+#define MT6331_AUXADC_CON4 0x740
+#define MT6331_AUXADC_CON5 0x742
+#define MT6331_AUXADC_CON6 0x744
+#define MT6331_AUXADC_CON7 0x746
+#define MT6331_AUXADC_CON8 0x748
+#define MT6331_AUXADC_CON9 0x74A
+#define MT6331_AUXADC_CON10 0x74C
+#define MT6331_AUXADC_CON11 0x74E
+#define MT6331_AUXADC_CON12 0x750
+#define MT6331_AUXADC_CON13 0x752
+#define MT6331_AUXADC_CON14 0x754
+#define MT6331_AUXADC_CON15 0x756
+#define MT6331_AUXADC_CON16 0x758
+#define MT6331_AUXADC_CON17 0x75A
+#define MT6331_AUXADC_CON18 0x75C
+#define MT6331_AUXADC_CON19 0x75E
+#define MT6331_AUXADC_CON20 0x760
+#define MT6331_AUXADC_CON21 0x762
+#define MT6331_AUXADC_CON22 0x764
+#define MT6331_AUXADC_CON23 0x766
+#define MT6331_AUXADC_CON24 0x768
+#define MT6331_AUXADC_CON25 0x76A
+#define MT6331_AUXADC_CON26 0x76C
+#define MT6331_AUXADC_CON27 0x76E
+#define MT6331_AUXADC_CON28 0x770
+#define MT6331_AUXADC_CON29 0x772
+#define MT6331_AUXADC_CON30 0x774
+#define MT6331_AUXADC_CON31 0x776
+#define MT6331_AUXADC_CON32 0x778
+#define MT6331_ACCDET_CON0 0x77A
+#define MT6331_ACCDET_CON1 0x77C
+#define MT6331_ACCDET_CON2 0x77E
+#define MT6331_ACCDET_CON3 0x780
+#define MT6331_ACCDET_CON4 0x782
+#define MT6331_ACCDET_CON5 0x784
+#define MT6331_ACCDET_CON6 0x786
+#define MT6331_ACCDET_CON7 0x788
+#define MT6331_ACCDET_CON8 0x78A
+#define MT6331_ACCDET_CON9 0x78C
+#define MT6331_ACCDET_CON10 0x78E
+#define MT6331_ACCDET_CON11 0x790
+#define MT6331_ACCDET_CON12 0x792
+#define MT6331_ACCDET_CON13 0x794
+#define MT6331_ACCDET_CON14 0x796
+#define MT6331_ACCDET_CON15 0x798
+#define MT6331_ACCDET_CON16 0x79A
+#define MT6331_ACCDET_CON17 0x79C
+#define MT6331_ACCDET_CON18 0x79E
+#define MT6331_ACCDET_CON19 0x7A0
+#define MT6331_ACCDET_CON20 0x7A2
+#define MT6331_ACCDET_CON21 0x7A4
+#define MT6331_ACCDET_CON22 0x7A6
+#define MT6331_ACCDET_CON23 0x7A8
+#define MT6331_ACCDET_CON24 0x7AA
+
+#endif /* __MFD_MT6331_REGISTERS_H__ */
diff --git a/include/linux/mfd/mt6332/core.h b/include/linux/mfd/mt6332/core.h
new file mode 100644
index 000000000000..cd6013eb82d9
--- /dev/null
+++ b/include/linux/mfd/mt6332/core.h
@@ -0,0 +1,65 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+ */
+
+#ifndef __MFD_MT6332_CORE_H__
+#define __MFD_MT6332_CORE_H__
+
+enum mt6332_irq_status_numbers {
+ MT6332_IRQ_STATUS_CHR_COMPLETE = 0,
+ MT6332_IRQ_STATUS_THERMAL_SD,
+ MT6332_IRQ_STATUS_THERMAL_REG_IN,
+ MT6332_IRQ_STATUS_THERMAL_REG_OUT,
+ MT6332_IRQ_STATUS_OTG_OC,
+ MT6332_IRQ_STATUS_CHR_OC,
+ MT6332_IRQ_STATUS_OTG_THERMAL,
+ MT6332_IRQ_STATUS_CHRIN_SHORT,
+ MT6332_IRQ_STATUS_DRVCDT_SHORT,
+ MT6332_IRQ_STATUS_PLUG_IN_FLASH,
+ MT6332_IRQ_STATUS_CHRWDT_FLAG,
+ MT6332_IRQ_STATUS_FLASH_EN_TIMEOUT,
+ MT6332_IRQ_STATUS_FLASH_VLED1_SHORT,
+ MT6332_IRQ_STATUS_FLASH_VLED1_OPEN = 13,
+ MT6332_IRQ_STATUS_OV = 16,
+ MT6332_IRQ_STATUS_BVALID_DET,
+ MT6332_IRQ_STATUS_VBATON_UNDET,
+ MT6332_IRQ_STATUS_CHR_PLUG_IN,
+ MT6332_IRQ_STATUS_CHR_PLUG_OUT,
+ MT6332_IRQ_STATUS_BC11_TIMEOUT,
+ MT6332_IRQ_STATUS_FLASH_VLED2_SHORT,
+ MT6332_IRQ_STATUS_FLASH_VLED2_OPEN = 23,
+ MT6332_IRQ_STATUS_THR_H = 32,
+ MT6332_IRQ_STATUS_THR_L,
+ MT6332_IRQ_STATUS_BAT_H,
+ MT6332_IRQ_STATUS_BAT_L,
+ MT6332_IRQ_STATUS_M3_H,
+ MT6332_IRQ_STATUS_M3_L,
+ MT6332_IRQ_STATUS_FG_BAT_H,
+ MT6332_IRQ_STATUS_FG_BAT_L,
+ MT6332_IRQ_STATUS_FG_CUR_H,
+ MT6332_IRQ_STATUS_FG_CUR_L,
+ MT6332_IRQ_STATUS_SPKL_D,
+ MT6332_IRQ_STATUS_SPKL_AB,
+ MT6332_IRQ_STATUS_BIF,
+ MT6332_IRQ_STATUS_VWLED_OC = 45,
+ MT6332_IRQ_STATUS_VDRAM_OC = 48,
+ MT6332_IRQ_STATUS_VDVFS2_OC,
+ MT6332_IRQ_STATUS_VRF1_OC,
+ MT6332_IRQ_STATUS_VRF2_OC,
+ MT6332_IRQ_STATUS_VPA_OC,
+ MT6332_IRQ_STATUS_VSBST_OC,
+ MT6332_IRQ_STATUS_LDO_OC,
+ MT6332_IRQ_STATUS_NR,
+};
+
+#define MT6332_IRQ_CON0_BASE MT6332_IRQ_STATUS_CHR_COMPLETE
+#define MT6332_IRQ_CON0_BITS (MT6332_IRQ_STATUS_FLASH_VLED1_OPEN + 1)
+#define MT6332_IRQ_CON1_BASE MT6332_IRQ_STATUS_OV
+#define MT6332_IRQ_CON1_BITS (MT6332_IRQ_STATUS_FLASH_VLED2_OPEN - MT6332_IRQ_STATUS_OV + 1)
+#define MT6332_IRQ_CON2_BASE MT6332_IRQ_STATUS_THR_H
+#define MT6332_IRQ_CON2_BITS (MT6332_IRQ_STATUS_VWLED_OC - MT6332_IRQ_STATUS_THR_H + 1)
+#define MT6332_IRQ_CON3_BASE MT6332_IRQ_STATUS_VDRAM_OC
+#define MT6332_IRQ_CON3_BITS (MT6332_IRQ_STATUS_LDO_OC - MT6332_IRQ_STATUS_VDRAM_OC + 1)
+
+#endif /* __MFD_MT6332_CORE_H__ */
diff --git a/include/linux/mfd/mt6332/registers.h b/include/linux/mfd/mt6332/registers.h
new file mode 100644
index 000000000000..65e0b86fceac
--- /dev/null
+++ b/include/linux/mfd/mt6332/registers.h
@@ -0,0 +1,642 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+ */
+
+#ifndef __MFD_MT6332_REGISTERS_H__
+#define __MFD_MT6332_REGISTERS_H__
+
+/* PMIC Registers */
+#define MT6332_HWCID 0x8000
+#define MT6332_SWCID 0x8002
+#define MT6332_TOP_CON 0x8004
+#define MT6332_DDR_VREF_AP_CON 0x8006
+#define MT6332_DDR_VREF_DQ_CON 0x8008
+#define MT6332_DDR_VREF_CA_CON 0x800A
+#define MT6332_TEST_OUT 0x800C
+#define MT6332_TEST_CON0 0x800E
+#define MT6332_TEST_CON1 0x8010
+#define MT6332_TESTMODE_SW 0x8012
+#define MT6332_TESTMODE_ANA 0x8014
+#define MT6332_TDSEL_CON 0x8016
+#define MT6332_RDSEL_CON 0x8018
+#define MT6332_SMT_CON0 0x801A
+#define MT6332_SMT_CON1 0x801C
+#define MT6332_DRV_CON0 0x801E
+#define MT6332_DRV_CON1 0x8020
+#define MT6332_DRV_CON2 0x8022
+#define MT6332_EN_STATUS0 0x8024
+#define MT6332_OCSTATUS0 0x8026
+#define MT6332_TOP_STATUS 0x8028
+#define MT6332_TOP_STATUS_SET 0x802A
+#define MT6332_TOP_STATUS_CLR 0x802C
+#define MT6332_FLASH_CON0 0x802E
+#define MT6332_FLASH_CON1 0x8030
+#define MT6332_FLASH_CON2 0x8032
+#define MT6332_CORE_CON0 0x8034
+#define MT6332_CORE_CON1 0x8036
+#define MT6332_CORE_CON2 0x8038
+#define MT6332_CORE_CON3 0x803A
+#define MT6332_CORE_CON4 0x803C
+#define MT6332_CORE_CON5 0x803E
+#define MT6332_CORE_CON6 0x8040
+#define MT6332_CORE_CON7 0x8042
+#define MT6332_CORE_CON8 0x8044
+#define MT6332_CORE_CON9 0x8046
+#define MT6332_CORE_CON10 0x8048
+#define MT6332_CORE_CON11 0x804A
+#define MT6332_CORE_CON12 0x804C
+#define MT6332_CORE_CON13 0x804E
+#define MT6332_CORE_CON14 0x8050
+#define MT6332_CORE_CON15 0x8052
+#define MT6332_STA_CON0 0x8054
+#define MT6332_STA_CON1 0x8056
+#define MT6332_STA_CON2 0x8058
+#define MT6332_STA_CON3 0x805A
+#define MT6332_STA_CON4 0x805C
+#define MT6332_STA_CON5 0x805E
+#define MT6332_STA_CON6 0x8060
+#define MT6332_STA_CON7 0x8062
+#define MT6332_CHR_CON0 0x8064
+#define MT6332_CHR_CON1 0x8066
+#define MT6332_CHR_CON2 0x8068
+#define MT6332_CHR_CON3 0x806A
+#define MT6332_CHR_CON4 0x806C
+#define MT6332_CHR_CON5 0x806E
+#define MT6332_CHR_CON6 0x8070
+#define MT6332_CHR_CON7 0x8072
+#define MT6332_CHR_CON8 0x8074
+#define MT6332_CHR_CON9 0x8076
+#define MT6332_CHR_CON10 0x8078
+#define MT6332_CHR_CON11 0x807A
+#define MT6332_CHR_CON12 0x807C
+#define MT6332_CHR_CON13 0x807E
+#define MT6332_CHR_CON14 0x8080
+#define MT6332_CHR_CON15 0x8082
+#define MT6332_BOOST_CON0 0x8084
+#define MT6332_BOOST_CON1 0x8086
+#define MT6332_BOOST_CON2 0x8088
+#define MT6332_BOOST_CON3 0x808A
+#define MT6332_BOOST_CON4 0x808C
+#define MT6332_BOOST_CON5 0x808E
+#define MT6332_BOOST_CON6 0x8090
+#define MT6332_BOOST_CON7 0x8092
+#define MT6332_TOP_CKPDN_CON0 0x8094
+#define MT6332_TOP_CKPDN_CON0_SET 0x8096
+#define MT6332_TOP_CKPDN_CON0_CLR 0x8098
+#define MT6332_TOP_CKPDN_CON1 0x809A
+#define MT6332_TOP_CKPDN_CON1_SET 0x809C
+#define MT6332_TOP_CKPDN_CON1_CLR 0x809E
+#define MT6332_TOP_CKPDN_CON2 0x80A0
+#define MT6332_TOP_CKPDN_CON2_SET 0x80A2
+#define MT6332_TOP_CKPDN_CON2_CLR 0x80A4
+#define MT6332_TOP_CKSEL_CON0 0x80A6
+#define MT6332_TOP_CKSEL_CON0_SET 0x80A8
+#define MT6332_TOP_CKSEL_CON0_CLR 0x80AA
+#define MT6332_TOP_CKSEL_CON1 0x80AC
+#define MT6332_TOP_CKSEL_CON1_SET 0x80AE
+#define MT6332_TOP_CKSEL_CON1_CLR 0x80B0
+#define MT6332_TOP_CKHWEN_CON 0x80B2
+#define MT6332_TOP_CKHWEN_CON_SET 0x80B4
+#define MT6332_TOP_CKHWEN_CON_CLR 0x80B6
+#define MT6332_TOP_CKTST_CON0 0x80B8
+#define MT6332_TOP_CKTST_CON1 0x80BA
+#define MT6332_TOP_RST_CON 0x80BC
+#define MT6332_TOP_RST_CON_SET 0x80BE
+#define MT6332_TOP_RST_CON_CLR 0x80C0
+#define MT6332_TOP_RST_MISC 0x80C2
+#define MT6332_TOP_RST_MISC_SET 0x80C4
+#define MT6332_TOP_RST_MISC_CLR 0x80C6
+#define MT6332_INT_CON0 0x80C8
+#define MT6332_INT_CON0_SET 0x80CA
+#define MT6332_INT_CON0_CLR 0x80CC
+#define MT6332_INT_CON1 0x80CE
+#define MT6332_INT_CON1_SET 0x80D0
+#define MT6332_INT_CON1_CLR 0x80D2
+#define MT6332_INT_CON2 0x80D4
+#define MT6332_INT_CON2_SET 0x80D6
+#define MT6332_INT_CON2_CLR 0x80D8
+#define MT6332_INT_CON3 0x80DA
+#define MT6332_INT_CON3_SET 0x80DC
+#define MT6332_INT_CON3_CLR 0x80DE
+#define MT6332_CHRWDT_CON0 0x80E0
+#define MT6332_CHRWDT_STATUS0 0x80E2
+#define MT6332_INT_STATUS0 0x80E4
+#define MT6332_INT_STATUS1 0x80E6
+#define MT6332_INT_STATUS2 0x80E8
+#define MT6332_INT_STATUS3 0x80EA
+#define MT6332_OC_GEAR_0 0x80EC
+#define MT6332_OC_GEAR_1 0x80EE
+#define MT6332_OC_GEAR_2 0x80F0
+#define MT6332_INT_MISC_CON 0x80F2
+#define MT6332_RG_SPI_CON 0x80F4
+#define MT6332_DEW_DIO_EN 0x80F6
+#define MT6332_DEW_READ_TEST 0x80F8
+#define MT6332_DEW_WRITE_TEST 0x80FA
+#define MT6332_DEW_CRC_SWRST 0x80FC
+#define MT6332_DEW_CRC_EN 0x80FE
+#define MT6332_DEW_CRC_VAL 0x8100
+#define MT6332_DEW_DBG_MON_SEL 0x8102
+#define MT6332_DEW_CIPHER_KEY_SEL 0x8104
+#define MT6332_DEW_CIPHER_IV_SEL 0x8106
+#define MT6332_DEW_CIPHER_EN 0x8108
+#define MT6332_DEW_CIPHER_RDY 0x810A
+#define MT6332_DEW_CIPHER_MODE 0x810C
+#define MT6332_DEW_CIPHER_SWRST 0x810E
+#define MT6332_DEW_RDDMY_NO 0x8110
+#define MT6332_INT_STA 0x8112
+#define MT6332_BIF_CON0 0x8114
+#define MT6332_BIF_CON1 0x8116
+#define MT6332_BIF_CON2 0x8118
+#define MT6332_BIF_CON3 0x811A
+#define MT6332_BIF_CON4 0x811C
+#define MT6332_BIF_CON5 0x811E
+#define MT6332_BIF_CON6 0x8120
+#define MT6332_BIF_CON7 0x8122
+#define MT6332_BIF_CON8 0x8124
+#define MT6332_BIF_CON9 0x8126
+#define MT6332_BIF_CON10 0x8128
+#define MT6332_BIF_CON11 0x812A
+#define MT6332_BIF_CON12 0x812C
+#define MT6332_BIF_CON13 0x812E
+#define MT6332_BIF_CON14 0x8130
+#define MT6332_BIF_CON15 0x8132
+#define MT6332_BIF_CON16 0x8134
+#define MT6332_BIF_CON17 0x8136
+#define MT6332_BIF_CON18 0x8138
+#define MT6332_BIF_CON19 0x813A
+#define MT6332_BIF_CON20 0x813C
+#define MT6332_BIF_CON21 0x813E
+#define MT6332_BIF_CON22 0x8140
+#define MT6332_BIF_CON23 0x8142
+#define MT6332_BIF_CON24 0x8144
+#define MT6332_BIF_CON25 0x8146
+#define MT6332_BIF_CON26 0x8148
+#define MT6332_BIF_CON27 0x814A
+#define MT6332_BIF_CON28 0x814C
+#define MT6332_BIF_CON29 0x814E
+#define MT6332_BIF_CON30 0x8150
+#define MT6332_BIF_CON31 0x8152
+#define MT6332_BIF_CON32 0x8154
+#define MT6332_BIF_CON33 0x8156
+#define MT6332_BIF_CON34 0x8158
+#define MT6332_BIF_CON35 0x815A
+#define MT6332_BIF_CON36 0x815C
+#define MT6332_BATON_CON0 0x815E
+#define MT6332_BIF_CON37 0x8160
+#define MT6332_BIF_CON38 0x8162
+#define MT6332_CHR_CON16 0x8164
+#define MT6332_CHR_CON17 0x8166
+#define MT6332_CHR_CON18 0x8168
+#define MT6332_CHR_CON19 0x816A
+#define MT6332_CHR_CON20 0x816C
+#define MT6332_CHR_CON21 0x816E
+#define MT6332_CHR_CON22 0x8170
+#define MT6332_CHR_CON23 0x8172
+#define MT6332_CHR_CON24 0x8174
+#define MT6332_CHR_CON25 0x8176
+#define MT6332_STA_CON8 0x8178
+#define MT6332_BUCK_ALL_CON0 0x8400
+#define MT6332_BUCK_ALL_CON1 0x8402
+#define MT6332_BUCK_ALL_CON2 0x8404
+#define MT6332_BUCK_ALL_CON3 0x8406
+#define MT6332_BUCK_ALL_CON4 0x8408
+#define MT6332_BUCK_ALL_CON5 0x840A
+#define MT6332_BUCK_ALL_CON6 0x840C
+#define MT6332_BUCK_ALL_CON7 0x840E
+#define MT6332_BUCK_ALL_CON8 0x8410
+#define MT6332_BUCK_ALL_CON9 0x8412
+#define MT6332_BUCK_ALL_CON10 0x8414
+#define MT6332_BUCK_ALL_CON11 0x8416
+#define MT6332_BUCK_ALL_CON12 0x8418
+#define MT6332_BUCK_ALL_CON13 0x841A
+#define MT6332_BUCK_ALL_CON14 0x841C
+#define MT6332_BUCK_ALL_CON15 0x841E
+#define MT6332_BUCK_ALL_CON16 0x8420
+#define MT6332_BUCK_ALL_CON17 0x8422
+#define MT6332_BUCK_ALL_CON18 0x8424
+#define MT6332_BUCK_ALL_CON19 0x8426
+#define MT6332_BUCK_ALL_CON20 0x8428
+#define MT6332_BUCK_ALL_CON21 0x842A
+#define MT6332_BUCK_ALL_CON22 0x842C
+#define MT6332_BUCK_ALL_CON23 0x842E
+#define MT6332_BUCK_ALL_CON24 0x8430
+#define MT6332_BUCK_ALL_CON25 0x8432
+#define MT6332_BUCK_ALL_CON26 0x8434
+#define MT6332_BUCK_ALL_CON27 0x8436
+#define MT6332_VDRAM_CON0 0x8438
+#define MT6332_VDRAM_CON1 0x843A
+#define MT6332_VDRAM_CON2 0x843C
+#define MT6332_VDRAM_CON3 0x843E
+#define MT6332_VDRAM_CON4 0x8440
+#define MT6332_VDRAM_CON5 0x8442
+#define MT6332_VDRAM_CON6 0x8444
+#define MT6332_VDRAM_CON7 0x8446
+#define MT6332_VDRAM_CON8 0x8448
+#define MT6332_VDRAM_CON9 0x844A
+#define MT6332_VDRAM_CON10 0x844C
+#define MT6332_VDRAM_CON11 0x844E
+#define MT6332_VDRAM_CON12 0x8450
+#define MT6332_VDRAM_CON13 0x8452
+#define MT6332_VDRAM_CON14 0x8454
+#define MT6332_VDRAM_CON15 0x8456
+#define MT6332_VDRAM_CON16 0x8458
+#define MT6332_VDRAM_CON17 0x845A
+#define MT6332_VDRAM_CON18 0x845C
+#define MT6332_VDRAM_CON19 0x845E
+#define MT6332_VDRAM_CON20 0x8460
+#define MT6332_VDRAM_CON21 0x8462
+#define MT6332_VDVFS2_CON0 0x8464
+#define MT6332_VDVFS2_CON1 0x8466
+#define MT6332_VDVFS2_CON2 0x8468
+#define MT6332_VDVFS2_CON3 0x846A
+#define MT6332_VDVFS2_CON4 0x846C
+#define MT6332_VDVFS2_CON5 0x846E
+#define MT6332_VDVFS2_CON6 0x8470
+#define MT6332_VDVFS2_CON7 0x8472
+#define MT6332_VDVFS2_CON8 0x8474
+#define MT6332_VDVFS2_CON9 0x8476
+#define MT6332_VDVFS2_CON10 0x8478
+#define MT6332_VDVFS2_CON11 0x847A
+#define MT6332_VDVFS2_CON12 0x847C
+#define MT6332_VDVFS2_CON13 0x847E
+#define MT6332_VDVFS2_CON14 0x8480
+#define MT6332_VDVFS2_CON15 0x8482
+#define MT6332_VDVFS2_CON16 0x8484
+#define MT6332_VDVFS2_CON17 0x8486
+#define MT6332_VDVFS2_CON18 0x8488
+#define MT6332_VDVFS2_CON19 0x848A
+#define MT6332_VDVFS2_CON20 0x848C
+#define MT6332_VDVFS2_CON21 0x848E
+#define MT6332_VDVFS2_CON22 0x8490
+#define MT6332_VDVFS2_CON23 0x8492
+#define MT6332_VDVFS2_CON24 0x8494
+#define MT6332_VDVFS2_CON25 0x8496
+#define MT6332_VDVFS2_CON26 0x8498
+#define MT6332_VDVFS2_CON27 0x849A
+#define MT6332_VRF1_CON0 0x849C
+#define MT6332_VRF1_CON1 0x849E
+#define MT6332_VRF1_CON2 0x84A0
+#define MT6332_VRF1_CON3 0x84A2
+#define MT6332_VRF1_CON4 0x84A4
+#define MT6332_VRF1_CON5 0x84A6
+#define MT6332_VRF1_CON6 0x84A8
+#define MT6332_VRF1_CON7 0x84AA
+#define MT6332_VRF1_CON8 0x84AC
+#define MT6332_VRF1_CON9 0x84AE
+#define MT6332_VRF1_CON10 0x84B0
+#define MT6332_VRF1_CON11 0x84B2
+#define MT6332_VRF1_CON12 0x84B4
+#define MT6332_VRF1_CON13 0x84B6
+#define MT6332_VRF1_CON14 0x84B8
+#define MT6332_VRF1_CON15 0x84BA
+#define MT6332_VRF1_CON16 0x84BC
+#define MT6332_VRF1_CON17 0x84BE
+#define MT6332_VRF1_CON18 0x84C0
+#define MT6332_VRF1_CON19 0x84C2
+#define MT6332_VRF1_CON20 0x84C4
+#define MT6332_VRF1_CON21 0x84C6
+#define MT6332_VRF2_CON0 0x84C8
+#define MT6332_VRF2_CON1 0x84CA
+#define MT6332_VRF2_CON2 0x84CC
+#define MT6332_VRF2_CON3 0x84CE
+#define MT6332_VRF2_CON4 0x84D0
+#define MT6332_VRF2_CON5 0x84D2
+#define MT6332_VRF2_CON6 0x84D4
+#define MT6332_VRF2_CON7 0x84D6
+#define MT6332_VRF2_CON8 0x84D8
+#define MT6332_VRF2_CON9 0x84DA
+#define MT6332_VRF2_CON10 0x84DC
+#define MT6332_VRF2_CON11 0x84DE
+#define MT6332_VRF2_CON12 0x84E0
+#define MT6332_VRF2_CON13 0x84E2
+#define MT6332_VRF2_CON14 0x84E4
+#define MT6332_VRF2_CON15 0x84E6
+#define MT6332_VRF2_CON16 0x84E8
+#define MT6332_VRF2_CON17 0x84EA
+#define MT6332_VRF2_CON18 0x84EC
+#define MT6332_VRF2_CON19 0x84EE
+#define MT6332_VRF2_CON20 0x84F0
+#define MT6332_VRF2_CON21 0x84F2
+#define MT6332_VPA_CON0 0x84F4
+#define MT6332_VPA_CON1 0x84F6
+#define MT6332_VPA_CON2 0x84F8
+#define MT6332_VPA_CON3 0x84FC
+#define MT6332_VPA_CON4 0x84FE
+#define MT6332_VPA_CON5 0x8500
+#define MT6332_VPA_CON6 0x8502
+#define MT6332_VPA_CON7 0x8504
+#define MT6332_VPA_CON8 0x8506
+#define MT6332_VPA_CON9 0x8508
+#define MT6332_VPA_CON10 0x850A
+#define MT6332_VPA_CON11 0x850C
+#define MT6332_VPA_CON12 0x850E
+#define MT6332_VPA_CON13 0x8510
+#define MT6332_VPA_CON14 0x8512
+#define MT6332_VPA_CON15 0x8514
+#define MT6332_VPA_CON16 0x8516
+#define MT6332_VPA_CON17 0x8518
+#define MT6332_VPA_CON18 0x851A
+#define MT6332_VPA_CON19 0x851C
+#define MT6332_VPA_CON20 0x851E
+#define MT6332_VPA_CON21 0x8520
+#define MT6332_VPA_CON22 0x8522
+#define MT6332_VPA_CON23 0x8524
+#define MT6332_VPA_CON24 0x8526
+#define MT6332_VPA_CON25 0x8528
+#define MT6332_VSBST_CON0 0x852A
+#define MT6332_VSBST_CON1 0x852C
+#define MT6332_VSBST_CON2 0x852E
+#define MT6332_VSBST_CON3 0x8530
+#define MT6332_VSBST_CON4 0x8532
+#define MT6332_VSBST_CON5 0x8534
+#define MT6332_VSBST_CON6 0x8536
+#define MT6332_VSBST_CON7 0x8538
+#define MT6332_VSBST_CON8 0x853A
+#define MT6332_VSBST_CON9 0x853C
+#define MT6332_VSBST_CON10 0x853E
+#define MT6332_VSBST_CON11 0x8540
+#define MT6332_VSBST_CON12 0x8542
+#define MT6332_VSBST_CON13 0x8544
+#define MT6332_VSBST_CON14 0x8546
+#define MT6332_VSBST_CON15 0x8548
+#define MT6332_VSBST_CON16 0x854A
+#define MT6332_VSBST_CON17 0x854C
+#define MT6332_VSBST_CON18 0x854E
+#define MT6332_VSBST_CON19 0x8550
+#define MT6332_VSBST_CON20 0x8552
+#define MT6332_VSBST_CON21 0x8554
+#define MT6332_BUCK_K_CON0 0x8556
+#define MT6332_BUCK_K_CON1 0x8558
+#define MT6332_BUCK_K_CON2 0x855A
+#define MT6332_BUCK_K_CON3 0x855C
+#define MT6332_BUCK_K_CON4 0x855E
+#define MT6332_BUCK_K_CON5 0x8560
+#define MT6332_AUXADC_ADC0 0x8800
+#define MT6332_AUXADC_ADC1 0x8802
+#define MT6332_AUXADC_ADC2 0x8804
+#define MT6332_AUXADC_ADC3 0x8806
+#define MT6332_AUXADC_ADC4 0x8808
+#define MT6332_AUXADC_ADC5 0x880A
+#define MT6332_AUXADC_ADC6 0x880C
+#define MT6332_AUXADC_ADC7 0x880E
+#define MT6332_AUXADC_ADC8 0x8810
+#define MT6332_AUXADC_ADC9 0x8812
+#define MT6332_AUXADC_ADC10 0x8814
+#define MT6332_AUXADC_ADC11 0x8816
+#define MT6332_AUXADC_ADC12 0x8818
+#define MT6332_AUXADC_ADC13 0x881A
+#define MT6332_AUXADC_ADC14 0x881C
+#define MT6332_AUXADC_ADC15 0x881E
+#define MT6332_AUXADC_ADC16 0x8820
+#define MT6332_AUXADC_ADC17 0x8822
+#define MT6332_AUXADC_ADC18 0x8824
+#define MT6332_AUXADC_ADC19 0x8826
+#define MT6332_AUXADC_ADC20 0x8828
+#define MT6332_AUXADC_ADC21 0x882A
+#define MT6332_AUXADC_ADC22 0x882C
+#define MT6332_AUXADC_ADC23 0x882E
+#define MT6332_AUXADC_ADC24 0x8830
+#define MT6332_AUXADC_ADC25 0x8832
+#define MT6332_AUXADC_ADC26 0x8834
+#define MT6332_AUXADC_ADC27 0x8836
+#define MT6332_AUXADC_ADC28 0x8838
+#define MT6332_AUXADC_ADC29 0x883A
+#define MT6332_AUXADC_ADC30 0x883C
+#define MT6332_AUXADC_ADC31 0x883E
+#define MT6332_AUXADC_ADC32 0x8840
+#define MT6332_AUXADC_ADC33 0x8842
+#define MT6332_AUXADC_ADC34 0x8844
+#define MT6332_AUXADC_ADC35 0x8846
+#define MT6332_AUXADC_ADC36 0x8848
+#define MT6332_AUXADC_ADC37 0x884A
+#define MT6332_AUXADC_ADC38 0x884C
+#define MT6332_AUXADC_ADC39 0x884E
+#define MT6332_AUXADC_ADC40 0x8850
+#define MT6332_AUXADC_ADC41 0x8852
+#define MT6332_AUXADC_ADC42 0x8854
+#define MT6332_AUXADC_ADC43 0x8856
+#define MT6332_AUXADC_STA0 0x8858
+#define MT6332_AUXADC_STA1 0x885A
+#define MT6332_AUXADC_RQST0 0x885C
+#define MT6332_AUXADC_RQST0_SET 0x885E
+#define MT6332_AUXADC_RQST0_CLR 0x8860
+#define MT6332_AUXADC_RQST1 0x8862
+#define MT6332_AUXADC_RQST1_SET 0x8864
+#define MT6332_AUXADC_RQST1_CLR 0x8866
+#define MT6332_AUXADC_CON0 0x8868
+#define MT6332_AUXADC_CON1 0x886A
+#define MT6332_AUXADC_CON2 0x886C
+#define MT6332_AUXADC_CON3 0x886E
+#define MT6332_AUXADC_CON4 0x8870
+#define MT6332_AUXADC_CON5 0x8872
+#define MT6332_AUXADC_CON6 0x8874
+#define MT6332_AUXADC_CON7 0x8876
+#define MT6332_AUXADC_CON8 0x8878
+#define MT6332_AUXADC_CON9 0x887A
+#define MT6332_AUXADC_CON10 0x887C
+#define MT6332_AUXADC_CON11 0x887E
+#define MT6332_AUXADC_CON12 0x8880
+#define MT6332_AUXADC_CON13 0x8882
+#define MT6332_AUXADC_CON14 0x8884
+#define MT6332_AUXADC_CON15 0x8886
+#define MT6332_AUXADC_CON16 0x8888
+#define MT6332_AUXADC_CON17 0x888A
+#define MT6332_AUXADC_CON18 0x888C
+#define MT6332_AUXADC_CON19 0x888E
+#define MT6332_AUXADC_CON20 0x8890
+#define MT6332_AUXADC_CON21 0x8892
+#define MT6332_AUXADC_CON22 0x8894
+#define MT6332_AUXADC_CON23 0x8896
+#define MT6332_AUXADC_CON24 0x8898
+#define MT6332_AUXADC_CON25 0x889A
+#define MT6332_AUXADC_CON26 0x889C
+#define MT6332_AUXADC_CON27 0x889E
+#define MT6332_AUXADC_CON28 0x88A0
+#define MT6332_AUXADC_CON29 0x88A2
+#define MT6332_AUXADC_CON30 0x88A4
+#define MT6332_AUXADC_CON31 0x88A6
+#define MT6332_AUXADC_CON32 0x88A8
+#define MT6332_AUXADC_CON33 0x88AA
+#define MT6332_AUXADC_CON34 0x88AC
+#define MT6332_AUXADC_CON35 0x88AE
+#define MT6332_AUXADC_CON36 0x88B0
+#define MT6332_AUXADC_CON37 0x88B2
+#define MT6332_AUXADC_CON38 0x88B4
+#define MT6332_AUXADC_CON39 0x88B6
+#define MT6332_AUXADC_CON40 0x88B8
+#define MT6332_AUXADC_CON41 0x88BA
+#define MT6332_AUXADC_CON42 0x88BC
+#define MT6332_AUXADC_CON43 0x88BE
+#define MT6332_AUXADC_CON44 0x88C0
+#define MT6332_AUXADC_CON45 0x88C2
+#define MT6332_AUXADC_CON46 0x88C4
+#define MT6332_AUXADC_CON47 0x88C6
+#define MT6332_STRUP_CONA0 0x8C00
+#define MT6332_STRUP_CONA1 0x8C02
+#define MT6332_STRUP_CONA2 0x8C04
+#define MT6332_STRUP_CON0 0x8C06
+#define MT6332_STRUP_CON2 0x8C08
+#define MT6332_STRUP_CON3 0x8C0A
+#define MT6332_STRUP_CON4 0x8C0C
+#define MT6332_STRUP_CON5 0x8C0E
+#define MT6332_STRUP_CON6 0x8C10
+#define MT6332_STRUP_CON7 0x8C12
+#define MT6332_STRUP_CON8 0x8C14
+#define MT6332_STRUP_CON9 0x8C16
+#define MT6332_STRUP_CON10 0x8C18
+#define MT6332_STRUP_CON11 0x8C1A
+#define MT6332_STRUP_CON12 0x8C1C
+#define MT6332_STRUP_CON13 0x8C1E
+#define MT6332_STRUP_CON14 0x8C20
+#define MT6332_STRUP_CON15 0x8C22
+#define MT6332_STRUP_CON16 0x8C24
+#define MT6332_STRUP_CON17 0x8C26
+#define MT6332_FGADC_CON0 0x8C28
+#define MT6332_FGADC_CON1 0x8C2A
+#define MT6332_FGADC_CON2 0x8C2C
+#define MT6332_FGADC_CON3 0x8C2E
+#define MT6332_FGADC_CON4 0x8C30
+#define MT6332_FGADC_CON5 0x8C32
+#define MT6332_FGADC_CON6 0x8C34
+#define MT6332_FGADC_CON7 0x8C36
+#define MT6332_FGADC_CON8 0x8C38
+#define MT6332_FGADC_CON9 0x8C3A
+#define MT6332_FGADC_CON10 0x8C3C
+#define MT6332_FGADC_CON11 0x8C3E
+#define MT6332_FGADC_CON12 0x8C40
+#define MT6332_FGADC_CON13 0x8C42
+#define MT6332_FGADC_CON14 0x8C44
+#define MT6332_FGADC_CON15 0x8C46
+#define MT6332_FGADC_CON16 0x8C48
+#define MT6332_FGADC_CON17 0x8C4A
+#define MT6332_FGADC_CON18 0x8C4C
+#define MT6332_FGADC_CON19 0x8C4E
+#define MT6332_FGADC_CON20 0x8C50
+#define MT6332_FGADC_CON21 0x8C52
+#define MT6332_FGADC_CON22 0x8C54
+#define MT6332_OTP_CON0 0x8C56
+#define MT6332_OTP_CON1 0x8C58
+#define MT6332_OTP_CON2 0x8C5A
+#define MT6332_OTP_CON3 0x8C5C
+#define MT6332_OTP_CON4 0x8C5E
+#define MT6332_OTP_CON5 0x8C60
+#define MT6332_OTP_CON6 0x8C62
+#define MT6332_OTP_CON7 0x8C64
+#define MT6332_OTP_CON8 0x8C66
+#define MT6332_OTP_CON9 0x8C68
+#define MT6332_OTP_CON10 0x8C6A
+#define MT6332_OTP_CON11 0x8C6C
+#define MT6332_OTP_CON12 0x8C6E
+#define MT6332_OTP_CON13 0x8C70
+#define MT6332_OTP_CON14 0x8C72
+#define MT6332_OTP_DOUT_0_15 0x8C74
+#define MT6332_OTP_DOUT_16_31 0x8C76
+#define MT6332_OTP_DOUT_32_47 0x8C78
+#define MT6332_OTP_DOUT_48_63 0x8C7A
+#define MT6332_OTP_DOUT_64_79 0x8C7C
+#define MT6332_OTP_DOUT_80_95 0x8C7E
+#define MT6332_OTP_DOUT_96_111 0x8C80
+#define MT6332_OTP_DOUT_112_127 0x8C82
+#define MT6332_OTP_DOUT_128_143 0x8C84
+#define MT6332_OTP_DOUT_144_159 0x8C86
+#define MT6332_OTP_DOUT_160_175 0x8C88
+#define MT6332_OTP_DOUT_176_191 0x8C8A
+#define MT6332_OTP_DOUT_192_207 0x8C8C
+#define MT6332_OTP_DOUT_208_223 0x8C8E
+#define MT6332_OTP_DOUT_224_239 0x8C90
+#define MT6332_OTP_DOUT_240_255 0x8C92
+#define MT6332_OTP_VAL_0_15 0x8C94
+#define MT6332_OTP_VAL_16_31 0x8C96
+#define MT6332_OTP_VAL_32_47 0x8C98
+#define MT6332_OTP_VAL_48_63 0x8C9A
+#define MT6332_OTP_VAL_64_79 0x8C9C
+#define MT6332_OTP_VAL_80_95 0x8C9E
+#define MT6332_OTP_VAL_96_111 0x8CA0
+#define MT6332_OTP_VAL_112_127 0x8CA2
+#define MT6332_OTP_VAL_128_143 0x8CA4
+#define MT6332_OTP_VAL_144_159 0x8CA6
+#define MT6332_OTP_VAL_160_175 0x8CA8
+#define MT6332_OTP_VAL_176_191 0x8CAA
+#define MT6332_OTP_VAL_192_207 0x8CAC
+#define MT6332_OTP_VAL_208_223 0x8CAE
+#define MT6332_OTP_VAL_224_239 0x8CB0
+#define MT6332_OTP_VAL_240_255 0x8CB2
+#define MT6332_LDO_CON0 0x8CB4
+#define MT6332_LDO_CON1 0x8CB6
+#define MT6332_LDO_CON2 0x8CB8
+#define MT6332_LDO_CON3 0x8CBA
+#define MT6332_LDO_CON5 0x8CBC
+#define MT6332_LDO_CON6 0x8CBE
+#define MT6332_LDO_CON7 0x8CC0
+#define MT6332_LDO_CON8 0x8CC2
+#define MT6332_LDO_CON9 0x8CC4
+#define MT6332_LDO_CON10 0x8CC6
+#define MT6332_LDO_CON11 0x8CC8
+#define MT6332_LDO_CON12 0x8CCA
+#define MT6332_LDO_CON13 0x8CCC
+#define MT6332_FQMTR_CON0 0x8CCE
+#define MT6332_FQMTR_CON1 0x8CD0
+#define MT6332_FQMTR_CON2 0x8CD2
+#define MT6332_IWLED_CON0 0x8CD4
+#define MT6332_IWLED_DEG 0x8CD6
+#define MT6332_IWLED_STATUS 0x8CD8
+#define MT6332_IWLED_EN_CTRL 0x8CDA
+#define MT6332_IWLED_CON1 0x8CDC
+#define MT6332_IWLED_CON2 0x8CDE
+#define MT6332_IWLED_TRIM0 0x8CE0
+#define MT6332_IWLED_TRIM1 0x8CE2
+#define MT6332_IWLED_CON3 0x8CE4
+#define MT6332_IWLED_CON4 0x8CE6
+#define MT6332_IWLED_CON5 0x8CE8
+#define MT6332_IWLED_CON6 0x8CEA
+#define MT6332_IWLED_CON7 0x8CEC
+#define MT6332_IWLED_CON8 0x8CEE
+#define MT6332_IWLED_CON9 0x8CF0
+#define MT6332_SPK_CON0 0x8CF2
+#define MT6332_SPK_CON1 0x8CF4
+#define MT6332_SPK_CON2 0x8CF6
+#define MT6332_SPK_CON3 0x8CF8
+#define MT6332_SPK_CON4 0x8CFA
+#define MT6332_SPK_CON5 0x8CFC
+#define MT6332_SPK_CON6 0x8CFE
+#define MT6332_SPK_CON7 0x8D00
+#define MT6332_SPK_CON8 0x8D02
+#define MT6332_SPK_CON9 0x8D04
+#define MT6332_SPK_CON10 0x8D06
+#define MT6332_SPK_CON11 0x8D08
+#define MT6332_SPK_CON12 0x8D0A
+#define MT6332_SPK_CON13 0x8D0C
+#define MT6332_SPK_CON14 0x8D0E
+#define MT6332_SPK_CON15 0x8D10
+#define MT6332_SPK_CON16 0x8D12
+#define MT6332_TESTI_CON0 0x8D14
+#define MT6332_TESTI_CON1 0x8D16
+#define MT6332_TESTI_CON2 0x8D18
+#define MT6332_TESTI_CON3 0x8D1A
+#define MT6332_TESTI_CON4 0x8D1C
+#define MT6332_TESTI_CON5 0x8D1E
+#define MT6332_TESTI_CON6 0x8D20
+#define MT6332_TESTI_MUX_CON0 0x8D22
+#define MT6332_TESTI_MUX_CON1 0x8D24
+#define MT6332_TESTI_MUX_CON2 0x8D26
+#define MT6332_TESTI_MUX_CON3 0x8D28
+#define MT6332_TESTI_MUX_CON4 0x8D2A
+#define MT6332_TESTI_MUX_CON5 0x8D2C
+#define MT6332_TESTI_MUX_CON6 0x8D2E
+#define MT6332_TESTO_CON0 0x8D30
+#define MT6332_TESTO_CON1 0x8D32
+#define MT6332_TEST_OMUX_CON0 0x8D34
+#define MT6332_TEST_OMUX_CON1 0x8D36
+#define MT6332_DEBUG_CON0 0x8D38
+#define MT6332_DEBUG_CON1 0x8D3A
+#define MT6332_DEBUG_CON2 0x8D3C
+#define MT6332_FGADC_CON23 0x8D3E
+#define MT6332_FGADC_CON24 0x8D40
+#define MT6332_FGADC_CON25 0x8D42
+#define MT6332_TOP_RST_STATUS 0x8D44
+#define MT6332_TOP_RST_STATUS_SET 0x8D46
+#define MT6332_TOP_RST_STATUS_CLR 0x8D48
+#define MT6332_VDVFS2_CON28 0x8D4A
+
+#endif /* __MFD_MT6332_REGISTERS_H__ */
diff --git a/include/linux/mfd/mt6397/core.h b/include/linux/mfd/mt6397/core.h
index 1cf78726503b..4d2b80319db3 100644
--- a/include/linux/mfd/mt6397/core.h
+++ b/include/linux/mfd/mt6397/core.h
@@ -12,6 +12,8 @@
enum chip_id {
MT6323_CHIP_ID = 0x23,
+ MT6331_CHIP_ID = 0x20,
+ MT6332_CHIP_ID = 0x20,
MT6358_CHIP_ID = 0x58,
MT6359_CHIP_ID = 0x59,
MT6366_CHIP_ID = 0x66,
--
2.35.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 12+ messages in thread* Re: [PATCH v3 2/2] mfd: mt6397: Add basic support for MT6331+MT6332 PMIC
2022-06-17 11:07 ` AngeloGioacchino Del Regno
@ 2022-06-17 11:41 ` Matthias Brugger
-1 siblings, 0 replies; 12+ messages in thread
From: Matthias Brugger @ 2022-06-17 11:41 UTC (permalink / raw)
To: AngeloGioacchino Del Regno, lee.jones
Cc: robh+dt, krzysztof.kozlowski+dt, johnson.wang, hsin-hsiung.wang,
devicetree, linux-arm-kernel, linux-mediatek, linux-kernel
On 17/06/2022 13:07, AngeloGioacchino Del Regno wrote:
> Add support for the MT6331 PMIC with MT6332 Companion PMIC, found
> in MT6795 Helio X10 smartphone platforms.
>
> This combo has support for multiple devices but, for a start,
> only the following have been implemented:
> - Regulators (two instances, one in MT6331, one in MT6332)
> - RTC (MT6331)
> - Keys (MT6331)
> - Interrupts (MT6331 also dispatches MT6332's interrupts)
>
> There's more to be implemented, especially for MT6332, which
> will come at a later stage.
>
> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>
> ---
> drivers/mfd/mt6397-core.c | 47 ++
> drivers/mfd/mt6397-irq.c | 9 +-
> include/linux/mfd/mt6331/core.h | 40 ++
> include/linux/mfd/mt6331/registers.h | 584 ++++++++++++++++++++++++
> include/linux/mfd/mt6332/core.h | 65 +++
> include/linux/mfd/mt6332/registers.h | 642 +++++++++++++++++++++++++++
> include/linux/mfd/mt6397/core.h | 2 +
> 7 files changed, 1388 insertions(+), 1 deletion(-)
> create mode 100644 include/linux/mfd/mt6331/core.h
> create mode 100644 include/linux/mfd/mt6331/registers.h
> create mode 100644 include/linux/mfd/mt6332/core.h
> create mode 100644 include/linux/mfd/mt6332/registers.h
>
> diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
> index 1a368ad08f58..1c974132dc0b 100644
> --- a/drivers/mfd/mt6397-core.c
> +++ b/drivers/mfd/mt6397-core.c
> @@ -12,10 +12,12 @@
> #include <linux/regmap.h>
> #include <linux/mfd/core.h>
> #include <linux/mfd/mt6323/core.h>
> +#include <linux/mfd/mt6331/core.h>
> #include <linux/mfd/mt6358/core.h>
> #include <linux/mfd/mt6359/core.h>
> #include <linux/mfd/mt6397/core.h>
> #include <linux/mfd/mt6323/registers.h>
> +#include <linux/mfd/mt6331/registers.h>
> #include <linux/mfd/mt6358/registers.h>
> #include <linux/mfd/mt6359/registers.h>
> #include <linux/mfd/mt6397/registers.h>
> @@ -23,6 +25,9 @@
> #define MT6323_RTC_BASE 0x8000
> #define MT6323_RTC_SIZE 0x40
>
> +#define MT6331_RTC_BASE 0x4000
> +#define MT6331_RTC_SIZE 0x40
> +
> #define MT6358_RTC_BASE 0x0588
> #define MT6358_RTC_SIZE 0x3c
>
> @@ -37,6 +42,11 @@ static const struct resource mt6323_rtc_resources[] = {
> DEFINE_RES_IRQ(MT6323_IRQ_STATUS_RTC),
> };
>
> +static const struct resource mt6331_rtc_resources[] = {
> + DEFINE_RES_MEM(MT6331_RTC_BASE, MT6331_RTC_SIZE),
> + DEFINE_RES_IRQ(MT6331_IRQ_STATUS_RTC),
> +};
> +
> static const struct resource mt6358_rtc_resources[] = {
> DEFINE_RES_MEM(MT6358_RTC_BASE, MT6358_RTC_SIZE),
> DEFINE_RES_IRQ(MT6358_IRQ_RTC),
> @@ -66,6 +76,11 @@ static const struct resource mt6323_keys_resources[] = {
> DEFINE_RES_IRQ_NAMED(MT6323_IRQ_STATUS_FCHRKEY, "homekey"),
> };
>
> +static const struct resource mt6331_keys_resources[] = {
> + DEFINE_RES_IRQ_NAMED(MT6331_IRQ_STATUS_PWRKEY, "powerkey"),
> + DEFINE_RES_IRQ_NAMED(MT6331_IRQ_STATUS_HOMEKEY, "homekey"),
> +};
> +
> static const struct resource mt6397_keys_resources[] = {
> DEFINE_RES_IRQ_NAMED(MT6397_IRQ_PWRKEY, "powerkey"),
> DEFINE_RES_IRQ_NAMED(MT6397_IRQ_HOMEKEY, "homekey"),
> @@ -100,6 +115,27 @@ static const struct mfd_cell mt6323_devs[] = {
> },
> };
>
> +/* MT6331 is always used in combination with MT6332 */
> +static const struct mfd_cell mt6331_mt6332_devs[] = {
> + {
> + .name = "mt6331-rtc",
> + .num_resources = ARRAY_SIZE(mt6331_rtc_resources),
> + .resources = mt6331_rtc_resources,
> + .of_compatible = "mediatek,mt6331-rtc",
> + }, {
> + .name = "mt6331-regulator",
> + .of_compatible = "mediatek,mt6331-regulator"
> + }, {
> + .name = "mt6332-regulator",
> + .of_compatible = "mediatek,mt6332-regulator"
> + }, {
> + .name = "mtk-pmic-keys",
> + .num_resources = ARRAY_SIZE(mt6331_keys_resources),
> + .resources = mt6331_keys_resources,
> + .of_compatible = "mediatek,mt6331-keys"
> + },
> +};
> +
> static const struct mfd_cell mt6358_devs[] = {
> {
> .name = "mt6358-regulator",
> @@ -179,6 +215,14 @@ static const struct chip_data mt6323_core = {
> .irq_init = mt6397_irq_init,
> };
>
> +static const struct chip_data mt6331_mt6332_core = {
> + .cid_addr = MT6331_HWCID,
> + .cid_shift = 0,
> + .cells = mt6331_mt6332_devs,
> + .cell_size = ARRAY_SIZE(mt6331_mt6332_devs),
> + .irq_init = mt6397_irq_init,
> +};
> +
> static const struct chip_data mt6358_core = {
> .cid_addr = MT6358_SWCID,
> .cid_shift = 8,
> @@ -261,6 +305,9 @@ static const struct of_device_id mt6397_of_match[] = {
> {
> .compatible = "mediatek,mt6323",
> .data = &mt6323_core,
> + }, {
> + .compatible = "mediatek,mt6331",
> + .data = &mt6331_mt6332_core,
> }, {
> .compatible = "mediatek,mt6358",
> .data = &mt6358_core,
> diff --git a/drivers/mfd/mt6397-irq.c b/drivers/mfd/mt6397-irq.c
> index 2924919da991..eff53fed8fe7 100644
> --- a/drivers/mfd/mt6397-irq.c
> +++ b/drivers/mfd/mt6397-irq.c
> @@ -12,6 +12,8 @@
> #include <linux/suspend.h>
> #include <linux/mfd/mt6323/core.h>
> #include <linux/mfd/mt6323/registers.h>
> +#include <linux/mfd/mt6331/core.h>
> +#include <linux/mfd/mt6331/registers.h>
> #include <linux/mfd/mt6397/core.h>
> #include <linux/mfd/mt6397/registers.h>
>
> @@ -172,7 +174,12 @@ int mt6397_irq_init(struct mt6397_chip *chip)
> chip->int_status[0] = MT6323_INT_STATUS0;
> chip->int_status[1] = MT6323_INT_STATUS1;
> break;
> -
> + case MT6331_CHIP_ID:
> + chip->int_con[0] = MT6331_INT_CON0;
> + chip->int_con[1] = MT6331_INT_CON1;
> + chip->int_status[0] = MT6331_INT_STATUS_CON0;
> + chip->int_status[1] = MT6331_INT_STATUS_CON1;
> + break;
> case MT6391_CHIP_ID:
> case MT6397_CHIP_ID:
> chip->int_con[0] = MT6397_INT_CON0;
> diff --git a/include/linux/mfd/mt6331/core.h b/include/linux/mfd/mt6331/core.h
> new file mode 100644
> index 000000000000..df8e6b1e4bc1
> --- /dev/null
> +++ b/include/linux/mfd/mt6331/core.h
> @@ -0,0 +1,40 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> + */
> +
> +#ifndef __MFD_MT6331_CORE_H__
> +#define __MFD_MT6331_CORE_H__
> +
> +enum mt6331_irq_status_numbers {
> + MT6331_IRQ_STATUS_PWRKEY = 0,
> + MT6331_IRQ_STATUS_HOMEKEY,
> + MT6331_IRQ_STATUS_CHRDET,
> + MT6331_IRQ_STATUS_THR_H,
> + MT6331_IRQ_STATUS_THR_L,
> + MT6331_IRQ_STATUS_BAT_H,
> + MT6331_IRQ_STATUS_BAT_L,
> + MT6331_IRQ_STATUS_RTC,
> + MT6331_IRQ_STATUS_AUDIO,
> + MT6331_IRQ_STATUS_MAD,
> + MT6331_IRQ_STATUS_ACCDET,
> + MT6331_IRQ_STATUS_ACCDET_EINT,
> + MT6331_IRQ_STATUS_ACCDET_NEGV = 12,
> + MT6331_IRQ_STATUS_VDVFS11_OC = 16,
> + MT6331_IRQ_STATUS_VDVFS12_OC,
> + MT6331_IRQ_STATUS_VDVFS13_OC,
> + MT6331_IRQ_STATUS_VDVFS14_OC,
> + MT6331_IRQ_STATUS_GPU_OC,
> + MT6331_IRQ_STATUS_VCORE1_OC,
> + MT6331_IRQ_STATUS_VCORE2_OC,
> + MT6331_IRQ_STATUS_VIO18_OC,
> + MT6331_IRQ_STATUS_LDO_OC,
> + MT6331_IRQ_STATUS_NR,
> +};
> +
> +#define MT6331_IRQ_CON0_BASE MT6331_IRQ_STATUS_PWRKEY
> +#define MT6331_IRQ_CON0_BITS (MT6331_IRQ_STATUS_ACCDET_NEGV + 1)
> +#define MT6331_IRQ_CON1_BASE MT6331_IRQ_STATUS_VDVFS11_OC
> +#define MT6331_IRQ_CON1_BITS (MT6331_IRQ_STATUS_LDO_OC - MT6331_IRQ_STATUS_VDFS11_OC + 1)
> +
> +#endif /* __MFD_MT6331_CORE_H__ */
> diff --git a/include/linux/mfd/mt6331/registers.h b/include/linux/mfd/mt6331/registers.h
> new file mode 100644
> index 000000000000..e2be6bccd1a7
> --- /dev/null
> +++ b/include/linux/mfd/mt6331/registers.h
> @@ -0,0 +1,584 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> + */
> +
> +#ifndef __MFD_MT6331_REGISTERS_H__
> +#define __MFD_MT6331_REGISTERS_H__
> +
> +/* PMIC Registers */
> +#define MT6331_STRUP_CON0 0x0
> +#define MT6331_STRUP_CON2 0x2
> +#define MT6331_STRUP_CON3 0x4
> +#define MT6331_STRUP_CON4 0x6
> +#define MT6331_STRUP_CON5 0x8
> +#define MT6331_STRUP_CON6 0xA
> +#define MT6331_STRUP_CON7 0xC
> +#define MT6331_STRUP_CON8 0xE
> +#define MT6331_STRUP_CON9 0x10
> +#define MT6331_STRUP_CON10 0x12
> +#define MT6331_STRUP_CON11 0x14
> +#define MT6331_STRUP_CON12 0x16
> +#define MT6331_STRUP_CON13 0x18
> +#define MT6331_STRUP_CON14 0x1A
> +#define MT6331_STRUP_CON15 0x1C
> +#define MT6331_STRUP_CON16 0x1E
> +#define MT6331_STRUP_CON17 0x20
> +#define MT6331_STRUP_CON18 0x22
> +#define MT6331_HWCID 0x100
> +#define MT6331_SWCID 0x102
> +#define MT6331_EXT_PMIC_STATUS 0x104
> +#define MT6331_TOP_CON 0x106
> +#define MT6331_TEST_OUT 0x108
> +#define MT6331_TEST_CON0 0x10A
> +#define MT6331_TEST_CON1 0x10C
> +#define MT6331_TESTMODE_SW 0x10E
> +#define MT6331_EN_STATUS0 0x110
> +#define MT6331_EN_STATUS1 0x112
> +#define MT6331_EN_STATUS2 0x114
> +#define MT6331_OCSTATUS0 0x116
> +#define MT6331_OCSTATUS1 0x118
> +#define MT6331_OCSTATUS2 0x11A
> +#define MT6331_PGSTATUS 0x11C
> +#define MT6331_TOPSTATUS 0x11E
> +#define MT6331_TDSEL_CON 0x120
> +#define MT6331_RDSEL_CON 0x122
> +#define MT6331_SMT_CON0 0x124
> +#define MT6331_SMT_CON1 0x126
> +#define MT6331_SMT_CON2 0x128
> +#define MT6331_DRV_CON0 0x12A
> +#define MT6331_DRV_CON1 0x12C
> +#define MT6331_DRV_CON2 0x12E
> +#define MT6331_DRV_CON3 0x130
> +#define MT6331_TOP_STATUS 0x132
> +#define MT6331_TOP_STATUS_SET 0x134
> +#define MT6331_TOP_STATUS_CLR 0x136
> +#define MT6331_TOP_CKPDN_CON0 0x138
> +#define MT6331_TOP_CKPDN_CON0_SET 0x13A
> +#define MT6331_TOP_CKPDN_CON0_CLR 0x13C
> +#define MT6331_TOP_CKPDN_CON1 0x13E
> +#define MT6331_TOP_CKPDN_CON1_SET 0x140
> +#define MT6331_TOP_CKPDN_CON1_CLR 0x142
> +#define MT6331_TOP_CKPDN_CON2 0x144
> +#define MT6331_TOP_CKPDN_CON2_SET 0x146
> +#define MT6331_TOP_CKPDN_CON2_CLR 0x148
> +#define MT6331_TOP_CKSEL_CON 0x14A
> +#define MT6331_TOP_CKSEL_CON_SET 0x14C
> +#define MT6331_TOP_CKSEL_CON_CLR 0x14E
> +#define MT6331_TOP_CKHWEN_CON 0x150
> +#define MT6331_TOP_CKHWEN_CON_SET 0x152
> +#define MT6331_TOP_CKHWEN_CON_CLR 0x154
> +#define MT6331_TOP_CKTST_CON0 0x156
> +#define MT6331_TOP_CKTST_CON1 0x158
> +#define MT6331_TOP_CLKSQ 0x15A
> +#define MT6331_TOP_CLKSQ_SET 0x15C
> +#define MT6331_TOP_CLKSQ_CLR 0x15E
> +#define MT6331_TOP_RST_CON 0x160
> +#define MT6331_TOP_RST_CON_SET 0x162
> +#define MT6331_TOP_RST_CON_CLR 0x164
> +#define MT6331_TOP_RST_MISC 0x166
> +#define MT6331_TOP_RST_MISC_SET 0x168
> +#define MT6331_TOP_RST_MISC_CLR 0x16A
> +#define MT6331_INT_CON0 0x16C
> +#define MT6331_INT_CON0_SET 0x16E
> +#define MT6331_INT_CON0_CLR 0x170
> +#define MT6331_INT_CON1 0x172
> +#define MT6331_INT_CON1_SET 0x174
> +#define MT6331_INT_CON1_CLR 0x176
> +#define MT6331_INT_MISC_CON 0x178
> +#define MT6331_INT_MISC_CON_SET 0x17A
> +#define MT6331_INT_MISC_CON_CLR 0x17C
> +#define MT6331_INT_STATUS_CON0 0x17E
> +#define MT6331_INT_STATUS_CON1 0x180
> +#define MT6331_OC_GEAR_0 0x182
> +#define MT6331_FQMTR_CON0 0x184
> +#define MT6331_FQMTR_CON1 0x186
> +#define MT6331_FQMTR_CON2 0x188
> +#define MT6331_RG_SPI_CON 0x18A
> +#define MT6331_DEW_DIO_EN 0x18C
> +#define MT6331_DEW_READ_TEST 0x18E
> +#define MT6331_DEW_WRITE_TEST 0x190
> +#define MT6331_DEW_CRC_SWRST 0x192
> +#define MT6331_DEW_CRC_EN 0x194
> +#define MT6331_DEW_CRC_VAL 0x196
> +#define MT6331_DEW_DBG_MON_SEL 0x198
> +#define MT6331_DEW_CIPHER_KEY_SEL 0x19A
> +#define MT6331_DEW_CIPHER_IV_SEL 0x19C
> +#define MT6331_DEW_CIPHER_EN 0x19E
> +#define MT6331_DEW_CIPHER_RDY 0x1A0
> +#define MT6331_DEW_CIPHER_MODE 0x1A2
> +#define MT6331_DEW_CIPHER_SWRST 0x1A4
> +#define MT6331_DEW_RDDMY_NO 0x1A6
> +#define MT6331_INT_TYPE_CON0 0x1A8
> +#define MT6331_INT_TYPE_CON0_SET 0x1AA
> +#define MT6331_INT_TYPE_CON0_CLR 0x1AC
> +#define MT6331_INT_TYPE_CON1 0x1AE
> +#define MT6331_INT_TYPE_CON1_SET 0x1B0
> +#define MT6331_INT_TYPE_CON1_CLR 0x1B2
> +#define MT6331_INT_STA 0x1B4
> +#define MT6331_BUCK_ALL_CON0 0x200
> +#define MT6331_BUCK_ALL_CON1 0x202
> +#define MT6331_BUCK_ALL_CON2 0x204
> +#define MT6331_BUCK_ALL_CON3 0x206
> +#define MT6331_BUCK_ALL_CON4 0x208
> +#define MT6331_BUCK_ALL_CON5 0x20A
> +#define MT6331_BUCK_ALL_CON6 0x20C
> +#define MT6331_BUCK_ALL_CON7 0x20E
> +#define MT6331_BUCK_ALL_CON8 0x210
> +#define MT6331_BUCK_ALL_CON9 0x212
> +#define MT6331_BUCK_ALL_CON10 0x214
> +#define MT6331_BUCK_ALL_CON11 0x216
> +#define MT6331_BUCK_ALL_CON12 0x218
> +#define MT6331_BUCK_ALL_CON13 0x21A
> +#define MT6331_BUCK_ALL_CON14 0x21C
> +#define MT6331_BUCK_ALL_CON15 0x21E
> +#define MT6331_BUCK_ALL_CON16 0x220
> +#define MT6331_BUCK_ALL_CON17 0x222
> +#define MT6331_BUCK_ALL_CON18 0x224
> +#define MT6331_BUCK_ALL_CON19 0x226
> +#define MT6331_BUCK_ALL_CON20 0x228
> +#define MT6331_BUCK_ALL_CON21 0x22A
> +#define MT6331_BUCK_ALL_CON22 0x22C
> +#define MT6331_BUCK_ALL_CON23 0x22E
> +#define MT6331_BUCK_ALL_CON24 0x230
> +#define MT6331_BUCK_ALL_CON25 0x232
> +#define MT6331_BUCK_ALL_CON26 0x234
> +#define MT6331_VDVFS11_CON0 0x236
> +#define MT6331_VDVFS11_CON1 0x238
> +#define MT6331_VDVFS11_CON2 0x23A
> +#define MT6331_VDVFS11_CON3 0x23C
> +#define MT6331_VDVFS11_CON4 0x23E
> +#define MT6331_VDVFS11_CON5 0x240
> +#define MT6331_VDVFS11_CON6 0x242
> +#define MT6331_VDVFS11_CON7 0x244
> +#define MT6331_VDVFS11_CON8 0x246
> +#define MT6331_VDVFS11_CON9 0x248
> +#define MT6331_VDVFS11_CON10 0x24A
> +#define MT6331_VDVFS11_CON11 0x24C
> +#define MT6331_VDVFS11_CON12 0x24E
> +#define MT6331_VDVFS11_CON13 0x250
> +#define MT6331_VDVFS11_CON14 0x252
> +#define MT6331_VDVFS11_CON18 0x25A
> +#define MT6331_VDVFS11_CON19 0x25C
> +#define MT6331_VDVFS11_CON20 0x25E
> +#define MT6331_VDVFS11_CON21 0x260
> +#define MT6331_VDVFS11_CON22 0x262
> +#define MT6331_VDVFS11_CON23 0x264
> +#define MT6331_VDVFS11_CON24 0x266
> +#define MT6331_VDVFS11_CON25 0x268
> +#define MT6331_VDVFS11_CON26 0x26A
> +#define MT6331_VDVFS11_CON27 0x26C
> +#define MT6331_VDVFS12_CON0 0x26E
> +#define MT6331_VDVFS12_CON1 0x270
> +#define MT6331_VDVFS12_CON2 0x272
> +#define MT6331_VDVFS12_CON3 0x274
> +#define MT6331_VDVFS12_CON4 0x276
> +#define MT6331_VDVFS12_CON5 0x278
> +#define MT6331_VDVFS12_CON6 0x27A
> +#define MT6331_VDVFS12_CON7 0x27C
> +#define MT6331_VDVFS12_CON8 0x27E
> +#define MT6331_VDVFS12_CON9 0x280
> +#define MT6331_VDVFS12_CON10 0x282
> +#define MT6331_VDVFS12_CON11 0x284
> +#define MT6331_VDVFS12_CON12 0x286
> +#define MT6331_VDVFS12_CON13 0x288
> +#define MT6331_VDVFS12_CON14 0x28A
> +#define MT6331_VDVFS12_CON18 0x292
> +#define MT6331_VDVFS12_CON19 0x294
> +#define MT6331_VDVFS12_CON20 0x296
> +#define MT6331_VDVFS13_CON0 0x298
> +#define MT6331_VDVFS13_CON1 0x29A
> +#define MT6331_VDVFS13_CON2 0x29C
> +#define MT6331_VDVFS13_CON3 0x29E
> +#define MT6331_VDVFS13_CON4 0x2A0
> +#define MT6331_VDVFS13_CON5 0x2A2
> +#define MT6331_VDVFS13_CON6 0x2A4
> +#define MT6331_VDVFS13_CON7 0x2A6
> +#define MT6331_VDVFS13_CON8 0x2A8
> +#define MT6331_VDVFS13_CON9 0x2AA
> +#define MT6331_VDVFS13_CON10 0x2AC
> +#define MT6331_VDVFS13_CON11 0x2AE
> +#define MT6331_VDVFS13_CON12 0x2B0
> +#define MT6331_VDVFS13_CON13 0x2B2
> +#define MT6331_VDVFS13_CON14 0x2B4
> +#define MT6331_VDVFS13_CON18 0x2BC
> +#define MT6331_VDVFS13_CON19 0x2BE
> +#define MT6331_VDVFS13_CON20 0x2C0
> +#define MT6331_VDVFS14_CON0 0x2C2
> +#define MT6331_VDVFS14_CON1 0x2C4
> +#define MT6331_VDVFS14_CON2 0x2C6
> +#define MT6331_VDVFS14_CON3 0x2C8
> +#define MT6331_VDVFS14_CON4 0x2CA
> +#define MT6331_VDVFS14_CON5 0x2CC
> +#define MT6331_VDVFS14_CON6 0x2CE
> +#define MT6331_VDVFS14_CON7 0x2D0
> +#define MT6331_VDVFS14_CON8 0x2D2
> +#define MT6331_VDVFS14_CON9 0x2D4
> +#define MT6331_VDVFS14_CON10 0x2D6
> +#define MT6331_VDVFS14_CON11 0x2D8
> +#define MT6331_VDVFS14_CON12 0x2DA
> +#define MT6331_VDVFS14_CON13 0x2DC
> +#define MT6331_VDVFS14_CON14 0x2DE
> +#define MT6331_VDVFS14_CON18 0x2E6
> +#define MT6331_VDVFS14_CON19 0x2E8
> +#define MT6331_VDVFS14_CON20 0x2EA
> +#define MT6331_VGPU_CON0 0x300
> +#define MT6331_VGPU_CON1 0x302
> +#define MT6331_VGPU_CON2 0x304
> +#define MT6331_VGPU_CON3 0x306
> +#define MT6331_VGPU_CON4 0x308
> +#define MT6331_VGPU_CON5 0x30A
> +#define MT6331_VGPU_CON6 0x30C
> +#define MT6331_VGPU_CON7 0x30E
> +#define MT6331_VGPU_CON8 0x310
> +#define MT6331_VGPU_CON9 0x312
> +#define MT6331_VGPU_CON10 0x314
> +#define MT6331_VGPU_CON11 0x316
> +#define MT6331_VGPU_CON12 0x318
> +#define MT6331_VGPU_CON13 0x31A
> +#define MT6331_VGPU_CON14 0x31C
> +#define MT6331_VGPU_CON15 0x31E
> +#define MT6331_VGPU_CON16 0x320
> +#define MT6331_VGPU_CON17 0x322
> +#define MT6331_VGPU_CON18 0x324
> +#define MT6331_VGPU_CON19 0x326
> +#define MT6331_VGPU_CON20 0x328
> +#define MT6331_VCORE1_CON0 0x32A
> +#define MT6331_VCORE1_CON1 0x32C
> +#define MT6331_VCORE1_CON2 0x32E
> +#define MT6331_VCORE1_CON3 0x330
> +#define MT6331_VCORE1_CON4 0x332
> +#define MT6331_VCORE1_CON5 0x334
> +#define MT6331_VCORE1_CON6 0x336
> +#define MT6331_VCORE1_CON7 0x338
> +#define MT6331_VCORE1_CON8 0x33A
> +#define MT6331_VCORE1_CON9 0x33C
> +#define MT6331_VCORE1_CON10 0x33E
> +#define MT6331_VCORE1_CON11 0x340
> +#define MT6331_VCORE1_CON12 0x342
> +#define MT6331_VCORE1_CON13 0x344
> +#define MT6331_VCORE1_CON14 0x346
> +#define MT6331_VCORE1_CON15 0x348
> +#define MT6331_VCORE1_CON16 0x34A
> +#define MT6331_VCORE1_CON17 0x34C
> +#define MT6331_VCORE1_CON18 0x34E
> +#define MT6331_VCORE1_CON19 0x350
> +#define MT6331_VCORE1_CON20 0x352
> +#define MT6331_VCORE2_CON0 0x354
> +#define MT6331_VCORE2_CON1 0x356
> +#define MT6331_VCORE2_CON2 0x358
> +#define MT6331_VCORE2_CON3 0x35A
> +#define MT6331_VCORE2_CON4 0x35C
> +#define MT6331_VCORE2_CON5 0x35E
> +#define MT6331_VCORE2_CON6 0x360
> +#define MT6331_VCORE2_CON7 0x362
> +#define MT6331_VCORE2_CON8 0x364
> +#define MT6331_VCORE2_CON9 0x366
> +#define MT6331_VCORE2_CON10 0x368
> +#define MT6331_VCORE2_CON11 0x36A
> +#define MT6331_VCORE2_CON12 0x36C
> +#define MT6331_VCORE2_CON13 0x36E
> +#define MT6331_VCORE2_CON14 0x370
> +#define MT6331_VCORE2_CON15 0x372
> +#define MT6331_VCORE2_CON16 0x374
> +#define MT6331_VCORE2_CON17 0x376
> +#define MT6331_VCORE2_CON18 0x378
> +#define MT6331_VCORE2_CON19 0x37A
> +#define MT6331_VCORE2_CON20 0x37C
> +#define MT6331_VCORE2_CON21 0x37E
> +#define MT6331_VIO18_CON0 0x380
> +#define MT6331_VIO18_CON1 0x382
> +#define MT6331_VIO18_CON2 0x384
> +#define MT6331_VIO18_CON3 0x386
> +#define MT6331_VIO18_CON4 0x388
> +#define MT6331_VIO18_CON5 0x38A
> +#define MT6331_VIO18_CON6 0x38C
> +#define MT6331_VIO18_CON7 0x38E
> +#define MT6331_VIO18_CON8 0x390
> +#define MT6331_VIO18_CON9 0x392
> +#define MT6331_VIO18_CON10 0x394
> +#define MT6331_VIO18_CON11 0x396
> +#define MT6331_VIO18_CON12 0x398
> +#define MT6331_VIO18_CON13 0x39A
> +#define MT6331_VIO18_CON14 0x39C
> +#define MT6331_VIO18_CON15 0x39E
> +#define MT6331_VIO18_CON16 0x3A0
> +#define MT6331_VIO18_CON17 0x3A2
> +#define MT6331_VIO18_CON18 0x3A4
> +#define MT6331_VIO18_CON19 0x3A6
> +#define MT6331_VIO18_CON20 0x3A8
> +#define MT6331_BUCK_K_CON0 0x3AA
> +#define MT6331_BUCK_K_CON1 0x3AC
> +#define MT6331_BUCK_K_CON2 0x3AE
> +#define MT6331_BUCK_K_CON3 0x3B0
> +#define MT6331_ZCD_CON0 0x400
> +#define MT6331_ZCD_CON1 0x402
> +#define MT6331_ZCD_CON2 0x404
> +#define MT6331_ZCD_CON3 0x406
> +#define MT6331_ZCD_CON4 0x408
> +#define MT6331_ZCD_CON5 0x40A
> +#define MT6331_ISINK0_CON0 0x40C
> +#define MT6331_ISINK0_CON1 0x40E
> +#define MT6331_ISINK0_CON2 0x410
> +#define MT6331_ISINK0_CON3 0x412
> +#define MT6331_ISINK0_CON4 0x414
> +#define MT6331_ISINK1_CON0 0x416
> +#define MT6331_ISINK1_CON1 0x418
> +#define MT6331_ISINK1_CON2 0x41A
> +#define MT6331_ISINK1_CON3 0x41C
> +#define MT6331_ISINK1_CON4 0x41E
> +#define MT6331_ISINK2_CON0 0x420
> +#define MT6331_ISINK2_CON1 0x422
> +#define MT6331_ISINK2_CON2 0x424
> +#define MT6331_ISINK2_CON3 0x426
> +#define MT6331_ISINK2_CON4 0x428
> +#define MT6331_ISINK3_CON0 0x42A
> +#define MT6331_ISINK3_CON1 0x42C
> +#define MT6331_ISINK3_CON2 0x42E
> +#define MT6331_ISINK3_CON3 0x430
> +#define MT6331_ISINK3_CON4 0x432
> +#define MT6331_ISINK_ANA0 0x434
> +#define MT6331_ISINK_ANA1 0x436
> +#define MT6331_ISINK_PHASE_DLY 0x438
> +#define MT6331_ISINK_EN_CTRL 0x43A
> +#define MT6331_ANALDO_CON0 0x500
> +#define MT6331_ANALDO_CON1 0x502
> +#define MT6331_ANALDO_CON2 0x504
> +#define MT6331_ANALDO_CON3 0x506
> +#define MT6331_ANALDO_CON4 0x508
> +#define MT6331_ANALDO_CON5 0x50A
> +#define MT6331_ANALDO_CON6 0x50C
> +#define MT6331_ANALDO_CON7 0x50E
> +#define MT6331_ANALDO_CON8 0x510
> +#define MT6331_ANALDO_CON9 0x512
> +#define MT6331_ANALDO_CON10 0x514
> +#define MT6331_ANALDO_CON11 0x516
> +#define MT6331_ANALDO_CON12 0x518
> +#define MT6331_ANALDO_CON13 0x51A
> +#define MT6331_SYSLDO_CON0 0x51C
> +#define MT6331_SYSLDO_CON1 0x51E
> +#define MT6331_SYSLDO_CON2 0x520
> +#define MT6331_SYSLDO_CON3 0x522
> +#define MT6331_SYSLDO_CON4 0x524
> +#define MT6331_SYSLDO_CON5 0x526
> +#define MT6331_SYSLDO_CON6 0x528
> +#define MT6331_SYSLDO_CON7 0x52A
> +#define MT6331_SYSLDO_CON8 0x52C
> +#define MT6331_SYSLDO_CON9 0x52E
> +#define MT6331_SYSLDO_CON10 0x530
> +#define MT6331_SYSLDO_CON11 0x532
> +#define MT6331_SYSLDO_CON12 0x534
> +#define MT6331_SYSLDO_CON13 0x536
> +#define MT6331_SYSLDO_CON14 0x538
> +#define MT6331_SYSLDO_CON15 0x53A
> +#define MT6331_SYSLDO_CON16 0x53C
> +#define MT6331_SYSLDO_CON17 0x53E
> +#define MT6331_SYSLDO_CON18 0x540
> +#define MT6331_SYSLDO_CON19 0x542
> +#define MT6331_SYSLDO_CON20 0x544
> +#define MT6331_SYSLDO_CON21 0x546
> +#define MT6331_DIGLDO_CON0 0x548
> +#define MT6331_DIGLDO_CON1 0x54A
> +#define MT6331_DIGLDO_CON2 0x54C
> +#define MT6331_DIGLDO_CON3 0x54E
> +#define MT6331_DIGLDO_CON4 0x550
> +#define MT6331_DIGLDO_CON5 0x552
> +#define MT6331_DIGLDO_CON6 0x554
> +#define MT6331_DIGLDO_CON7 0x556
> +#define MT6331_DIGLDO_CON8 0x558
> +#define MT6331_DIGLDO_CON9 0x55A
> +#define MT6331_DIGLDO_CON10 0x55C
> +#define MT6331_DIGLDO_CON11 0x55E
> +#define MT6331_DIGLDO_CON12 0x560
> +#define MT6331_DIGLDO_CON13 0x562
> +#define MT6331_DIGLDO_CON14 0x564
> +#define MT6331_DIGLDO_CON15 0x566
> +#define MT6331_DIGLDO_CON16 0x568
> +#define MT6331_DIGLDO_CON17 0x56A
> +#define MT6331_DIGLDO_CON18 0x56C
> +#define MT6331_DIGLDO_CON19 0x56E
> +#define MT6331_DIGLDO_CON20 0x570
> +#define MT6331_DIGLDO_CON21 0x572
> +#define MT6331_DIGLDO_CON22 0x574
> +#define MT6331_DIGLDO_CON23 0x576
> +#define MT6331_DIGLDO_CON24 0x578
> +#define MT6331_DIGLDO_CON25 0x57A
> +#define MT6331_DIGLDO_CON26 0x57C
> +#define MT6331_DIGLDO_CON27 0x57E
> +#define MT6331_DIGLDO_CON28 0x580
> +#define MT6331_OTP_CON0 0x600
> +#define MT6331_OTP_CON1 0x602
> +#define MT6331_OTP_CON2 0x604
> +#define MT6331_OTP_CON3 0x606
> +#define MT6331_OTP_CON4 0x608
> +#define MT6331_OTP_CON5 0x60A
> +#define MT6331_OTP_CON6 0x60C
> +#define MT6331_OTP_CON7 0x60E
> +#define MT6331_OTP_CON8 0x610
> +#define MT6331_OTP_CON9 0x612
> +#define MT6331_OTP_CON10 0x614
> +#define MT6331_OTP_CON11 0x616
> +#define MT6331_OTP_CON12 0x618
> +#define MT6331_OTP_CON13 0x61A
> +#define MT6331_OTP_CON14 0x61C
> +#define MT6331_OTP_DOUT_0_15 0x61E
> +#define MT6331_OTP_DOUT_16_31 0x620
> +#define MT6331_OTP_DOUT_32_47 0x622
> +#define MT6331_OTP_DOUT_48_63 0x624
> +#define MT6331_OTP_DOUT_64_79 0x626
> +#define MT6331_OTP_DOUT_80_95 0x628
> +#define MT6331_OTP_DOUT_96_111 0x62A
> +#define MT6331_OTP_DOUT_112_127 0x62C
> +#define MT6331_OTP_DOUT_128_143 0x62E
> +#define MT6331_OTP_DOUT_144_159 0x630
> +#define MT6331_OTP_DOUT_160_175 0x632
> +#define MT6331_OTP_DOUT_176_191 0x634
> +#define MT6331_OTP_DOUT_192_207 0x636
> +#define MT6331_OTP_DOUT_208_223 0x638
> +#define MT6331_OTP_DOUT_224_239 0x63A
> +#define MT6331_OTP_DOUT_240_255 0x63C
> +#define MT6331_OTP_VAL_0_15 0x63E
> +#define MT6331_OTP_VAL_16_31 0x640
> +#define MT6331_OTP_VAL_32_47 0x642
> +#define MT6331_OTP_VAL_48_63 0x644
> +#define MT6331_OTP_VAL_64_79 0x646
> +#define MT6331_OTP_VAL_80_95 0x648
> +#define MT6331_OTP_VAL_96_111 0x64A
> +#define MT6331_OTP_VAL_112_127 0x64C
> +#define MT6331_OTP_VAL_128_143 0x64E
> +#define MT6331_OTP_VAL_144_159 0x650
> +#define MT6331_OTP_VAL_160_175 0x652
> +#define MT6331_OTP_VAL_176_191 0x654
> +#define MT6331_OTP_VAL_192_207 0x656
> +#define MT6331_OTP_VAL_208_223 0x658
> +#define MT6331_OTP_VAL_224_239 0x65A
> +#define MT6331_OTP_VAL_240_255 0x65C
> +#define MT6331_RTC_MIX_CON0 0x65E
> +#define MT6331_RTC_MIX_CON1 0x660
> +#define MT6331_AUDDAC_CFG0 0x662
> +#define MT6331_AUDBUF_CFG0 0x664
> +#define MT6331_AUDBUF_CFG1 0x666
> +#define MT6331_AUDBUF_CFG2 0x668
> +#define MT6331_AUDBUF_CFG3 0x66A
> +#define MT6331_AUDBUF_CFG4 0x66C
> +#define MT6331_AUDBUF_CFG5 0x66E
> +#define MT6331_AUDBUF_CFG6 0x670
> +#define MT6331_AUDBUF_CFG7 0x672
> +#define MT6331_AUDBUF_CFG8 0x674
> +#define MT6331_IBIASDIST_CFG0 0x676
> +#define MT6331_AUDCLKGEN_CFG0 0x678
> +#define MT6331_AUDLDO_CFG0 0x67A
> +#define MT6331_AUDDCDC_CFG0 0x67C
> +#define MT6331_AUDDCDC_CFG1 0x67E
> +#define MT6331_AUDNVREGGLB_CFG0 0x680
> +#define MT6331_AUD_NCP0 0x682
> +#define MT6331_AUD_ZCD_CFG0 0x684
> +#define MT6331_AUDPREAMP_CFG0 0x686
> +#define MT6331_AUDPREAMP_CFG1 0x688
> +#define MT6331_AUDPREAMP_CFG2 0x68A
> +#define MT6331_AUDADC_CFG0 0x68C
> +#define MT6331_AUDADC_CFG1 0x68E
> +#define MT6331_AUDADC_CFG2 0x690
> +#define MT6331_AUDADC_CFG3 0x692
> +#define MT6331_AUDADC_CFG4 0x694
> +#define MT6331_AUDADC_CFG5 0x696
> +#define MT6331_AUDDIGMI_CFG0 0x698
> +#define MT6331_AUDDIGMI_CFG1 0x69A
> +#define MT6331_AUDMICBIAS_CFG0 0x69C
> +#define MT6331_AUDMICBIAS_CFG1 0x69E
> +#define MT6331_AUDENCSPARE_CFG0 0x6A0
> +#define MT6331_AUDPREAMPGAIN_CFG0 0x6A2
> +#define MT6331_AUDMADPLL_CFG0 0x6A4
> +#define MT6331_AUDMADPLL_CFG1 0x6A6
> +#define MT6331_AUDMADPLL_CFG2 0x6A8
> +#define MT6331_AUDLDO_NVREG_CFG0 0x6AA
> +#define MT6331_AUDLDO_NVREG_CFG1 0x6AC
> +#define MT6331_AUDLDO_NVREG_CFG2 0x6AE
> +#define MT6331_AUXADC_ADC0 0x700
> +#define MT6331_AUXADC_ADC1 0x702
> +#define MT6331_AUXADC_ADC2 0x704
> +#define MT6331_AUXADC_ADC3 0x706
> +#define MT6331_AUXADC_ADC4 0x708
> +#define MT6331_AUXADC_ADC5 0x70A
> +#define MT6331_AUXADC_ADC6 0x70C
> +#define MT6331_AUXADC_ADC7 0x70E
> +#define MT6331_AUXADC_ADC8 0x710
> +#define MT6331_AUXADC_ADC9 0x712
> +#define MT6331_AUXADC_ADC10 0x714
> +#define MT6331_AUXADC_ADC11 0x716
> +#define MT6331_AUXADC_ADC12 0x718
> +#define MT6331_AUXADC_ADC13 0x71A
> +#define MT6331_AUXADC_ADC14 0x71C
> +#define MT6331_AUXADC_ADC15 0x71E
> +#define MT6331_AUXADC_ADC16 0x720
> +#define MT6331_AUXADC_ADC17 0x722
> +#define MT6331_AUXADC_ADC18 0x724
> +#define MT6331_AUXADC_ADC19 0x726
> +#define MT6331_AUXADC_STA0 0x728
> +#define MT6331_AUXADC_STA1 0x72A
> +#define MT6331_AUXADC_RQST0 0x72C
> +#define MT6331_AUXADC_RQST0_SET 0x72E
> +#define MT6331_AUXADC_RQST0_CLR 0x730
> +#define MT6331_AUXADC_RQST1 0x732
> +#define MT6331_AUXADC_RQST1_SET 0x734
> +#define MT6331_AUXADC_RQST1_CLR 0x736
> +#define MT6331_AUXADC_CON0 0x738
> +#define MT6331_AUXADC_CON1 0x73A
> +#define MT6331_AUXADC_CON2 0x73C
> +#define MT6331_AUXADC_CON3 0x73E
> +#define MT6331_AUXADC_CON4 0x740
> +#define MT6331_AUXADC_CON5 0x742
> +#define MT6331_AUXADC_CON6 0x744
> +#define MT6331_AUXADC_CON7 0x746
> +#define MT6331_AUXADC_CON8 0x748
> +#define MT6331_AUXADC_CON9 0x74A
> +#define MT6331_AUXADC_CON10 0x74C
> +#define MT6331_AUXADC_CON11 0x74E
> +#define MT6331_AUXADC_CON12 0x750
> +#define MT6331_AUXADC_CON13 0x752
> +#define MT6331_AUXADC_CON14 0x754
> +#define MT6331_AUXADC_CON15 0x756
> +#define MT6331_AUXADC_CON16 0x758
> +#define MT6331_AUXADC_CON17 0x75A
> +#define MT6331_AUXADC_CON18 0x75C
> +#define MT6331_AUXADC_CON19 0x75E
> +#define MT6331_AUXADC_CON20 0x760
> +#define MT6331_AUXADC_CON21 0x762
> +#define MT6331_AUXADC_CON22 0x764
> +#define MT6331_AUXADC_CON23 0x766
> +#define MT6331_AUXADC_CON24 0x768
> +#define MT6331_AUXADC_CON25 0x76A
> +#define MT6331_AUXADC_CON26 0x76C
> +#define MT6331_AUXADC_CON27 0x76E
> +#define MT6331_AUXADC_CON28 0x770
> +#define MT6331_AUXADC_CON29 0x772
> +#define MT6331_AUXADC_CON30 0x774
> +#define MT6331_AUXADC_CON31 0x776
> +#define MT6331_AUXADC_CON32 0x778
> +#define MT6331_ACCDET_CON0 0x77A
> +#define MT6331_ACCDET_CON1 0x77C
> +#define MT6331_ACCDET_CON2 0x77E
> +#define MT6331_ACCDET_CON3 0x780
> +#define MT6331_ACCDET_CON4 0x782
> +#define MT6331_ACCDET_CON5 0x784
> +#define MT6331_ACCDET_CON6 0x786
> +#define MT6331_ACCDET_CON7 0x788
> +#define MT6331_ACCDET_CON8 0x78A
> +#define MT6331_ACCDET_CON9 0x78C
> +#define MT6331_ACCDET_CON10 0x78E
> +#define MT6331_ACCDET_CON11 0x790
> +#define MT6331_ACCDET_CON12 0x792
> +#define MT6331_ACCDET_CON13 0x794
> +#define MT6331_ACCDET_CON14 0x796
> +#define MT6331_ACCDET_CON15 0x798
> +#define MT6331_ACCDET_CON16 0x79A
> +#define MT6331_ACCDET_CON17 0x79C
> +#define MT6331_ACCDET_CON18 0x79E
> +#define MT6331_ACCDET_CON19 0x7A0
> +#define MT6331_ACCDET_CON20 0x7A2
> +#define MT6331_ACCDET_CON21 0x7A4
> +#define MT6331_ACCDET_CON22 0x7A6
> +#define MT6331_ACCDET_CON23 0x7A8
> +#define MT6331_ACCDET_CON24 0x7AA
> +
> +#endif /* __MFD_MT6331_REGISTERS_H__ */
> diff --git a/include/linux/mfd/mt6332/core.h b/include/linux/mfd/mt6332/core.h
> new file mode 100644
> index 000000000000..cd6013eb82d9
> --- /dev/null
> +++ b/include/linux/mfd/mt6332/core.h
> @@ -0,0 +1,65 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> + */
> +
> +#ifndef __MFD_MT6332_CORE_H__
> +#define __MFD_MT6332_CORE_H__
> +
> +enum mt6332_irq_status_numbers {
> + MT6332_IRQ_STATUS_CHR_COMPLETE = 0,
> + MT6332_IRQ_STATUS_THERMAL_SD,
> + MT6332_IRQ_STATUS_THERMAL_REG_IN,
> + MT6332_IRQ_STATUS_THERMAL_REG_OUT,
> + MT6332_IRQ_STATUS_OTG_OC,
> + MT6332_IRQ_STATUS_CHR_OC,
> + MT6332_IRQ_STATUS_OTG_THERMAL,
> + MT6332_IRQ_STATUS_CHRIN_SHORT,
> + MT6332_IRQ_STATUS_DRVCDT_SHORT,
> + MT6332_IRQ_STATUS_PLUG_IN_FLASH,
> + MT6332_IRQ_STATUS_CHRWDT_FLAG,
> + MT6332_IRQ_STATUS_FLASH_EN_TIMEOUT,
> + MT6332_IRQ_STATUS_FLASH_VLED1_SHORT,
> + MT6332_IRQ_STATUS_FLASH_VLED1_OPEN = 13,
> + MT6332_IRQ_STATUS_OV = 16,
> + MT6332_IRQ_STATUS_BVALID_DET,
> + MT6332_IRQ_STATUS_VBATON_UNDET,
> + MT6332_IRQ_STATUS_CHR_PLUG_IN,
> + MT6332_IRQ_STATUS_CHR_PLUG_OUT,
> + MT6332_IRQ_STATUS_BC11_TIMEOUT,
> + MT6332_IRQ_STATUS_FLASH_VLED2_SHORT,
> + MT6332_IRQ_STATUS_FLASH_VLED2_OPEN = 23,
> + MT6332_IRQ_STATUS_THR_H = 32,
> + MT6332_IRQ_STATUS_THR_L,
> + MT6332_IRQ_STATUS_BAT_H,
> + MT6332_IRQ_STATUS_BAT_L,
> + MT6332_IRQ_STATUS_M3_H,
> + MT6332_IRQ_STATUS_M3_L,
> + MT6332_IRQ_STATUS_FG_BAT_H,
> + MT6332_IRQ_STATUS_FG_BAT_L,
> + MT6332_IRQ_STATUS_FG_CUR_H,
> + MT6332_IRQ_STATUS_FG_CUR_L,
> + MT6332_IRQ_STATUS_SPKL_D,
> + MT6332_IRQ_STATUS_SPKL_AB,
> + MT6332_IRQ_STATUS_BIF,
> + MT6332_IRQ_STATUS_VWLED_OC = 45,
> + MT6332_IRQ_STATUS_VDRAM_OC = 48,
> + MT6332_IRQ_STATUS_VDVFS2_OC,
> + MT6332_IRQ_STATUS_VRF1_OC,
> + MT6332_IRQ_STATUS_VRF2_OC,
> + MT6332_IRQ_STATUS_VPA_OC,
> + MT6332_IRQ_STATUS_VSBST_OC,
> + MT6332_IRQ_STATUS_LDO_OC,
> + MT6332_IRQ_STATUS_NR,
> +};
> +
> +#define MT6332_IRQ_CON0_BASE MT6332_IRQ_STATUS_CHR_COMPLETE
> +#define MT6332_IRQ_CON0_BITS (MT6332_IRQ_STATUS_FLASH_VLED1_OPEN + 1)
> +#define MT6332_IRQ_CON1_BASE MT6332_IRQ_STATUS_OV
> +#define MT6332_IRQ_CON1_BITS (MT6332_IRQ_STATUS_FLASH_VLED2_OPEN - MT6332_IRQ_STATUS_OV + 1)
> +#define MT6332_IRQ_CON2_BASE MT6332_IRQ_STATUS_THR_H
> +#define MT6332_IRQ_CON2_BITS (MT6332_IRQ_STATUS_VWLED_OC - MT6332_IRQ_STATUS_THR_H + 1)
> +#define MT6332_IRQ_CON3_BASE MT6332_IRQ_STATUS_VDRAM_OC
> +#define MT6332_IRQ_CON3_BITS (MT6332_IRQ_STATUS_LDO_OC - MT6332_IRQ_STATUS_VDRAM_OC + 1)
> +
> +#endif /* __MFD_MT6332_CORE_H__ */
> diff --git a/include/linux/mfd/mt6332/registers.h b/include/linux/mfd/mt6332/registers.h
> new file mode 100644
> index 000000000000..65e0b86fceac
> --- /dev/null
> +++ b/include/linux/mfd/mt6332/registers.h
> @@ -0,0 +1,642 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> + */
> +
> +#ifndef __MFD_MT6332_REGISTERS_H__
> +#define __MFD_MT6332_REGISTERS_H__
> +
> +/* PMIC Registers */
> +#define MT6332_HWCID 0x8000
> +#define MT6332_SWCID 0x8002
> +#define MT6332_TOP_CON 0x8004
> +#define MT6332_DDR_VREF_AP_CON 0x8006
> +#define MT6332_DDR_VREF_DQ_CON 0x8008
> +#define MT6332_DDR_VREF_CA_CON 0x800A
> +#define MT6332_TEST_OUT 0x800C
> +#define MT6332_TEST_CON0 0x800E
> +#define MT6332_TEST_CON1 0x8010
> +#define MT6332_TESTMODE_SW 0x8012
> +#define MT6332_TESTMODE_ANA 0x8014
> +#define MT6332_TDSEL_CON 0x8016
> +#define MT6332_RDSEL_CON 0x8018
> +#define MT6332_SMT_CON0 0x801A
> +#define MT6332_SMT_CON1 0x801C
> +#define MT6332_DRV_CON0 0x801E
> +#define MT6332_DRV_CON1 0x8020
> +#define MT6332_DRV_CON2 0x8022
> +#define MT6332_EN_STATUS0 0x8024
> +#define MT6332_OCSTATUS0 0x8026
> +#define MT6332_TOP_STATUS 0x8028
> +#define MT6332_TOP_STATUS_SET 0x802A
> +#define MT6332_TOP_STATUS_CLR 0x802C
> +#define MT6332_FLASH_CON0 0x802E
> +#define MT6332_FLASH_CON1 0x8030
> +#define MT6332_FLASH_CON2 0x8032
> +#define MT6332_CORE_CON0 0x8034
> +#define MT6332_CORE_CON1 0x8036
> +#define MT6332_CORE_CON2 0x8038
> +#define MT6332_CORE_CON3 0x803A
> +#define MT6332_CORE_CON4 0x803C
> +#define MT6332_CORE_CON5 0x803E
> +#define MT6332_CORE_CON6 0x8040
> +#define MT6332_CORE_CON7 0x8042
> +#define MT6332_CORE_CON8 0x8044
> +#define MT6332_CORE_CON9 0x8046
> +#define MT6332_CORE_CON10 0x8048
> +#define MT6332_CORE_CON11 0x804A
> +#define MT6332_CORE_CON12 0x804C
> +#define MT6332_CORE_CON13 0x804E
> +#define MT6332_CORE_CON14 0x8050
> +#define MT6332_CORE_CON15 0x8052
> +#define MT6332_STA_CON0 0x8054
> +#define MT6332_STA_CON1 0x8056
> +#define MT6332_STA_CON2 0x8058
> +#define MT6332_STA_CON3 0x805A
> +#define MT6332_STA_CON4 0x805C
> +#define MT6332_STA_CON5 0x805E
> +#define MT6332_STA_CON6 0x8060
> +#define MT6332_STA_CON7 0x8062
> +#define MT6332_CHR_CON0 0x8064
> +#define MT6332_CHR_CON1 0x8066
> +#define MT6332_CHR_CON2 0x8068
> +#define MT6332_CHR_CON3 0x806A
> +#define MT6332_CHR_CON4 0x806C
> +#define MT6332_CHR_CON5 0x806E
> +#define MT6332_CHR_CON6 0x8070
> +#define MT6332_CHR_CON7 0x8072
> +#define MT6332_CHR_CON8 0x8074
> +#define MT6332_CHR_CON9 0x8076
> +#define MT6332_CHR_CON10 0x8078
> +#define MT6332_CHR_CON11 0x807A
> +#define MT6332_CHR_CON12 0x807C
> +#define MT6332_CHR_CON13 0x807E
> +#define MT6332_CHR_CON14 0x8080
> +#define MT6332_CHR_CON15 0x8082
> +#define MT6332_BOOST_CON0 0x8084
> +#define MT6332_BOOST_CON1 0x8086
> +#define MT6332_BOOST_CON2 0x8088
> +#define MT6332_BOOST_CON3 0x808A
> +#define MT6332_BOOST_CON4 0x808C
> +#define MT6332_BOOST_CON5 0x808E
> +#define MT6332_BOOST_CON6 0x8090
> +#define MT6332_BOOST_CON7 0x8092
> +#define MT6332_TOP_CKPDN_CON0 0x8094
> +#define MT6332_TOP_CKPDN_CON0_SET 0x8096
> +#define MT6332_TOP_CKPDN_CON0_CLR 0x8098
> +#define MT6332_TOP_CKPDN_CON1 0x809A
> +#define MT6332_TOP_CKPDN_CON1_SET 0x809C
> +#define MT6332_TOP_CKPDN_CON1_CLR 0x809E
> +#define MT6332_TOP_CKPDN_CON2 0x80A0
> +#define MT6332_TOP_CKPDN_CON2_SET 0x80A2
> +#define MT6332_TOP_CKPDN_CON2_CLR 0x80A4
> +#define MT6332_TOP_CKSEL_CON0 0x80A6
> +#define MT6332_TOP_CKSEL_CON0_SET 0x80A8
> +#define MT6332_TOP_CKSEL_CON0_CLR 0x80AA
> +#define MT6332_TOP_CKSEL_CON1 0x80AC
> +#define MT6332_TOP_CKSEL_CON1_SET 0x80AE
> +#define MT6332_TOP_CKSEL_CON1_CLR 0x80B0
> +#define MT6332_TOP_CKHWEN_CON 0x80B2
> +#define MT6332_TOP_CKHWEN_CON_SET 0x80B4
> +#define MT6332_TOP_CKHWEN_CON_CLR 0x80B6
> +#define MT6332_TOP_CKTST_CON0 0x80B8
> +#define MT6332_TOP_CKTST_CON1 0x80BA
> +#define MT6332_TOP_RST_CON 0x80BC
> +#define MT6332_TOP_RST_CON_SET 0x80BE
> +#define MT6332_TOP_RST_CON_CLR 0x80C0
> +#define MT6332_TOP_RST_MISC 0x80C2
> +#define MT6332_TOP_RST_MISC_SET 0x80C4
> +#define MT6332_TOP_RST_MISC_CLR 0x80C6
> +#define MT6332_INT_CON0 0x80C8
> +#define MT6332_INT_CON0_SET 0x80CA
> +#define MT6332_INT_CON0_CLR 0x80CC
> +#define MT6332_INT_CON1 0x80CE
> +#define MT6332_INT_CON1_SET 0x80D0
> +#define MT6332_INT_CON1_CLR 0x80D2
> +#define MT6332_INT_CON2 0x80D4
> +#define MT6332_INT_CON2_SET 0x80D6
> +#define MT6332_INT_CON2_CLR 0x80D8
> +#define MT6332_INT_CON3 0x80DA
> +#define MT6332_INT_CON3_SET 0x80DC
> +#define MT6332_INT_CON3_CLR 0x80DE
> +#define MT6332_CHRWDT_CON0 0x80E0
> +#define MT6332_CHRWDT_STATUS0 0x80E2
> +#define MT6332_INT_STATUS0 0x80E4
> +#define MT6332_INT_STATUS1 0x80E6
> +#define MT6332_INT_STATUS2 0x80E8
> +#define MT6332_INT_STATUS3 0x80EA
> +#define MT6332_OC_GEAR_0 0x80EC
> +#define MT6332_OC_GEAR_1 0x80EE
> +#define MT6332_OC_GEAR_2 0x80F0
> +#define MT6332_INT_MISC_CON 0x80F2
> +#define MT6332_RG_SPI_CON 0x80F4
> +#define MT6332_DEW_DIO_EN 0x80F6
> +#define MT6332_DEW_READ_TEST 0x80F8
> +#define MT6332_DEW_WRITE_TEST 0x80FA
> +#define MT6332_DEW_CRC_SWRST 0x80FC
> +#define MT6332_DEW_CRC_EN 0x80FE
> +#define MT6332_DEW_CRC_VAL 0x8100
> +#define MT6332_DEW_DBG_MON_SEL 0x8102
> +#define MT6332_DEW_CIPHER_KEY_SEL 0x8104
> +#define MT6332_DEW_CIPHER_IV_SEL 0x8106
> +#define MT6332_DEW_CIPHER_EN 0x8108
> +#define MT6332_DEW_CIPHER_RDY 0x810A
> +#define MT6332_DEW_CIPHER_MODE 0x810C
> +#define MT6332_DEW_CIPHER_SWRST 0x810E
> +#define MT6332_DEW_RDDMY_NO 0x8110
> +#define MT6332_INT_STA 0x8112
> +#define MT6332_BIF_CON0 0x8114
> +#define MT6332_BIF_CON1 0x8116
> +#define MT6332_BIF_CON2 0x8118
> +#define MT6332_BIF_CON3 0x811A
> +#define MT6332_BIF_CON4 0x811C
> +#define MT6332_BIF_CON5 0x811E
> +#define MT6332_BIF_CON6 0x8120
> +#define MT6332_BIF_CON7 0x8122
> +#define MT6332_BIF_CON8 0x8124
> +#define MT6332_BIF_CON9 0x8126
> +#define MT6332_BIF_CON10 0x8128
> +#define MT6332_BIF_CON11 0x812A
> +#define MT6332_BIF_CON12 0x812C
> +#define MT6332_BIF_CON13 0x812E
> +#define MT6332_BIF_CON14 0x8130
> +#define MT6332_BIF_CON15 0x8132
> +#define MT6332_BIF_CON16 0x8134
> +#define MT6332_BIF_CON17 0x8136
> +#define MT6332_BIF_CON18 0x8138
> +#define MT6332_BIF_CON19 0x813A
> +#define MT6332_BIF_CON20 0x813C
> +#define MT6332_BIF_CON21 0x813E
> +#define MT6332_BIF_CON22 0x8140
> +#define MT6332_BIF_CON23 0x8142
> +#define MT6332_BIF_CON24 0x8144
> +#define MT6332_BIF_CON25 0x8146
> +#define MT6332_BIF_CON26 0x8148
> +#define MT6332_BIF_CON27 0x814A
> +#define MT6332_BIF_CON28 0x814C
> +#define MT6332_BIF_CON29 0x814E
> +#define MT6332_BIF_CON30 0x8150
> +#define MT6332_BIF_CON31 0x8152
> +#define MT6332_BIF_CON32 0x8154
> +#define MT6332_BIF_CON33 0x8156
> +#define MT6332_BIF_CON34 0x8158
> +#define MT6332_BIF_CON35 0x815A
> +#define MT6332_BIF_CON36 0x815C
> +#define MT6332_BATON_CON0 0x815E
> +#define MT6332_BIF_CON37 0x8160
> +#define MT6332_BIF_CON38 0x8162
> +#define MT6332_CHR_CON16 0x8164
> +#define MT6332_CHR_CON17 0x8166
> +#define MT6332_CHR_CON18 0x8168
> +#define MT6332_CHR_CON19 0x816A
> +#define MT6332_CHR_CON20 0x816C
> +#define MT6332_CHR_CON21 0x816E
> +#define MT6332_CHR_CON22 0x8170
> +#define MT6332_CHR_CON23 0x8172
> +#define MT6332_CHR_CON24 0x8174
> +#define MT6332_CHR_CON25 0x8176
> +#define MT6332_STA_CON8 0x8178
> +#define MT6332_BUCK_ALL_CON0 0x8400
> +#define MT6332_BUCK_ALL_CON1 0x8402
> +#define MT6332_BUCK_ALL_CON2 0x8404
> +#define MT6332_BUCK_ALL_CON3 0x8406
> +#define MT6332_BUCK_ALL_CON4 0x8408
> +#define MT6332_BUCK_ALL_CON5 0x840A
> +#define MT6332_BUCK_ALL_CON6 0x840C
> +#define MT6332_BUCK_ALL_CON7 0x840E
> +#define MT6332_BUCK_ALL_CON8 0x8410
> +#define MT6332_BUCK_ALL_CON9 0x8412
> +#define MT6332_BUCK_ALL_CON10 0x8414
> +#define MT6332_BUCK_ALL_CON11 0x8416
> +#define MT6332_BUCK_ALL_CON12 0x8418
> +#define MT6332_BUCK_ALL_CON13 0x841A
> +#define MT6332_BUCK_ALL_CON14 0x841C
> +#define MT6332_BUCK_ALL_CON15 0x841E
> +#define MT6332_BUCK_ALL_CON16 0x8420
> +#define MT6332_BUCK_ALL_CON17 0x8422
> +#define MT6332_BUCK_ALL_CON18 0x8424
> +#define MT6332_BUCK_ALL_CON19 0x8426
> +#define MT6332_BUCK_ALL_CON20 0x8428
> +#define MT6332_BUCK_ALL_CON21 0x842A
> +#define MT6332_BUCK_ALL_CON22 0x842C
> +#define MT6332_BUCK_ALL_CON23 0x842E
> +#define MT6332_BUCK_ALL_CON24 0x8430
> +#define MT6332_BUCK_ALL_CON25 0x8432
> +#define MT6332_BUCK_ALL_CON26 0x8434
> +#define MT6332_BUCK_ALL_CON27 0x8436
> +#define MT6332_VDRAM_CON0 0x8438
> +#define MT6332_VDRAM_CON1 0x843A
> +#define MT6332_VDRAM_CON2 0x843C
> +#define MT6332_VDRAM_CON3 0x843E
> +#define MT6332_VDRAM_CON4 0x8440
> +#define MT6332_VDRAM_CON5 0x8442
> +#define MT6332_VDRAM_CON6 0x8444
> +#define MT6332_VDRAM_CON7 0x8446
> +#define MT6332_VDRAM_CON8 0x8448
> +#define MT6332_VDRAM_CON9 0x844A
> +#define MT6332_VDRAM_CON10 0x844C
> +#define MT6332_VDRAM_CON11 0x844E
> +#define MT6332_VDRAM_CON12 0x8450
> +#define MT6332_VDRAM_CON13 0x8452
> +#define MT6332_VDRAM_CON14 0x8454
> +#define MT6332_VDRAM_CON15 0x8456
> +#define MT6332_VDRAM_CON16 0x8458
> +#define MT6332_VDRAM_CON17 0x845A
> +#define MT6332_VDRAM_CON18 0x845C
> +#define MT6332_VDRAM_CON19 0x845E
> +#define MT6332_VDRAM_CON20 0x8460
> +#define MT6332_VDRAM_CON21 0x8462
> +#define MT6332_VDVFS2_CON0 0x8464
> +#define MT6332_VDVFS2_CON1 0x8466
> +#define MT6332_VDVFS2_CON2 0x8468
> +#define MT6332_VDVFS2_CON3 0x846A
> +#define MT6332_VDVFS2_CON4 0x846C
> +#define MT6332_VDVFS2_CON5 0x846E
> +#define MT6332_VDVFS2_CON6 0x8470
> +#define MT6332_VDVFS2_CON7 0x8472
> +#define MT6332_VDVFS2_CON8 0x8474
> +#define MT6332_VDVFS2_CON9 0x8476
> +#define MT6332_VDVFS2_CON10 0x8478
> +#define MT6332_VDVFS2_CON11 0x847A
> +#define MT6332_VDVFS2_CON12 0x847C
> +#define MT6332_VDVFS2_CON13 0x847E
> +#define MT6332_VDVFS2_CON14 0x8480
> +#define MT6332_VDVFS2_CON15 0x8482
> +#define MT6332_VDVFS2_CON16 0x8484
> +#define MT6332_VDVFS2_CON17 0x8486
> +#define MT6332_VDVFS2_CON18 0x8488
> +#define MT6332_VDVFS2_CON19 0x848A
> +#define MT6332_VDVFS2_CON20 0x848C
> +#define MT6332_VDVFS2_CON21 0x848E
> +#define MT6332_VDVFS2_CON22 0x8490
> +#define MT6332_VDVFS2_CON23 0x8492
> +#define MT6332_VDVFS2_CON24 0x8494
> +#define MT6332_VDVFS2_CON25 0x8496
> +#define MT6332_VDVFS2_CON26 0x8498
> +#define MT6332_VDVFS2_CON27 0x849A
> +#define MT6332_VRF1_CON0 0x849C
> +#define MT6332_VRF1_CON1 0x849E
> +#define MT6332_VRF1_CON2 0x84A0
> +#define MT6332_VRF1_CON3 0x84A2
> +#define MT6332_VRF1_CON4 0x84A4
> +#define MT6332_VRF1_CON5 0x84A6
> +#define MT6332_VRF1_CON6 0x84A8
> +#define MT6332_VRF1_CON7 0x84AA
> +#define MT6332_VRF1_CON8 0x84AC
> +#define MT6332_VRF1_CON9 0x84AE
> +#define MT6332_VRF1_CON10 0x84B0
> +#define MT6332_VRF1_CON11 0x84B2
> +#define MT6332_VRF1_CON12 0x84B4
> +#define MT6332_VRF1_CON13 0x84B6
> +#define MT6332_VRF1_CON14 0x84B8
> +#define MT6332_VRF1_CON15 0x84BA
> +#define MT6332_VRF1_CON16 0x84BC
> +#define MT6332_VRF1_CON17 0x84BE
> +#define MT6332_VRF1_CON18 0x84C0
> +#define MT6332_VRF1_CON19 0x84C2
> +#define MT6332_VRF1_CON20 0x84C4
> +#define MT6332_VRF1_CON21 0x84C6
> +#define MT6332_VRF2_CON0 0x84C8
> +#define MT6332_VRF2_CON1 0x84CA
> +#define MT6332_VRF2_CON2 0x84CC
> +#define MT6332_VRF2_CON3 0x84CE
> +#define MT6332_VRF2_CON4 0x84D0
> +#define MT6332_VRF2_CON5 0x84D2
> +#define MT6332_VRF2_CON6 0x84D4
> +#define MT6332_VRF2_CON7 0x84D6
> +#define MT6332_VRF2_CON8 0x84D8
> +#define MT6332_VRF2_CON9 0x84DA
> +#define MT6332_VRF2_CON10 0x84DC
> +#define MT6332_VRF2_CON11 0x84DE
> +#define MT6332_VRF2_CON12 0x84E0
> +#define MT6332_VRF2_CON13 0x84E2
> +#define MT6332_VRF2_CON14 0x84E4
> +#define MT6332_VRF2_CON15 0x84E6
> +#define MT6332_VRF2_CON16 0x84E8
> +#define MT6332_VRF2_CON17 0x84EA
> +#define MT6332_VRF2_CON18 0x84EC
> +#define MT6332_VRF2_CON19 0x84EE
> +#define MT6332_VRF2_CON20 0x84F0
> +#define MT6332_VRF2_CON21 0x84F2
> +#define MT6332_VPA_CON0 0x84F4
> +#define MT6332_VPA_CON1 0x84F6
> +#define MT6332_VPA_CON2 0x84F8
> +#define MT6332_VPA_CON3 0x84FC
> +#define MT6332_VPA_CON4 0x84FE
> +#define MT6332_VPA_CON5 0x8500
> +#define MT6332_VPA_CON6 0x8502
> +#define MT6332_VPA_CON7 0x8504
> +#define MT6332_VPA_CON8 0x8506
> +#define MT6332_VPA_CON9 0x8508
> +#define MT6332_VPA_CON10 0x850A
> +#define MT6332_VPA_CON11 0x850C
> +#define MT6332_VPA_CON12 0x850E
> +#define MT6332_VPA_CON13 0x8510
> +#define MT6332_VPA_CON14 0x8512
> +#define MT6332_VPA_CON15 0x8514
> +#define MT6332_VPA_CON16 0x8516
> +#define MT6332_VPA_CON17 0x8518
> +#define MT6332_VPA_CON18 0x851A
> +#define MT6332_VPA_CON19 0x851C
> +#define MT6332_VPA_CON20 0x851E
> +#define MT6332_VPA_CON21 0x8520
> +#define MT6332_VPA_CON22 0x8522
> +#define MT6332_VPA_CON23 0x8524
> +#define MT6332_VPA_CON24 0x8526
> +#define MT6332_VPA_CON25 0x8528
> +#define MT6332_VSBST_CON0 0x852A
> +#define MT6332_VSBST_CON1 0x852C
> +#define MT6332_VSBST_CON2 0x852E
> +#define MT6332_VSBST_CON3 0x8530
> +#define MT6332_VSBST_CON4 0x8532
> +#define MT6332_VSBST_CON5 0x8534
> +#define MT6332_VSBST_CON6 0x8536
> +#define MT6332_VSBST_CON7 0x8538
> +#define MT6332_VSBST_CON8 0x853A
> +#define MT6332_VSBST_CON9 0x853C
> +#define MT6332_VSBST_CON10 0x853E
> +#define MT6332_VSBST_CON11 0x8540
> +#define MT6332_VSBST_CON12 0x8542
> +#define MT6332_VSBST_CON13 0x8544
> +#define MT6332_VSBST_CON14 0x8546
> +#define MT6332_VSBST_CON15 0x8548
> +#define MT6332_VSBST_CON16 0x854A
> +#define MT6332_VSBST_CON17 0x854C
> +#define MT6332_VSBST_CON18 0x854E
> +#define MT6332_VSBST_CON19 0x8550
> +#define MT6332_VSBST_CON20 0x8552
> +#define MT6332_VSBST_CON21 0x8554
> +#define MT6332_BUCK_K_CON0 0x8556
> +#define MT6332_BUCK_K_CON1 0x8558
> +#define MT6332_BUCK_K_CON2 0x855A
> +#define MT6332_BUCK_K_CON3 0x855C
> +#define MT6332_BUCK_K_CON4 0x855E
> +#define MT6332_BUCK_K_CON5 0x8560
> +#define MT6332_AUXADC_ADC0 0x8800
> +#define MT6332_AUXADC_ADC1 0x8802
> +#define MT6332_AUXADC_ADC2 0x8804
> +#define MT6332_AUXADC_ADC3 0x8806
> +#define MT6332_AUXADC_ADC4 0x8808
> +#define MT6332_AUXADC_ADC5 0x880A
> +#define MT6332_AUXADC_ADC6 0x880C
> +#define MT6332_AUXADC_ADC7 0x880E
> +#define MT6332_AUXADC_ADC8 0x8810
> +#define MT6332_AUXADC_ADC9 0x8812
> +#define MT6332_AUXADC_ADC10 0x8814
> +#define MT6332_AUXADC_ADC11 0x8816
> +#define MT6332_AUXADC_ADC12 0x8818
> +#define MT6332_AUXADC_ADC13 0x881A
> +#define MT6332_AUXADC_ADC14 0x881C
> +#define MT6332_AUXADC_ADC15 0x881E
> +#define MT6332_AUXADC_ADC16 0x8820
> +#define MT6332_AUXADC_ADC17 0x8822
> +#define MT6332_AUXADC_ADC18 0x8824
> +#define MT6332_AUXADC_ADC19 0x8826
> +#define MT6332_AUXADC_ADC20 0x8828
> +#define MT6332_AUXADC_ADC21 0x882A
> +#define MT6332_AUXADC_ADC22 0x882C
> +#define MT6332_AUXADC_ADC23 0x882E
> +#define MT6332_AUXADC_ADC24 0x8830
> +#define MT6332_AUXADC_ADC25 0x8832
> +#define MT6332_AUXADC_ADC26 0x8834
> +#define MT6332_AUXADC_ADC27 0x8836
> +#define MT6332_AUXADC_ADC28 0x8838
> +#define MT6332_AUXADC_ADC29 0x883A
> +#define MT6332_AUXADC_ADC30 0x883C
> +#define MT6332_AUXADC_ADC31 0x883E
> +#define MT6332_AUXADC_ADC32 0x8840
> +#define MT6332_AUXADC_ADC33 0x8842
> +#define MT6332_AUXADC_ADC34 0x8844
> +#define MT6332_AUXADC_ADC35 0x8846
> +#define MT6332_AUXADC_ADC36 0x8848
> +#define MT6332_AUXADC_ADC37 0x884A
> +#define MT6332_AUXADC_ADC38 0x884C
> +#define MT6332_AUXADC_ADC39 0x884E
> +#define MT6332_AUXADC_ADC40 0x8850
> +#define MT6332_AUXADC_ADC41 0x8852
> +#define MT6332_AUXADC_ADC42 0x8854
> +#define MT6332_AUXADC_ADC43 0x8856
> +#define MT6332_AUXADC_STA0 0x8858
> +#define MT6332_AUXADC_STA1 0x885A
> +#define MT6332_AUXADC_RQST0 0x885C
> +#define MT6332_AUXADC_RQST0_SET 0x885E
> +#define MT6332_AUXADC_RQST0_CLR 0x8860
> +#define MT6332_AUXADC_RQST1 0x8862
> +#define MT6332_AUXADC_RQST1_SET 0x8864
> +#define MT6332_AUXADC_RQST1_CLR 0x8866
> +#define MT6332_AUXADC_CON0 0x8868
> +#define MT6332_AUXADC_CON1 0x886A
> +#define MT6332_AUXADC_CON2 0x886C
> +#define MT6332_AUXADC_CON3 0x886E
> +#define MT6332_AUXADC_CON4 0x8870
> +#define MT6332_AUXADC_CON5 0x8872
> +#define MT6332_AUXADC_CON6 0x8874
> +#define MT6332_AUXADC_CON7 0x8876
> +#define MT6332_AUXADC_CON8 0x8878
> +#define MT6332_AUXADC_CON9 0x887A
> +#define MT6332_AUXADC_CON10 0x887C
> +#define MT6332_AUXADC_CON11 0x887E
> +#define MT6332_AUXADC_CON12 0x8880
> +#define MT6332_AUXADC_CON13 0x8882
> +#define MT6332_AUXADC_CON14 0x8884
> +#define MT6332_AUXADC_CON15 0x8886
> +#define MT6332_AUXADC_CON16 0x8888
> +#define MT6332_AUXADC_CON17 0x888A
> +#define MT6332_AUXADC_CON18 0x888C
> +#define MT6332_AUXADC_CON19 0x888E
> +#define MT6332_AUXADC_CON20 0x8890
> +#define MT6332_AUXADC_CON21 0x8892
> +#define MT6332_AUXADC_CON22 0x8894
> +#define MT6332_AUXADC_CON23 0x8896
> +#define MT6332_AUXADC_CON24 0x8898
> +#define MT6332_AUXADC_CON25 0x889A
> +#define MT6332_AUXADC_CON26 0x889C
> +#define MT6332_AUXADC_CON27 0x889E
> +#define MT6332_AUXADC_CON28 0x88A0
> +#define MT6332_AUXADC_CON29 0x88A2
> +#define MT6332_AUXADC_CON30 0x88A4
> +#define MT6332_AUXADC_CON31 0x88A6
> +#define MT6332_AUXADC_CON32 0x88A8
> +#define MT6332_AUXADC_CON33 0x88AA
> +#define MT6332_AUXADC_CON34 0x88AC
> +#define MT6332_AUXADC_CON35 0x88AE
> +#define MT6332_AUXADC_CON36 0x88B0
> +#define MT6332_AUXADC_CON37 0x88B2
> +#define MT6332_AUXADC_CON38 0x88B4
> +#define MT6332_AUXADC_CON39 0x88B6
> +#define MT6332_AUXADC_CON40 0x88B8
> +#define MT6332_AUXADC_CON41 0x88BA
> +#define MT6332_AUXADC_CON42 0x88BC
> +#define MT6332_AUXADC_CON43 0x88BE
> +#define MT6332_AUXADC_CON44 0x88C0
> +#define MT6332_AUXADC_CON45 0x88C2
> +#define MT6332_AUXADC_CON46 0x88C4
> +#define MT6332_AUXADC_CON47 0x88C6
> +#define MT6332_STRUP_CONA0 0x8C00
> +#define MT6332_STRUP_CONA1 0x8C02
> +#define MT6332_STRUP_CONA2 0x8C04
> +#define MT6332_STRUP_CON0 0x8C06
> +#define MT6332_STRUP_CON2 0x8C08
> +#define MT6332_STRUP_CON3 0x8C0A
> +#define MT6332_STRUP_CON4 0x8C0C
> +#define MT6332_STRUP_CON5 0x8C0E
> +#define MT6332_STRUP_CON6 0x8C10
> +#define MT6332_STRUP_CON7 0x8C12
> +#define MT6332_STRUP_CON8 0x8C14
> +#define MT6332_STRUP_CON9 0x8C16
> +#define MT6332_STRUP_CON10 0x8C18
> +#define MT6332_STRUP_CON11 0x8C1A
> +#define MT6332_STRUP_CON12 0x8C1C
> +#define MT6332_STRUP_CON13 0x8C1E
> +#define MT6332_STRUP_CON14 0x8C20
> +#define MT6332_STRUP_CON15 0x8C22
> +#define MT6332_STRUP_CON16 0x8C24
> +#define MT6332_STRUP_CON17 0x8C26
> +#define MT6332_FGADC_CON0 0x8C28
> +#define MT6332_FGADC_CON1 0x8C2A
> +#define MT6332_FGADC_CON2 0x8C2C
> +#define MT6332_FGADC_CON3 0x8C2E
> +#define MT6332_FGADC_CON4 0x8C30
> +#define MT6332_FGADC_CON5 0x8C32
> +#define MT6332_FGADC_CON6 0x8C34
> +#define MT6332_FGADC_CON7 0x8C36
> +#define MT6332_FGADC_CON8 0x8C38
> +#define MT6332_FGADC_CON9 0x8C3A
> +#define MT6332_FGADC_CON10 0x8C3C
> +#define MT6332_FGADC_CON11 0x8C3E
> +#define MT6332_FGADC_CON12 0x8C40
> +#define MT6332_FGADC_CON13 0x8C42
> +#define MT6332_FGADC_CON14 0x8C44
> +#define MT6332_FGADC_CON15 0x8C46
> +#define MT6332_FGADC_CON16 0x8C48
> +#define MT6332_FGADC_CON17 0x8C4A
> +#define MT6332_FGADC_CON18 0x8C4C
> +#define MT6332_FGADC_CON19 0x8C4E
> +#define MT6332_FGADC_CON20 0x8C50
> +#define MT6332_FGADC_CON21 0x8C52
> +#define MT6332_FGADC_CON22 0x8C54
> +#define MT6332_OTP_CON0 0x8C56
> +#define MT6332_OTP_CON1 0x8C58
> +#define MT6332_OTP_CON2 0x8C5A
> +#define MT6332_OTP_CON3 0x8C5C
> +#define MT6332_OTP_CON4 0x8C5E
> +#define MT6332_OTP_CON5 0x8C60
> +#define MT6332_OTP_CON6 0x8C62
> +#define MT6332_OTP_CON7 0x8C64
> +#define MT6332_OTP_CON8 0x8C66
> +#define MT6332_OTP_CON9 0x8C68
> +#define MT6332_OTP_CON10 0x8C6A
> +#define MT6332_OTP_CON11 0x8C6C
> +#define MT6332_OTP_CON12 0x8C6E
> +#define MT6332_OTP_CON13 0x8C70
> +#define MT6332_OTP_CON14 0x8C72
> +#define MT6332_OTP_DOUT_0_15 0x8C74
> +#define MT6332_OTP_DOUT_16_31 0x8C76
> +#define MT6332_OTP_DOUT_32_47 0x8C78
> +#define MT6332_OTP_DOUT_48_63 0x8C7A
> +#define MT6332_OTP_DOUT_64_79 0x8C7C
> +#define MT6332_OTP_DOUT_80_95 0x8C7E
> +#define MT6332_OTP_DOUT_96_111 0x8C80
> +#define MT6332_OTP_DOUT_112_127 0x8C82
> +#define MT6332_OTP_DOUT_128_143 0x8C84
> +#define MT6332_OTP_DOUT_144_159 0x8C86
> +#define MT6332_OTP_DOUT_160_175 0x8C88
> +#define MT6332_OTP_DOUT_176_191 0x8C8A
> +#define MT6332_OTP_DOUT_192_207 0x8C8C
> +#define MT6332_OTP_DOUT_208_223 0x8C8E
> +#define MT6332_OTP_DOUT_224_239 0x8C90
> +#define MT6332_OTP_DOUT_240_255 0x8C92
> +#define MT6332_OTP_VAL_0_15 0x8C94
> +#define MT6332_OTP_VAL_16_31 0x8C96
> +#define MT6332_OTP_VAL_32_47 0x8C98
> +#define MT6332_OTP_VAL_48_63 0x8C9A
> +#define MT6332_OTP_VAL_64_79 0x8C9C
> +#define MT6332_OTP_VAL_80_95 0x8C9E
> +#define MT6332_OTP_VAL_96_111 0x8CA0
> +#define MT6332_OTP_VAL_112_127 0x8CA2
> +#define MT6332_OTP_VAL_128_143 0x8CA4
> +#define MT6332_OTP_VAL_144_159 0x8CA6
> +#define MT6332_OTP_VAL_160_175 0x8CA8
> +#define MT6332_OTP_VAL_176_191 0x8CAA
> +#define MT6332_OTP_VAL_192_207 0x8CAC
> +#define MT6332_OTP_VAL_208_223 0x8CAE
> +#define MT6332_OTP_VAL_224_239 0x8CB0
> +#define MT6332_OTP_VAL_240_255 0x8CB2
> +#define MT6332_LDO_CON0 0x8CB4
> +#define MT6332_LDO_CON1 0x8CB6
> +#define MT6332_LDO_CON2 0x8CB8
> +#define MT6332_LDO_CON3 0x8CBA
> +#define MT6332_LDO_CON5 0x8CBC
> +#define MT6332_LDO_CON6 0x8CBE
> +#define MT6332_LDO_CON7 0x8CC0
> +#define MT6332_LDO_CON8 0x8CC2
> +#define MT6332_LDO_CON9 0x8CC4
> +#define MT6332_LDO_CON10 0x8CC6
> +#define MT6332_LDO_CON11 0x8CC8
> +#define MT6332_LDO_CON12 0x8CCA
> +#define MT6332_LDO_CON13 0x8CCC
> +#define MT6332_FQMTR_CON0 0x8CCE
> +#define MT6332_FQMTR_CON1 0x8CD0
> +#define MT6332_FQMTR_CON2 0x8CD2
> +#define MT6332_IWLED_CON0 0x8CD4
> +#define MT6332_IWLED_DEG 0x8CD6
> +#define MT6332_IWLED_STATUS 0x8CD8
> +#define MT6332_IWLED_EN_CTRL 0x8CDA
> +#define MT6332_IWLED_CON1 0x8CDC
> +#define MT6332_IWLED_CON2 0x8CDE
> +#define MT6332_IWLED_TRIM0 0x8CE0
> +#define MT6332_IWLED_TRIM1 0x8CE2
> +#define MT6332_IWLED_CON3 0x8CE4
> +#define MT6332_IWLED_CON4 0x8CE6
> +#define MT6332_IWLED_CON5 0x8CE8
> +#define MT6332_IWLED_CON6 0x8CEA
> +#define MT6332_IWLED_CON7 0x8CEC
> +#define MT6332_IWLED_CON8 0x8CEE
> +#define MT6332_IWLED_CON9 0x8CF0
> +#define MT6332_SPK_CON0 0x8CF2
> +#define MT6332_SPK_CON1 0x8CF4
> +#define MT6332_SPK_CON2 0x8CF6
> +#define MT6332_SPK_CON3 0x8CF8
> +#define MT6332_SPK_CON4 0x8CFA
> +#define MT6332_SPK_CON5 0x8CFC
> +#define MT6332_SPK_CON6 0x8CFE
> +#define MT6332_SPK_CON7 0x8D00
> +#define MT6332_SPK_CON8 0x8D02
> +#define MT6332_SPK_CON9 0x8D04
> +#define MT6332_SPK_CON10 0x8D06
> +#define MT6332_SPK_CON11 0x8D08
> +#define MT6332_SPK_CON12 0x8D0A
> +#define MT6332_SPK_CON13 0x8D0C
> +#define MT6332_SPK_CON14 0x8D0E
> +#define MT6332_SPK_CON15 0x8D10
> +#define MT6332_SPK_CON16 0x8D12
> +#define MT6332_TESTI_CON0 0x8D14
> +#define MT6332_TESTI_CON1 0x8D16
> +#define MT6332_TESTI_CON2 0x8D18
> +#define MT6332_TESTI_CON3 0x8D1A
> +#define MT6332_TESTI_CON4 0x8D1C
> +#define MT6332_TESTI_CON5 0x8D1E
> +#define MT6332_TESTI_CON6 0x8D20
> +#define MT6332_TESTI_MUX_CON0 0x8D22
> +#define MT6332_TESTI_MUX_CON1 0x8D24
> +#define MT6332_TESTI_MUX_CON2 0x8D26
> +#define MT6332_TESTI_MUX_CON3 0x8D28
> +#define MT6332_TESTI_MUX_CON4 0x8D2A
> +#define MT6332_TESTI_MUX_CON5 0x8D2C
> +#define MT6332_TESTI_MUX_CON6 0x8D2E
> +#define MT6332_TESTO_CON0 0x8D30
> +#define MT6332_TESTO_CON1 0x8D32
> +#define MT6332_TEST_OMUX_CON0 0x8D34
> +#define MT6332_TEST_OMUX_CON1 0x8D36
> +#define MT6332_DEBUG_CON0 0x8D38
> +#define MT6332_DEBUG_CON1 0x8D3A
> +#define MT6332_DEBUG_CON2 0x8D3C
> +#define MT6332_FGADC_CON23 0x8D3E
> +#define MT6332_FGADC_CON24 0x8D40
> +#define MT6332_FGADC_CON25 0x8D42
> +#define MT6332_TOP_RST_STATUS 0x8D44
> +#define MT6332_TOP_RST_STATUS_SET 0x8D46
> +#define MT6332_TOP_RST_STATUS_CLR 0x8D48
> +#define MT6332_VDVFS2_CON28 0x8D4A
> +
> +#endif /* __MFD_MT6332_REGISTERS_H__ */
> diff --git a/include/linux/mfd/mt6397/core.h b/include/linux/mfd/mt6397/core.h
> index 1cf78726503b..4d2b80319db3 100644
> --- a/include/linux/mfd/mt6397/core.h
> +++ b/include/linux/mfd/mt6397/core.h
> @@ -12,6 +12,8 @@
>
> enum chip_id {
> MT6323_CHIP_ID = 0x23,
> + MT6331_CHIP_ID = 0x20,
> + MT6332_CHIP_ID = 0x20,
> MT6358_CHIP_ID = 0x58,
> MT6359_CHIP_ID = 0x59,
> MT6366_CHIP_ID = 0x66,
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [PATCH v3 2/2] mfd: mt6397: Add basic support for MT6331+MT6332 PMIC
@ 2022-06-17 11:41 ` Matthias Brugger
0 siblings, 0 replies; 12+ messages in thread
From: Matthias Brugger @ 2022-06-17 11:41 UTC (permalink / raw)
To: AngeloGioacchino Del Regno, lee.jones
Cc: robh+dt, krzysztof.kozlowski+dt, johnson.wang, hsin-hsiung.wang,
devicetree, linux-arm-kernel, linux-mediatek, linux-kernel
On 17/06/2022 13:07, AngeloGioacchino Del Regno wrote:
> Add support for the MT6331 PMIC with MT6332 Companion PMIC, found
> in MT6795 Helio X10 smartphone platforms.
>
> This combo has support for multiple devices but, for a start,
> only the following have been implemented:
> - Regulators (two instances, one in MT6331, one in MT6332)
> - RTC (MT6331)
> - Keys (MT6331)
> - Interrupts (MT6331 also dispatches MT6332's interrupts)
>
> There's more to be implemented, especially for MT6332, which
> will come at a later stage.
>
> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>
> ---
> drivers/mfd/mt6397-core.c | 47 ++
> drivers/mfd/mt6397-irq.c | 9 +-
> include/linux/mfd/mt6331/core.h | 40 ++
> include/linux/mfd/mt6331/registers.h | 584 ++++++++++++++++++++++++
> include/linux/mfd/mt6332/core.h | 65 +++
> include/linux/mfd/mt6332/registers.h | 642 +++++++++++++++++++++++++++
> include/linux/mfd/mt6397/core.h | 2 +
> 7 files changed, 1388 insertions(+), 1 deletion(-)
> create mode 100644 include/linux/mfd/mt6331/core.h
> create mode 100644 include/linux/mfd/mt6331/registers.h
> create mode 100644 include/linux/mfd/mt6332/core.h
> create mode 100644 include/linux/mfd/mt6332/registers.h
>
> diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
> index 1a368ad08f58..1c974132dc0b 100644
> --- a/drivers/mfd/mt6397-core.c
> +++ b/drivers/mfd/mt6397-core.c
> @@ -12,10 +12,12 @@
> #include <linux/regmap.h>
> #include <linux/mfd/core.h>
> #include <linux/mfd/mt6323/core.h>
> +#include <linux/mfd/mt6331/core.h>
> #include <linux/mfd/mt6358/core.h>
> #include <linux/mfd/mt6359/core.h>
> #include <linux/mfd/mt6397/core.h>
> #include <linux/mfd/mt6323/registers.h>
> +#include <linux/mfd/mt6331/registers.h>
> #include <linux/mfd/mt6358/registers.h>
> #include <linux/mfd/mt6359/registers.h>
> #include <linux/mfd/mt6397/registers.h>
> @@ -23,6 +25,9 @@
> #define MT6323_RTC_BASE 0x8000
> #define MT6323_RTC_SIZE 0x40
>
> +#define MT6331_RTC_BASE 0x4000
> +#define MT6331_RTC_SIZE 0x40
> +
> #define MT6358_RTC_BASE 0x0588
> #define MT6358_RTC_SIZE 0x3c
>
> @@ -37,6 +42,11 @@ static const struct resource mt6323_rtc_resources[] = {
> DEFINE_RES_IRQ(MT6323_IRQ_STATUS_RTC),
> };
>
> +static const struct resource mt6331_rtc_resources[] = {
> + DEFINE_RES_MEM(MT6331_RTC_BASE, MT6331_RTC_SIZE),
> + DEFINE_RES_IRQ(MT6331_IRQ_STATUS_RTC),
> +};
> +
> static const struct resource mt6358_rtc_resources[] = {
> DEFINE_RES_MEM(MT6358_RTC_BASE, MT6358_RTC_SIZE),
> DEFINE_RES_IRQ(MT6358_IRQ_RTC),
> @@ -66,6 +76,11 @@ static const struct resource mt6323_keys_resources[] = {
> DEFINE_RES_IRQ_NAMED(MT6323_IRQ_STATUS_FCHRKEY, "homekey"),
> };
>
> +static const struct resource mt6331_keys_resources[] = {
> + DEFINE_RES_IRQ_NAMED(MT6331_IRQ_STATUS_PWRKEY, "powerkey"),
> + DEFINE_RES_IRQ_NAMED(MT6331_IRQ_STATUS_HOMEKEY, "homekey"),
> +};
> +
> static const struct resource mt6397_keys_resources[] = {
> DEFINE_RES_IRQ_NAMED(MT6397_IRQ_PWRKEY, "powerkey"),
> DEFINE_RES_IRQ_NAMED(MT6397_IRQ_HOMEKEY, "homekey"),
> @@ -100,6 +115,27 @@ static const struct mfd_cell mt6323_devs[] = {
> },
> };
>
> +/* MT6331 is always used in combination with MT6332 */
> +static const struct mfd_cell mt6331_mt6332_devs[] = {
> + {
> + .name = "mt6331-rtc",
> + .num_resources = ARRAY_SIZE(mt6331_rtc_resources),
> + .resources = mt6331_rtc_resources,
> + .of_compatible = "mediatek,mt6331-rtc",
> + }, {
> + .name = "mt6331-regulator",
> + .of_compatible = "mediatek,mt6331-regulator"
> + }, {
> + .name = "mt6332-regulator",
> + .of_compatible = "mediatek,mt6332-regulator"
> + }, {
> + .name = "mtk-pmic-keys",
> + .num_resources = ARRAY_SIZE(mt6331_keys_resources),
> + .resources = mt6331_keys_resources,
> + .of_compatible = "mediatek,mt6331-keys"
> + },
> +};
> +
> static const struct mfd_cell mt6358_devs[] = {
> {
> .name = "mt6358-regulator",
> @@ -179,6 +215,14 @@ static const struct chip_data mt6323_core = {
> .irq_init = mt6397_irq_init,
> };
>
> +static const struct chip_data mt6331_mt6332_core = {
> + .cid_addr = MT6331_HWCID,
> + .cid_shift = 0,
> + .cells = mt6331_mt6332_devs,
> + .cell_size = ARRAY_SIZE(mt6331_mt6332_devs),
> + .irq_init = mt6397_irq_init,
> +};
> +
> static const struct chip_data mt6358_core = {
> .cid_addr = MT6358_SWCID,
> .cid_shift = 8,
> @@ -261,6 +305,9 @@ static const struct of_device_id mt6397_of_match[] = {
> {
> .compatible = "mediatek,mt6323",
> .data = &mt6323_core,
> + }, {
> + .compatible = "mediatek,mt6331",
> + .data = &mt6331_mt6332_core,
> }, {
> .compatible = "mediatek,mt6358",
> .data = &mt6358_core,
> diff --git a/drivers/mfd/mt6397-irq.c b/drivers/mfd/mt6397-irq.c
> index 2924919da991..eff53fed8fe7 100644
> --- a/drivers/mfd/mt6397-irq.c
> +++ b/drivers/mfd/mt6397-irq.c
> @@ -12,6 +12,8 @@
> #include <linux/suspend.h>
> #include <linux/mfd/mt6323/core.h>
> #include <linux/mfd/mt6323/registers.h>
> +#include <linux/mfd/mt6331/core.h>
> +#include <linux/mfd/mt6331/registers.h>
> #include <linux/mfd/mt6397/core.h>
> #include <linux/mfd/mt6397/registers.h>
>
> @@ -172,7 +174,12 @@ int mt6397_irq_init(struct mt6397_chip *chip)
> chip->int_status[0] = MT6323_INT_STATUS0;
> chip->int_status[1] = MT6323_INT_STATUS1;
> break;
> -
> + case MT6331_CHIP_ID:
> + chip->int_con[0] = MT6331_INT_CON0;
> + chip->int_con[1] = MT6331_INT_CON1;
> + chip->int_status[0] = MT6331_INT_STATUS_CON0;
> + chip->int_status[1] = MT6331_INT_STATUS_CON1;
> + break;
> case MT6391_CHIP_ID:
> case MT6397_CHIP_ID:
> chip->int_con[0] = MT6397_INT_CON0;
> diff --git a/include/linux/mfd/mt6331/core.h b/include/linux/mfd/mt6331/core.h
> new file mode 100644
> index 000000000000..df8e6b1e4bc1
> --- /dev/null
> +++ b/include/linux/mfd/mt6331/core.h
> @@ -0,0 +1,40 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> + */
> +
> +#ifndef __MFD_MT6331_CORE_H__
> +#define __MFD_MT6331_CORE_H__
> +
> +enum mt6331_irq_status_numbers {
> + MT6331_IRQ_STATUS_PWRKEY = 0,
> + MT6331_IRQ_STATUS_HOMEKEY,
> + MT6331_IRQ_STATUS_CHRDET,
> + MT6331_IRQ_STATUS_THR_H,
> + MT6331_IRQ_STATUS_THR_L,
> + MT6331_IRQ_STATUS_BAT_H,
> + MT6331_IRQ_STATUS_BAT_L,
> + MT6331_IRQ_STATUS_RTC,
> + MT6331_IRQ_STATUS_AUDIO,
> + MT6331_IRQ_STATUS_MAD,
> + MT6331_IRQ_STATUS_ACCDET,
> + MT6331_IRQ_STATUS_ACCDET_EINT,
> + MT6331_IRQ_STATUS_ACCDET_NEGV = 12,
> + MT6331_IRQ_STATUS_VDVFS11_OC = 16,
> + MT6331_IRQ_STATUS_VDVFS12_OC,
> + MT6331_IRQ_STATUS_VDVFS13_OC,
> + MT6331_IRQ_STATUS_VDVFS14_OC,
> + MT6331_IRQ_STATUS_GPU_OC,
> + MT6331_IRQ_STATUS_VCORE1_OC,
> + MT6331_IRQ_STATUS_VCORE2_OC,
> + MT6331_IRQ_STATUS_VIO18_OC,
> + MT6331_IRQ_STATUS_LDO_OC,
> + MT6331_IRQ_STATUS_NR,
> +};
> +
> +#define MT6331_IRQ_CON0_BASE MT6331_IRQ_STATUS_PWRKEY
> +#define MT6331_IRQ_CON0_BITS (MT6331_IRQ_STATUS_ACCDET_NEGV + 1)
> +#define MT6331_IRQ_CON1_BASE MT6331_IRQ_STATUS_VDVFS11_OC
> +#define MT6331_IRQ_CON1_BITS (MT6331_IRQ_STATUS_LDO_OC - MT6331_IRQ_STATUS_VDFS11_OC + 1)
> +
> +#endif /* __MFD_MT6331_CORE_H__ */
> diff --git a/include/linux/mfd/mt6331/registers.h b/include/linux/mfd/mt6331/registers.h
> new file mode 100644
> index 000000000000..e2be6bccd1a7
> --- /dev/null
> +++ b/include/linux/mfd/mt6331/registers.h
> @@ -0,0 +1,584 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> + */
> +
> +#ifndef __MFD_MT6331_REGISTERS_H__
> +#define __MFD_MT6331_REGISTERS_H__
> +
> +/* PMIC Registers */
> +#define MT6331_STRUP_CON0 0x0
> +#define MT6331_STRUP_CON2 0x2
> +#define MT6331_STRUP_CON3 0x4
> +#define MT6331_STRUP_CON4 0x6
> +#define MT6331_STRUP_CON5 0x8
> +#define MT6331_STRUP_CON6 0xA
> +#define MT6331_STRUP_CON7 0xC
> +#define MT6331_STRUP_CON8 0xE
> +#define MT6331_STRUP_CON9 0x10
> +#define MT6331_STRUP_CON10 0x12
> +#define MT6331_STRUP_CON11 0x14
> +#define MT6331_STRUP_CON12 0x16
> +#define MT6331_STRUP_CON13 0x18
> +#define MT6331_STRUP_CON14 0x1A
> +#define MT6331_STRUP_CON15 0x1C
> +#define MT6331_STRUP_CON16 0x1E
> +#define MT6331_STRUP_CON17 0x20
> +#define MT6331_STRUP_CON18 0x22
> +#define MT6331_HWCID 0x100
> +#define MT6331_SWCID 0x102
> +#define MT6331_EXT_PMIC_STATUS 0x104
> +#define MT6331_TOP_CON 0x106
> +#define MT6331_TEST_OUT 0x108
> +#define MT6331_TEST_CON0 0x10A
> +#define MT6331_TEST_CON1 0x10C
> +#define MT6331_TESTMODE_SW 0x10E
> +#define MT6331_EN_STATUS0 0x110
> +#define MT6331_EN_STATUS1 0x112
> +#define MT6331_EN_STATUS2 0x114
> +#define MT6331_OCSTATUS0 0x116
> +#define MT6331_OCSTATUS1 0x118
> +#define MT6331_OCSTATUS2 0x11A
> +#define MT6331_PGSTATUS 0x11C
> +#define MT6331_TOPSTATUS 0x11E
> +#define MT6331_TDSEL_CON 0x120
> +#define MT6331_RDSEL_CON 0x122
> +#define MT6331_SMT_CON0 0x124
> +#define MT6331_SMT_CON1 0x126
> +#define MT6331_SMT_CON2 0x128
> +#define MT6331_DRV_CON0 0x12A
> +#define MT6331_DRV_CON1 0x12C
> +#define MT6331_DRV_CON2 0x12E
> +#define MT6331_DRV_CON3 0x130
> +#define MT6331_TOP_STATUS 0x132
> +#define MT6331_TOP_STATUS_SET 0x134
> +#define MT6331_TOP_STATUS_CLR 0x136
> +#define MT6331_TOP_CKPDN_CON0 0x138
> +#define MT6331_TOP_CKPDN_CON0_SET 0x13A
> +#define MT6331_TOP_CKPDN_CON0_CLR 0x13C
> +#define MT6331_TOP_CKPDN_CON1 0x13E
> +#define MT6331_TOP_CKPDN_CON1_SET 0x140
> +#define MT6331_TOP_CKPDN_CON1_CLR 0x142
> +#define MT6331_TOP_CKPDN_CON2 0x144
> +#define MT6331_TOP_CKPDN_CON2_SET 0x146
> +#define MT6331_TOP_CKPDN_CON2_CLR 0x148
> +#define MT6331_TOP_CKSEL_CON 0x14A
> +#define MT6331_TOP_CKSEL_CON_SET 0x14C
> +#define MT6331_TOP_CKSEL_CON_CLR 0x14E
> +#define MT6331_TOP_CKHWEN_CON 0x150
> +#define MT6331_TOP_CKHWEN_CON_SET 0x152
> +#define MT6331_TOP_CKHWEN_CON_CLR 0x154
> +#define MT6331_TOP_CKTST_CON0 0x156
> +#define MT6331_TOP_CKTST_CON1 0x158
> +#define MT6331_TOP_CLKSQ 0x15A
> +#define MT6331_TOP_CLKSQ_SET 0x15C
> +#define MT6331_TOP_CLKSQ_CLR 0x15E
> +#define MT6331_TOP_RST_CON 0x160
> +#define MT6331_TOP_RST_CON_SET 0x162
> +#define MT6331_TOP_RST_CON_CLR 0x164
> +#define MT6331_TOP_RST_MISC 0x166
> +#define MT6331_TOP_RST_MISC_SET 0x168
> +#define MT6331_TOP_RST_MISC_CLR 0x16A
> +#define MT6331_INT_CON0 0x16C
> +#define MT6331_INT_CON0_SET 0x16E
> +#define MT6331_INT_CON0_CLR 0x170
> +#define MT6331_INT_CON1 0x172
> +#define MT6331_INT_CON1_SET 0x174
> +#define MT6331_INT_CON1_CLR 0x176
> +#define MT6331_INT_MISC_CON 0x178
> +#define MT6331_INT_MISC_CON_SET 0x17A
> +#define MT6331_INT_MISC_CON_CLR 0x17C
> +#define MT6331_INT_STATUS_CON0 0x17E
> +#define MT6331_INT_STATUS_CON1 0x180
> +#define MT6331_OC_GEAR_0 0x182
> +#define MT6331_FQMTR_CON0 0x184
> +#define MT6331_FQMTR_CON1 0x186
> +#define MT6331_FQMTR_CON2 0x188
> +#define MT6331_RG_SPI_CON 0x18A
> +#define MT6331_DEW_DIO_EN 0x18C
> +#define MT6331_DEW_READ_TEST 0x18E
> +#define MT6331_DEW_WRITE_TEST 0x190
> +#define MT6331_DEW_CRC_SWRST 0x192
> +#define MT6331_DEW_CRC_EN 0x194
> +#define MT6331_DEW_CRC_VAL 0x196
> +#define MT6331_DEW_DBG_MON_SEL 0x198
> +#define MT6331_DEW_CIPHER_KEY_SEL 0x19A
> +#define MT6331_DEW_CIPHER_IV_SEL 0x19C
> +#define MT6331_DEW_CIPHER_EN 0x19E
> +#define MT6331_DEW_CIPHER_RDY 0x1A0
> +#define MT6331_DEW_CIPHER_MODE 0x1A2
> +#define MT6331_DEW_CIPHER_SWRST 0x1A4
> +#define MT6331_DEW_RDDMY_NO 0x1A6
> +#define MT6331_INT_TYPE_CON0 0x1A8
> +#define MT6331_INT_TYPE_CON0_SET 0x1AA
> +#define MT6331_INT_TYPE_CON0_CLR 0x1AC
> +#define MT6331_INT_TYPE_CON1 0x1AE
> +#define MT6331_INT_TYPE_CON1_SET 0x1B0
> +#define MT6331_INT_TYPE_CON1_CLR 0x1B2
> +#define MT6331_INT_STA 0x1B4
> +#define MT6331_BUCK_ALL_CON0 0x200
> +#define MT6331_BUCK_ALL_CON1 0x202
> +#define MT6331_BUCK_ALL_CON2 0x204
> +#define MT6331_BUCK_ALL_CON3 0x206
> +#define MT6331_BUCK_ALL_CON4 0x208
> +#define MT6331_BUCK_ALL_CON5 0x20A
> +#define MT6331_BUCK_ALL_CON6 0x20C
> +#define MT6331_BUCK_ALL_CON7 0x20E
> +#define MT6331_BUCK_ALL_CON8 0x210
> +#define MT6331_BUCK_ALL_CON9 0x212
> +#define MT6331_BUCK_ALL_CON10 0x214
> +#define MT6331_BUCK_ALL_CON11 0x216
> +#define MT6331_BUCK_ALL_CON12 0x218
> +#define MT6331_BUCK_ALL_CON13 0x21A
> +#define MT6331_BUCK_ALL_CON14 0x21C
> +#define MT6331_BUCK_ALL_CON15 0x21E
> +#define MT6331_BUCK_ALL_CON16 0x220
> +#define MT6331_BUCK_ALL_CON17 0x222
> +#define MT6331_BUCK_ALL_CON18 0x224
> +#define MT6331_BUCK_ALL_CON19 0x226
> +#define MT6331_BUCK_ALL_CON20 0x228
> +#define MT6331_BUCK_ALL_CON21 0x22A
> +#define MT6331_BUCK_ALL_CON22 0x22C
> +#define MT6331_BUCK_ALL_CON23 0x22E
> +#define MT6331_BUCK_ALL_CON24 0x230
> +#define MT6331_BUCK_ALL_CON25 0x232
> +#define MT6331_BUCK_ALL_CON26 0x234
> +#define MT6331_VDVFS11_CON0 0x236
> +#define MT6331_VDVFS11_CON1 0x238
> +#define MT6331_VDVFS11_CON2 0x23A
> +#define MT6331_VDVFS11_CON3 0x23C
> +#define MT6331_VDVFS11_CON4 0x23E
> +#define MT6331_VDVFS11_CON5 0x240
> +#define MT6331_VDVFS11_CON6 0x242
> +#define MT6331_VDVFS11_CON7 0x244
> +#define MT6331_VDVFS11_CON8 0x246
> +#define MT6331_VDVFS11_CON9 0x248
> +#define MT6331_VDVFS11_CON10 0x24A
> +#define MT6331_VDVFS11_CON11 0x24C
> +#define MT6331_VDVFS11_CON12 0x24E
> +#define MT6331_VDVFS11_CON13 0x250
> +#define MT6331_VDVFS11_CON14 0x252
> +#define MT6331_VDVFS11_CON18 0x25A
> +#define MT6331_VDVFS11_CON19 0x25C
> +#define MT6331_VDVFS11_CON20 0x25E
> +#define MT6331_VDVFS11_CON21 0x260
> +#define MT6331_VDVFS11_CON22 0x262
> +#define MT6331_VDVFS11_CON23 0x264
> +#define MT6331_VDVFS11_CON24 0x266
> +#define MT6331_VDVFS11_CON25 0x268
> +#define MT6331_VDVFS11_CON26 0x26A
> +#define MT6331_VDVFS11_CON27 0x26C
> +#define MT6331_VDVFS12_CON0 0x26E
> +#define MT6331_VDVFS12_CON1 0x270
> +#define MT6331_VDVFS12_CON2 0x272
> +#define MT6331_VDVFS12_CON3 0x274
> +#define MT6331_VDVFS12_CON4 0x276
> +#define MT6331_VDVFS12_CON5 0x278
> +#define MT6331_VDVFS12_CON6 0x27A
> +#define MT6331_VDVFS12_CON7 0x27C
> +#define MT6331_VDVFS12_CON8 0x27E
> +#define MT6331_VDVFS12_CON9 0x280
> +#define MT6331_VDVFS12_CON10 0x282
> +#define MT6331_VDVFS12_CON11 0x284
> +#define MT6331_VDVFS12_CON12 0x286
> +#define MT6331_VDVFS12_CON13 0x288
> +#define MT6331_VDVFS12_CON14 0x28A
> +#define MT6331_VDVFS12_CON18 0x292
> +#define MT6331_VDVFS12_CON19 0x294
> +#define MT6331_VDVFS12_CON20 0x296
> +#define MT6331_VDVFS13_CON0 0x298
> +#define MT6331_VDVFS13_CON1 0x29A
> +#define MT6331_VDVFS13_CON2 0x29C
> +#define MT6331_VDVFS13_CON3 0x29E
> +#define MT6331_VDVFS13_CON4 0x2A0
> +#define MT6331_VDVFS13_CON5 0x2A2
> +#define MT6331_VDVFS13_CON6 0x2A4
> +#define MT6331_VDVFS13_CON7 0x2A6
> +#define MT6331_VDVFS13_CON8 0x2A8
> +#define MT6331_VDVFS13_CON9 0x2AA
> +#define MT6331_VDVFS13_CON10 0x2AC
> +#define MT6331_VDVFS13_CON11 0x2AE
> +#define MT6331_VDVFS13_CON12 0x2B0
> +#define MT6331_VDVFS13_CON13 0x2B2
> +#define MT6331_VDVFS13_CON14 0x2B4
> +#define MT6331_VDVFS13_CON18 0x2BC
> +#define MT6331_VDVFS13_CON19 0x2BE
> +#define MT6331_VDVFS13_CON20 0x2C0
> +#define MT6331_VDVFS14_CON0 0x2C2
> +#define MT6331_VDVFS14_CON1 0x2C4
> +#define MT6331_VDVFS14_CON2 0x2C6
> +#define MT6331_VDVFS14_CON3 0x2C8
> +#define MT6331_VDVFS14_CON4 0x2CA
> +#define MT6331_VDVFS14_CON5 0x2CC
> +#define MT6331_VDVFS14_CON6 0x2CE
> +#define MT6331_VDVFS14_CON7 0x2D0
> +#define MT6331_VDVFS14_CON8 0x2D2
> +#define MT6331_VDVFS14_CON9 0x2D4
> +#define MT6331_VDVFS14_CON10 0x2D6
> +#define MT6331_VDVFS14_CON11 0x2D8
> +#define MT6331_VDVFS14_CON12 0x2DA
> +#define MT6331_VDVFS14_CON13 0x2DC
> +#define MT6331_VDVFS14_CON14 0x2DE
> +#define MT6331_VDVFS14_CON18 0x2E6
> +#define MT6331_VDVFS14_CON19 0x2E8
> +#define MT6331_VDVFS14_CON20 0x2EA
> +#define MT6331_VGPU_CON0 0x300
> +#define MT6331_VGPU_CON1 0x302
> +#define MT6331_VGPU_CON2 0x304
> +#define MT6331_VGPU_CON3 0x306
> +#define MT6331_VGPU_CON4 0x308
> +#define MT6331_VGPU_CON5 0x30A
> +#define MT6331_VGPU_CON6 0x30C
> +#define MT6331_VGPU_CON7 0x30E
> +#define MT6331_VGPU_CON8 0x310
> +#define MT6331_VGPU_CON9 0x312
> +#define MT6331_VGPU_CON10 0x314
> +#define MT6331_VGPU_CON11 0x316
> +#define MT6331_VGPU_CON12 0x318
> +#define MT6331_VGPU_CON13 0x31A
> +#define MT6331_VGPU_CON14 0x31C
> +#define MT6331_VGPU_CON15 0x31E
> +#define MT6331_VGPU_CON16 0x320
> +#define MT6331_VGPU_CON17 0x322
> +#define MT6331_VGPU_CON18 0x324
> +#define MT6331_VGPU_CON19 0x326
> +#define MT6331_VGPU_CON20 0x328
> +#define MT6331_VCORE1_CON0 0x32A
> +#define MT6331_VCORE1_CON1 0x32C
> +#define MT6331_VCORE1_CON2 0x32E
> +#define MT6331_VCORE1_CON3 0x330
> +#define MT6331_VCORE1_CON4 0x332
> +#define MT6331_VCORE1_CON5 0x334
> +#define MT6331_VCORE1_CON6 0x336
> +#define MT6331_VCORE1_CON7 0x338
> +#define MT6331_VCORE1_CON8 0x33A
> +#define MT6331_VCORE1_CON9 0x33C
> +#define MT6331_VCORE1_CON10 0x33E
> +#define MT6331_VCORE1_CON11 0x340
> +#define MT6331_VCORE1_CON12 0x342
> +#define MT6331_VCORE1_CON13 0x344
> +#define MT6331_VCORE1_CON14 0x346
> +#define MT6331_VCORE1_CON15 0x348
> +#define MT6331_VCORE1_CON16 0x34A
> +#define MT6331_VCORE1_CON17 0x34C
> +#define MT6331_VCORE1_CON18 0x34E
> +#define MT6331_VCORE1_CON19 0x350
> +#define MT6331_VCORE1_CON20 0x352
> +#define MT6331_VCORE2_CON0 0x354
> +#define MT6331_VCORE2_CON1 0x356
> +#define MT6331_VCORE2_CON2 0x358
> +#define MT6331_VCORE2_CON3 0x35A
> +#define MT6331_VCORE2_CON4 0x35C
> +#define MT6331_VCORE2_CON5 0x35E
> +#define MT6331_VCORE2_CON6 0x360
> +#define MT6331_VCORE2_CON7 0x362
> +#define MT6331_VCORE2_CON8 0x364
> +#define MT6331_VCORE2_CON9 0x366
> +#define MT6331_VCORE2_CON10 0x368
> +#define MT6331_VCORE2_CON11 0x36A
> +#define MT6331_VCORE2_CON12 0x36C
> +#define MT6331_VCORE2_CON13 0x36E
> +#define MT6331_VCORE2_CON14 0x370
> +#define MT6331_VCORE2_CON15 0x372
> +#define MT6331_VCORE2_CON16 0x374
> +#define MT6331_VCORE2_CON17 0x376
> +#define MT6331_VCORE2_CON18 0x378
> +#define MT6331_VCORE2_CON19 0x37A
> +#define MT6331_VCORE2_CON20 0x37C
> +#define MT6331_VCORE2_CON21 0x37E
> +#define MT6331_VIO18_CON0 0x380
> +#define MT6331_VIO18_CON1 0x382
> +#define MT6331_VIO18_CON2 0x384
> +#define MT6331_VIO18_CON3 0x386
> +#define MT6331_VIO18_CON4 0x388
> +#define MT6331_VIO18_CON5 0x38A
> +#define MT6331_VIO18_CON6 0x38C
> +#define MT6331_VIO18_CON7 0x38E
> +#define MT6331_VIO18_CON8 0x390
> +#define MT6331_VIO18_CON9 0x392
> +#define MT6331_VIO18_CON10 0x394
> +#define MT6331_VIO18_CON11 0x396
> +#define MT6331_VIO18_CON12 0x398
> +#define MT6331_VIO18_CON13 0x39A
> +#define MT6331_VIO18_CON14 0x39C
> +#define MT6331_VIO18_CON15 0x39E
> +#define MT6331_VIO18_CON16 0x3A0
> +#define MT6331_VIO18_CON17 0x3A2
> +#define MT6331_VIO18_CON18 0x3A4
> +#define MT6331_VIO18_CON19 0x3A6
> +#define MT6331_VIO18_CON20 0x3A8
> +#define MT6331_BUCK_K_CON0 0x3AA
> +#define MT6331_BUCK_K_CON1 0x3AC
> +#define MT6331_BUCK_K_CON2 0x3AE
> +#define MT6331_BUCK_K_CON3 0x3B0
> +#define MT6331_ZCD_CON0 0x400
> +#define MT6331_ZCD_CON1 0x402
> +#define MT6331_ZCD_CON2 0x404
> +#define MT6331_ZCD_CON3 0x406
> +#define MT6331_ZCD_CON4 0x408
> +#define MT6331_ZCD_CON5 0x40A
> +#define MT6331_ISINK0_CON0 0x40C
> +#define MT6331_ISINK0_CON1 0x40E
> +#define MT6331_ISINK0_CON2 0x410
> +#define MT6331_ISINK0_CON3 0x412
> +#define MT6331_ISINK0_CON4 0x414
> +#define MT6331_ISINK1_CON0 0x416
> +#define MT6331_ISINK1_CON1 0x418
> +#define MT6331_ISINK1_CON2 0x41A
> +#define MT6331_ISINK1_CON3 0x41C
> +#define MT6331_ISINK1_CON4 0x41E
> +#define MT6331_ISINK2_CON0 0x420
> +#define MT6331_ISINK2_CON1 0x422
> +#define MT6331_ISINK2_CON2 0x424
> +#define MT6331_ISINK2_CON3 0x426
> +#define MT6331_ISINK2_CON4 0x428
> +#define MT6331_ISINK3_CON0 0x42A
> +#define MT6331_ISINK3_CON1 0x42C
> +#define MT6331_ISINK3_CON2 0x42E
> +#define MT6331_ISINK3_CON3 0x430
> +#define MT6331_ISINK3_CON4 0x432
> +#define MT6331_ISINK_ANA0 0x434
> +#define MT6331_ISINK_ANA1 0x436
> +#define MT6331_ISINK_PHASE_DLY 0x438
> +#define MT6331_ISINK_EN_CTRL 0x43A
> +#define MT6331_ANALDO_CON0 0x500
> +#define MT6331_ANALDO_CON1 0x502
> +#define MT6331_ANALDO_CON2 0x504
> +#define MT6331_ANALDO_CON3 0x506
> +#define MT6331_ANALDO_CON4 0x508
> +#define MT6331_ANALDO_CON5 0x50A
> +#define MT6331_ANALDO_CON6 0x50C
> +#define MT6331_ANALDO_CON7 0x50E
> +#define MT6331_ANALDO_CON8 0x510
> +#define MT6331_ANALDO_CON9 0x512
> +#define MT6331_ANALDO_CON10 0x514
> +#define MT6331_ANALDO_CON11 0x516
> +#define MT6331_ANALDO_CON12 0x518
> +#define MT6331_ANALDO_CON13 0x51A
> +#define MT6331_SYSLDO_CON0 0x51C
> +#define MT6331_SYSLDO_CON1 0x51E
> +#define MT6331_SYSLDO_CON2 0x520
> +#define MT6331_SYSLDO_CON3 0x522
> +#define MT6331_SYSLDO_CON4 0x524
> +#define MT6331_SYSLDO_CON5 0x526
> +#define MT6331_SYSLDO_CON6 0x528
> +#define MT6331_SYSLDO_CON7 0x52A
> +#define MT6331_SYSLDO_CON8 0x52C
> +#define MT6331_SYSLDO_CON9 0x52E
> +#define MT6331_SYSLDO_CON10 0x530
> +#define MT6331_SYSLDO_CON11 0x532
> +#define MT6331_SYSLDO_CON12 0x534
> +#define MT6331_SYSLDO_CON13 0x536
> +#define MT6331_SYSLDO_CON14 0x538
> +#define MT6331_SYSLDO_CON15 0x53A
> +#define MT6331_SYSLDO_CON16 0x53C
> +#define MT6331_SYSLDO_CON17 0x53E
> +#define MT6331_SYSLDO_CON18 0x540
> +#define MT6331_SYSLDO_CON19 0x542
> +#define MT6331_SYSLDO_CON20 0x544
> +#define MT6331_SYSLDO_CON21 0x546
> +#define MT6331_DIGLDO_CON0 0x548
> +#define MT6331_DIGLDO_CON1 0x54A
> +#define MT6331_DIGLDO_CON2 0x54C
> +#define MT6331_DIGLDO_CON3 0x54E
> +#define MT6331_DIGLDO_CON4 0x550
> +#define MT6331_DIGLDO_CON5 0x552
> +#define MT6331_DIGLDO_CON6 0x554
> +#define MT6331_DIGLDO_CON7 0x556
> +#define MT6331_DIGLDO_CON8 0x558
> +#define MT6331_DIGLDO_CON9 0x55A
> +#define MT6331_DIGLDO_CON10 0x55C
> +#define MT6331_DIGLDO_CON11 0x55E
> +#define MT6331_DIGLDO_CON12 0x560
> +#define MT6331_DIGLDO_CON13 0x562
> +#define MT6331_DIGLDO_CON14 0x564
> +#define MT6331_DIGLDO_CON15 0x566
> +#define MT6331_DIGLDO_CON16 0x568
> +#define MT6331_DIGLDO_CON17 0x56A
> +#define MT6331_DIGLDO_CON18 0x56C
> +#define MT6331_DIGLDO_CON19 0x56E
> +#define MT6331_DIGLDO_CON20 0x570
> +#define MT6331_DIGLDO_CON21 0x572
> +#define MT6331_DIGLDO_CON22 0x574
> +#define MT6331_DIGLDO_CON23 0x576
> +#define MT6331_DIGLDO_CON24 0x578
> +#define MT6331_DIGLDO_CON25 0x57A
> +#define MT6331_DIGLDO_CON26 0x57C
> +#define MT6331_DIGLDO_CON27 0x57E
> +#define MT6331_DIGLDO_CON28 0x580
> +#define MT6331_OTP_CON0 0x600
> +#define MT6331_OTP_CON1 0x602
> +#define MT6331_OTP_CON2 0x604
> +#define MT6331_OTP_CON3 0x606
> +#define MT6331_OTP_CON4 0x608
> +#define MT6331_OTP_CON5 0x60A
> +#define MT6331_OTP_CON6 0x60C
> +#define MT6331_OTP_CON7 0x60E
> +#define MT6331_OTP_CON8 0x610
> +#define MT6331_OTP_CON9 0x612
> +#define MT6331_OTP_CON10 0x614
> +#define MT6331_OTP_CON11 0x616
> +#define MT6331_OTP_CON12 0x618
> +#define MT6331_OTP_CON13 0x61A
> +#define MT6331_OTP_CON14 0x61C
> +#define MT6331_OTP_DOUT_0_15 0x61E
> +#define MT6331_OTP_DOUT_16_31 0x620
> +#define MT6331_OTP_DOUT_32_47 0x622
> +#define MT6331_OTP_DOUT_48_63 0x624
> +#define MT6331_OTP_DOUT_64_79 0x626
> +#define MT6331_OTP_DOUT_80_95 0x628
> +#define MT6331_OTP_DOUT_96_111 0x62A
> +#define MT6331_OTP_DOUT_112_127 0x62C
> +#define MT6331_OTP_DOUT_128_143 0x62E
> +#define MT6331_OTP_DOUT_144_159 0x630
> +#define MT6331_OTP_DOUT_160_175 0x632
> +#define MT6331_OTP_DOUT_176_191 0x634
> +#define MT6331_OTP_DOUT_192_207 0x636
> +#define MT6331_OTP_DOUT_208_223 0x638
> +#define MT6331_OTP_DOUT_224_239 0x63A
> +#define MT6331_OTP_DOUT_240_255 0x63C
> +#define MT6331_OTP_VAL_0_15 0x63E
> +#define MT6331_OTP_VAL_16_31 0x640
> +#define MT6331_OTP_VAL_32_47 0x642
> +#define MT6331_OTP_VAL_48_63 0x644
> +#define MT6331_OTP_VAL_64_79 0x646
> +#define MT6331_OTP_VAL_80_95 0x648
> +#define MT6331_OTP_VAL_96_111 0x64A
> +#define MT6331_OTP_VAL_112_127 0x64C
> +#define MT6331_OTP_VAL_128_143 0x64E
> +#define MT6331_OTP_VAL_144_159 0x650
> +#define MT6331_OTP_VAL_160_175 0x652
> +#define MT6331_OTP_VAL_176_191 0x654
> +#define MT6331_OTP_VAL_192_207 0x656
> +#define MT6331_OTP_VAL_208_223 0x658
> +#define MT6331_OTP_VAL_224_239 0x65A
> +#define MT6331_OTP_VAL_240_255 0x65C
> +#define MT6331_RTC_MIX_CON0 0x65E
> +#define MT6331_RTC_MIX_CON1 0x660
> +#define MT6331_AUDDAC_CFG0 0x662
> +#define MT6331_AUDBUF_CFG0 0x664
> +#define MT6331_AUDBUF_CFG1 0x666
> +#define MT6331_AUDBUF_CFG2 0x668
> +#define MT6331_AUDBUF_CFG3 0x66A
> +#define MT6331_AUDBUF_CFG4 0x66C
> +#define MT6331_AUDBUF_CFG5 0x66E
> +#define MT6331_AUDBUF_CFG6 0x670
> +#define MT6331_AUDBUF_CFG7 0x672
> +#define MT6331_AUDBUF_CFG8 0x674
> +#define MT6331_IBIASDIST_CFG0 0x676
> +#define MT6331_AUDCLKGEN_CFG0 0x678
> +#define MT6331_AUDLDO_CFG0 0x67A
> +#define MT6331_AUDDCDC_CFG0 0x67C
> +#define MT6331_AUDDCDC_CFG1 0x67E
> +#define MT6331_AUDNVREGGLB_CFG0 0x680
> +#define MT6331_AUD_NCP0 0x682
> +#define MT6331_AUD_ZCD_CFG0 0x684
> +#define MT6331_AUDPREAMP_CFG0 0x686
> +#define MT6331_AUDPREAMP_CFG1 0x688
> +#define MT6331_AUDPREAMP_CFG2 0x68A
> +#define MT6331_AUDADC_CFG0 0x68C
> +#define MT6331_AUDADC_CFG1 0x68E
> +#define MT6331_AUDADC_CFG2 0x690
> +#define MT6331_AUDADC_CFG3 0x692
> +#define MT6331_AUDADC_CFG4 0x694
> +#define MT6331_AUDADC_CFG5 0x696
> +#define MT6331_AUDDIGMI_CFG0 0x698
> +#define MT6331_AUDDIGMI_CFG1 0x69A
> +#define MT6331_AUDMICBIAS_CFG0 0x69C
> +#define MT6331_AUDMICBIAS_CFG1 0x69E
> +#define MT6331_AUDENCSPARE_CFG0 0x6A0
> +#define MT6331_AUDPREAMPGAIN_CFG0 0x6A2
> +#define MT6331_AUDMADPLL_CFG0 0x6A4
> +#define MT6331_AUDMADPLL_CFG1 0x6A6
> +#define MT6331_AUDMADPLL_CFG2 0x6A8
> +#define MT6331_AUDLDO_NVREG_CFG0 0x6AA
> +#define MT6331_AUDLDO_NVREG_CFG1 0x6AC
> +#define MT6331_AUDLDO_NVREG_CFG2 0x6AE
> +#define MT6331_AUXADC_ADC0 0x700
> +#define MT6331_AUXADC_ADC1 0x702
> +#define MT6331_AUXADC_ADC2 0x704
> +#define MT6331_AUXADC_ADC3 0x706
> +#define MT6331_AUXADC_ADC4 0x708
> +#define MT6331_AUXADC_ADC5 0x70A
> +#define MT6331_AUXADC_ADC6 0x70C
> +#define MT6331_AUXADC_ADC7 0x70E
> +#define MT6331_AUXADC_ADC8 0x710
> +#define MT6331_AUXADC_ADC9 0x712
> +#define MT6331_AUXADC_ADC10 0x714
> +#define MT6331_AUXADC_ADC11 0x716
> +#define MT6331_AUXADC_ADC12 0x718
> +#define MT6331_AUXADC_ADC13 0x71A
> +#define MT6331_AUXADC_ADC14 0x71C
> +#define MT6331_AUXADC_ADC15 0x71E
> +#define MT6331_AUXADC_ADC16 0x720
> +#define MT6331_AUXADC_ADC17 0x722
> +#define MT6331_AUXADC_ADC18 0x724
> +#define MT6331_AUXADC_ADC19 0x726
> +#define MT6331_AUXADC_STA0 0x728
> +#define MT6331_AUXADC_STA1 0x72A
> +#define MT6331_AUXADC_RQST0 0x72C
> +#define MT6331_AUXADC_RQST0_SET 0x72E
> +#define MT6331_AUXADC_RQST0_CLR 0x730
> +#define MT6331_AUXADC_RQST1 0x732
> +#define MT6331_AUXADC_RQST1_SET 0x734
> +#define MT6331_AUXADC_RQST1_CLR 0x736
> +#define MT6331_AUXADC_CON0 0x738
> +#define MT6331_AUXADC_CON1 0x73A
> +#define MT6331_AUXADC_CON2 0x73C
> +#define MT6331_AUXADC_CON3 0x73E
> +#define MT6331_AUXADC_CON4 0x740
> +#define MT6331_AUXADC_CON5 0x742
> +#define MT6331_AUXADC_CON6 0x744
> +#define MT6331_AUXADC_CON7 0x746
> +#define MT6331_AUXADC_CON8 0x748
> +#define MT6331_AUXADC_CON9 0x74A
> +#define MT6331_AUXADC_CON10 0x74C
> +#define MT6331_AUXADC_CON11 0x74E
> +#define MT6331_AUXADC_CON12 0x750
> +#define MT6331_AUXADC_CON13 0x752
> +#define MT6331_AUXADC_CON14 0x754
> +#define MT6331_AUXADC_CON15 0x756
> +#define MT6331_AUXADC_CON16 0x758
> +#define MT6331_AUXADC_CON17 0x75A
> +#define MT6331_AUXADC_CON18 0x75C
> +#define MT6331_AUXADC_CON19 0x75E
> +#define MT6331_AUXADC_CON20 0x760
> +#define MT6331_AUXADC_CON21 0x762
> +#define MT6331_AUXADC_CON22 0x764
> +#define MT6331_AUXADC_CON23 0x766
> +#define MT6331_AUXADC_CON24 0x768
> +#define MT6331_AUXADC_CON25 0x76A
> +#define MT6331_AUXADC_CON26 0x76C
> +#define MT6331_AUXADC_CON27 0x76E
> +#define MT6331_AUXADC_CON28 0x770
> +#define MT6331_AUXADC_CON29 0x772
> +#define MT6331_AUXADC_CON30 0x774
> +#define MT6331_AUXADC_CON31 0x776
> +#define MT6331_AUXADC_CON32 0x778
> +#define MT6331_ACCDET_CON0 0x77A
> +#define MT6331_ACCDET_CON1 0x77C
> +#define MT6331_ACCDET_CON2 0x77E
> +#define MT6331_ACCDET_CON3 0x780
> +#define MT6331_ACCDET_CON4 0x782
> +#define MT6331_ACCDET_CON5 0x784
> +#define MT6331_ACCDET_CON6 0x786
> +#define MT6331_ACCDET_CON7 0x788
> +#define MT6331_ACCDET_CON8 0x78A
> +#define MT6331_ACCDET_CON9 0x78C
> +#define MT6331_ACCDET_CON10 0x78E
> +#define MT6331_ACCDET_CON11 0x790
> +#define MT6331_ACCDET_CON12 0x792
> +#define MT6331_ACCDET_CON13 0x794
> +#define MT6331_ACCDET_CON14 0x796
> +#define MT6331_ACCDET_CON15 0x798
> +#define MT6331_ACCDET_CON16 0x79A
> +#define MT6331_ACCDET_CON17 0x79C
> +#define MT6331_ACCDET_CON18 0x79E
> +#define MT6331_ACCDET_CON19 0x7A0
> +#define MT6331_ACCDET_CON20 0x7A2
> +#define MT6331_ACCDET_CON21 0x7A4
> +#define MT6331_ACCDET_CON22 0x7A6
> +#define MT6331_ACCDET_CON23 0x7A8
> +#define MT6331_ACCDET_CON24 0x7AA
> +
> +#endif /* __MFD_MT6331_REGISTERS_H__ */
> diff --git a/include/linux/mfd/mt6332/core.h b/include/linux/mfd/mt6332/core.h
> new file mode 100644
> index 000000000000..cd6013eb82d9
> --- /dev/null
> +++ b/include/linux/mfd/mt6332/core.h
> @@ -0,0 +1,65 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> + */
> +
> +#ifndef __MFD_MT6332_CORE_H__
> +#define __MFD_MT6332_CORE_H__
> +
> +enum mt6332_irq_status_numbers {
> + MT6332_IRQ_STATUS_CHR_COMPLETE = 0,
> + MT6332_IRQ_STATUS_THERMAL_SD,
> + MT6332_IRQ_STATUS_THERMAL_REG_IN,
> + MT6332_IRQ_STATUS_THERMAL_REG_OUT,
> + MT6332_IRQ_STATUS_OTG_OC,
> + MT6332_IRQ_STATUS_CHR_OC,
> + MT6332_IRQ_STATUS_OTG_THERMAL,
> + MT6332_IRQ_STATUS_CHRIN_SHORT,
> + MT6332_IRQ_STATUS_DRVCDT_SHORT,
> + MT6332_IRQ_STATUS_PLUG_IN_FLASH,
> + MT6332_IRQ_STATUS_CHRWDT_FLAG,
> + MT6332_IRQ_STATUS_FLASH_EN_TIMEOUT,
> + MT6332_IRQ_STATUS_FLASH_VLED1_SHORT,
> + MT6332_IRQ_STATUS_FLASH_VLED1_OPEN = 13,
> + MT6332_IRQ_STATUS_OV = 16,
> + MT6332_IRQ_STATUS_BVALID_DET,
> + MT6332_IRQ_STATUS_VBATON_UNDET,
> + MT6332_IRQ_STATUS_CHR_PLUG_IN,
> + MT6332_IRQ_STATUS_CHR_PLUG_OUT,
> + MT6332_IRQ_STATUS_BC11_TIMEOUT,
> + MT6332_IRQ_STATUS_FLASH_VLED2_SHORT,
> + MT6332_IRQ_STATUS_FLASH_VLED2_OPEN = 23,
> + MT6332_IRQ_STATUS_THR_H = 32,
> + MT6332_IRQ_STATUS_THR_L,
> + MT6332_IRQ_STATUS_BAT_H,
> + MT6332_IRQ_STATUS_BAT_L,
> + MT6332_IRQ_STATUS_M3_H,
> + MT6332_IRQ_STATUS_M3_L,
> + MT6332_IRQ_STATUS_FG_BAT_H,
> + MT6332_IRQ_STATUS_FG_BAT_L,
> + MT6332_IRQ_STATUS_FG_CUR_H,
> + MT6332_IRQ_STATUS_FG_CUR_L,
> + MT6332_IRQ_STATUS_SPKL_D,
> + MT6332_IRQ_STATUS_SPKL_AB,
> + MT6332_IRQ_STATUS_BIF,
> + MT6332_IRQ_STATUS_VWLED_OC = 45,
> + MT6332_IRQ_STATUS_VDRAM_OC = 48,
> + MT6332_IRQ_STATUS_VDVFS2_OC,
> + MT6332_IRQ_STATUS_VRF1_OC,
> + MT6332_IRQ_STATUS_VRF2_OC,
> + MT6332_IRQ_STATUS_VPA_OC,
> + MT6332_IRQ_STATUS_VSBST_OC,
> + MT6332_IRQ_STATUS_LDO_OC,
> + MT6332_IRQ_STATUS_NR,
> +};
> +
> +#define MT6332_IRQ_CON0_BASE MT6332_IRQ_STATUS_CHR_COMPLETE
> +#define MT6332_IRQ_CON0_BITS (MT6332_IRQ_STATUS_FLASH_VLED1_OPEN + 1)
> +#define MT6332_IRQ_CON1_BASE MT6332_IRQ_STATUS_OV
> +#define MT6332_IRQ_CON1_BITS (MT6332_IRQ_STATUS_FLASH_VLED2_OPEN - MT6332_IRQ_STATUS_OV + 1)
> +#define MT6332_IRQ_CON2_BASE MT6332_IRQ_STATUS_THR_H
> +#define MT6332_IRQ_CON2_BITS (MT6332_IRQ_STATUS_VWLED_OC - MT6332_IRQ_STATUS_THR_H + 1)
> +#define MT6332_IRQ_CON3_BASE MT6332_IRQ_STATUS_VDRAM_OC
> +#define MT6332_IRQ_CON3_BITS (MT6332_IRQ_STATUS_LDO_OC - MT6332_IRQ_STATUS_VDRAM_OC + 1)
> +
> +#endif /* __MFD_MT6332_CORE_H__ */
> diff --git a/include/linux/mfd/mt6332/registers.h b/include/linux/mfd/mt6332/registers.h
> new file mode 100644
> index 000000000000..65e0b86fceac
> --- /dev/null
> +++ b/include/linux/mfd/mt6332/registers.h
> @@ -0,0 +1,642 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (c) 2022 AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> + */
> +
> +#ifndef __MFD_MT6332_REGISTERS_H__
> +#define __MFD_MT6332_REGISTERS_H__
> +
> +/* PMIC Registers */
> +#define MT6332_HWCID 0x8000
> +#define MT6332_SWCID 0x8002
> +#define MT6332_TOP_CON 0x8004
> +#define MT6332_DDR_VREF_AP_CON 0x8006
> +#define MT6332_DDR_VREF_DQ_CON 0x8008
> +#define MT6332_DDR_VREF_CA_CON 0x800A
> +#define MT6332_TEST_OUT 0x800C
> +#define MT6332_TEST_CON0 0x800E
> +#define MT6332_TEST_CON1 0x8010
> +#define MT6332_TESTMODE_SW 0x8012
> +#define MT6332_TESTMODE_ANA 0x8014
> +#define MT6332_TDSEL_CON 0x8016
> +#define MT6332_RDSEL_CON 0x8018
> +#define MT6332_SMT_CON0 0x801A
> +#define MT6332_SMT_CON1 0x801C
> +#define MT6332_DRV_CON0 0x801E
> +#define MT6332_DRV_CON1 0x8020
> +#define MT6332_DRV_CON2 0x8022
> +#define MT6332_EN_STATUS0 0x8024
> +#define MT6332_OCSTATUS0 0x8026
> +#define MT6332_TOP_STATUS 0x8028
> +#define MT6332_TOP_STATUS_SET 0x802A
> +#define MT6332_TOP_STATUS_CLR 0x802C
> +#define MT6332_FLASH_CON0 0x802E
> +#define MT6332_FLASH_CON1 0x8030
> +#define MT6332_FLASH_CON2 0x8032
> +#define MT6332_CORE_CON0 0x8034
> +#define MT6332_CORE_CON1 0x8036
> +#define MT6332_CORE_CON2 0x8038
> +#define MT6332_CORE_CON3 0x803A
> +#define MT6332_CORE_CON4 0x803C
> +#define MT6332_CORE_CON5 0x803E
> +#define MT6332_CORE_CON6 0x8040
> +#define MT6332_CORE_CON7 0x8042
> +#define MT6332_CORE_CON8 0x8044
> +#define MT6332_CORE_CON9 0x8046
> +#define MT6332_CORE_CON10 0x8048
> +#define MT6332_CORE_CON11 0x804A
> +#define MT6332_CORE_CON12 0x804C
> +#define MT6332_CORE_CON13 0x804E
> +#define MT6332_CORE_CON14 0x8050
> +#define MT6332_CORE_CON15 0x8052
> +#define MT6332_STA_CON0 0x8054
> +#define MT6332_STA_CON1 0x8056
> +#define MT6332_STA_CON2 0x8058
> +#define MT6332_STA_CON3 0x805A
> +#define MT6332_STA_CON4 0x805C
> +#define MT6332_STA_CON5 0x805E
> +#define MT6332_STA_CON6 0x8060
> +#define MT6332_STA_CON7 0x8062
> +#define MT6332_CHR_CON0 0x8064
> +#define MT6332_CHR_CON1 0x8066
> +#define MT6332_CHR_CON2 0x8068
> +#define MT6332_CHR_CON3 0x806A
> +#define MT6332_CHR_CON4 0x806C
> +#define MT6332_CHR_CON5 0x806E
> +#define MT6332_CHR_CON6 0x8070
> +#define MT6332_CHR_CON7 0x8072
> +#define MT6332_CHR_CON8 0x8074
> +#define MT6332_CHR_CON9 0x8076
> +#define MT6332_CHR_CON10 0x8078
> +#define MT6332_CHR_CON11 0x807A
> +#define MT6332_CHR_CON12 0x807C
> +#define MT6332_CHR_CON13 0x807E
> +#define MT6332_CHR_CON14 0x8080
> +#define MT6332_CHR_CON15 0x8082
> +#define MT6332_BOOST_CON0 0x8084
> +#define MT6332_BOOST_CON1 0x8086
> +#define MT6332_BOOST_CON2 0x8088
> +#define MT6332_BOOST_CON3 0x808A
> +#define MT6332_BOOST_CON4 0x808C
> +#define MT6332_BOOST_CON5 0x808E
> +#define MT6332_BOOST_CON6 0x8090
> +#define MT6332_BOOST_CON7 0x8092
> +#define MT6332_TOP_CKPDN_CON0 0x8094
> +#define MT6332_TOP_CKPDN_CON0_SET 0x8096
> +#define MT6332_TOP_CKPDN_CON0_CLR 0x8098
> +#define MT6332_TOP_CKPDN_CON1 0x809A
> +#define MT6332_TOP_CKPDN_CON1_SET 0x809C
> +#define MT6332_TOP_CKPDN_CON1_CLR 0x809E
> +#define MT6332_TOP_CKPDN_CON2 0x80A0
> +#define MT6332_TOP_CKPDN_CON2_SET 0x80A2
> +#define MT6332_TOP_CKPDN_CON2_CLR 0x80A4
> +#define MT6332_TOP_CKSEL_CON0 0x80A6
> +#define MT6332_TOP_CKSEL_CON0_SET 0x80A8
> +#define MT6332_TOP_CKSEL_CON0_CLR 0x80AA
> +#define MT6332_TOP_CKSEL_CON1 0x80AC
> +#define MT6332_TOP_CKSEL_CON1_SET 0x80AE
> +#define MT6332_TOP_CKSEL_CON1_CLR 0x80B0
> +#define MT6332_TOP_CKHWEN_CON 0x80B2
> +#define MT6332_TOP_CKHWEN_CON_SET 0x80B4
> +#define MT6332_TOP_CKHWEN_CON_CLR 0x80B6
> +#define MT6332_TOP_CKTST_CON0 0x80B8
> +#define MT6332_TOP_CKTST_CON1 0x80BA
> +#define MT6332_TOP_RST_CON 0x80BC
> +#define MT6332_TOP_RST_CON_SET 0x80BE
> +#define MT6332_TOP_RST_CON_CLR 0x80C0
> +#define MT6332_TOP_RST_MISC 0x80C2
> +#define MT6332_TOP_RST_MISC_SET 0x80C4
> +#define MT6332_TOP_RST_MISC_CLR 0x80C6
> +#define MT6332_INT_CON0 0x80C8
> +#define MT6332_INT_CON0_SET 0x80CA
> +#define MT6332_INT_CON0_CLR 0x80CC
> +#define MT6332_INT_CON1 0x80CE
> +#define MT6332_INT_CON1_SET 0x80D0
> +#define MT6332_INT_CON1_CLR 0x80D2
> +#define MT6332_INT_CON2 0x80D4
> +#define MT6332_INT_CON2_SET 0x80D6
> +#define MT6332_INT_CON2_CLR 0x80D8
> +#define MT6332_INT_CON3 0x80DA
> +#define MT6332_INT_CON3_SET 0x80DC
> +#define MT6332_INT_CON3_CLR 0x80DE
> +#define MT6332_CHRWDT_CON0 0x80E0
> +#define MT6332_CHRWDT_STATUS0 0x80E2
> +#define MT6332_INT_STATUS0 0x80E4
> +#define MT6332_INT_STATUS1 0x80E6
> +#define MT6332_INT_STATUS2 0x80E8
> +#define MT6332_INT_STATUS3 0x80EA
> +#define MT6332_OC_GEAR_0 0x80EC
> +#define MT6332_OC_GEAR_1 0x80EE
> +#define MT6332_OC_GEAR_2 0x80F0
> +#define MT6332_INT_MISC_CON 0x80F2
> +#define MT6332_RG_SPI_CON 0x80F4
> +#define MT6332_DEW_DIO_EN 0x80F6
> +#define MT6332_DEW_READ_TEST 0x80F8
> +#define MT6332_DEW_WRITE_TEST 0x80FA
> +#define MT6332_DEW_CRC_SWRST 0x80FC
> +#define MT6332_DEW_CRC_EN 0x80FE
> +#define MT6332_DEW_CRC_VAL 0x8100
> +#define MT6332_DEW_DBG_MON_SEL 0x8102
> +#define MT6332_DEW_CIPHER_KEY_SEL 0x8104
> +#define MT6332_DEW_CIPHER_IV_SEL 0x8106
> +#define MT6332_DEW_CIPHER_EN 0x8108
> +#define MT6332_DEW_CIPHER_RDY 0x810A
> +#define MT6332_DEW_CIPHER_MODE 0x810C
> +#define MT6332_DEW_CIPHER_SWRST 0x810E
> +#define MT6332_DEW_RDDMY_NO 0x8110
> +#define MT6332_INT_STA 0x8112
> +#define MT6332_BIF_CON0 0x8114
> +#define MT6332_BIF_CON1 0x8116
> +#define MT6332_BIF_CON2 0x8118
> +#define MT6332_BIF_CON3 0x811A
> +#define MT6332_BIF_CON4 0x811C
> +#define MT6332_BIF_CON5 0x811E
> +#define MT6332_BIF_CON6 0x8120
> +#define MT6332_BIF_CON7 0x8122
> +#define MT6332_BIF_CON8 0x8124
> +#define MT6332_BIF_CON9 0x8126
> +#define MT6332_BIF_CON10 0x8128
> +#define MT6332_BIF_CON11 0x812A
> +#define MT6332_BIF_CON12 0x812C
> +#define MT6332_BIF_CON13 0x812E
> +#define MT6332_BIF_CON14 0x8130
> +#define MT6332_BIF_CON15 0x8132
> +#define MT6332_BIF_CON16 0x8134
> +#define MT6332_BIF_CON17 0x8136
> +#define MT6332_BIF_CON18 0x8138
> +#define MT6332_BIF_CON19 0x813A
> +#define MT6332_BIF_CON20 0x813C
> +#define MT6332_BIF_CON21 0x813E
> +#define MT6332_BIF_CON22 0x8140
> +#define MT6332_BIF_CON23 0x8142
> +#define MT6332_BIF_CON24 0x8144
> +#define MT6332_BIF_CON25 0x8146
> +#define MT6332_BIF_CON26 0x8148
> +#define MT6332_BIF_CON27 0x814A
> +#define MT6332_BIF_CON28 0x814C
> +#define MT6332_BIF_CON29 0x814E
> +#define MT6332_BIF_CON30 0x8150
> +#define MT6332_BIF_CON31 0x8152
> +#define MT6332_BIF_CON32 0x8154
> +#define MT6332_BIF_CON33 0x8156
> +#define MT6332_BIF_CON34 0x8158
> +#define MT6332_BIF_CON35 0x815A
> +#define MT6332_BIF_CON36 0x815C
> +#define MT6332_BATON_CON0 0x815E
> +#define MT6332_BIF_CON37 0x8160
> +#define MT6332_BIF_CON38 0x8162
> +#define MT6332_CHR_CON16 0x8164
> +#define MT6332_CHR_CON17 0x8166
> +#define MT6332_CHR_CON18 0x8168
> +#define MT6332_CHR_CON19 0x816A
> +#define MT6332_CHR_CON20 0x816C
> +#define MT6332_CHR_CON21 0x816E
> +#define MT6332_CHR_CON22 0x8170
> +#define MT6332_CHR_CON23 0x8172
> +#define MT6332_CHR_CON24 0x8174
> +#define MT6332_CHR_CON25 0x8176
> +#define MT6332_STA_CON8 0x8178
> +#define MT6332_BUCK_ALL_CON0 0x8400
> +#define MT6332_BUCK_ALL_CON1 0x8402
> +#define MT6332_BUCK_ALL_CON2 0x8404
> +#define MT6332_BUCK_ALL_CON3 0x8406
> +#define MT6332_BUCK_ALL_CON4 0x8408
> +#define MT6332_BUCK_ALL_CON5 0x840A
> +#define MT6332_BUCK_ALL_CON6 0x840C
> +#define MT6332_BUCK_ALL_CON7 0x840E
> +#define MT6332_BUCK_ALL_CON8 0x8410
> +#define MT6332_BUCK_ALL_CON9 0x8412
> +#define MT6332_BUCK_ALL_CON10 0x8414
> +#define MT6332_BUCK_ALL_CON11 0x8416
> +#define MT6332_BUCK_ALL_CON12 0x8418
> +#define MT6332_BUCK_ALL_CON13 0x841A
> +#define MT6332_BUCK_ALL_CON14 0x841C
> +#define MT6332_BUCK_ALL_CON15 0x841E
> +#define MT6332_BUCK_ALL_CON16 0x8420
> +#define MT6332_BUCK_ALL_CON17 0x8422
> +#define MT6332_BUCK_ALL_CON18 0x8424
> +#define MT6332_BUCK_ALL_CON19 0x8426
> +#define MT6332_BUCK_ALL_CON20 0x8428
> +#define MT6332_BUCK_ALL_CON21 0x842A
> +#define MT6332_BUCK_ALL_CON22 0x842C
> +#define MT6332_BUCK_ALL_CON23 0x842E
> +#define MT6332_BUCK_ALL_CON24 0x8430
> +#define MT6332_BUCK_ALL_CON25 0x8432
> +#define MT6332_BUCK_ALL_CON26 0x8434
> +#define MT6332_BUCK_ALL_CON27 0x8436
> +#define MT6332_VDRAM_CON0 0x8438
> +#define MT6332_VDRAM_CON1 0x843A
> +#define MT6332_VDRAM_CON2 0x843C
> +#define MT6332_VDRAM_CON3 0x843E
> +#define MT6332_VDRAM_CON4 0x8440
> +#define MT6332_VDRAM_CON5 0x8442
> +#define MT6332_VDRAM_CON6 0x8444
> +#define MT6332_VDRAM_CON7 0x8446
> +#define MT6332_VDRAM_CON8 0x8448
> +#define MT6332_VDRAM_CON9 0x844A
> +#define MT6332_VDRAM_CON10 0x844C
> +#define MT6332_VDRAM_CON11 0x844E
> +#define MT6332_VDRAM_CON12 0x8450
> +#define MT6332_VDRAM_CON13 0x8452
> +#define MT6332_VDRAM_CON14 0x8454
> +#define MT6332_VDRAM_CON15 0x8456
> +#define MT6332_VDRAM_CON16 0x8458
> +#define MT6332_VDRAM_CON17 0x845A
> +#define MT6332_VDRAM_CON18 0x845C
> +#define MT6332_VDRAM_CON19 0x845E
> +#define MT6332_VDRAM_CON20 0x8460
> +#define MT6332_VDRAM_CON21 0x8462
> +#define MT6332_VDVFS2_CON0 0x8464
> +#define MT6332_VDVFS2_CON1 0x8466
> +#define MT6332_VDVFS2_CON2 0x8468
> +#define MT6332_VDVFS2_CON3 0x846A
> +#define MT6332_VDVFS2_CON4 0x846C
> +#define MT6332_VDVFS2_CON5 0x846E
> +#define MT6332_VDVFS2_CON6 0x8470
> +#define MT6332_VDVFS2_CON7 0x8472
> +#define MT6332_VDVFS2_CON8 0x8474
> +#define MT6332_VDVFS2_CON9 0x8476
> +#define MT6332_VDVFS2_CON10 0x8478
> +#define MT6332_VDVFS2_CON11 0x847A
> +#define MT6332_VDVFS2_CON12 0x847C
> +#define MT6332_VDVFS2_CON13 0x847E
> +#define MT6332_VDVFS2_CON14 0x8480
> +#define MT6332_VDVFS2_CON15 0x8482
> +#define MT6332_VDVFS2_CON16 0x8484
> +#define MT6332_VDVFS2_CON17 0x8486
> +#define MT6332_VDVFS2_CON18 0x8488
> +#define MT6332_VDVFS2_CON19 0x848A
> +#define MT6332_VDVFS2_CON20 0x848C
> +#define MT6332_VDVFS2_CON21 0x848E
> +#define MT6332_VDVFS2_CON22 0x8490
> +#define MT6332_VDVFS2_CON23 0x8492
> +#define MT6332_VDVFS2_CON24 0x8494
> +#define MT6332_VDVFS2_CON25 0x8496
> +#define MT6332_VDVFS2_CON26 0x8498
> +#define MT6332_VDVFS2_CON27 0x849A
> +#define MT6332_VRF1_CON0 0x849C
> +#define MT6332_VRF1_CON1 0x849E
> +#define MT6332_VRF1_CON2 0x84A0
> +#define MT6332_VRF1_CON3 0x84A2
> +#define MT6332_VRF1_CON4 0x84A4
> +#define MT6332_VRF1_CON5 0x84A6
> +#define MT6332_VRF1_CON6 0x84A8
> +#define MT6332_VRF1_CON7 0x84AA
> +#define MT6332_VRF1_CON8 0x84AC
> +#define MT6332_VRF1_CON9 0x84AE
> +#define MT6332_VRF1_CON10 0x84B0
> +#define MT6332_VRF1_CON11 0x84B2
> +#define MT6332_VRF1_CON12 0x84B4
> +#define MT6332_VRF1_CON13 0x84B6
> +#define MT6332_VRF1_CON14 0x84B8
> +#define MT6332_VRF1_CON15 0x84BA
> +#define MT6332_VRF1_CON16 0x84BC
> +#define MT6332_VRF1_CON17 0x84BE
> +#define MT6332_VRF1_CON18 0x84C0
> +#define MT6332_VRF1_CON19 0x84C2
> +#define MT6332_VRF1_CON20 0x84C4
> +#define MT6332_VRF1_CON21 0x84C6
> +#define MT6332_VRF2_CON0 0x84C8
> +#define MT6332_VRF2_CON1 0x84CA
> +#define MT6332_VRF2_CON2 0x84CC
> +#define MT6332_VRF2_CON3 0x84CE
> +#define MT6332_VRF2_CON4 0x84D0
> +#define MT6332_VRF2_CON5 0x84D2
> +#define MT6332_VRF2_CON6 0x84D4
> +#define MT6332_VRF2_CON7 0x84D6
> +#define MT6332_VRF2_CON8 0x84D8
> +#define MT6332_VRF2_CON9 0x84DA
> +#define MT6332_VRF2_CON10 0x84DC
> +#define MT6332_VRF2_CON11 0x84DE
> +#define MT6332_VRF2_CON12 0x84E0
> +#define MT6332_VRF2_CON13 0x84E2
> +#define MT6332_VRF2_CON14 0x84E4
> +#define MT6332_VRF2_CON15 0x84E6
> +#define MT6332_VRF2_CON16 0x84E8
> +#define MT6332_VRF2_CON17 0x84EA
> +#define MT6332_VRF2_CON18 0x84EC
> +#define MT6332_VRF2_CON19 0x84EE
> +#define MT6332_VRF2_CON20 0x84F0
> +#define MT6332_VRF2_CON21 0x84F2
> +#define MT6332_VPA_CON0 0x84F4
> +#define MT6332_VPA_CON1 0x84F6
> +#define MT6332_VPA_CON2 0x84F8
> +#define MT6332_VPA_CON3 0x84FC
> +#define MT6332_VPA_CON4 0x84FE
> +#define MT6332_VPA_CON5 0x8500
> +#define MT6332_VPA_CON6 0x8502
> +#define MT6332_VPA_CON7 0x8504
> +#define MT6332_VPA_CON8 0x8506
> +#define MT6332_VPA_CON9 0x8508
> +#define MT6332_VPA_CON10 0x850A
> +#define MT6332_VPA_CON11 0x850C
> +#define MT6332_VPA_CON12 0x850E
> +#define MT6332_VPA_CON13 0x8510
> +#define MT6332_VPA_CON14 0x8512
> +#define MT6332_VPA_CON15 0x8514
> +#define MT6332_VPA_CON16 0x8516
> +#define MT6332_VPA_CON17 0x8518
> +#define MT6332_VPA_CON18 0x851A
> +#define MT6332_VPA_CON19 0x851C
> +#define MT6332_VPA_CON20 0x851E
> +#define MT6332_VPA_CON21 0x8520
> +#define MT6332_VPA_CON22 0x8522
> +#define MT6332_VPA_CON23 0x8524
> +#define MT6332_VPA_CON24 0x8526
> +#define MT6332_VPA_CON25 0x8528
> +#define MT6332_VSBST_CON0 0x852A
> +#define MT6332_VSBST_CON1 0x852C
> +#define MT6332_VSBST_CON2 0x852E
> +#define MT6332_VSBST_CON3 0x8530
> +#define MT6332_VSBST_CON4 0x8532
> +#define MT6332_VSBST_CON5 0x8534
> +#define MT6332_VSBST_CON6 0x8536
> +#define MT6332_VSBST_CON7 0x8538
> +#define MT6332_VSBST_CON8 0x853A
> +#define MT6332_VSBST_CON9 0x853C
> +#define MT6332_VSBST_CON10 0x853E
> +#define MT6332_VSBST_CON11 0x8540
> +#define MT6332_VSBST_CON12 0x8542
> +#define MT6332_VSBST_CON13 0x8544
> +#define MT6332_VSBST_CON14 0x8546
> +#define MT6332_VSBST_CON15 0x8548
> +#define MT6332_VSBST_CON16 0x854A
> +#define MT6332_VSBST_CON17 0x854C
> +#define MT6332_VSBST_CON18 0x854E
> +#define MT6332_VSBST_CON19 0x8550
> +#define MT6332_VSBST_CON20 0x8552
> +#define MT6332_VSBST_CON21 0x8554
> +#define MT6332_BUCK_K_CON0 0x8556
> +#define MT6332_BUCK_K_CON1 0x8558
> +#define MT6332_BUCK_K_CON2 0x855A
> +#define MT6332_BUCK_K_CON3 0x855C
> +#define MT6332_BUCK_K_CON4 0x855E
> +#define MT6332_BUCK_K_CON5 0x8560
> +#define MT6332_AUXADC_ADC0 0x8800
> +#define MT6332_AUXADC_ADC1 0x8802
> +#define MT6332_AUXADC_ADC2 0x8804
> +#define MT6332_AUXADC_ADC3 0x8806
> +#define MT6332_AUXADC_ADC4 0x8808
> +#define MT6332_AUXADC_ADC5 0x880A
> +#define MT6332_AUXADC_ADC6 0x880C
> +#define MT6332_AUXADC_ADC7 0x880E
> +#define MT6332_AUXADC_ADC8 0x8810
> +#define MT6332_AUXADC_ADC9 0x8812
> +#define MT6332_AUXADC_ADC10 0x8814
> +#define MT6332_AUXADC_ADC11 0x8816
> +#define MT6332_AUXADC_ADC12 0x8818
> +#define MT6332_AUXADC_ADC13 0x881A
> +#define MT6332_AUXADC_ADC14 0x881C
> +#define MT6332_AUXADC_ADC15 0x881E
> +#define MT6332_AUXADC_ADC16 0x8820
> +#define MT6332_AUXADC_ADC17 0x8822
> +#define MT6332_AUXADC_ADC18 0x8824
> +#define MT6332_AUXADC_ADC19 0x8826
> +#define MT6332_AUXADC_ADC20 0x8828
> +#define MT6332_AUXADC_ADC21 0x882A
> +#define MT6332_AUXADC_ADC22 0x882C
> +#define MT6332_AUXADC_ADC23 0x882E
> +#define MT6332_AUXADC_ADC24 0x8830
> +#define MT6332_AUXADC_ADC25 0x8832
> +#define MT6332_AUXADC_ADC26 0x8834
> +#define MT6332_AUXADC_ADC27 0x8836
> +#define MT6332_AUXADC_ADC28 0x8838
> +#define MT6332_AUXADC_ADC29 0x883A
> +#define MT6332_AUXADC_ADC30 0x883C
> +#define MT6332_AUXADC_ADC31 0x883E
> +#define MT6332_AUXADC_ADC32 0x8840
> +#define MT6332_AUXADC_ADC33 0x8842
> +#define MT6332_AUXADC_ADC34 0x8844
> +#define MT6332_AUXADC_ADC35 0x8846
> +#define MT6332_AUXADC_ADC36 0x8848
> +#define MT6332_AUXADC_ADC37 0x884A
> +#define MT6332_AUXADC_ADC38 0x884C
> +#define MT6332_AUXADC_ADC39 0x884E
> +#define MT6332_AUXADC_ADC40 0x8850
> +#define MT6332_AUXADC_ADC41 0x8852
> +#define MT6332_AUXADC_ADC42 0x8854
> +#define MT6332_AUXADC_ADC43 0x8856
> +#define MT6332_AUXADC_STA0 0x8858
> +#define MT6332_AUXADC_STA1 0x885A
> +#define MT6332_AUXADC_RQST0 0x885C
> +#define MT6332_AUXADC_RQST0_SET 0x885E
> +#define MT6332_AUXADC_RQST0_CLR 0x8860
> +#define MT6332_AUXADC_RQST1 0x8862
> +#define MT6332_AUXADC_RQST1_SET 0x8864
> +#define MT6332_AUXADC_RQST1_CLR 0x8866
> +#define MT6332_AUXADC_CON0 0x8868
> +#define MT6332_AUXADC_CON1 0x886A
> +#define MT6332_AUXADC_CON2 0x886C
> +#define MT6332_AUXADC_CON3 0x886E
> +#define MT6332_AUXADC_CON4 0x8870
> +#define MT6332_AUXADC_CON5 0x8872
> +#define MT6332_AUXADC_CON6 0x8874
> +#define MT6332_AUXADC_CON7 0x8876
> +#define MT6332_AUXADC_CON8 0x8878
> +#define MT6332_AUXADC_CON9 0x887A
> +#define MT6332_AUXADC_CON10 0x887C
> +#define MT6332_AUXADC_CON11 0x887E
> +#define MT6332_AUXADC_CON12 0x8880
> +#define MT6332_AUXADC_CON13 0x8882
> +#define MT6332_AUXADC_CON14 0x8884
> +#define MT6332_AUXADC_CON15 0x8886
> +#define MT6332_AUXADC_CON16 0x8888
> +#define MT6332_AUXADC_CON17 0x888A
> +#define MT6332_AUXADC_CON18 0x888C
> +#define MT6332_AUXADC_CON19 0x888E
> +#define MT6332_AUXADC_CON20 0x8890
> +#define MT6332_AUXADC_CON21 0x8892
> +#define MT6332_AUXADC_CON22 0x8894
> +#define MT6332_AUXADC_CON23 0x8896
> +#define MT6332_AUXADC_CON24 0x8898
> +#define MT6332_AUXADC_CON25 0x889A
> +#define MT6332_AUXADC_CON26 0x889C
> +#define MT6332_AUXADC_CON27 0x889E
> +#define MT6332_AUXADC_CON28 0x88A0
> +#define MT6332_AUXADC_CON29 0x88A2
> +#define MT6332_AUXADC_CON30 0x88A4
> +#define MT6332_AUXADC_CON31 0x88A6
> +#define MT6332_AUXADC_CON32 0x88A8
> +#define MT6332_AUXADC_CON33 0x88AA
> +#define MT6332_AUXADC_CON34 0x88AC
> +#define MT6332_AUXADC_CON35 0x88AE
> +#define MT6332_AUXADC_CON36 0x88B0
> +#define MT6332_AUXADC_CON37 0x88B2
> +#define MT6332_AUXADC_CON38 0x88B4
> +#define MT6332_AUXADC_CON39 0x88B6
> +#define MT6332_AUXADC_CON40 0x88B8
> +#define MT6332_AUXADC_CON41 0x88BA
> +#define MT6332_AUXADC_CON42 0x88BC
> +#define MT6332_AUXADC_CON43 0x88BE
> +#define MT6332_AUXADC_CON44 0x88C0
> +#define MT6332_AUXADC_CON45 0x88C2
> +#define MT6332_AUXADC_CON46 0x88C4
> +#define MT6332_AUXADC_CON47 0x88C6
> +#define MT6332_STRUP_CONA0 0x8C00
> +#define MT6332_STRUP_CONA1 0x8C02
> +#define MT6332_STRUP_CONA2 0x8C04
> +#define MT6332_STRUP_CON0 0x8C06
> +#define MT6332_STRUP_CON2 0x8C08
> +#define MT6332_STRUP_CON3 0x8C0A
> +#define MT6332_STRUP_CON4 0x8C0C
> +#define MT6332_STRUP_CON5 0x8C0E
> +#define MT6332_STRUP_CON6 0x8C10
> +#define MT6332_STRUP_CON7 0x8C12
> +#define MT6332_STRUP_CON8 0x8C14
> +#define MT6332_STRUP_CON9 0x8C16
> +#define MT6332_STRUP_CON10 0x8C18
> +#define MT6332_STRUP_CON11 0x8C1A
> +#define MT6332_STRUP_CON12 0x8C1C
> +#define MT6332_STRUP_CON13 0x8C1E
> +#define MT6332_STRUP_CON14 0x8C20
> +#define MT6332_STRUP_CON15 0x8C22
> +#define MT6332_STRUP_CON16 0x8C24
> +#define MT6332_STRUP_CON17 0x8C26
> +#define MT6332_FGADC_CON0 0x8C28
> +#define MT6332_FGADC_CON1 0x8C2A
> +#define MT6332_FGADC_CON2 0x8C2C
> +#define MT6332_FGADC_CON3 0x8C2E
> +#define MT6332_FGADC_CON4 0x8C30
> +#define MT6332_FGADC_CON5 0x8C32
> +#define MT6332_FGADC_CON6 0x8C34
> +#define MT6332_FGADC_CON7 0x8C36
> +#define MT6332_FGADC_CON8 0x8C38
> +#define MT6332_FGADC_CON9 0x8C3A
> +#define MT6332_FGADC_CON10 0x8C3C
> +#define MT6332_FGADC_CON11 0x8C3E
> +#define MT6332_FGADC_CON12 0x8C40
> +#define MT6332_FGADC_CON13 0x8C42
> +#define MT6332_FGADC_CON14 0x8C44
> +#define MT6332_FGADC_CON15 0x8C46
> +#define MT6332_FGADC_CON16 0x8C48
> +#define MT6332_FGADC_CON17 0x8C4A
> +#define MT6332_FGADC_CON18 0x8C4C
> +#define MT6332_FGADC_CON19 0x8C4E
> +#define MT6332_FGADC_CON20 0x8C50
> +#define MT6332_FGADC_CON21 0x8C52
> +#define MT6332_FGADC_CON22 0x8C54
> +#define MT6332_OTP_CON0 0x8C56
> +#define MT6332_OTP_CON1 0x8C58
> +#define MT6332_OTP_CON2 0x8C5A
> +#define MT6332_OTP_CON3 0x8C5C
> +#define MT6332_OTP_CON4 0x8C5E
> +#define MT6332_OTP_CON5 0x8C60
> +#define MT6332_OTP_CON6 0x8C62
> +#define MT6332_OTP_CON7 0x8C64
> +#define MT6332_OTP_CON8 0x8C66
> +#define MT6332_OTP_CON9 0x8C68
> +#define MT6332_OTP_CON10 0x8C6A
> +#define MT6332_OTP_CON11 0x8C6C
> +#define MT6332_OTP_CON12 0x8C6E
> +#define MT6332_OTP_CON13 0x8C70
> +#define MT6332_OTP_CON14 0x8C72
> +#define MT6332_OTP_DOUT_0_15 0x8C74
> +#define MT6332_OTP_DOUT_16_31 0x8C76
> +#define MT6332_OTP_DOUT_32_47 0x8C78
> +#define MT6332_OTP_DOUT_48_63 0x8C7A
> +#define MT6332_OTP_DOUT_64_79 0x8C7C
> +#define MT6332_OTP_DOUT_80_95 0x8C7E
> +#define MT6332_OTP_DOUT_96_111 0x8C80
> +#define MT6332_OTP_DOUT_112_127 0x8C82
> +#define MT6332_OTP_DOUT_128_143 0x8C84
> +#define MT6332_OTP_DOUT_144_159 0x8C86
> +#define MT6332_OTP_DOUT_160_175 0x8C88
> +#define MT6332_OTP_DOUT_176_191 0x8C8A
> +#define MT6332_OTP_DOUT_192_207 0x8C8C
> +#define MT6332_OTP_DOUT_208_223 0x8C8E
> +#define MT6332_OTP_DOUT_224_239 0x8C90
> +#define MT6332_OTP_DOUT_240_255 0x8C92
> +#define MT6332_OTP_VAL_0_15 0x8C94
> +#define MT6332_OTP_VAL_16_31 0x8C96
> +#define MT6332_OTP_VAL_32_47 0x8C98
> +#define MT6332_OTP_VAL_48_63 0x8C9A
> +#define MT6332_OTP_VAL_64_79 0x8C9C
> +#define MT6332_OTP_VAL_80_95 0x8C9E
> +#define MT6332_OTP_VAL_96_111 0x8CA0
> +#define MT6332_OTP_VAL_112_127 0x8CA2
> +#define MT6332_OTP_VAL_128_143 0x8CA4
> +#define MT6332_OTP_VAL_144_159 0x8CA6
> +#define MT6332_OTP_VAL_160_175 0x8CA8
> +#define MT6332_OTP_VAL_176_191 0x8CAA
> +#define MT6332_OTP_VAL_192_207 0x8CAC
> +#define MT6332_OTP_VAL_208_223 0x8CAE
> +#define MT6332_OTP_VAL_224_239 0x8CB0
> +#define MT6332_OTP_VAL_240_255 0x8CB2
> +#define MT6332_LDO_CON0 0x8CB4
> +#define MT6332_LDO_CON1 0x8CB6
> +#define MT6332_LDO_CON2 0x8CB8
> +#define MT6332_LDO_CON3 0x8CBA
> +#define MT6332_LDO_CON5 0x8CBC
> +#define MT6332_LDO_CON6 0x8CBE
> +#define MT6332_LDO_CON7 0x8CC0
> +#define MT6332_LDO_CON8 0x8CC2
> +#define MT6332_LDO_CON9 0x8CC4
> +#define MT6332_LDO_CON10 0x8CC6
> +#define MT6332_LDO_CON11 0x8CC8
> +#define MT6332_LDO_CON12 0x8CCA
> +#define MT6332_LDO_CON13 0x8CCC
> +#define MT6332_FQMTR_CON0 0x8CCE
> +#define MT6332_FQMTR_CON1 0x8CD0
> +#define MT6332_FQMTR_CON2 0x8CD2
> +#define MT6332_IWLED_CON0 0x8CD4
> +#define MT6332_IWLED_DEG 0x8CD6
> +#define MT6332_IWLED_STATUS 0x8CD8
> +#define MT6332_IWLED_EN_CTRL 0x8CDA
> +#define MT6332_IWLED_CON1 0x8CDC
> +#define MT6332_IWLED_CON2 0x8CDE
> +#define MT6332_IWLED_TRIM0 0x8CE0
> +#define MT6332_IWLED_TRIM1 0x8CE2
> +#define MT6332_IWLED_CON3 0x8CE4
> +#define MT6332_IWLED_CON4 0x8CE6
> +#define MT6332_IWLED_CON5 0x8CE8
> +#define MT6332_IWLED_CON6 0x8CEA
> +#define MT6332_IWLED_CON7 0x8CEC
> +#define MT6332_IWLED_CON8 0x8CEE
> +#define MT6332_IWLED_CON9 0x8CF0
> +#define MT6332_SPK_CON0 0x8CF2
> +#define MT6332_SPK_CON1 0x8CF4
> +#define MT6332_SPK_CON2 0x8CF6
> +#define MT6332_SPK_CON3 0x8CF8
> +#define MT6332_SPK_CON4 0x8CFA
> +#define MT6332_SPK_CON5 0x8CFC
> +#define MT6332_SPK_CON6 0x8CFE
> +#define MT6332_SPK_CON7 0x8D00
> +#define MT6332_SPK_CON8 0x8D02
> +#define MT6332_SPK_CON9 0x8D04
> +#define MT6332_SPK_CON10 0x8D06
> +#define MT6332_SPK_CON11 0x8D08
> +#define MT6332_SPK_CON12 0x8D0A
> +#define MT6332_SPK_CON13 0x8D0C
> +#define MT6332_SPK_CON14 0x8D0E
> +#define MT6332_SPK_CON15 0x8D10
> +#define MT6332_SPK_CON16 0x8D12
> +#define MT6332_TESTI_CON0 0x8D14
> +#define MT6332_TESTI_CON1 0x8D16
> +#define MT6332_TESTI_CON2 0x8D18
> +#define MT6332_TESTI_CON3 0x8D1A
> +#define MT6332_TESTI_CON4 0x8D1C
> +#define MT6332_TESTI_CON5 0x8D1E
> +#define MT6332_TESTI_CON6 0x8D20
> +#define MT6332_TESTI_MUX_CON0 0x8D22
> +#define MT6332_TESTI_MUX_CON1 0x8D24
> +#define MT6332_TESTI_MUX_CON2 0x8D26
> +#define MT6332_TESTI_MUX_CON3 0x8D28
> +#define MT6332_TESTI_MUX_CON4 0x8D2A
> +#define MT6332_TESTI_MUX_CON5 0x8D2C
> +#define MT6332_TESTI_MUX_CON6 0x8D2E
> +#define MT6332_TESTO_CON0 0x8D30
> +#define MT6332_TESTO_CON1 0x8D32
> +#define MT6332_TEST_OMUX_CON0 0x8D34
> +#define MT6332_TEST_OMUX_CON1 0x8D36
> +#define MT6332_DEBUG_CON0 0x8D38
> +#define MT6332_DEBUG_CON1 0x8D3A
> +#define MT6332_DEBUG_CON2 0x8D3C
> +#define MT6332_FGADC_CON23 0x8D3E
> +#define MT6332_FGADC_CON24 0x8D40
> +#define MT6332_FGADC_CON25 0x8D42
> +#define MT6332_TOP_RST_STATUS 0x8D44
> +#define MT6332_TOP_RST_STATUS_SET 0x8D46
> +#define MT6332_TOP_RST_STATUS_CLR 0x8D48
> +#define MT6332_VDVFS2_CON28 0x8D4A
> +
> +#endif /* __MFD_MT6332_REGISTERS_H__ */
> diff --git a/include/linux/mfd/mt6397/core.h b/include/linux/mfd/mt6397/core.h
> index 1cf78726503b..4d2b80319db3 100644
> --- a/include/linux/mfd/mt6397/core.h
> +++ b/include/linux/mfd/mt6397/core.h
> @@ -12,6 +12,8 @@
>
> enum chip_id {
> MT6323_CHIP_ID = 0x23,
> + MT6331_CHIP_ID = 0x20,
> + MT6332_CHIP_ID = 0x20,
> MT6358_CHIP_ID = 0x58,
> MT6359_CHIP_ID = 0x59,
> MT6366_CHIP_ID = 0x66,
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] mfd: mt6397: Add basic support for MT6331+MT6332 PMIC
2022-06-17 11:07 ` AngeloGioacchino Del Regno
@ 2022-06-27 11:47 ` Lee Jones
-1 siblings, 0 replies; 12+ messages in thread
From: Lee Jones @ 2022-06-27 11:47 UTC (permalink / raw)
To: AngeloGioacchino Del Regno
Cc: robh+dt, krzysztof.kozlowski+dt, matthias.bgg, johnson.wang,
hsin-hsiung.wang, devicetree, linux-arm-kernel, linux-mediatek,
linux-kernel
On Fri, 17 Jun 2022, AngeloGioacchino Del Regno wrote:
> Add support for the MT6331 PMIC with MT6332 Companion PMIC, found
> in MT6795 Helio X10 smartphone platforms.
>
> This combo has support for multiple devices but, for a start,
> only the following have been implemented:
> - Regulators (two instances, one in MT6331, one in MT6332)
> - RTC (MT6331)
> - Keys (MT6331)
> - Interrupts (MT6331 also dispatches MT6332's interrupts)
>
> There's more to be implemented, especially for MT6332, which
> will come at a later stage.
>
> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
> ---
> drivers/mfd/mt6397-core.c | 47 ++
> drivers/mfd/mt6397-irq.c | 9 +-
> include/linux/mfd/mt6331/core.h | 40 ++
> include/linux/mfd/mt6331/registers.h | 584 ++++++++++++++++++++++++
> include/linux/mfd/mt6332/core.h | 65 +++
> include/linux/mfd/mt6332/registers.h | 642 +++++++++++++++++++++++++++
> include/linux/mfd/mt6397/core.h | 2 +
> 7 files changed, 1388 insertions(+), 1 deletion(-)
> create mode 100644 include/linux/mfd/mt6331/core.h
> create mode 100644 include/linux/mfd/mt6331/registers.h
> create mode 100644 include/linux/mfd/mt6332/core.h
> create mode 100644 include/linux/mfd/mt6332/registers.h
Does not apply. Please rebase.
--
Lee Jones [李琼斯]
Principal Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v3 2/2] mfd: mt6397: Add basic support for MT6331+MT6332 PMIC
@ 2022-06-27 11:47 ` Lee Jones
0 siblings, 0 replies; 12+ messages in thread
From: Lee Jones @ 2022-06-27 11:47 UTC (permalink / raw)
To: AngeloGioacchino Del Regno
Cc: robh+dt, krzysztof.kozlowski+dt, matthias.bgg, johnson.wang,
hsin-hsiung.wang, devicetree, linux-arm-kernel, linux-mediatek,
linux-kernel
On Fri, 17 Jun 2022, AngeloGioacchino Del Regno wrote:
> Add support for the MT6331 PMIC with MT6332 Companion PMIC, found
> in MT6795 Helio X10 smartphone platforms.
>
> This combo has support for multiple devices but, for a start,
> only the following have been implemented:
> - Regulators (two instances, one in MT6331, one in MT6332)
> - RTC (MT6331)
> - Keys (MT6331)
> - Interrupts (MT6331 also dispatches MT6332's interrupts)
>
> There's more to be implemented, especially for MT6332, which
> will come at a later stage.
>
> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
> ---
> drivers/mfd/mt6397-core.c | 47 ++
> drivers/mfd/mt6397-irq.c | 9 +-
> include/linux/mfd/mt6331/core.h | 40 ++
> include/linux/mfd/mt6331/registers.h | 584 ++++++++++++++++++++++++
> include/linux/mfd/mt6332/core.h | 65 +++
> include/linux/mfd/mt6332/registers.h | 642 +++++++++++++++++++++++++++
> include/linux/mfd/mt6397/core.h | 2 +
> 7 files changed, 1388 insertions(+), 1 deletion(-)
> create mode 100644 include/linux/mfd/mt6331/core.h
> create mode 100644 include/linux/mfd/mt6331/registers.h
> create mode 100644 include/linux/mfd/mt6332/core.h
> create mode 100644 include/linux/mfd/mt6332/registers.h
Does not apply. Please rebase.
--
Lee Jones [李琼斯]
Principal Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 12+ messages in thread