aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd/sec-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mfd/sec-core.c')
-rw-r--r--drivers/mfd/sec-core.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c
index 989076d6cb83..7c4e7be17f1e 100644
--- a/drivers/mfd/sec-core.c
+++ b/drivers/mfd/sec-core.c
@@ -29,6 +29,7 @@
29#include <linux/mfd/samsung/s2mps11.h> 29#include <linux/mfd/samsung/s2mps11.h>
30#include <linux/mfd/samsung/s2mps13.h> 30#include <linux/mfd/samsung/s2mps13.h>
31#include <linux/mfd/samsung/s2mps14.h> 31#include <linux/mfd/samsung/s2mps14.h>
32#include <linux/mfd/samsung/s2mps15.h>
32#include <linux/mfd/samsung/s2mpu02.h> 33#include <linux/mfd/samsung/s2mpu02.h>
33#include <linux/mfd/samsung/s5m8763.h> 34#include <linux/mfd/samsung/s5m8763.h>
34#include <linux/mfd/samsung/s5m8767.h> 35#include <linux/mfd/samsung/s5m8767.h>
@@ -96,6 +97,17 @@ static const struct mfd_cell s2mps14_devs[] = {
96 } 97 }
97}; 98};
98 99
100static const struct mfd_cell s2mps15_devs[] = {
101 {
102 .name = "s2mps15-regulator",
103 }, {
104 .name = "s2mps15-rtc",
105 }, {
106 .name = "s2mps13-clk",
107 .of_compatible = "samsung,s2mps13-clk",
108 },
109};
110
99static const struct mfd_cell s2mpa01_devs[] = { 111static const struct mfd_cell s2mpa01_devs[] = {
100 { 112 {
101 .name = "s2mpa01-pmic", 113 .name = "s2mpa01-pmic",
@@ -122,6 +134,9 @@ static const struct of_device_id sec_dt_match[] = {
122 .compatible = "samsung,s2mps14-pmic", 134 .compatible = "samsung,s2mps14-pmic",
123 .data = (void *)S2MPS14X, 135 .data = (void *)S2MPS14X,
124 }, { 136 }, {
137 .compatible = "samsung,s2mps15-pmic",
138 .data = (void *)S2MPS15X,
139 }, {
125 .compatible = "samsung,s2mpa01-pmic", 140 .compatible = "samsung,s2mpa01-pmic",
126 .data = (void *)S2MPA01, 141 .data = (void *)S2MPA01,
127 }, { 142 }, {
@@ -223,6 +238,15 @@ static const struct regmap_config s2mps14_regmap_config = {
223 .cache_type = REGCACHE_FLAT, 238 .cache_type = REGCACHE_FLAT,
224}; 239};
225 240
241static const struct regmap_config s2mps15_regmap_config = {
242 .reg_bits = 8,
243 .val_bits = 8,
244
245 .max_register = S2MPS15_REG_LDODSCH4,
246 .volatile_reg = s2mps11_volatile,
247 .cache_type = REGCACHE_FLAT,
248};
249
226static const struct regmap_config s2mpu02_regmap_config = { 250static const struct regmap_config s2mpu02_regmap_config = {
227 .reg_bits = 8, 251 .reg_bits = 8,
228 .val_bits = 8, 252 .val_bits = 8,
@@ -384,6 +408,9 @@ static int sec_pmic_probe(struct i2c_client *i2c,
384 case S2MPS14X: 408 case S2MPS14X:
385 regmap = &s2mps14_regmap_config; 409 regmap = &s2mps14_regmap_config;
386 break; 410 break;
411 case S2MPS15X:
412 regmap = &s2mps15_regmap_config;
413 break;
387 case S5M8763X: 414 case S5M8763X:
388 regmap = &s5m8763_regmap_config; 415 regmap = &s5m8763_regmap_config;
389 break; 416 break;
@@ -442,6 +469,10 @@ static int sec_pmic_probe(struct i2c_client *i2c,
442 sec_devs = s2mps14_devs; 469 sec_devs = s2mps14_devs;
443 num_sec_devs = ARRAY_SIZE(s2mps14_devs); 470 num_sec_devs = ARRAY_SIZE(s2mps14_devs);
444 break; 471 break;
472 case S2MPS15X:
473 sec_devs = s2mps15_devs;
474 num_sec_devs = ARRAY_SIZE(s2mps15_devs);
475 break;
445 case S2MPU02: 476 case S2MPU02:
446 sec_devs = s2mpu02_devs; 477 sec_devs = s2mpu02_devs;
447 num_sec_devs = ARRAY_SIZE(s2mpu02_devs); 478 num_sec_devs = ARRAY_SIZE(s2mpu02_devs);