diff options
Diffstat (limited to 'drivers/mfd/sec-core.c')
-rw-r--r-- | drivers/mfd/sec-core.c | 31 |
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 | ||
100 | static 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 | |||
99 | static const struct mfd_cell s2mpa01_devs[] = { | 111 | static 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 | ||
241 | static 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 | |||
226 | static const struct regmap_config s2mpu02_regmap_config = { | 250 | static 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); |