Re: [PATCH v2 3/9] regulator: mt6380: Add support for MT6380
On Wed, 2017-08-09 at 17:22 +0800, Yingjoe Chen wrote: > On Tue, 2017-07-18 at 17:49 +0800, sean.w...@mediatek.com wrote: > > From: Chenglin Xu> > > > The MT6380 is a regulator found those boards with MediaTek MT7622 SoC > > It is connected as a slave to the SoC using MediaTek PMIC wrapper which > > is the common interface connecting with Mediatek made various PMICs. > > > > Signed-off-by: Chenglin Xu > > Signed-off-by: Sean Wang > > --- > > drivers/regulator/Kconfig | 9 + > > drivers/regulator/Makefile | 1 + > > drivers/regulator/mt6380-regulator.c | 359 > > + > > include/linux/regulator/mt6380-regulator.h | 32 +++ > > 4 files changed, 401 insertions(+) > > create mode 100644 drivers/regulator/mt6380-regulator.c > > create mode 100644 include/linux/regulator/mt6380-regulator.h > > > > diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig > > index 48db87d..c46ef9c 100644 > > --- a/drivers/regulator/Kconfig > > +++ b/drivers/regulator/Kconfig > > @@ -541,6 +541,15 @@ config REGULATOR_MT6323 > > This driver supports the control of different power rails of device > > through regulator interface. > > > > +config REGULATOR_MT6380 > > + tristate "MediaTek MT6380 PMIC" > > + depends on MTK_PMIC_WRAP > > + help > > + Say y here to select this option to enable the power regulator of > > + MediaTek MT6380 PMIC. > > + This driver supports the control of different power rails of device > > + through regulator interface. > > + > > config REGULATOR_MT6397 > > tristate "MediaTek MT6397 PMIC" > > depends on MFD_MT6397 > > diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile > > index dc3503f..5148583 100644 > > --- a/drivers/regulator/Makefile > > +++ b/drivers/regulator/Makefile > > @@ -70,6 +70,7 @@ obj-$(CONFIG_REGULATOR_MC13892) += mc13892-regulator.o > > obj-$(CONFIG_REGULATOR_MC13XXX_CORE) += mc13xxx-regulator-core.o > > obj-$(CONFIG_REGULATOR_MT6311) += mt6311-regulator.o > > obj-$(CONFIG_REGULATOR_MT6323) += mt6323-regulator.o > > +obj-$(CONFIG_REGULATOR_MT6380) += mt6380-regulator.o > > obj-$(CONFIG_REGULATOR_MT6397) += mt6397-regulator.o > > obj-$(CONFIG_REGULATOR_QCOM_RPM) += qcom_rpm-regulator.o > > obj-$(CONFIG_REGULATOR_QCOM_SMD_RPM) += qcom_smd-regulator.o > > diff --git a/drivers/regulator/mt6380-regulator.c > > b/drivers/regulator/mt6380-regulator.c > > new file mode 100644 > > index 000..5fca36f > > --- /dev/null > > +++ b/drivers/regulator/mt6380-regulator.c > > <...> > > > +static struct regulator_ops mt6380_volt_range_ops = { > > + .list_voltage = regulator_list_voltage_linear_range, > > + .map_voltage = regulator_map_voltage_linear_range, > > + .set_voltage_sel = regulator_set_voltage_sel_regmap, > > + .get_voltage_sel = regulator_get_voltage_sel_regmap, > > + .set_voltage_time_sel = regulator_set_voltage_time_sel, > > + .enable = regulator_enable_regmap, > > + .disable = regulator_disable_regmap, > > + .is_enabled = regulator_is_enabled_regmap, > > + .set_mode = mt6380_regulator_set_mode, > > + .get_mode = mt6380_regulator_get_mode, > > +}; > > + > > +static struct regulator_ops mt6380_volt_table_ops = { > > + .list_voltage = regulator_list_voltage_table, > > + .map_voltage = regulator_map_voltage_iterate, > > + .set_voltage_sel = regulator_set_voltage_sel_regmap, > > + .get_voltage_sel = regulator_get_voltage_sel_regmap, > > + .set_voltage_time_sel = regulator_set_voltage_time_sel, > > + .enable = regulator_enable_regmap, > > + .disable = regulator_disable_regmap, > > + .is_enabled = regulator_is_enabled_regmap, > > + .set_mode = mt6380_regulator_set_mode, > > + .get_mode = mt6380_regulator_get_mode, > > +}; > > + > > +static struct regulator_ops mt6380_volt_fixed_ops = { > > this should be const. > > Joe.C Hi, Joe.C nice catch. also will be included in the next version Sean > >
Re: [PATCH v2 3/9] regulator: mt6380: Add support for MT6380
On Wed, 2017-08-09 at 17:22 +0800, Yingjoe Chen wrote: > On Tue, 2017-07-18 at 17:49 +0800, sean.w...@mediatek.com wrote: > > From: Chenglin Xu > > > > The MT6380 is a regulator found those boards with MediaTek MT7622 SoC > > It is connected as a slave to the SoC using MediaTek PMIC wrapper which > > is the common interface connecting with Mediatek made various PMICs. > > > > Signed-off-by: Chenglin Xu > > Signed-off-by: Sean Wang > > --- > > drivers/regulator/Kconfig | 9 + > > drivers/regulator/Makefile | 1 + > > drivers/regulator/mt6380-regulator.c | 359 > > + > > include/linux/regulator/mt6380-regulator.h | 32 +++ > > 4 files changed, 401 insertions(+) > > create mode 100644 drivers/regulator/mt6380-regulator.c > > create mode 100644 include/linux/regulator/mt6380-regulator.h > > > > diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig > > index 48db87d..c46ef9c 100644 > > --- a/drivers/regulator/Kconfig > > +++ b/drivers/regulator/Kconfig > > @@ -541,6 +541,15 @@ config REGULATOR_MT6323 > > This driver supports the control of different power rails of device > > through regulator interface. > > > > +config REGULATOR_MT6380 > > + tristate "MediaTek MT6380 PMIC" > > + depends on MTK_PMIC_WRAP > > + help > > + Say y here to select this option to enable the power regulator of > > + MediaTek MT6380 PMIC. > > + This driver supports the control of different power rails of device > > + through regulator interface. > > + > > config REGULATOR_MT6397 > > tristate "MediaTek MT6397 PMIC" > > depends on MFD_MT6397 > > diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile > > index dc3503f..5148583 100644 > > --- a/drivers/regulator/Makefile > > +++ b/drivers/regulator/Makefile > > @@ -70,6 +70,7 @@ obj-$(CONFIG_REGULATOR_MC13892) += mc13892-regulator.o > > obj-$(CONFIG_REGULATOR_MC13XXX_CORE) += mc13xxx-regulator-core.o > > obj-$(CONFIG_REGULATOR_MT6311) += mt6311-regulator.o > > obj-$(CONFIG_REGULATOR_MT6323) += mt6323-regulator.o > > +obj-$(CONFIG_REGULATOR_MT6380) += mt6380-regulator.o > > obj-$(CONFIG_REGULATOR_MT6397) += mt6397-regulator.o > > obj-$(CONFIG_REGULATOR_QCOM_RPM) += qcom_rpm-regulator.o > > obj-$(CONFIG_REGULATOR_QCOM_SMD_RPM) += qcom_smd-regulator.o > > diff --git a/drivers/regulator/mt6380-regulator.c > > b/drivers/regulator/mt6380-regulator.c > > new file mode 100644 > > index 000..5fca36f > > --- /dev/null > > +++ b/drivers/regulator/mt6380-regulator.c > > <...> > > > +static struct regulator_ops mt6380_volt_range_ops = { > > + .list_voltage = regulator_list_voltage_linear_range, > > + .map_voltage = regulator_map_voltage_linear_range, > > + .set_voltage_sel = regulator_set_voltage_sel_regmap, > > + .get_voltage_sel = regulator_get_voltage_sel_regmap, > > + .set_voltage_time_sel = regulator_set_voltage_time_sel, > > + .enable = regulator_enable_regmap, > > + .disable = regulator_disable_regmap, > > + .is_enabled = regulator_is_enabled_regmap, > > + .set_mode = mt6380_regulator_set_mode, > > + .get_mode = mt6380_regulator_get_mode, > > +}; > > + > > +static struct regulator_ops mt6380_volt_table_ops = { > > + .list_voltage = regulator_list_voltage_table, > > + .map_voltage = regulator_map_voltage_iterate, > > + .set_voltage_sel = regulator_set_voltage_sel_regmap, > > + .get_voltage_sel = regulator_get_voltage_sel_regmap, > > + .set_voltage_time_sel = regulator_set_voltage_time_sel, > > + .enable = regulator_enable_regmap, > > + .disable = regulator_disable_regmap, > > + .is_enabled = regulator_is_enabled_regmap, > > + .set_mode = mt6380_regulator_set_mode, > > + .get_mode = mt6380_regulator_get_mode, > > +}; > > + > > +static struct regulator_ops mt6380_volt_fixed_ops = { > > this should be const. > > Joe.C Hi, Joe.C nice catch. also will be included in the next version Sean > >
Re: [PATCH v2 3/9] regulator: mt6380: Add support for MT6380
On Tue, 2017-07-18 at 14:31 +0100, Mark Brown wrote: > On Tue, Jul 18, 2017 at 05:49:23PM +0800, sean.w...@mediatek.com wrote: > > > + if (!info->modeset_mask) { > > + dev_err(>dev, "regulator %s doesn't support set_mode\n", > > + info->desc.name); > > + return -EINVAL; > > + } > > This is mostly fine but the mode operations all have this code - if the > regulator doesn't have modesetting facilities it just shouldn't have > the ops so the core can handle things in a standard fashion. It'd mean > defining a separate set of operations for those regulators but that's > fine. Hi, Mark it is really bad for those calls with certain regulator always returning -EINVAL, that doesn't make sense. we'll follow your suggestion and add them into the next version. thanks for your help! Sean > ___ > Linux-mediatek mailing list > linux-media...@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-mediatek
Re: [PATCH v2 3/9] regulator: mt6380: Add support for MT6380
On Tue, 2017-07-18 at 14:31 +0100, Mark Brown wrote: > On Tue, Jul 18, 2017 at 05:49:23PM +0800, sean.w...@mediatek.com wrote: > > > + if (!info->modeset_mask) { > > + dev_err(>dev, "regulator %s doesn't support set_mode\n", > > + info->desc.name); > > + return -EINVAL; > > + } > > This is mostly fine but the mode operations all have this code - if the > regulator doesn't have modesetting facilities it just shouldn't have > the ops so the core can handle things in a standard fashion. It'd mean > defining a separate set of operations for those regulators but that's > fine. Hi, Mark it is really bad for those calls with certain regulator always returning -EINVAL, that doesn't make sense. we'll follow your suggestion and add them into the next version. thanks for your help! Sean > ___ > Linux-mediatek mailing list > linux-media...@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-mediatek
Re: [PATCH v2 3/9] regulator: mt6380: Add support for MT6380
On Tue, 2017-07-18 at 17:49 +0800, sean.w...@mediatek.com wrote: > From: Chenglin Xu> > The MT6380 is a regulator found those boards with MediaTek MT7622 SoC > It is connected as a slave to the SoC using MediaTek PMIC wrapper which > is the common interface connecting with Mediatek made various PMICs. > > Signed-off-by: Chenglin Xu > Signed-off-by: Sean Wang > --- > drivers/regulator/Kconfig | 9 + > drivers/regulator/Makefile | 1 + > drivers/regulator/mt6380-regulator.c | 359 > + > include/linux/regulator/mt6380-regulator.h | 32 +++ > 4 files changed, 401 insertions(+) > create mode 100644 drivers/regulator/mt6380-regulator.c > create mode 100644 include/linux/regulator/mt6380-regulator.h > > diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig > index 48db87d..c46ef9c 100644 > --- a/drivers/regulator/Kconfig > +++ b/drivers/regulator/Kconfig > @@ -541,6 +541,15 @@ config REGULATOR_MT6323 > This driver supports the control of different power rails of device > through regulator interface. > > +config REGULATOR_MT6380 > + tristate "MediaTek MT6380 PMIC" > + depends on MTK_PMIC_WRAP > + help > + Say y here to select this option to enable the power regulator of > + MediaTek MT6380 PMIC. > + This driver supports the control of different power rails of device > + through regulator interface. > + > config REGULATOR_MT6397 > tristate "MediaTek MT6397 PMIC" > depends on MFD_MT6397 > diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile > index dc3503f..5148583 100644 > --- a/drivers/regulator/Makefile > +++ b/drivers/regulator/Makefile > @@ -70,6 +70,7 @@ obj-$(CONFIG_REGULATOR_MC13892) += mc13892-regulator.o > obj-$(CONFIG_REGULATOR_MC13XXX_CORE) += mc13xxx-regulator-core.o > obj-$(CONFIG_REGULATOR_MT6311) += mt6311-regulator.o > obj-$(CONFIG_REGULATOR_MT6323) += mt6323-regulator.o > +obj-$(CONFIG_REGULATOR_MT6380) += mt6380-regulator.o > obj-$(CONFIG_REGULATOR_MT6397) += mt6397-regulator.o > obj-$(CONFIG_REGULATOR_QCOM_RPM) += qcom_rpm-regulator.o > obj-$(CONFIG_REGULATOR_QCOM_SMD_RPM) += qcom_smd-regulator.o > diff --git a/drivers/regulator/mt6380-regulator.c > b/drivers/regulator/mt6380-regulator.c > new file mode 100644 > index 000..5fca36f > --- /dev/null > +++ b/drivers/regulator/mt6380-regulator.c <...> > +static struct regulator_ops mt6380_volt_range_ops = { > + .list_voltage = regulator_list_voltage_linear_range, > + .map_voltage = regulator_map_voltage_linear_range, > + .set_voltage_sel = regulator_set_voltage_sel_regmap, > + .get_voltage_sel = regulator_get_voltage_sel_regmap, > + .set_voltage_time_sel = regulator_set_voltage_time_sel, > + .enable = regulator_enable_regmap, > + .disable = regulator_disable_regmap, > + .is_enabled = regulator_is_enabled_regmap, > + .set_mode = mt6380_regulator_set_mode, > + .get_mode = mt6380_regulator_get_mode, > +}; > + > +static struct regulator_ops mt6380_volt_table_ops = { > + .list_voltage = regulator_list_voltage_table, > + .map_voltage = regulator_map_voltage_iterate, > + .set_voltage_sel = regulator_set_voltage_sel_regmap, > + .get_voltage_sel = regulator_get_voltage_sel_regmap, > + .set_voltage_time_sel = regulator_set_voltage_time_sel, > + .enable = regulator_enable_regmap, > + .disable = regulator_disable_regmap, > + .is_enabled = regulator_is_enabled_regmap, > + .set_mode = mt6380_regulator_set_mode, > + .get_mode = mt6380_regulator_get_mode, > +}; > + > +static struct regulator_ops mt6380_volt_fixed_ops = { this should be const. Joe.C
Re: [PATCH v2 3/9] regulator: mt6380: Add support for MT6380
On Tue, 2017-07-18 at 17:49 +0800, sean.w...@mediatek.com wrote: > From: Chenglin Xu > > The MT6380 is a regulator found those boards with MediaTek MT7622 SoC > It is connected as a slave to the SoC using MediaTek PMIC wrapper which > is the common interface connecting with Mediatek made various PMICs. > > Signed-off-by: Chenglin Xu > Signed-off-by: Sean Wang > --- > drivers/regulator/Kconfig | 9 + > drivers/regulator/Makefile | 1 + > drivers/regulator/mt6380-regulator.c | 359 > + > include/linux/regulator/mt6380-regulator.h | 32 +++ > 4 files changed, 401 insertions(+) > create mode 100644 drivers/regulator/mt6380-regulator.c > create mode 100644 include/linux/regulator/mt6380-regulator.h > > diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig > index 48db87d..c46ef9c 100644 > --- a/drivers/regulator/Kconfig > +++ b/drivers/regulator/Kconfig > @@ -541,6 +541,15 @@ config REGULATOR_MT6323 > This driver supports the control of different power rails of device > through regulator interface. > > +config REGULATOR_MT6380 > + tristate "MediaTek MT6380 PMIC" > + depends on MTK_PMIC_WRAP > + help > + Say y here to select this option to enable the power regulator of > + MediaTek MT6380 PMIC. > + This driver supports the control of different power rails of device > + through regulator interface. > + > config REGULATOR_MT6397 > tristate "MediaTek MT6397 PMIC" > depends on MFD_MT6397 > diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile > index dc3503f..5148583 100644 > --- a/drivers/regulator/Makefile > +++ b/drivers/regulator/Makefile > @@ -70,6 +70,7 @@ obj-$(CONFIG_REGULATOR_MC13892) += mc13892-regulator.o > obj-$(CONFIG_REGULATOR_MC13XXX_CORE) += mc13xxx-regulator-core.o > obj-$(CONFIG_REGULATOR_MT6311) += mt6311-regulator.o > obj-$(CONFIG_REGULATOR_MT6323) += mt6323-regulator.o > +obj-$(CONFIG_REGULATOR_MT6380) += mt6380-regulator.o > obj-$(CONFIG_REGULATOR_MT6397) += mt6397-regulator.o > obj-$(CONFIG_REGULATOR_QCOM_RPM) += qcom_rpm-regulator.o > obj-$(CONFIG_REGULATOR_QCOM_SMD_RPM) += qcom_smd-regulator.o > diff --git a/drivers/regulator/mt6380-regulator.c > b/drivers/regulator/mt6380-regulator.c > new file mode 100644 > index 000..5fca36f > --- /dev/null > +++ b/drivers/regulator/mt6380-regulator.c <...> > +static struct regulator_ops mt6380_volt_range_ops = { > + .list_voltage = regulator_list_voltage_linear_range, > + .map_voltage = regulator_map_voltage_linear_range, > + .set_voltage_sel = regulator_set_voltage_sel_regmap, > + .get_voltage_sel = regulator_get_voltage_sel_regmap, > + .set_voltage_time_sel = regulator_set_voltage_time_sel, > + .enable = regulator_enable_regmap, > + .disable = regulator_disable_regmap, > + .is_enabled = regulator_is_enabled_regmap, > + .set_mode = mt6380_regulator_set_mode, > + .get_mode = mt6380_regulator_get_mode, > +}; > + > +static struct regulator_ops mt6380_volt_table_ops = { > + .list_voltage = regulator_list_voltage_table, > + .map_voltage = regulator_map_voltage_iterate, > + .set_voltage_sel = regulator_set_voltage_sel_regmap, > + .get_voltage_sel = regulator_get_voltage_sel_regmap, > + .set_voltage_time_sel = regulator_set_voltage_time_sel, > + .enable = regulator_enable_regmap, > + .disable = regulator_disable_regmap, > + .is_enabled = regulator_is_enabled_regmap, > + .set_mode = mt6380_regulator_set_mode, > + .get_mode = mt6380_regulator_get_mode, > +}; > + > +static struct regulator_ops mt6380_volt_fixed_ops = { this should be const. Joe.C
Re: [PATCH v2 3/9] regulator: mt6380: Add support for MT6380
On Tue, Jul 18, 2017 at 05:49:23PM +0800, sean.w...@mediatek.com wrote: > + if (!info->modeset_mask) { > + dev_err(>dev, "regulator %s doesn't support set_mode\n", > + info->desc.name); > + return -EINVAL; > + } This is mostly fine but the mode operations all have this code - if the regulator doesn't have modesetting facilities it just shouldn't have the ops so the core can handle things in a standard fashion. It'd mean defining a separate set of operations for those regulators but that's fine. signature.asc Description: PGP signature
Re: [PATCH v2 3/9] regulator: mt6380: Add support for MT6380
On Tue, Jul 18, 2017 at 05:49:23PM +0800, sean.w...@mediatek.com wrote: > + if (!info->modeset_mask) { > + dev_err(>dev, "regulator %s doesn't support set_mode\n", > + info->desc.name); > + return -EINVAL; > + } This is mostly fine but the mode operations all have this code - if the regulator doesn't have modesetting facilities it just shouldn't have the ops so the core can handle things in a standard fashion. It'd mean defining a separate set of operations for those regulators but that's fine. signature.asc Description: PGP signature
[PATCH v2 3/9] regulator: mt6380: Add support for MT6380
From: Chenglin XuThe MT6380 is a regulator found those boards with MediaTek MT7622 SoC It is connected as a slave to the SoC using MediaTek PMIC wrapper which is the common interface connecting with Mediatek made various PMICs. Signed-off-by: Chenglin Xu Signed-off-by: Sean Wang --- drivers/regulator/Kconfig | 9 + drivers/regulator/Makefile | 1 + drivers/regulator/mt6380-regulator.c | 359 + include/linux/regulator/mt6380-regulator.h | 32 +++ 4 files changed, 401 insertions(+) create mode 100644 drivers/regulator/mt6380-regulator.c create mode 100644 include/linux/regulator/mt6380-regulator.h diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig index 48db87d..c46ef9c 100644 --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig @@ -541,6 +541,15 @@ config REGULATOR_MT6323 This driver supports the control of different power rails of device through regulator interface. +config REGULATOR_MT6380 + tristate "MediaTek MT6380 PMIC" + depends on MTK_PMIC_WRAP + help + Say y here to select this option to enable the power regulator of + MediaTek MT6380 PMIC. + This driver supports the control of different power rails of device + through regulator interface. + config REGULATOR_MT6397 tristate "MediaTek MT6397 PMIC" depends on MFD_MT6397 diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile index dc3503f..5148583 100644 --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile @@ -70,6 +70,7 @@ obj-$(CONFIG_REGULATOR_MC13892) += mc13892-regulator.o obj-$(CONFIG_REGULATOR_MC13XXX_CORE) += mc13xxx-regulator-core.o obj-$(CONFIG_REGULATOR_MT6311) += mt6311-regulator.o obj-$(CONFIG_REGULATOR_MT6323) += mt6323-regulator.o +obj-$(CONFIG_REGULATOR_MT6380) += mt6380-regulator.o obj-$(CONFIG_REGULATOR_MT6397) += mt6397-regulator.o obj-$(CONFIG_REGULATOR_QCOM_RPM) += qcom_rpm-regulator.o obj-$(CONFIG_REGULATOR_QCOM_SMD_RPM) += qcom_smd-regulator.o diff --git a/drivers/regulator/mt6380-regulator.c b/drivers/regulator/mt6380-regulator.c new file mode 100644 index 000..5fca36f --- /dev/null +++ b/drivers/regulator/mt6380-regulator.c @@ -0,0 +1,359 @@ +/* + * Copyright (c) 2017 MediaTek Inc. + * Author: Chenglin Xu + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* PMIC Registers */ +#define MT6380_ALDO_CON_0 0x +#define MT6380_BTLDO_CON_00x0004 +#define MT6380_COMP_CON_0 0x0008 +#define MT6380_CPUBUCK_CON_0 0x000C +#define MT6380_CPUBUCK_CON_1 0x0010 +#define MT6380_CPUBUCK_CON_2 0x0014 +#define MT6380_DDRLDO_CON_0 0x0018 +#define MT6380_MLDO_CON_0 0x001C +#define MT6380_PALDO_CON_00x0020 +#define MT6380_PHYLDO_CON_0 0x0024 +#define MT6380_SIDO_CON_0 0x0028 +#define MT6380_SIDO_CON_1 0x002C +#define MT6380_SIDO_CON_2 0x0030 +#define MT6380_SLDO_CON_0 0x0034 +#define MT6380_TLDO_CON_0 0x0038 +#define MT6380_STARTUP_CON_0 0x003C +#define MT6380_STARTUP_CON_1 0x0040 +#define MT6380_SMPS_TOP_CON_0 0x0044 +#define MT6380_SMPS_TOP_CON_1 0x0048 +#define MT6380_ANA_CTRL_0 0x0050 +#define MT6380_ANA_CTRL_1 0x0054 +#define MT6380_ANA_CTRL_2 0x0058 +#define MT6380_ANA_CTRL_3 0x005C +#define MT6380_ANA_CTRL_4 0x0060 +#define MT6380_SPK_CON9 0x0064 +#define MT6380_SPK_CON11 0x0068 +#define MT6380_SPK_CON12 0x006A +#define MT6380_CLK_CTRL 0x0070 +#define MT6380_PINMUX_CTRL0x0074 +#define MT6380_IO_CTRL0x0078 +#define MT6380_SLP_MODE_CTRL_00x007C +#define MT6380_SLP_MODE_CTRL_10x0080 +#define MT6380_SLP_MODE_CTRL_20x0084 +#define MT6380_SLP_MODE_CTRL_30x0088 +#define MT6380_SLP_MODE_CTRL_40x008C +#define MT6380_SLP_MODE_CTRL_50x0090 +#define MT6380_SLP_MODE_CTRL_60x0094 +#define MT6380_SLP_MODE_CTRL_70x0098 +#define
[PATCH v2 3/9] regulator: mt6380: Add support for MT6380
From: Chenglin Xu The MT6380 is a regulator found those boards with MediaTek MT7622 SoC It is connected as a slave to the SoC using MediaTek PMIC wrapper which is the common interface connecting with Mediatek made various PMICs. Signed-off-by: Chenglin Xu Signed-off-by: Sean Wang --- drivers/regulator/Kconfig | 9 + drivers/regulator/Makefile | 1 + drivers/regulator/mt6380-regulator.c | 359 + include/linux/regulator/mt6380-regulator.h | 32 +++ 4 files changed, 401 insertions(+) create mode 100644 drivers/regulator/mt6380-regulator.c create mode 100644 include/linux/regulator/mt6380-regulator.h diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig index 48db87d..c46ef9c 100644 --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig @@ -541,6 +541,15 @@ config REGULATOR_MT6323 This driver supports the control of different power rails of device through regulator interface. +config REGULATOR_MT6380 + tristate "MediaTek MT6380 PMIC" + depends on MTK_PMIC_WRAP + help + Say y here to select this option to enable the power regulator of + MediaTek MT6380 PMIC. + This driver supports the control of different power rails of device + through regulator interface. + config REGULATOR_MT6397 tristate "MediaTek MT6397 PMIC" depends on MFD_MT6397 diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile index dc3503f..5148583 100644 --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile @@ -70,6 +70,7 @@ obj-$(CONFIG_REGULATOR_MC13892) += mc13892-regulator.o obj-$(CONFIG_REGULATOR_MC13XXX_CORE) += mc13xxx-regulator-core.o obj-$(CONFIG_REGULATOR_MT6311) += mt6311-regulator.o obj-$(CONFIG_REGULATOR_MT6323) += mt6323-regulator.o +obj-$(CONFIG_REGULATOR_MT6380) += mt6380-regulator.o obj-$(CONFIG_REGULATOR_MT6397) += mt6397-regulator.o obj-$(CONFIG_REGULATOR_QCOM_RPM) += qcom_rpm-regulator.o obj-$(CONFIG_REGULATOR_QCOM_SMD_RPM) += qcom_smd-regulator.o diff --git a/drivers/regulator/mt6380-regulator.c b/drivers/regulator/mt6380-regulator.c new file mode 100644 index 000..5fca36f --- /dev/null +++ b/drivers/regulator/mt6380-regulator.c @@ -0,0 +1,359 @@ +/* + * Copyright (c) 2017 MediaTek Inc. + * Author: Chenglin Xu + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +/* PMIC Registers */ +#define MT6380_ALDO_CON_0 0x +#define MT6380_BTLDO_CON_00x0004 +#define MT6380_COMP_CON_0 0x0008 +#define MT6380_CPUBUCK_CON_0 0x000C +#define MT6380_CPUBUCK_CON_1 0x0010 +#define MT6380_CPUBUCK_CON_2 0x0014 +#define MT6380_DDRLDO_CON_0 0x0018 +#define MT6380_MLDO_CON_0 0x001C +#define MT6380_PALDO_CON_00x0020 +#define MT6380_PHYLDO_CON_0 0x0024 +#define MT6380_SIDO_CON_0 0x0028 +#define MT6380_SIDO_CON_1 0x002C +#define MT6380_SIDO_CON_2 0x0030 +#define MT6380_SLDO_CON_0 0x0034 +#define MT6380_TLDO_CON_0 0x0038 +#define MT6380_STARTUP_CON_0 0x003C +#define MT6380_STARTUP_CON_1 0x0040 +#define MT6380_SMPS_TOP_CON_0 0x0044 +#define MT6380_SMPS_TOP_CON_1 0x0048 +#define MT6380_ANA_CTRL_0 0x0050 +#define MT6380_ANA_CTRL_1 0x0054 +#define MT6380_ANA_CTRL_2 0x0058 +#define MT6380_ANA_CTRL_3 0x005C +#define MT6380_ANA_CTRL_4 0x0060 +#define MT6380_SPK_CON9 0x0064 +#define MT6380_SPK_CON11 0x0068 +#define MT6380_SPK_CON12 0x006A +#define MT6380_CLK_CTRL 0x0070 +#define MT6380_PINMUX_CTRL0x0074 +#define MT6380_IO_CTRL0x0078 +#define MT6380_SLP_MODE_CTRL_00x007C +#define MT6380_SLP_MODE_CTRL_10x0080 +#define MT6380_SLP_MODE_CTRL_20x0084 +#define MT6380_SLP_MODE_CTRL_30x0088 +#define MT6380_SLP_MODE_CTRL_40x008C +#define MT6380_SLP_MODE_CTRL_50x0090 +#define MT6380_SLP_MODE_CTRL_60x0094 +#define MT6380_SLP_MODE_CTRL_70x0098 +#define MT6380_SLP_MODE_CTRL_80x009C +#define MT6380_FCAL_CTRL_00x00A0