2 * Driver for Regulator part of Palmas PMIC Chips
4 * Copyright 2011-2013 Texas Instruments Inc.
6 * Author: Graeme Gregory <gg@slimlogic.co.uk>
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
15 #include <linux/kernel.h>
16 #include <linux/module.h>
17 #include <linux/init.h>
18 #include <linux/err.h>
19 #include <linux/platform_device.h>
20 #include <linux/regulator/driver.h>
21 #include <linux/regulator/machine.h>
22 #include <linux/slab.h>
23 #include <linux/regmap.h>
24 #include <linux/mfd/palmas.h>
26 #include <linux/of_platform.h>
27 #include <linux/regulator/of_regulator.h>
37 static const struct regs_info palmas_regs_info[] = {
41 .vsel_addr = PALMAS_SMPS12_VOLTAGE,
42 .ctrl_addr = PALMAS_SMPS12_CTRL,
43 .tstep_addr = PALMAS_SMPS12_TSTEP,
48 .vsel_addr = PALMAS_SMPS12_VOLTAGE,
49 .ctrl_addr = PALMAS_SMPS12_CTRL,
50 .tstep_addr = PALMAS_SMPS12_TSTEP,
55 .vsel_addr = PALMAS_SMPS3_VOLTAGE,
56 .ctrl_addr = PALMAS_SMPS3_CTRL,
61 .vsel_addr = PALMAS_SMPS45_VOLTAGE,
62 .ctrl_addr = PALMAS_SMPS45_CTRL,
63 .tstep_addr = PALMAS_SMPS45_TSTEP,
68 .vsel_addr = PALMAS_SMPS45_VOLTAGE,
69 .ctrl_addr = PALMAS_SMPS45_CTRL,
70 .tstep_addr = PALMAS_SMPS45_TSTEP,
75 .vsel_addr = PALMAS_SMPS6_VOLTAGE,
76 .ctrl_addr = PALMAS_SMPS6_CTRL,
77 .tstep_addr = PALMAS_SMPS6_TSTEP,
82 .vsel_addr = PALMAS_SMPS7_VOLTAGE,
83 .ctrl_addr = PALMAS_SMPS7_CTRL,
88 .vsel_addr = PALMAS_SMPS8_VOLTAGE,
89 .ctrl_addr = PALMAS_SMPS8_CTRL,
90 .tstep_addr = PALMAS_SMPS8_TSTEP,
95 .vsel_addr = PALMAS_SMPS9_VOLTAGE,
96 .ctrl_addr = PALMAS_SMPS9_CTRL,
100 .sname = "smps10-in",
105 .vsel_addr = PALMAS_LDO1_VOLTAGE,
106 .ctrl_addr = PALMAS_LDO1_CTRL,
111 .vsel_addr = PALMAS_LDO2_VOLTAGE,
112 .ctrl_addr = PALMAS_LDO2_CTRL,
117 .vsel_addr = PALMAS_LDO3_VOLTAGE,
118 .ctrl_addr = PALMAS_LDO3_CTRL,
123 .vsel_addr = PALMAS_LDO4_VOLTAGE,
124 .ctrl_addr = PALMAS_LDO4_CTRL,
129 .vsel_addr = PALMAS_LDO5_VOLTAGE,
130 .ctrl_addr = PALMAS_LDO5_CTRL,
135 .vsel_addr = PALMAS_LDO6_VOLTAGE,
136 .ctrl_addr = PALMAS_LDO6_CTRL,
141 .vsel_addr = PALMAS_LDO7_VOLTAGE,
142 .ctrl_addr = PALMAS_LDO7_CTRL,
147 .vsel_addr = PALMAS_LDO8_VOLTAGE,
148 .ctrl_addr = PALMAS_LDO8_CTRL,
153 .vsel_addr = PALMAS_LDO9_VOLTAGE,
154 .ctrl_addr = PALMAS_LDO9_CTRL,
159 .vsel_addr = PALMAS_LDOLN_VOLTAGE,
160 .ctrl_addr = PALMAS_LDOLN_CTRL,
164 .sname = "ldousb-in",
165 .vsel_addr = PALMAS_LDOUSB_VOLTAGE,
166 .ctrl_addr = PALMAS_LDOUSB_CTRL,
170 #define SMPS_CTRL_MODE_OFF 0x00
171 #define SMPS_CTRL_MODE_ON 0x01
172 #define SMPS_CTRL_MODE_ECO 0x02
173 #define SMPS_CTRL_MODE_PWM 0x03
175 /* These values are derived from the data sheet. And are the number of steps
176 * where there is a voltage change, the ranges at beginning and end of register
177 * max/min values where there are no change are ommitted.
179 * So they are basically (maxV-minV)/stepV
181 #define PALMAS_SMPS_NUM_VOLTAGES 116
182 #define PALMAS_SMPS10_NUM_VOLTAGES 2
183 #define PALMAS_LDO_NUM_VOLTAGES 50
185 #define SMPS10_VSEL (1<<3)
186 #define SMPS10_BOOST_EN (1<<2)
187 #define SMPS10_BYPASS_EN (1<<1)
188 #define SMPS10_SWITCH_EN (1<<0)
190 #define REGULATOR_SLAVE 0
192 static int palmas_smps_read(struct palmas *palmas, unsigned int reg,
197 addr = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, reg);
199 return regmap_read(palmas->regmap[REGULATOR_SLAVE], addr, dest);
202 static int palmas_smps_write(struct palmas *palmas, unsigned int reg,
207 addr = PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE, reg);
209 return regmap_write(palmas->regmap[REGULATOR_SLAVE], addr, value);
212 static int palmas_ldo_read(struct palmas *palmas, unsigned int reg,
217 addr = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE, reg);
219 return regmap_read(palmas->regmap[REGULATOR_SLAVE], addr, dest);
222 static int palmas_ldo_write(struct palmas *palmas, unsigned int reg,
227 addr = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE, reg);
229 return regmap_write(palmas->regmap[REGULATOR_SLAVE], addr, value);
232 static int palmas_is_enabled_smps(struct regulator_dev *dev)
234 struct palmas_pmic *pmic = rdev_get_drvdata(dev);
235 int id = rdev_get_id(dev);
238 palmas_smps_read(pmic->palmas, palmas_regs_info[id].ctrl_addr, ®);
240 reg &= PALMAS_SMPS12_CTRL_STATUS_MASK;
241 reg >>= PALMAS_SMPS12_CTRL_STATUS_SHIFT;
246 static int palmas_enable_smps(struct regulator_dev *dev)
248 struct palmas_pmic *pmic = rdev_get_drvdata(dev);
249 int id = rdev_get_id(dev);
252 palmas_smps_read(pmic->palmas, palmas_regs_info[id].ctrl_addr, ®);
254 reg &= ~PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
255 reg |= SMPS_CTRL_MODE_ON;
257 palmas_smps_write(pmic->palmas, palmas_regs_info[id].ctrl_addr, reg);
262 static int palmas_disable_smps(struct regulator_dev *dev)
264 struct palmas_pmic *pmic = rdev_get_drvdata(dev);
265 int id = rdev_get_id(dev);
268 palmas_smps_read(pmic->palmas, palmas_regs_info[id].ctrl_addr, ®);
270 reg &= ~PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
272 palmas_smps_write(pmic->palmas, palmas_regs_info[id].ctrl_addr, reg);
278 static int palmas_set_mode_smps(struct regulator_dev *dev, unsigned int mode)
280 struct palmas_pmic *pmic = rdev_get_drvdata(dev);
281 int id = rdev_get_id(dev);
284 palmas_smps_read(pmic->palmas, palmas_regs_info[id].ctrl_addr, ®);
285 reg &= ~PALMAS_SMPS12_CTRL_MODE_ACTIVE_MASK;
288 case REGULATOR_MODE_NORMAL:
289 reg |= SMPS_CTRL_MODE_ON;
291 case REGULATOR_MODE_IDLE:
292 reg |= SMPS_CTRL_MODE_ECO;
294 case REGULATOR_MODE_FAST:
295 reg |= SMPS_CTRL_MODE_PWM;
300 palmas_smps_write(pmic->palmas, palmas_regs_info[id].ctrl_addr, reg);
305 static unsigned int palmas_get_mode_smps(struct regulator_dev *dev)
307 struct palmas_pmic *pmic = rdev_get_drvdata(dev);
308 int id = rdev_get_id(dev);
311 palmas_smps_read(pmic->palmas, palmas_regs_info[id].ctrl_addr, ®);
312 reg &= PALMAS_SMPS12_CTRL_STATUS_MASK;
313 reg >>= PALMAS_SMPS12_CTRL_STATUS_SHIFT;
316 case SMPS_CTRL_MODE_ON:
317 return REGULATOR_MODE_NORMAL;
318 case SMPS_CTRL_MODE_ECO:
319 return REGULATOR_MODE_IDLE;
320 case SMPS_CTRL_MODE_PWM:
321 return REGULATOR_MODE_FAST;
327 static int palmas_list_voltage_smps(struct regulator_dev *dev,
330 struct palmas_pmic *pmic = rdev_get_drvdata(dev);
331 int id = rdev_get_id(dev);
334 /* Read the multiplier set in VSEL register to return
335 * the correct voltage.
342 else if (selector < 6)
343 return 500000 * mult;
345 /* Voltage is linear mapping starting from selector 6,
346 * volt = (0.49V + ((selector - 5) * 0.01V)) * RANGE
347 * RANGE is either x1 or x2
349 return (490000 + ((selector - 5) * 10000)) * mult;
352 static int palmas_map_voltage_smps(struct regulator_dev *rdev,
353 int min_uV, int max_uV)
355 struct palmas_pmic *pmic = rdev_get_drvdata(rdev);
356 int id = rdev_get_id(rdev);
362 if (pmic->range[id]) { /* RANGE is x2 */
363 if (min_uV < 1000000)
365 ret = DIV_ROUND_UP(min_uV - 1000000, 20000) + 6;
366 } else { /* RANGE is x1 */
369 ret = DIV_ROUND_UP(min_uV - 500000, 10000) + 6;
372 /* Map back into a voltage to verify we're still in bounds */
373 voltage = palmas_list_voltage_smps(rdev, ret);
374 if (voltage < min_uV || voltage > max_uV)
380 static struct regulator_ops palmas_ops_smps = {
381 .is_enabled = palmas_is_enabled_smps,
382 .enable = palmas_enable_smps,
383 .disable = palmas_disable_smps,
384 .set_mode = palmas_set_mode_smps,
385 .get_mode = palmas_get_mode_smps,
386 .get_voltage_sel = regulator_get_voltage_sel_regmap,
387 .set_voltage_sel = regulator_set_voltage_sel_regmap,
388 .list_voltage = palmas_list_voltage_smps,
389 .map_voltage = palmas_map_voltage_smps,
392 static struct regulator_ops palmas_ops_smps10 = {
393 .is_enabled = regulator_is_enabled_regmap,
394 .enable = regulator_enable_regmap,
395 .disable = regulator_disable_regmap,
396 .get_voltage_sel = regulator_get_voltage_sel_regmap,
397 .set_voltage_sel = regulator_set_voltage_sel_regmap,
398 .list_voltage = regulator_list_voltage_linear,
399 .map_voltage = regulator_map_voltage_linear,
402 static int palmas_is_enabled_ldo(struct regulator_dev *dev)
404 struct palmas_pmic *pmic = rdev_get_drvdata(dev);
405 int id = rdev_get_id(dev);
408 palmas_ldo_read(pmic->palmas, palmas_regs_info[id].ctrl_addr, ®);
410 reg &= PALMAS_LDO1_CTRL_STATUS;
415 static struct regulator_ops palmas_ops_ldo = {
416 .is_enabled = palmas_is_enabled_ldo,
417 .enable = regulator_enable_regmap,
418 .disable = regulator_disable_regmap,
419 .get_voltage_sel = regulator_get_voltage_sel_regmap,
420 .set_voltage_sel = regulator_set_voltage_sel_regmap,
421 .list_voltage = regulator_list_voltage_linear,
422 .map_voltage = regulator_map_voltage_linear,
426 * setup the hardware based sleep configuration of the SMPS/LDO regulators
427 * from the platform data. This is different to the software based control
428 * supported by the regulator framework as it is controlled by toggling
429 * pins on the PMIC such as PREQ, SYSEN, ...
431 static int palmas_smps_init(struct palmas *palmas, int id,
432 struct palmas_reg_init *reg_init)
438 addr = palmas_regs_info[id].ctrl_addr;
440 ret = palmas_smps_read(palmas, addr, ®);
445 case PALMAS_REG_SMPS10:
446 if (reg_init->mode_sleep) {
447 reg &= ~PALMAS_SMPS10_CTRL_MODE_SLEEP_MASK;
448 reg |= reg_init->mode_sleep <<
449 PALMAS_SMPS10_CTRL_MODE_SLEEP_SHIFT;
453 if (reg_init->warm_reset)
454 reg |= PALMAS_SMPS12_CTRL_WR_S;
456 if (reg_init->roof_floor)
457 reg |= PALMAS_SMPS12_CTRL_ROOF_FLOOR_EN;
459 if (reg_init->mode_sleep) {
460 reg &= ~PALMAS_SMPS12_CTRL_MODE_SLEEP_MASK;
461 reg |= reg_init->mode_sleep <<
462 PALMAS_SMPS12_CTRL_MODE_SLEEP_SHIFT;
466 ret = palmas_smps_write(palmas, addr, reg);
470 if (palmas_regs_info[id].tstep_addr && reg_init->tstep) {
471 addr = palmas_regs_info[id].tstep_addr;
473 reg = reg_init->tstep & PALMAS_SMPS12_TSTEP_TSTEP_MASK;
475 ret = palmas_smps_write(palmas, addr, reg);
480 if (palmas_regs_info[id].vsel_addr && reg_init->vsel) {
481 addr = palmas_regs_info[id].vsel_addr;
483 reg = reg_init->vsel;
485 ret = palmas_smps_write(palmas, addr, reg);
494 static int palmas_ldo_init(struct palmas *palmas, int id,
495 struct palmas_reg_init *reg_init)
501 addr = palmas_regs_info[id].ctrl_addr;
503 ret = palmas_ldo_read(palmas, addr, ®);
507 if (reg_init->warm_reset)
508 reg |= PALMAS_LDO1_CTRL_WR_S;
510 if (reg_init->mode_sleep)
511 reg |= PALMAS_LDO1_CTRL_MODE_SLEEP;
513 ret = palmas_ldo_write(palmas, addr, reg);
520 static struct of_regulator_match palmas_matches[] = {
521 { .name = "smps12", },
522 { .name = "smps123", },
523 { .name = "smps3", },
524 { .name = "smps45", },
525 { .name = "smps457", },
526 { .name = "smps6", },
527 { .name = "smps7", },
528 { .name = "smps8", },
529 { .name = "smps9", },
530 { .name = "smps10", },
540 { .name = "ldoln", },
541 { .name = "ldousb", },
544 static void palmas_dt_to_pdata(struct device *dev,
545 struct device_node *node,
546 struct palmas_pmic_platform_data *pdata)
548 struct device_node *regulators;
552 node = of_node_get(node);
553 regulators = of_find_node_by_name(node, "regulators");
555 dev_info(dev, "regulator node not found\n");
559 ret = of_regulator_match(dev, regulators, palmas_matches,
561 of_node_put(regulators);
563 dev_err(dev, "Error parsing regulator init data: %d\n", ret);
567 for (idx = 0; idx < PALMAS_NUM_REGS; idx++) {
568 if (!palmas_matches[idx].init_data ||
569 !palmas_matches[idx].of_node)
572 pdata->reg_data[idx] = palmas_matches[idx].init_data;
574 pdata->reg_init[idx] = devm_kzalloc(dev,
575 sizeof(struct palmas_reg_init), GFP_KERNEL);
577 pdata->reg_init[idx]->warm_reset =
578 of_property_read_bool(palmas_matches[idx].of_node,
581 pdata->reg_init[idx]->roof_floor =
582 of_property_read_bool(palmas_matches[idx].of_node,
585 ret = of_property_read_u32(palmas_matches[idx].of_node,
586 "ti,mode-sleep", &prop);
588 pdata->reg_init[idx]->mode_sleep = prop;
590 ret = of_property_read_u32(palmas_matches[idx].of_node,
593 pdata->reg_init[idx]->tstep = prop;
595 ret = of_property_read_bool(palmas_matches[idx].of_node,
598 pdata->reg_init[idx]->vsel =
599 PALMAS_SMPS12_VOLTAGE_RANGE;
602 pdata->ldo6_vibrator = of_property_read_bool(node, "ti,ldo6-vibrator");
606 static int palmas_regulators_probe(struct platform_device *pdev)
608 struct palmas *palmas = dev_get_drvdata(pdev->dev.parent);
609 struct palmas_pmic_platform_data *pdata = pdev->dev.platform_data;
610 struct device_node *node = pdev->dev.of_node;
611 struct regulator_dev *rdev;
612 struct regulator_config config = { };
613 struct palmas_pmic *pmic;
614 struct palmas_reg_init *reg_init;
616 unsigned int addr, reg;
618 if (node && !pdata) {
619 pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL);
624 palmas_dt_to_pdata(&pdev->dev, node, pdata);
627 pmic = devm_kzalloc(&pdev->dev, sizeof(*pmic), GFP_KERNEL);
631 pmic->dev = &pdev->dev;
632 pmic->palmas = palmas;
634 platform_set_drvdata(pdev, pmic);
636 ret = palmas_smps_read(palmas, PALMAS_SMPS_CTRL, ®);
640 if (reg & PALMAS_SMPS_CTRL_SMPS12_SMPS123_EN)
643 if (reg & PALMAS_SMPS_CTRL_SMPS45_SMPS457_EN)
646 config.regmap = palmas->regmap[REGULATOR_SLAVE];
647 config.dev = &pdev->dev;
648 config.driver_data = pmic;
650 for (id = 0; id < PALMAS_REG_LDO1; id++) {
653 * Miss out regulators which are not available due
654 * to slaving configurations.
657 case PALMAS_REG_SMPS12:
658 case PALMAS_REG_SMPS3:
662 case PALMAS_REG_SMPS123:
666 case PALMAS_REG_SMPS45:
667 case PALMAS_REG_SMPS7:
671 case PALMAS_REG_SMPS457:
676 /* Initialise sleep/init values from platform data */
677 if (pdata && pdata->reg_init[id]) {
678 reg_init = pdata->reg_init[id];
679 ret = palmas_smps_init(palmas, id, reg_init);
681 goto err_unregister_regulator;
684 /* Register the regulators */
685 pmic->desc[id].name = palmas_regs_info[id].name;
686 pmic->desc[id].id = id;
689 case PALMAS_REG_SMPS10:
690 pmic->desc[id].n_voltages = PALMAS_SMPS10_NUM_VOLTAGES;
691 pmic->desc[id].ops = &palmas_ops_smps10;
692 pmic->desc[id].vsel_reg =
693 PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
695 pmic->desc[id].vsel_mask = SMPS10_VSEL;
696 pmic->desc[id].enable_reg =
697 PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
698 PALMAS_SMPS10_STATUS);
699 pmic->desc[id].enable_mask = SMPS10_BOOST_EN;
700 pmic->desc[id].min_uV = 3750000;
701 pmic->desc[id].uV_step = 1250000;
705 * Read and store the RANGE bit for later use
706 * This must be done before regulator is probed,
707 * otherwise we error in probe with unsupportable ranges.
709 addr = palmas_regs_info[id].vsel_addr;
711 ret = palmas_smps_read(pmic->palmas, addr, ®);
713 goto err_unregister_regulator;
714 if (reg & PALMAS_SMPS12_VOLTAGE_RANGE)
717 pmic->desc[id].ops = &palmas_ops_smps;
718 pmic->desc[id].n_voltages = PALMAS_SMPS_NUM_VOLTAGES;
719 pmic->desc[id].vsel_reg =
720 PALMAS_BASE_TO_REG(PALMAS_SMPS_BASE,
721 palmas_regs_info[id].vsel_addr);
722 pmic->desc[id].vsel_mask =
723 PALMAS_SMPS12_VOLTAGE_VSEL_MASK;
726 pmic->desc[id].type = REGULATOR_VOLTAGE;
727 pmic->desc[id].owner = THIS_MODULE;
730 config.init_data = pdata->reg_data[id];
732 config.init_data = NULL;
734 pmic->desc[id].supply_name = palmas_regs_info[id].sname;
735 config.of_node = palmas_matches[id].of_node;
737 rdev = regulator_register(&pmic->desc[id], &config);
740 "failed to register %s regulator\n",
743 goto err_unregister_regulator;
746 /* Save regulator for cleanup */
747 pmic->rdev[id] = rdev;
750 /* Start this loop from the id left from previous loop */
751 for (; id < PALMAS_NUM_REGS; id++) {
753 /* Miss out regulators which are not available due
754 * to alternate functions.
757 /* Register the regulators */
758 pmic->desc[id].name = palmas_regs_info[id].name;
759 pmic->desc[id].id = id;
760 pmic->desc[id].n_voltages = PALMAS_LDO_NUM_VOLTAGES;
762 pmic->desc[id].ops = &palmas_ops_ldo;
764 pmic->desc[id].type = REGULATOR_VOLTAGE;
765 pmic->desc[id].owner = THIS_MODULE;
766 pmic->desc[id].min_uV = 900000;
767 pmic->desc[id].uV_step = 50000;
768 pmic->desc[id].linear_min_sel = 1;
769 pmic->desc[id].vsel_reg = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
770 palmas_regs_info[id].vsel_addr);
771 pmic->desc[id].vsel_mask = PALMAS_LDO1_VOLTAGE_VSEL_MASK;
772 pmic->desc[id].enable_reg = PALMAS_BASE_TO_REG(PALMAS_LDO_BASE,
773 palmas_regs_info[id].ctrl_addr);
774 pmic->desc[id].enable_mask = PALMAS_LDO1_CTRL_MODE_ACTIVE;
777 config.init_data = pdata->reg_data[id];
779 config.init_data = NULL;
781 pmic->desc[id].supply_name = palmas_regs_info[id].sname;
782 config.of_node = palmas_matches[id].of_node;
784 rdev = regulator_register(&pmic->desc[id], &config);
787 "failed to register %s regulator\n",
790 goto err_unregister_regulator;
793 /* Save regulator for cleanup */
794 pmic->rdev[id] = rdev;
796 /* Initialise sleep/init values from platform data */
798 reg_init = pdata->reg_init[id];
800 ret = palmas_ldo_init(palmas, id, reg_init);
802 regulator_unregister(pmic->rdev[id]);
803 goto err_unregister_regulator;
811 err_unregister_regulator:
813 regulator_unregister(pmic->rdev[id]);
817 static int palmas_regulators_remove(struct platform_device *pdev)
819 struct palmas_pmic *pmic = platform_get_drvdata(pdev);
822 for (id = 0; id < PALMAS_NUM_REGS; id++)
823 regulator_unregister(pmic->rdev[id]);
827 static struct of_device_id of_palmas_match_tbl[] = {
828 { .compatible = "ti,palmas-pmic", },
829 { .compatible = "ti,twl6035-pmic", },
830 { .compatible = "ti,twl6036-pmic", },
831 { .compatible = "ti,twl6037-pmic", },
832 { .compatible = "ti,tps65913-pmic", },
833 { .compatible = "ti,tps65914-pmic", },
834 { .compatible = "ti,tps80036-pmic", },
838 static struct platform_driver palmas_driver = {
840 .name = "palmas-pmic",
841 .of_match_table = of_palmas_match_tbl,
842 .owner = THIS_MODULE,
844 .probe = palmas_regulators_probe,
845 .remove = palmas_regulators_remove,
848 static int __init palmas_init(void)
850 return platform_driver_register(&palmas_driver);
852 subsys_initcall(palmas_init);
854 static void __exit palmas_exit(void)
856 platform_driver_unregister(&palmas_driver);
858 module_exit(palmas_exit);
860 MODULE_AUTHOR("Graeme Gregory <gg@slimlogic.co.uk>");
861 MODULE_DESCRIPTION("Palmas voltage regulator driver");
862 MODULE_LICENSE("GPL");
863 MODULE_ALIAS("platform:palmas-pmic");
864 MODULE_DEVICE_TABLE(of, of_palmas_match_tbl);