Re: [PATCH v4 2/4] mfd: sec: Add support for S2MPS15 PMIC
Hi On 10/29/2015 01:36 PM, Lee Jones wrote: On Thu, 29 Oct 2015, Alim Akhtar wrote: From: Thomas Abraham Add support for S2MPS15 PMIC which is similar to S2MPS11 PMIC. The S2MPS15 PMIC supports 27 LDO regulators, 10 buck regulators, RTC, three 32.768KHz clock outputs and battery charger. This patch adds initial support for LDO and buck regulators of S2MPS15 device. Signed-off-by: Thomas Abraham Signed-off-by: Alim Akhtar [Alim: Added s2mps15_devs like rtc and clk and related changes] Reviewed-by: Krzysztof Kozlowski --- drivers/mfd/sec-core.c | 31 +++ drivers/mfd/sec-irq.c |8 ++ include/linux/mfd/samsung/core.h|1 + include/linux/mfd/samsung/s2mps15.h | 158 +++ 4 files changed, 198 insertions(+) create mode 100644 include/linux/mfd/samsung/s2mps15.h Looks good now. Acked-by: Lee Jones Thanks!! diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c index 2626fc0b5b8c..fbb8a5715597 100644 --- a/drivers/mfd/sec-core.c +++ b/drivers/mfd/sec-core.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -96,6 +97,17 @@ static const struct mfd_cell s2mps14_devs[] = { } }; +static const struct mfd_cell s2mps15_devs[] = { + { + .name = "s2mps15-regulator", + }, { + .name = "s2mps15-rtc", + }, { + .name = "s2mps13-clk", + .of_compatible = "samsung,s2mps13-clk", + }, +}; + static const struct mfd_cell s2mpa01_devs[] = { { .name = "s2mpa01-pmic", @@ -125,6 +137,9 @@ static const struct of_device_id sec_dt_match[] = { .compatible = "samsung,s2mps14-pmic", .data = (void *)S2MPS14X, }, { + .compatible = "samsung,s2mps15-pmic", + .data = (void *)S2MPS15X, + }, { .compatible = "samsung,s2mpa01-pmic", .data = (void *)S2MPA01, }, { @@ -226,6 +241,15 @@ static const struct regmap_config s2mps14_regmap_config = { .cache_type = REGCACHE_FLAT, }; +static const struct regmap_config s2mps15_regmap_config = { + .reg_bits = 8, + .val_bits = 8, + + .max_register = S2MPS15_REG_LDODSCH4, + .volatile_reg = s2mps11_volatile, + .cache_type = REGCACHE_FLAT, +}; + static const struct regmap_config s2mpu02_regmap_config = { .reg_bits = 8, .val_bits = 8, @@ -387,6 +411,9 @@ static int sec_pmic_probe(struct i2c_client *i2c, case S2MPS14X: regmap = &s2mps14_regmap_config; break; + case S2MPS15X: + regmap = &s2mps15_regmap_config; + break; case S5M8763X: regmap = &s5m8763_regmap_config; break; @@ -445,6 +472,10 @@ static int sec_pmic_probe(struct i2c_client *i2c, sec_devs = s2mps14_devs; num_sec_devs = ARRAY_SIZE(s2mps14_devs); break; + case S2MPS15X: + sec_devs = s2mps15_devs; + num_sec_devs = ARRAY_SIZE(s2mps15_devs); + break; case S2MPU02: sec_devs = s2mpu02_devs; num_sec_devs = ARRAY_SIZE(s2mpu02_devs); diff --git a/drivers/mfd/sec-irq.c b/drivers/mfd/sec-irq.c index 806fa8dbb22d..d77de431cc50 100644 --- a/drivers/mfd/sec-irq.c +++ b/drivers/mfd/sec-irq.c @@ -407,6 +407,11 @@ static const struct regmap_irq_chip s2mps14_irq_chip = { S2MPS1X_IRQ_CHIP_COMMON_DATA, }; +static const struct regmap_irq_chip s2mps15_irq_chip = { + .name = "s2mps15", + S2MPS1X_IRQ_CHIP_COMMON_DATA, +}; + static const struct regmap_irq_chip s2mpu02_irq_chip = { .name = "s2mpu02", .irqs = s2mpu02_irqs, @@ -466,6 +471,9 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic) case S2MPS14X: sec_irq_chip = &s2mps14_irq_chip; break; + case S2MPS15X: + sec_irq_chip = &s2mps15_irq_chip; + break; case S2MPU02: sec_irq_chip = &s2mpu02_irq_chip; break; diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h index a06098639399..6bc4bcd488ac 100644 --- a/include/linux/mfd/samsung/core.h +++ b/include/linux/mfd/samsung/core.h @@ -44,6 +44,7 @@ enum sec_device_type { S2MPS11X, S2MPS13X, S2MPS14X, + S2MPS15X, S2MPU02, }; diff --git a/include/linux/mfd/samsung/s2mps15.h b/include/linux/mfd/samsung/s2mps15.h new file mode 100644 index ..36d35287c3c0 --- /dev/null +++ b/include/linux/mfd/samsung/s2mps15.h @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the
Re: [PATCH v4 2/4] mfd: sec: Add support for S2MPS15 PMIC
On Thu, 29 Oct 2015, Alim Akhtar wrote: > From: Thomas Abraham > > Add support for S2MPS15 PMIC which is similar to S2MPS11 PMIC. The S2MPS15 > PMIC supports 27 LDO regulators, 10 buck regulators, RTC, three 32.768KHz > clock outputs and battery charger. This patch adds initial support for > LDO and buck regulators of S2MPS15 device. > > Signed-off-by: Thomas Abraham > Signed-off-by: Alim Akhtar > [Alim: Added s2mps15_devs like rtc and clk and related changes] > Reviewed-by: Krzysztof Kozlowski > --- > drivers/mfd/sec-core.c | 31 +++ > drivers/mfd/sec-irq.c |8 ++ > include/linux/mfd/samsung/core.h|1 + > include/linux/mfd/samsung/s2mps15.h | 158 > +++ > 4 files changed, 198 insertions(+) > create mode 100644 include/linux/mfd/samsung/s2mps15.h Looks good now. Acked-by: Lee Jones > diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c > index 2626fc0b5b8c..fbb8a5715597 100644 > --- a/drivers/mfd/sec-core.c > +++ b/drivers/mfd/sec-core.c > @@ -29,6 +29,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -96,6 +97,17 @@ static const struct mfd_cell s2mps14_devs[] = { > } > }; > > +static const struct mfd_cell s2mps15_devs[] = { > + { > + .name = "s2mps15-regulator", > + }, { > + .name = "s2mps15-rtc", > + }, { > + .name = "s2mps13-clk", > + .of_compatible = "samsung,s2mps13-clk", > + }, > +}; > + > static const struct mfd_cell s2mpa01_devs[] = { > { > .name = "s2mpa01-pmic", > @@ -125,6 +137,9 @@ static const struct of_device_id sec_dt_match[] = { > .compatible = "samsung,s2mps14-pmic", > .data = (void *)S2MPS14X, > }, { > + .compatible = "samsung,s2mps15-pmic", > + .data = (void *)S2MPS15X, > + }, { > .compatible = "samsung,s2mpa01-pmic", > .data = (void *)S2MPA01, > }, { > @@ -226,6 +241,15 @@ static const struct regmap_config s2mps14_regmap_config > = { > .cache_type = REGCACHE_FLAT, > }; > > +static const struct regmap_config s2mps15_regmap_config = { > + .reg_bits = 8, > + .val_bits = 8, > + > + .max_register = S2MPS15_REG_LDODSCH4, > + .volatile_reg = s2mps11_volatile, > + .cache_type = REGCACHE_FLAT, > +}; > + > static const struct regmap_config s2mpu02_regmap_config = { > .reg_bits = 8, > .val_bits = 8, > @@ -387,6 +411,9 @@ static int sec_pmic_probe(struct i2c_client *i2c, > case S2MPS14X: > regmap = &s2mps14_regmap_config; > break; > + case S2MPS15X: > + regmap = &s2mps15_regmap_config; > + break; > case S5M8763X: > regmap = &s5m8763_regmap_config; > break; > @@ -445,6 +472,10 @@ static int sec_pmic_probe(struct i2c_client *i2c, > sec_devs = s2mps14_devs; > num_sec_devs = ARRAY_SIZE(s2mps14_devs); > break; > + case S2MPS15X: > + sec_devs = s2mps15_devs; > + num_sec_devs = ARRAY_SIZE(s2mps15_devs); > + break; > case S2MPU02: > sec_devs = s2mpu02_devs; > num_sec_devs = ARRAY_SIZE(s2mpu02_devs); > diff --git a/drivers/mfd/sec-irq.c b/drivers/mfd/sec-irq.c > index 806fa8dbb22d..d77de431cc50 100644 > --- a/drivers/mfd/sec-irq.c > +++ b/drivers/mfd/sec-irq.c > @@ -407,6 +407,11 @@ static const struct regmap_irq_chip s2mps14_irq_chip = { > S2MPS1X_IRQ_CHIP_COMMON_DATA, > }; > > +static const struct regmap_irq_chip s2mps15_irq_chip = { > + .name = "s2mps15", > + S2MPS1X_IRQ_CHIP_COMMON_DATA, > +}; > + > static const struct regmap_irq_chip s2mpu02_irq_chip = { > .name = "s2mpu02", > .irqs = s2mpu02_irqs, > @@ -466,6 +471,9 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic) > case S2MPS14X: > sec_irq_chip = &s2mps14_irq_chip; > break; > + case S2MPS15X: > + sec_irq_chip = &s2mps15_irq_chip; > + break; > case S2MPU02: > sec_irq_chip = &s2mpu02_irq_chip; > break; > diff --git a/include/linux/mfd/samsung/core.h > b/include/linux/mfd/samsung/core.h > index a06098639399..6bc4bcd488ac 100644 > --- a/include/linux/mfd/samsung/core.h > +++ b/include/linux/mfd/samsung/core.h > @@ -44,6 +44,7 @@ enum sec_device_type { > S2MPS11X, > S2MPS13X, > S2MPS14X, > + S2MPS15X, > S2MPU02, > }; > > diff --git a/include/linux/mfd/samsung/s2mps15.h > b/include/linux/mfd/samsung/s2mps15.h > new file mode 100644 > index ..36d35287c3c0 > --- /dev/null > +++ b/include/linux/mfd/samsung/s2mps15.h > @@ -0,0 +1,158 @@ > +/* > + * Copyright (c) 2015 Samsung Electronics Co., Ltd > + * http://www.samsung.com > + * > + * This program is free software; you can redistribute it an
[PATCH v4 2/4] mfd: sec: Add support for S2MPS15 PMIC
From: Thomas Abraham Add support for S2MPS15 PMIC which is similar to S2MPS11 PMIC. The S2MPS15 PMIC supports 27 LDO regulators, 10 buck regulators, RTC, three 32.768KHz clock outputs and battery charger. This patch adds initial support for LDO and buck regulators of S2MPS15 device. Signed-off-by: Thomas Abraham Signed-off-by: Alim Akhtar [Alim: Added s2mps15_devs like rtc and clk and related changes] Reviewed-by: Krzysztof Kozlowski --- drivers/mfd/sec-core.c | 31 +++ drivers/mfd/sec-irq.c |8 ++ include/linux/mfd/samsung/core.h|1 + include/linux/mfd/samsung/s2mps15.h | 158 +++ 4 files changed, 198 insertions(+) create mode 100644 include/linux/mfd/samsung/s2mps15.h diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c index 2626fc0b5b8c..fbb8a5715597 100644 --- a/drivers/mfd/sec-core.c +++ b/drivers/mfd/sec-core.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include #include @@ -96,6 +97,17 @@ static const struct mfd_cell s2mps14_devs[] = { } }; +static const struct mfd_cell s2mps15_devs[] = { + { + .name = "s2mps15-regulator", + }, { + .name = "s2mps15-rtc", + }, { + .name = "s2mps13-clk", + .of_compatible = "samsung,s2mps13-clk", + }, +}; + static const struct mfd_cell s2mpa01_devs[] = { { .name = "s2mpa01-pmic", @@ -125,6 +137,9 @@ static const struct of_device_id sec_dt_match[] = { .compatible = "samsung,s2mps14-pmic", .data = (void *)S2MPS14X, }, { + .compatible = "samsung,s2mps15-pmic", + .data = (void *)S2MPS15X, + }, { .compatible = "samsung,s2mpa01-pmic", .data = (void *)S2MPA01, }, { @@ -226,6 +241,15 @@ static const struct regmap_config s2mps14_regmap_config = { .cache_type = REGCACHE_FLAT, }; +static const struct regmap_config s2mps15_regmap_config = { + .reg_bits = 8, + .val_bits = 8, + + .max_register = S2MPS15_REG_LDODSCH4, + .volatile_reg = s2mps11_volatile, + .cache_type = REGCACHE_FLAT, +}; + static const struct regmap_config s2mpu02_regmap_config = { .reg_bits = 8, .val_bits = 8, @@ -387,6 +411,9 @@ static int sec_pmic_probe(struct i2c_client *i2c, case S2MPS14X: regmap = &s2mps14_regmap_config; break; + case S2MPS15X: + regmap = &s2mps15_regmap_config; + break; case S5M8763X: regmap = &s5m8763_regmap_config; break; @@ -445,6 +472,10 @@ static int sec_pmic_probe(struct i2c_client *i2c, sec_devs = s2mps14_devs; num_sec_devs = ARRAY_SIZE(s2mps14_devs); break; + case S2MPS15X: + sec_devs = s2mps15_devs; + num_sec_devs = ARRAY_SIZE(s2mps15_devs); + break; case S2MPU02: sec_devs = s2mpu02_devs; num_sec_devs = ARRAY_SIZE(s2mpu02_devs); diff --git a/drivers/mfd/sec-irq.c b/drivers/mfd/sec-irq.c index 806fa8dbb22d..d77de431cc50 100644 --- a/drivers/mfd/sec-irq.c +++ b/drivers/mfd/sec-irq.c @@ -407,6 +407,11 @@ static const struct regmap_irq_chip s2mps14_irq_chip = { S2MPS1X_IRQ_CHIP_COMMON_DATA, }; +static const struct regmap_irq_chip s2mps15_irq_chip = { + .name = "s2mps15", + S2MPS1X_IRQ_CHIP_COMMON_DATA, +}; + static const struct regmap_irq_chip s2mpu02_irq_chip = { .name = "s2mpu02", .irqs = s2mpu02_irqs, @@ -466,6 +471,9 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic) case S2MPS14X: sec_irq_chip = &s2mps14_irq_chip; break; + case S2MPS15X: + sec_irq_chip = &s2mps15_irq_chip; + break; case S2MPU02: sec_irq_chip = &s2mpu02_irq_chip; break; diff --git a/include/linux/mfd/samsung/core.h b/include/linux/mfd/samsung/core.h index a06098639399..6bc4bcd488ac 100644 --- a/include/linux/mfd/samsung/core.h +++ b/include/linux/mfd/samsung/core.h @@ -44,6 +44,7 @@ enum sec_device_type { S2MPS11X, S2MPS13X, S2MPS14X, + S2MPS15X, S2MPU02, }; diff --git a/include/linux/mfd/samsung/s2mps15.h b/include/linux/mfd/samsung/s2mps15.h new file mode 100644 index ..36d35287c3c0 --- /dev/null +++ b/include/linux/mfd/samsung/s2mps15.h @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd + * http://www.samsung.com + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope