diff options
| author | Chanwoo Choi <cw00.choi@samsung.com> | 2014-11-18 03:59:39 -0500 |
|---|---|---|
| committer | Lee Jones <lee.jones@linaro.org> | 2014-11-25 10:55:01 -0500 |
| commit | 3bc2ee91a470c52fb3979c23c12d43283455f10d (patch) | |
| tree | 4b5d8071070aed2e5689fc2b079319938c74abee /drivers/mfd | |
| parent | f114040e3ea6e07372334ade75d1ee0775c355e1 (diff) | |
mfd: sec-core: Add support for S2MPS13 device
This patch adds the support for Samsung S2MPS13 PMIC device to the sec-core MFD
driver. The S2MPS13 is very similar with existing S2MPS14 and includes PMIC/
RTC/CLOCK devices.
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Sangbeom Kim <sbkim73@samsung.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Diffstat (limited to 'drivers/mfd')
| -rw-r--r-- | drivers/mfd/sec-core.c | 16 | ||||
| -rw-r--r-- | drivers/mfd/sec-irq.c | 23 |
2 files changed, 33 insertions, 6 deletions
diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c index dba7e2b6f8e9..d086e8cee1d7 100644 --- a/drivers/mfd/sec-core.c +++ b/drivers/mfd/sec-core.c | |||
| @@ -74,6 +74,15 @@ static const struct mfd_cell s2mps11_devs[] = { | |||
| 74 | } | 74 | } |
| 75 | }; | 75 | }; |
| 76 | 76 | ||
| 77 | static const struct mfd_cell s2mps13_devs[] = { | ||
| 78 | { .name = "s2mps13-pmic", }, | ||
| 79 | { .name = "s2mps13-rtc", }, | ||
| 80 | { | ||
| 81 | .name = "s2mps13-clk", | ||
| 82 | .of_compatible = "samsung,s2mps13-clk", | ||
| 83 | }, | ||
| 84 | }; | ||
| 85 | |||
| 77 | static const struct mfd_cell s2mps14_devs[] = { | 86 | static const struct mfd_cell s2mps14_devs[] = { |
| 78 | { | 87 | { |
| 79 | .name = "s2mps14-pmic", | 88 | .name = "s2mps14-pmic", |
| @@ -108,6 +117,9 @@ static const struct of_device_id sec_dt_match[] = { | |||
| 108 | .compatible = "samsung,s2mps11-pmic", | 117 | .compatible = "samsung,s2mps11-pmic", |
| 109 | .data = (void *)S2MPS11X, | 118 | .data = (void *)S2MPS11X, |
| 110 | }, { | 119 | }, { |
| 120 | .compatible = "samsung,s2mps13-pmic", | ||
| 121 | .data = (void *)S2MPS13X, | ||
| 122 | }, { | ||
| 111 | .compatible = "samsung,s2mps14-pmic", | 123 | .compatible = "samsung,s2mps14-pmic", |
| 112 | .data = (void *)S2MPS14X, | 124 | .data = (void *)S2MPS14X, |
| 113 | }, { | 125 | }, { |
| @@ -378,6 +390,10 @@ static int sec_pmic_probe(struct i2c_client *i2c, | |||
| 378 | sec_devs = s2mps11_devs; | 390 | sec_devs = s2mps11_devs; |
| 379 | num_sec_devs = ARRAY_SIZE(s2mps11_devs); | 391 | num_sec_devs = ARRAY_SIZE(s2mps11_devs); |
| 380 | break; | 392 | break; |
| 393 | case S2MPS13X: | ||
| 394 | sec_devs = s2mps13_devs; | ||
| 395 | num_sec_devs = ARRAY_SIZE(s2mps13_devs); | ||
| 396 | break; | ||
| 381 | case S2MPS14X: | 397 | case S2MPS14X: |
| 382 | sec_devs = s2mps14_devs; | 398 | sec_devs = s2mps14_devs; |
| 383 | num_sec_devs = ARRAY_SIZE(s2mps14_devs); | 399 | num_sec_devs = ARRAY_SIZE(s2mps14_devs); |
diff --git a/drivers/mfd/sec-irq.c b/drivers/mfd/sec-irq.c index f9a57869e3ec..ba86a918c2da 100644 --- a/drivers/mfd/sec-irq.c +++ b/drivers/mfd/sec-irq.c | |||
| @@ -389,14 +389,22 @@ static const struct regmap_irq_chip s2mps11_irq_chip = { | |||
| 389 | .ack_base = S2MPS11_REG_INT1, | 389 | .ack_base = S2MPS11_REG_INT1, |
| 390 | }; | 390 | }; |
| 391 | 391 | ||
| 392 | #define S2MPS1X_IRQ_CHIP_COMMON_DATA \ | ||
| 393 | .irqs = s2mps14_irqs, \ | ||
| 394 | .num_irqs = ARRAY_SIZE(s2mps14_irqs), \ | ||
| 395 | .num_regs = 3, \ | ||
| 396 | .status_base = S2MPS14_REG_INT1, \ | ||
| 397 | .mask_base = S2MPS14_REG_INT1M, \ | ||
| 398 | .ack_base = S2MPS14_REG_INT1 \ | ||
| 399 | |||
| 400 | static const struct regmap_irq_chip s2mps13_irq_chip = { | ||
| 401 | .name = "s2mps13", | ||
| 402 | S2MPS1X_IRQ_CHIP_COMMON_DATA, | ||
| 403 | }; | ||
| 404 | |||
| 392 | static const struct regmap_irq_chip s2mps14_irq_chip = { | 405 | static const struct regmap_irq_chip s2mps14_irq_chip = { |
| 393 | .name = "s2mps14", | 406 | .name = "s2mps14", |
| 394 | .irqs = s2mps14_irqs, | 407 | S2MPS1X_IRQ_CHIP_COMMON_DATA, |
| 395 | .num_irqs = ARRAY_SIZE(s2mps14_irqs), | ||
| 396 | .num_regs = 3, | ||
| 397 | .status_base = S2MPS14_REG_INT1, | ||
| 398 | .mask_base = S2MPS14_REG_INT1M, | ||
| 399 | .ack_base = S2MPS14_REG_INT1, | ||
| 400 | }; | 408 | }; |
| 401 | 409 | ||
| 402 | static const struct regmap_irq_chip s2mpu02_irq_chip = { | 410 | static const struct regmap_irq_chip s2mpu02_irq_chip = { |
| @@ -452,6 +460,9 @@ int sec_irq_init(struct sec_pmic_dev *sec_pmic) | |||
| 452 | case S2MPS11X: | 460 | case S2MPS11X: |
| 453 | sec_irq_chip = &s2mps11_irq_chip; | 461 | sec_irq_chip = &s2mps11_irq_chip; |
| 454 | break; | 462 | break; |
| 463 | case S2MPS13X: | ||
| 464 | sec_irq_chip = &s2mps13_irq_chip; | ||
| 465 | break; | ||
| 455 | case S2MPS14X: | 466 | case S2MPS14X: |
| 456 | sec_irq_chip = &s2mps14_irq_chip; | 467 | sec_irq_chip = &s2mps14_irq_chip; |
| 457 | break; | 468 | break; |
