Re: [PATCH v5 3/3] mfd: mt6397: Add support for MT6392 pmic
From: Lee Jones <hidden>
Date: 2020-09-08 17:46:53
Also in:
linux-arm-kernel, linux-devicetree, linux-mediatek, lkml
On Mon, 07 Sep 2020, Fabien Parent wrote:
Update the MT6397 MFD driver to support the MT6392 PMIC. Signed-off-by: Fabien Parent <redacted> --- V5: * Rebased * removed mt6392-regulator compatible. This will be send in another series to make this series easier to merge. V4: * Use DEFINE_RES_* macro to define RTC ressources. * Use PLATFORM_DEVID_NONE instead of -1 value when registering devices. V3: * No change V2: * Pass IRQ comain to fix invalid MFD devices IRQs. * Remove resources and mfd cells for device we don't support. * Rename IRQ names to follow what's done for MT6397. ---
You shouldn't need to add your own '---' marker. Just place the changelog under the existing one.
quoted hunk ↗ jump to hunk
drivers/mfd/mt6397-core.c | 40 +++ drivers/mfd/mt6397-irq.c | 9 + include/linux/mfd/mt6392/core.h | 42 +++ include/linux/mfd/mt6392/registers.h | 487 +++++++++++++++++++++++++++ include/linux/mfd/mt6397/core.h | 1 + 5 files changed, 579 insertions(+) create mode 100644 include/linux/mfd/mt6392/core.h create mode 100644 include/linux/mfd/mt6392/registers.hdiff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c index f6cd8a660602..6ba3585b1b36 100644 --- a/drivers/mfd/mt6397-core.c +++ b/drivers/mfd/mt6397-core.c@@ -13,9 +13,11 @@ #include <linux/mfd/core.h> #include <linux/mfd/mt6323/core.h> #include <linux/mfd/mt6358/core.h> +#include <linux/mfd/mt6392/core.h> #include <linux/mfd/mt6397/core.h> #include <linux/mfd/mt6323/registers.h> #include <linux/mfd/mt6358/registers.h> +#include <linux/mfd/mt6392/registers.h> #include <linux/mfd/mt6397/registers.h> #define MT6323_RTC_BASE 0x8000@@ -27,6 +29,9 @@ #define MT6397_RTC_BASE 0xe000 #define MT6397_RTC_SIZE 0x3e +#define MT6392_RTC_BASE 0x8000 +#define MT6392_RTC_SIZE 0x3e +
Nit: Why aren't these (all) in the header files above?
quoted hunk ↗ jump to hunk
#define MT6323_PWRC_BASE 0x8000 #define MT6323_PWRC_SIZE 0x40@@ -40,6 +45,11 @@ static const struct resource mt6358_rtc_resources[] = { DEFINE_RES_IRQ(MT6358_IRQ_RTC), }; +static const struct resource mt6392_rtc_resources[] = { + DEFINE_RES_MEM(MT6392_RTC_BASE, MT6392_RTC_SIZE), + DEFINE_RES_IRQ(MT6392_IRQ_RTC), +}; + static const struct resource mt6397_rtc_resources[] = { DEFINE_RES_MEM(MT6397_RTC_BASE, MT6397_RTC_SIZE), DEFINE_RES_IRQ(MT6397_IRQ_RTC),@@ -50,6 +60,11 @@ static const struct resource mt6323_keys_resources[] = { DEFINE_RES_IRQ(MT6323_IRQ_STATUS_FCHRKEY), }; +static const struct resource mt6392_keys_resources[] = { + DEFINE_RES_IRQ(MT6392_IRQ_PWRKEY), + DEFINE_RES_IRQ(MT6392_IRQ_FCHRKEY), +}; + static const struct resource mt6397_keys_resources[] = { DEFINE_RES_IRQ(MT6397_IRQ_PWRKEY), DEFINE_RES_IRQ(MT6397_IRQ_HOMEKEY),@@ -99,6 +114,20 @@ static const struct mfd_cell mt6358_devs[] = { }, }; +static const struct mfd_cell mt6392_devs[] = { + { + .name = "mt6397-rtc", + .num_resources = ARRAY_SIZE(mt6392_rtc_resources), + .resources = mt6392_rtc_resources, + .of_compatible = "mediatek,mt6392-rtc", + }, { + .name = "mtk-pmic-keys", + .num_resources = ARRAY_SIZE(mt6392_keys_resources), + .resources = mt6392_keys_resources, + .of_compatible = "mediatek,mt6392-keys" + }, +}; + static const struct mfd_cell mt6397_devs[] = { { .name = "mt6397-rtc",@@ -149,6 +178,14 @@ static const struct chip_data mt6358_core = { .irq_init = mt6358_irq_init, }; +static const struct chip_data mt6392_core = { + .cid_addr = MT6392_CID, + .cid_shift = 0, + .cells = mt6392_devs, + .cell_size = ARRAY_SIZE(mt6392_devs), + .irq_init = mt6397_irq_init, +}; + static const struct chip_data mt6397_core = { .cid_addr = MT6397_CID, .cid_shift = 0,@@ -218,6 +255,9 @@ static const struct of_device_id mt6397_of_match[] = { }, { .compatible = "mediatek,mt6358", .data = &mt6358_core, + }, { + .compatible = "mediatek,mt6392", + .data = &mt6392_core, }, { .compatible = "mediatek,mt6397", .data = &mt6397_core,diff --git a/drivers/mfd/mt6397-irq.c b/drivers/mfd/mt6397-irq.c index 2924919da991..9bf95e2ddf02 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/mt6392/core.h> +#include <linux/mfd/mt6392/registers.h> #include <linux/mfd/mt6397/core.h> #include <linux/mfd/mt6397/registers.h>@@ -181,6 +183,13 @@ int mt6397_irq_init(struct mt6397_chip *chip) chip->int_status[1] = MT6397_INT_STATUS1; break; + case MT6392_CHIP_ID: + chip->int_con[0] = MT6392_INT_CON0; + chip->int_con[1] = MT6392_INT_CON1; + chip->int_status[0] = MT6392_INT_STATUS0; + chip->int_status[1] = MT6392_INT_STATUS1; + break; +
Nit: These line breaks seem superfluous.
quoted hunk ↗ jump to hunk
default: dev_err(chip->dev, "unsupported chip: 0x%x\n", chip->chip_id); return -ENODEV;diff --git a/include/linux/mfd/mt6392/core.h b/include/linux/mfd/mt6392/core.h new file mode 100644 index 000000000000..7575a79ea052 --- /dev/null +++ b/include/linux/mfd/mt6392/core.h@@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2019 MediaTek Inc.
This is out of date.
quoted hunk ↗ jump to hunk
+ * Author: Chen Zhong [off-list ref] + */ + +#ifndef __MFD_MT6392_CORE_H__ +#define __MFD_MT6392_CORE_H__ + +enum MT6392_IRQ_numbers { + MT6392_IRQ_SPKL_AB = 0, + MT6392_IRQ_SPKL, + MT6392_IRQ_BAT_L, + MT6392_IRQ_BAT_H, + MT6392_IRQ_WATCHDOG, + MT6392_IRQ_PWRKEY, + MT6392_IRQ_THR_L, + MT6392_IRQ_THR_H, + MT6392_IRQ_VBATON_UNDET, + MT6392_IRQ_BVALID_DET, + MT6392_IRQ_CHRDET, + MT6392_IRQ_OV, + MT6392_IRQ_LDO = 16, + MT6392_IRQ_FCHRKEY, + MT6392_IRQ_RELEASE_PWRKEY, + MT6392_IRQ_RELEASE_FCHRKEY, + MT6392_IRQ_RTC, + MT6392_IRQ_VPROC, + MT6392_IRQ_VSYS, + MT6392_IRQ_VCORE, + MT6392_IRQ_TYPE_C_CC, + MT6392_IRQ_TYPEC_H_MAX, + MT6392_IRQ_TYPEC_H_MIN, + MT6392_IRQ_TYPEC_L_MAX, + MT6392_IRQ_TYPEC_L_MIN, + MT6392_IRQ_THR_MAX, + MT6392_IRQ_THR_MIN, + MT6392_IRQ_NAG_C_DLTV, + MT6392_IRQ_NR, +}; + +#endif /* __MFD_MT6392_CORE_H__ */diff --git a/include/linux/mfd/mt6392/registers.h b/include/linux/mfd/mt6392/registers.h new file mode 100644 index 000000000000..8858b58e3b67 --- /dev/null +++ b/include/linux/mfd/mt6392/registers.h@@ -0,0 +1,487 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (c) 2019 MediaTek Inc.
This is out of date.
+ * Author: Chen Zhong [off-list ref] + */ + +#ifndef __MFD_MT6392_REGISTERS_H__ +#define __MFD_MT6392_REGISTERS_H__
-- Lee Jones [李琼斯] Senior Technical Lead - Developer Services Linaro.org │ Open source software for Arm SoCs Follow Linaro: Facebook | Twitter | Blog