Commit 4388daa8 authored by Mark Brown's avatar Mark Brown

Merge tag 'tb-mfd-regulator-rtc-v5.14' of...

Merge tag 'tb-mfd-regulator-rtc-v5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd into regulator-5.14

Immutable branch between MFD, Regulator and RTC due for the v5.14 merge window
parents 5eee5ece 4cfc9654
...@@ -21,6 +21,7 @@ Required properties: ...@@ -21,6 +21,7 @@ Required properties:
compatible: compatible:
"mediatek,mt6323" for PMIC MT6323 "mediatek,mt6323" for PMIC MT6323
"mediatek,mt6358" for PMIC MT6358 "mediatek,mt6358" for PMIC MT6358
"mediatek,mt6359" for PMIC MT6359
"mediatek,mt6397" for PMIC MT6397 "mediatek,mt6397" for PMIC MT6397
Optional subnodes: Optional subnodes:
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/mfd/mt6358/core.h> #include <linux/mfd/mt6358/core.h>
#include <linux/mfd/mt6358/registers.h> #include <linux/mfd/mt6358/registers.h>
#include <linux/mfd/mt6359/core.h>
#include <linux/mfd/mt6359/registers.h>
#include <linux/mfd/mt6397/core.h> #include <linux/mfd/mt6397/core.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/of.h> #include <linux/of.h>
...@@ -13,7 +15,9 @@ ...@@ -13,7 +15,9 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/regmap.h> #include <linux/regmap.h>
static struct irq_top_t mt6358_ints[] = { #define MTK_PMIC_REG_WIDTH 16
static const struct irq_top_t mt6358_ints[] = {
MT6358_TOP_GEN(BUCK), MT6358_TOP_GEN(BUCK),
MT6358_TOP_GEN(LDO), MT6358_TOP_GEN(LDO),
MT6358_TOP_GEN(PSC), MT6358_TOP_GEN(PSC),
...@@ -24,6 +28,31 @@ static struct irq_top_t mt6358_ints[] = { ...@@ -24,6 +28,31 @@ static struct irq_top_t mt6358_ints[] = {
MT6358_TOP_GEN(MISC), MT6358_TOP_GEN(MISC),
}; };
static const struct irq_top_t mt6359_ints[] = {
MT6359_TOP_GEN(BUCK),
MT6359_TOP_GEN(LDO),
MT6359_TOP_GEN(PSC),
MT6359_TOP_GEN(SCK),
MT6359_TOP_GEN(BM),
MT6359_TOP_GEN(HK),
MT6359_TOP_GEN(AUD),
MT6359_TOP_GEN(MISC),
};
static struct pmic_irq_data mt6358_irqd = {
.num_top = ARRAY_SIZE(mt6358_ints),
.num_pmic_irqs = MT6358_IRQ_NR,
.top_int_status_reg = MT6358_TOP_INT_STATUS0,
.pmic_ints = mt6358_ints,
};
static struct pmic_irq_data mt6359_irqd = {
.num_top = ARRAY_SIZE(mt6359_ints),
.num_pmic_irqs = MT6359_IRQ_NR,
.top_int_status_reg = MT6359_TOP_INT_STATUS0,
.pmic_ints = mt6359_ints,
};
static void pmic_irq_enable(struct irq_data *data) static void pmic_irq_enable(struct irq_data *data)
{ {
unsigned int hwirq = irqd_to_hwirq(data); unsigned int hwirq = irqd_to_hwirq(data);
...@@ -62,15 +91,15 @@ static void pmic_irq_sync_unlock(struct irq_data *data) ...@@ -62,15 +91,15 @@ static void pmic_irq_sync_unlock(struct irq_data *data)
/* Find out the IRQ group */ /* Find out the IRQ group */
top_gp = 0; top_gp = 0;
while ((top_gp + 1) < irqd->num_top && while ((top_gp + 1) < irqd->num_top &&
i >= mt6358_ints[top_gp + 1].hwirq_base) i >= irqd->pmic_ints[top_gp + 1].hwirq_base)
top_gp++; top_gp++;
/* Find the IRQ registers */ /* Find the IRQ registers */
gp_offset = i - mt6358_ints[top_gp].hwirq_base; gp_offset = i - irqd->pmic_ints[top_gp].hwirq_base;
int_regs = gp_offset / MT6358_REG_WIDTH; int_regs = gp_offset / MTK_PMIC_REG_WIDTH;
shift = gp_offset % MT6358_REG_WIDTH; shift = gp_offset % MTK_PMIC_REG_WIDTH;
en_reg = mt6358_ints[top_gp].en_reg + en_reg = irqd->pmic_ints[top_gp].en_reg +
(mt6358_ints[top_gp].en_reg_shift * int_regs); (irqd->pmic_ints[top_gp].en_reg_shift * int_regs);
regmap_update_bits(chip->regmap, en_reg, BIT(shift), regmap_update_bits(chip->regmap, en_reg, BIT(shift),
irqd->enable_hwirq[i] << shift); irqd->enable_hwirq[i] << shift);
...@@ -95,10 +124,11 @@ static void mt6358_irq_sp_handler(struct mt6397_chip *chip, ...@@ -95,10 +124,11 @@ static void mt6358_irq_sp_handler(struct mt6397_chip *chip,
unsigned int irq_status, sta_reg, status; unsigned int irq_status, sta_reg, status;
unsigned int hwirq, virq; unsigned int hwirq, virq;
int i, j, ret; int i, j, ret;
struct pmic_irq_data *irqd = chip->irq_data;
for (i = 0; i < mt6358_ints[top_gp].num_int_regs; i++) { for (i = 0; i < irqd->pmic_ints[top_gp].num_int_regs; i++) {
sta_reg = mt6358_ints[top_gp].sta_reg + sta_reg = irqd->pmic_ints[top_gp].sta_reg +
mt6358_ints[top_gp].sta_reg_shift * i; irqd->pmic_ints[top_gp].sta_reg_shift * i;
ret = regmap_read(chip->regmap, sta_reg, &irq_status); ret = regmap_read(chip->regmap, sta_reg, &irq_status);
if (ret) { if (ret) {
...@@ -114,8 +144,8 @@ static void mt6358_irq_sp_handler(struct mt6397_chip *chip, ...@@ -114,8 +144,8 @@ static void mt6358_irq_sp_handler(struct mt6397_chip *chip,
do { do {
j = __ffs(status); j = __ffs(status);
hwirq = mt6358_ints[top_gp].hwirq_base + hwirq = irqd->pmic_ints[top_gp].hwirq_base +
MT6358_REG_WIDTH * i + j; MTK_PMIC_REG_WIDTH * i + j;
virq = irq_find_mapping(chip->irq_domain, hwirq); virq = irq_find_mapping(chip->irq_domain, hwirq);
if (virq) if (virq)
...@@ -131,12 +161,12 @@ static void mt6358_irq_sp_handler(struct mt6397_chip *chip, ...@@ -131,12 +161,12 @@ static void mt6358_irq_sp_handler(struct mt6397_chip *chip,
static irqreturn_t mt6358_irq_handler(int irq, void *data) static irqreturn_t mt6358_irq_handler(int irq, void *data)
{ {
struct mt6397_chip *chip = data; struct mt6397_chip *chip = data;
struct pmic_irq_data *mt6358_irq_data = chip->irq_data; struct pmic_irq_data *irqd = chip->irq_data;
unsigned int bit, i, top_irq_status = 0; unsigned int bit, i, top_irq_status = 0;
int ret; int ret;
ret = regmap_read(chip->regmap, ret = regmap_read(chip->regmap,
mt6358_irq_data->top_int_status_reg, irqd->top_int_status_reg,
&top_irq_status); &top_irq_status);
if (ret) { if (ret) {
dev_err(chip->dev, dev_err(chip->dev,
...@@ -144,8 +174,8 @@ static irqreturn_t mt6358_irq_handler(int irq, void *data) ...@@ -144,8 +174,8 @@ static irqreturn_t mt6358_irq_handler(int irq, void *data)
return IRQ_NONE; return IRQ_NONE;
} }
for (i = 0; i < mt6358_irq_data->num_top; i++) { for (i = 0; i < irqd->num_top; i++) {
bit = BIT(mt6358_ints[i].top_offset); bit = BIT(irqd->pmic_ints[i].top_offset);
if (top_irq_status & bit) { if (top_irq_status & bit) {
mt6358_irq_sp_handler(chip, i); mt6358_irq_sp_handler(chip, i);
top_irq_status &= ~bit; top_irq_status &= ~bit;
...@@ -180,17 +210,22 @@ int mt6358_irq_init(struct mt6397_chip *chip) ...@@ -180,17 +210,22 @@ int mt6358_irq_init(struct mt6397_chip *chip)
int i, j, ret; int i, j, ret;
struct pmic_irq_data *irqd; struct pmic_irq_data *irqd;
irqd = devm_kzalloc(chip->dev, sizeof(*irqd), GFP_KERNEL); switch (chip->chip_id) {
if (!irqd) case MT6358_CHIP_ID:
return -ENOMEM; chip->irq_data = &mt6358_irqd;
break;
case MT6359_CHIP_ID:
chip->irq_data = &mt6359_irqd;
break;
chip->irq_data = irqd; default:
dev_err(chip->dev, "unsupported chip: 0x%x\n", chip->chip_id);
return -ENODEV;
}
mutex_init(&chip->irqlock); mutex_init(&chip->irqlock);
irqd->top_int_status_reg = MT6358_TOP_INT_STATUS0; irqd = chip->irq_data;
irqd->num_pmic_irqs = MT6358_IRQ_NR;
irqd->num_top = ARRAY_SIZE(mt6358_ints);
irqd->enable_hwirq = devm_kcalloc(chip->dev, irqd->enable_hwirq = devm_kcalloc(chip->dev,
irqd->num_pmic_irqs, irqd->num_pmic_irqs,
sizeof(*irqd->enable_hwirq), sizeof(*irqd->enable_hwirq),
...@@ -207,10 +242,10 @@ int mt6358_irq_init(struct mt6397_chip *chip) ...@@ -207,10 +242,10 @@ int mt6358_irq_init(struct mt6397_chip *chip)
/* Disable all interrupts for initializing */ /* Disable all interrupts for initializing */
for (i = 0; i < irqd->num_top; i++) { for (i = 0; i < irqd->num_top; i++) {
for (j = 0; j < mt6358_ints[i].num_int_regs; j++) for (j = 0; j < irqd->pmic_ints[i].num_int_regs; j++)
regmap_write(chip->regmap, regmap_write(chip->regmap,
mt6358_ints[i].en_reg + irqd->pmic_ints[i].en_reg +
mt6358_ints[i].en_reg_shift * j, 0); irqd->pmic_ints[i].en_reg_shift * j, 0);
} }
chip->irq_domain = irq_domain_add_linear(chip->dev->of_node, chip->irq_domain = irq_domain_add_linear(chip->dev->of_node,
......
...@@ -13,9 +13,11 @@ ...@@ -13,9 +13,11 @@
#include <linux/mfd/core.h> #include <linux/mfd/core.h>
#include <linux/mfd/mt6323/core.h> #include <linux/mfd/mt6323/core.h>
#include <linux/mfd/mt6358/core.h> #include <linux/mfd/mt6358/core.h>
#include <linux/mfd/mt6359/core.h>
#include <linux/mfd/mt6397/core.h> #include <linux/mfd/mt6397/core.h>
#include <linux/mfd/mt6323/registers.h> #include <linux/mfd/mt6323/registers.h>
#include <linux/mfd/mt6358/registers.h> #include <linux/mfd/mt6358/registers.h>
#include <linux/mfd/mt6359/registers.h>
#include <linux/mfd/mt6397/registers.h> #include <linux/mfd/mt6397/registers.h>
#define MT6323_RTC_BASE 0x8000 #define MT6323_RTC_BASE 0x8000
...@@ -99,6 +101,17 @@ static const struct mfd_cell mt6358_devs[] = { ...@@ -99,6 +101,17 @@ static const struct mfd_cell mt6358_devs[] = {
}, },
}; };
static const struct mfd_cell mt6359_devs[] = {
{ .name = "mt6359-regulator", },
{
.name = "mt6359-rtc",
.num_resources = ARRAY_SIZE(mt6358_rtc_resources),
.resources = mt6358_rtc_resources,
.of_compatible = "mediatek,mt6358-rtc",
},
{ .name = "mt6359-sound", },
};
static const struct mfd_cell mt6397_devs[] = { static const struct mfd_cell mt6397_devs[] = {
{ {
.name = "mt6397-rtc", .name = "mt6397-rtc",
...@@ -149,6 +162,14 @@ static const struct chip_data mt6358_core = { ...@@ -149,6 +162,14 @@ static const struct chip_data mt6358_core = {
.irq_init = mt6358_irq_init, .irq_init = mt6358_irq_init,
}; };
static const struct chip_data mt6359_core = {
.cid_addr = MT6359_SWCID,
.cid_shift = 8,
.cells = mt6359_devs,
.cell_size = ARRAY_SIZE(mt6359_devs),
.irq_init = mt6358_irq_init,
};
static const struct chip_data mt6397_core = { static const struct chip_data mt6397_core = {
.cid_addr = MT6397_CID, .cid_addr = MT6397_CID,
.cid_shift = 0, .cid_shift = 0,
...@@ -218,6 +239,9 @@ static const struct of_device_id mt6397_of_match[] = { ...@@ -218,6 +239,9 @@ static const struct of_device_id mt6397_of_match[] = {
}, { }, {
.compatible = "mediatek,mt6358", .compatible = "mediatek,mt6358",
.data = &mt6358_core, .data = &mt6358_core,
}, {
.compatible = "mediatek,mt6359",
.data = &mt6359_core,
}, { }, {
.compatible = "mediatek,mt6397", .compatible = "mediatek,mt6397",
.data = &mt6397_core, .data = &mt6397_core,
......
...@@ -769,6 +769,15 @@ config REGULATOR_MT6358 ...@@ -769,6 +769,15 @@ config REGULATOR_MT6358
This driver supports the control of different power rails of device This driver supports the control of different power rails of device
through regulator interface. through regulator interface.
config REGULATOR_MT6359
tristate "MediaTek MT6359 PMIC"
depends on MFD_MT6397
help
Say y here to select this option to enable the power regulator of
MediaTek MT6359 PMIC.
This driver supports the control of different power rails of device
through regulator interface.
config REGULATOR_MT6360 config REGULATOR_MT6360
tristate "MT6360 SubPMIC Regulator" tristate "MT6360 SubPMIC Regulator"
depends on MFD_MT6360 depends on MFD_MT6360
......
...@@ -93,6 +93,7 @@ obj-$(CONFIG_REGULATOR_MT6311) += mt6311-regulator.o ...@@ -93,6 +93,7 @@ obj-$(CONFIG_REGULATOR_MT6311) += mt6311-regulator.o
obj-$(CONFIG_REGULATOR_MT6315) += mt6315-regulator.o obj-$(CONFIG_REGULATOR_MT6315) += mt6315-regulator.o
obj-$(CONFIG_REGULATOR_MT6323) += mt6323-regulator.o obj-$(CONFIG_REGULATOR_MT6323) += mt6323-regulator.o
obj-$(CONFIG_REGULATOR_MT6358) += mt6358-regulator.o obj-$(CONFIG_REGULATOR_MT6358) += mt6358-regulator.o
obj-$(CONFIG_REGULATOR_MT6359) += mt6359-regulator.o
obj-$(CONFIG_REGULATOR_MT6360) += mt6360-regulator.o obj-$(CONFIG_REGULATOR_MT6360) += mt6360-regulator.o
obj-$(CONFIG_REGULATOR_MT6380) += mt6380-regulator.o obj-$(CONFIG_REGULATOR_MT6380) += mt6380-regulator.o
obj-$(CONFIG_REGULATOR_MT6397) += mt6397-regulator.o obj-$(CONFIG_REGULATOR_MT6397) += mt6397-regulator.o
......
This diff is collapsed.
...@@ -75,7 +75,7 @@ static int __mtk_rtc_read_time(struct mt6397_rtc *rtc, ...@@ -75,7 +75,7 @@ static int __mtk_rtc_read_time(struct mt6397_rtc *rtc,
tm->tm_min = data[RTC_OFFSET_MIN]; tm->tm_min = data[RTC_OFFSET_MIN];
tm->tm_hour = data[RTC_OFFSET_HOUR]; tm->tm_hour = data[RTC_OFFSET_HOUR];
tm->tm_mday = data[RTC_OFFSET_DOM]; tm->tm_mday = data[RTC_OFFSET_DOM];
tm->tm_mon = data[RTC_OFFSET_MTH]; tm->tm_mon = data[RTC_OFFSET_MTH] & RTC_TC_MTH_MASK;
tm->tm_year = data[RTC_OFFSET_YEAR]; tm->tm_year = data[RTC_OFFSET_YEAR];
ret = regmap_read(rtc->regmap, rtc->addr_base + RTC_TC_SEC, sec); ret = regmap_read(rtc->regmap, rtc->addr_base + RTC_TC_SEC, sec);
......
...@@ -6,12 +6,9 @@ ...@@ -6,12 +6,9 @@
#ifndef __MFD_MT6358_CORE_H__ #ifndef __MFD_MT6358_CORE_H__
#define __MFD_MT6358_CORE_H__ #define __MFD_MT6358_CORE_H__
#define MT6358_REG_WIDTH 16
struct irq_top_t { struct irq_top_t {
int hwirq_base; int hwirq_base;
unsigned int num_int_regs; unsigned int num_int_regs;
unsigned int num_int_bits;
unsigned int en_reg; unsigned int en_reg;
unsigned int en_reg_shift; unsigned int en_reg_shift;
unsigned int sta_reg; unsigned int sta_reg;
...@@ -25,6 +22,7 @@ struct pmic_irq_data { ...@@ -25,6 +22,7 @@ struct pmic_irq_data {
unsigned short top_int_status_reg; unsigned short top_int_status_reg;
bool *enable_hwirq; bool *enable_hwirq;
bool *cache_hwirq; bool *cache_hwirq;
const struct irq_top_t *pmic_ints;
}; };
enum mt6358_irq_top_status_shift { enum mt6358_irq_top_status_shift {
...@@ -146,8 +144,8 @@ enum mt6358_irq_numbers { ...@@ -146,8 +144,8 @@ enum mt6358_irq_numbers {
{ \ { \
.hwirq_base = MT6358_IRQ_##sp##_BASE, \ .hwirq_base = MT6358_IRQ_##sp##_BASE, \
.num_int_regs = \ .num_int_regs = \
((MT6358_IRQ_##sp##_BITS - 1) / MT6358_REG_WIDTH) + 1, \ ((MT6358_IRQ_##sp##_BITS - 1) / \
.num_int_bits = MT6358_IRQ_##sp##_BITS, \ MTK_PMIC_REG_WIDTH) + 1, \
.en_reg = MT6358_##sp##_TOP_INT_CON0, \ .en_reg = MT6358_##sp##_TOP_INT_CON0, \
.en_reg_shift = 0x6, \ .en_reg_shift = 0x6, \
.sta_reg = MT6358_##sp##_TOP_INT_STATUS0, \ .sta_reg = MT6358_##sp##_TOP_INT_STATUS0, \
......
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2021 MediaTek Inc.
*/
#ifndef __MFD_MT6359_CORE_H__
#define __MFD_MT6359_CORE_H__
enum mt6359_irq_top_status_shift {
MT6359_BUCK_TOP = 0,
MT6359_LDO_TOP,
MT6359_PSC_TOP,
MT6359_SCK_TOP,
MT6359_BM_TOP,
MT6359_HK_TOP,
MT6359_AUD_TOP = 7,
MT6359_MISC_TOP,
};
enum mt6359_irq_numbers {
MT6359_IRQ_VCORE_OC = 1,
MT6359_IRQ_VGPU11_OC,
MT6359_IRQ_VGPU12_OC,
MT6359_IRQ_VMODEM_OC,
MT6359_IRQ_VPROC1_OC,
MT6359_IRQ_VPROC2_OC,
MT6359_IRQ_VS1_OC,
MT6359_IRQ_VS2_OC,
MT6359_IRQ_VPA_OC = 9,
MT6359_IRQ_VFE28_OC = 16,
MT6359_IRQ_VXO22_OC,
MT6359_IRQ_VRF18_OC,
MT6359_IRQ_VRF12_OC,
MT6359_IRQ_VEFUSE_OC,
MT6359_IRQ_VCN33_1_OC,
MT6359_IRQ_VCN33_2_OC,
MT6359_IRQ_VCN13_OC,
MT6359_IRQ_VCN18_OC,
MT6359_IRQ_VA09_OC,
MT6359_IRQ_VCAMIO_OC,
MT6359_IRQ_VA12_OC,
MT6359_IRQ_VAUX18_OC,
MT6359_IRQ_VAUD18_OC,
MT6359_IRQ_VIO18_OC,
MT6359_IRQ_VSRAM_PROC1_OC,
MT6359_IRQ_VSRAM_PROC2_OC,
MT6359_IRQ_VSRAM_OTHERS_OC,
MT6359_IRQ_VSRAM_MD_OC,
MT6359_IRQ_VEMC_OC,
MT6359_IRQ_VSIM1_OC,
MT6359_IRQ_VSIM2_OC,
MT6359_IRQ_VUSB_OC,
MT6359_IRQ_VRFCK_OC,
MT6359_IRQ_VBBCK_OC,
MT6359_IRQ_VBIF28_OC,
MT6359_IRQ_VIBR_OC,
MT6359_IRQ_VIO28_OC,
MT6359_IRQ_VM18_OC,
MT6359_IRQ_VUFS_OC = 45,
MT6359_IRQ_PWRKEY = 48,
MT6359_IRQ_HOMEKEY,
MT6359_IRQ_PWRKEY_R,
MT6359_IRQ_HOMEKEY_R,
MT6359_IRQ_NI_LBAT_INT,
MT6359_IRQ_CHRDET_EDGE = 53,
MT6359_IRQ_RTC = 64,
MT6359_IRQ_FG_BAT_H = 80,
MT6359_IRQ_FG_BAT_L,
MT6359_IRQ_FG_CUR_H,
MT6359_IRQ_FG_CUR_L,
MT6359_IRQ_FG_ZCV = 84,
MT6359_IRQ_FG_N_CHARGE_L = 87,
MT6359_IRQ_FG_IAVG_H,
MT6359_IRQ_FG_IAVG_L = 89,
MT6359_IRQ_FG_DISCHARGE = 91,
MT6359_IRQ_FG_CHARGE,
MT6359_IRQ_BATON_LV = 96,
MT6359_IRQ_BATON_BAT_IN = 98,
MT6359_IRQ_BATON_BAT_OU,
MT6359_IRQ_BIF = 100,
MT6359_IRQ_BAT_H = 112,
MT6359_IRQ_BAT_L,
MT6359_IRQ_BAT2_H,
MT6359_IRQ_BAT2_L,
MT6359_IRQ_BAT_TEMP_H,
MT6359_IRQ_BAT_TEMP_L,
MT6359_IRQ_THR_H,
MT6359_IRQ_THR_L,
MT6359_IRQ_AUXADC_IMP,
MT6359_IRQ_NAG_C_DLTV = 121,
MT6359_IRQ_AUDIO = 128,
MT6359_IRQ_ACCDET = 133,
MT6359_IRQ_ACCDET_EINT0,
MT6359_IRQ_ACCDET_EINT1,
MT6359_IRQ_SPI_CMD_ALERT = 144,
MT6359_IRQ_NR,
};
#define MT6359_IRQ_BUCK_BASE MT6359_IRQ_VCORE_OC
#define MT6359_IRQ_LDO_BASE MT6359_IRQ_VFE28_OC
#define MT6359_IRQ_PSC_BASE MT6359_IRQ_PWRKEY
#define MT6359_IRQ_SCK_BASE MT6359_IRQ_RTC
#define MT6359_IRQ_BM_BASE MT6359_IRQ_FG_BAT_H
#define MT6359_IRQ_HK_BASE MT6359_IRQ_BAT_H
#define MT6359_IRQ_AUD_BASE MT6359_IRQ_AUDIO
#define MT6359_IRQ_MISC_BASE MT6359_IRQ_SPI_CMD_ALERT
#define MT6359_IRQ_BUCK_BITS (MT6359_IRQ_VPA_OC - MT6359_IRQ_BUCK_BASE + 1)
#define MT6359_IRQ_LDO_BITS (MT6359_IRQ_VUFS_OC - MT6359_IRQ_LDO_BASE + 1)
#define MT6359_IRQ_PSC_BITS \
(MT6359_IRQ_CHRDET_EDGE - MT6359_IRQ_PSC_BASE + 1)
#define MT6359_IRQ_SCK_BITS (MT6359_IRQ_RTC - MT6359_IRQ_SCK_BASE + 1)
#define MT6359_IRQ_BM_BITS (MT6359_IRQ_BIF - MT6359_IRQ_BM_BASE + 1)
#define MT6359_IRQ_HK_BITS (MT6359_IRQ_NAG_C_DLTV - MT6359_IRQ_HK_BASE + 1)
#define MT6359_IRQ_AUD_BITS \
(MT6359_IRQ_ACCDET_EINT1 - MT6359_IRQ_AUD_BASE + 1)
#define MT6359_IRQ_MISC_BITS \
(MT6359_IRQ_SPI_CMD_ALERT - MT6359_IRQ_MISC_BASE + 1)
#define MT6359_TOP_GEN(sp) \
{ \
.hwirq_base = MT6359_IRQ_##sp##_BASE, \
.num_int_regs = \
((MT6359_IRQ_##sp##_BITS - 1) / \
MTK_PMIC_REG_WIDTH) + 1, \
.en_reg = MT6359_##sp##_TOP_INT_CON0, \
.en_reg_shift = 0x6, \
.sta_reg = MT6359_##sp##_TOP_INT_STATUS0, \
.sta_reg_shift = 0x2, \
.top_offset = MT6359_##sp##_TOP, \
}
#endif /* __MFD_MT6359_CORE_H__ */
This diff is collapsed.
This diff is collapsed.
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
enum chip_id { enum chip_id {
MT6323_CHIP_ID = 0x23, MT6323_CHIP_ID = 0x23,
MT6358_CHIP_ID = 0x58, MT6358_CHIP_ID = 0x58,
MT6359_CHIP_ID = 0x59,
MT6391_CHIP_ID = 0x91, MT6391_CHIP_ID = 0x91,
MT6397_CHIP_ID = 0x97, MT6397_CHIP_ID = 0x97,
}; };
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#define RTC_AL_MASK_DOW BIT(4) #define RTC_AL_MASK_DOW BIT(4)
#define RTC_TC_SEC 0x000a #define RTC_TC_SEC 0x000a
#define RTC_TC_MTH_MASK 0x000f
/* Min, Hour, Dom... register offset to RTC_TC_SEC */ /* Min, Hour, Dom... register offset to RTC_TC_SEC */
#define RTC_OFFSET_SEC 0 #define RTC_OFFSET_SEC 0
#define RTC_OFFSET_MIN 1 #define RTC_OFFSET_MIN 1
......
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2021 MediaTek Inc.
*/
#ifndef __LINUX_REGULATOR_MT6359_H
#define __LINUX_REGULATOR_MT6359_H
enum {
MT6359_ID_VS1 = 0,
MT6359_ID_VGPU11,
MT6359_ID_VMODEM,
MT6359_ID_VPU,
MT6359_ID_VCORE,
MT6359_ID_VS2,
MT6359_ID_VPA,
MT6359_ID_VPROC2,
MT6359_ID_VPROC1,
MT6359_ID_VCORE_SSHUB,
MT6359_ID_VGPU11_SSHUB = MT6359_ID_VCORE_SSHUB,
MT6359_ID_VAUD18 = 10,
MT6359_ID_VSIM1,
MT6359_ID_VIBR,
MT6359_ID_VRF12,
MT6359_ID_VUSB,
MT6359_ID_VSRAM_PROC2,
MT6359_ID_VIO18,
MT6359_ID_VCAMIO,
MT6359_ID_VCN18,
MT6359_ID_VFE28,
MT6359_ID_VCN13,
MT6359_ID_VCN33_1_BT,
MT6359_ID_VCN33_1_WIFI,
MT6359_ID_VAUX18,
MT6359_ID_VSRAM_OTHERS,
MT6359_ID_VEFUSE,
MT6359_ID_VXO22,
MT6359_ID_VRFCK,
MT6359_ID_VBIF28,
MT6359_ID_VIO28,
MT6359_ID_VEMC,
MT6359_ID_VCN33_2_BT,
MT6359_ID_VCN33_2_WIFI,
MT6359_ID_VA12,
MT6359_ID_VA09,
MT6359_ID_VRF18,
MT6359_ID_VSRAM_MD,
MT6359_ID_VUFS,
MT6359_ID_VM18,
MT6359_ID_VBBCK,
MT6359_ID_VSRAM_PROC1,
MT6359_ID_VSIM2,
MT6359_ID_VSRAM_OTHERS_SSHUB,
MT6359_ID_RG_MAX,
};
#define MT6359_MAX_REGULATOR MT6359_ID_RG_MAX
#endif /* __LINUX_REGULATOR_MT6359_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment