diff mbox series

[v5,1/3] dt-bindings: mfd: mt6397: Add bindings for MT6392 PMIC

Message ID 20200907103311.1601907-1-fparent@baylibre.com
State Not Applicable, archived
Headers show
Series [v5,1/3] dt-bindings: mfd: mt6397: Add bindings for MT6392 PMIC | expand

Checks

Context Check Description
robh/checkpatch warning total: 0 errors, 1 warnings, 18 lines checked

Commit Message

Fabien Parent Sept. 7, 2020, 10:33 a.m. UTC
Add the currently supported bindings for the MT6392 PMIC.

Signed-off-by: Fabien Parent <fparent@baylibre.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Acked-for-mfd-by: Lee Jones <lee.jones@linaro.org>
---

V5:
	* Rebased, removed regulator documentation because it will be send later
	on in another patch series

V4:
	* No change

V3:
	* No change

V2:
	* New patch

---
 Documentation/devicetree/bindings/mfd/mt6397.txt | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Lee Jones Sept. 8, 2020, 1:53 p.m. UTC | #1
On Mon, 07 Sep 2020, Fabien Parent wrote:

> Update the MT6397 MFD driver to support the MT6392 PMIC.
> 
> Signed-off-by: Fabien Parent <fparent@baylibre.com>
> ---
> 
> 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.

>  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.h
> 
> diff --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?

>  #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.

>  	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.

> + * Author: Chen Zhong <chen.zhong@mediatek.com>
> + */
> +
> +#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 <chen.zhong@mediatek.com>
> + */
> +
> +#ifndef __MFD_MT6392_REGISTERS_H__
> +#define __MFD_MT6392_REGISTERS_H__
Fabien Parent Oct. 12, 2020, 11:32 a.m. UTC | #2
On Tue, Sep 8, 2020 at 3:53 PM Lee Jones <lee.jones@linaro.org> wrote:
>
> On Mon, 07 Sep 2020, Fabien Parent wrote:
>
> > Update the MT6397 MFD driver to support the MT6392 PMIC.
> >
> > Signed-off-by: Fabien Parent <fparent@baylibre.com>
> > ---
> >
> > 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.
>
> >  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.h
> >
> > diff --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?

Not sure, I just followed what people did previously here.

>
> >  #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.
>
> >       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.
>
> > + * Author: Chen Zhong <chen.zhong@mediatek.com>
> > + */
> > +
> > +#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 <chen.zhong@mediatek.com>
> > + */
> > +
> > +#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
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/mfd/mt6397.txt b/Documentation/devicetree/bindings/mfd/mt6397.txt
index 2661775a3825..f051a951ba72 100644
--- a/Documentation/devicetree/bindings/mfd/mt6397.txt
+++ b/Documentation/devicetree/bindings/mfd/mt6397.txt
@@ -21,6 +21,7 @@  Required properties:
 compatible:
 	"mediatek,mt6323" for PMIC MT6323
 	"mediatek,mt6358" for PMIC MT6358
+	"mediatek,mt6392" for PMIC MT6392
 	"mediatek,mt6397" for PMIC MT6397
 
 Optional subnodes:
@@ -52,7 +53,10 @@  Optional subnodes:
 
 - keys
 	Required properties:
-		- compatible: "mediatek,mt6397-keys" or "mediatek,mt6323-keys"
+		- compatible:
+			- "mediatek,mt6323-keys"
+			- "mediatek,mt6392-keys", "mediatek,mt6397-keys"
+			- "mediatek,mt6397-keys"
 	see ../input/mtk-pmic-keys.txt
 
 - power-controller