.. | .. |
---|
1 | 1 | // SPDX-License-Identifier: GPL-2.0 |
---|
2 | | -// Copyright (c) 2018, The Linux Foundation. All rights reserved. |
---|
| 2 | +// Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. |
---|
3 | 3 | |
---|
4 | 4 | #define pr_fmt(fmt) "%s: " fmt, __func__ |
---|
5 | 5 | |
---|
.. | .. |
---|
22 | 22 | |
---|
23 | 23 | /** |
---|
24 | 24 | * enum rpmh_regulator_type - supported RPMh accelerator types |
---|
25 | | - * %VRM: RPMh VRM accelerator which supports voting on enable, voltage, |
---|
| 25 | + * @VRM: RPMh VRM accelerator which supports voting on enable, voltage, |
---|
26 | 26 | * and mode of LDO, SMPS, and BOB type PMIC regulators. |
---|
27 | | - * %XOB: RPMh XOB accelerator which supports voting on the enable state |
---|
| 27 | + * @XOB: RPMh XOB accelerator which supports voting on the enable state |
---|
28 | 28 | * of PMIC regulators. |
---|
29 | 29 | */ |
---|
30 | 30 | enum rpmh_regulator_type { |
---|
.. | .. |
---|
50 | 50 | #define PMIC4_BOB_MODE_AUTO 2 |
---|
51 | 51 | #define PMIC4_BOB_MODE_PWM 3 |
---|
52 | 52 | |
---|
| 53 | +#define PMIC5_LDO_MODE_RETENTION 3 |
---|
| 54 | +#define PMIC5_LDO_MODE_LPM 4 |
---|
| 55 | +#define PMIC5_LDO_MODE_HPM 7 |
---|
| 56 | + |
---|
| 57 | +#define PMIC5_SMPS_MODE_RETENTION 3 |
---|
| 58 | +#define PMIC5_SMPS_MODE_PFM 4 |
---|
| 59 | +#define PMIC5_SMPS_MODE_AUTO 6 |
---|
| 60 | +#define PMIC5_SMPS_MODE_PWM 7 |
---|
| 61 | + |
---|
| 62 | +#define PMIC5_BOB_MODE_PASS 2 |
---|
| 63 | +#define PMIC5_BOB_MODE_PFM 4 |
---|
| 64 | +#define PMIC5_BOB_MODE_AUTO 6 |
---|
| 65 | +#define PMIC5_BOB_MODE_PWM 7 |
---|
| 66 | + |
---|
53 | 67 | /** |
---|
54 | 68 | * struct rpmh_vreg_hw_data - RPMh regulator hardware configurations |
---|
55 | 69 | * @regulator_type: RPMh accelerator type used to manage this |
---|
.. | .. |
---|
72 | 86 | struct rpmh_vreg_hw_data { |
---|
73 | 87 | enum rpmh_regulator_type regulator_type; |
---|
74 | 88 | const struct regulator_ops *ops; |
---|
75 | | - const struct regulator_linear_range voltage_range; |
---|
| 89 | + const struct linear_range voltage_range; |
---|
76 | 90 | int n_voltages; |
---|
77 | 91 | int hpm_min_load_uA; |
---|
78 | 92 | const int *pmic_mode_map; |
---|
.. | .. |
---|
385 | 399 | |
---|
386 | 400 | /** |
---|
387 | 401 | * rpmh_regulator_init_vreg() - initialize all attributes of an rpmh-regulator |
---|
388 | | - * vreg: Pointer to the individual rpmh-regulator resource |
---|
389 | | - * dev: Pointer to the top level rpmh-regulator PMIC device |
---|
390 | | - * node: Pointer to the individual rpmh-regulator resource |
---|
| 402 | + * @vreg: Pointer to the individual rpmh-regulator resource |
---|
| 403 | + * @dev: Pointer to the top level rpmh-regulator PMIC device |
---|
| 404 | + * @node: Pointer to the individual rpmh-regulator resource |
---|
391 | 405 | * device node |
---|
392 | | - * pmic_id: String used to identify the top level rpmh-regulator |
---|
| 406 | + * @pmic_id: String used to identify the top level rpmh-regulator |
---|
393 | 407 | * PMIC device on the board |
---|
394 | | - * pmic_rpmh_data: Pointer to a null-terminated array of rpmh-regulator |
---|
| 408 | + * @pmic_rpmh_data: Pointer to a null-terminated array of rpmh-regulator |
---|
395 | 409 | * resources defined for the top level PMIC device |
---|
396 | 410 | * |
---|
397 | 411 | * Return: 0 on success, errno on failure |
---|
.. | .. |
---|
410 | 424 | vreg->dev = dev; |
---|
411 | 425 | |
---|
412 | 426 | for (rpmh_data = pmic_rpmh_data; rpmh_data->name; rpmh_data++) |
---|
413 | | - if (!strcmp(rpmh_data->name, node->name)) |
---|
| 427 | + if (of_node_name_eq(node, rpmh_data->name)) |
---|
414 | 428 | break; |
---|
415 | 429 | |
---|
416 | 430 | if (!rpmh_data->name) { |
---|
417 | | - dev_err(dev, "Unknown regulator %s\n", node->name); |
---|
| 431 | + dev_err(dev, "Unknown regulator %pOFn\n", node); |
---|
418 | 432 | return -EINVAL; |
---|
419 | 433 | } |
---|
420 | 434 | |
---|
.. | .. |
---|
423 | 437 | |
---|
424 | 438 | vreg->addr = cmd_db_read_addr(rpmh_resource_name); |
---|
425 | 439 | if (!vreg->addr) { |
---|
426 | | - dev_err(dev, "%s: could not find RPMh address for resource %s\n", |
---|
427 | | - node->name, rpmh_resource_name); |
---|
| 440 | + dev_err(dev, "%pOFn: could not find RPMh address for resource %s\n", |
---|
| 441 | + node, rpmh_resource_name); |
---|
428 | 442 | return -ENODEV; |
---|
429 | 443 | } |
---|
430 | 444 | |
---|
.. | .. |
---|
469 | 483 | rdev = devm_regulator_register(dev, &vreg->rdesc, ®_config); |
---|
470 | 484 | if (IS_ERR(rdev)) { |
---|
471 | 485 | ret = PTR_ERR(rdev); |
---|
472 | | - dev_err(dev, "%s: devm_regulator_register() failed, ret=%d\n", |
---|
473 | | - node->name, ret); |
---|
| 486 | + dev_err(dev, "%pOFn: devm_regulator_register() failed, ret=%d\n", |
---|
| 487 | + node, ret); |
---|
474 | 488 | return ret; |
---|
475 | 489 | } |
---|
476 | 490 | |
---|
477 | | - dev_dbg(dev, "%s regulator registered for RPMh resource %s @ 0x%05X\n", |
---|
478 | | - node->name, rpmh_resource_name, vreg->addr); |
---|
| 491 | + dev_dbg(dev, "%pOFn regulator registered for RPMh resource %s @ 0x%05X\n", |
---|
| 492 | + node, rpmh_resource_name, vreg->addr); |
---|
479 | 493 | |
---|
480 | 494 | return 0; |
---|
481 | 495 | } |
---|
.. | .. |
---|
485 | 499 | [REGULATOR_MODE_STANDBY] = PMIC4_LDO_MODE_RETENTION, |
---|
486 | 500 | [REGULATOR_MODE_IDLE] = PMIC4_LDO_MODE_LPM, |
---|
487 | 501 | [REGULATOR_MODE_NORMAL] = PMIC4_LDO_MODE_HPM, |
---|
| 502 | + [REGULATOR_MODE_FAST] = -EINVAL, |
---|
| 503 | +}; |
---|
| 504 | + |
---|
| 505 | +static const int pmic_mode_map_pmic5_ldo[REGULATOR_MODE_STANDBY + 1] = { |
---|
| 506 | + [REGULATOR_MODE_INVALID] = -EINVAL, |
---|
| 507 | + [REGULATOR_MODE_STANDBY] = PMIC5_LDO_MODE_RETENTION, |
---|
| 508 | + [REGULATOR_MODE_IDLE] = PMIC5_LDO_MODE_LPM, |
---|
| 509 | + [REGULATOR_MODE_NORMAL] = PMIC5_LDO_MODE_HPM, |
---|
488 | 510 | [REGULATOR_MODE_FAST] = -EINVAL, |
---|
489 | 511 | }; |
---|
490 | 512 | |
---|
.. | .. |
---|
504 | 526 | break; |
---|
505 | 527 | default: |
---|
506 | 528 | mode = REGULATOR_MODE_INVALID; |
---|
| 529 | + break; |
---|
507 | 530 | } |
---|
508 | 531 | |
---|
509 | 532 | return mode; |
---|
.. | .. |
---|
515 | 538 | [REGULATOR_MODE_IDLE] = PMIC4_SMPS_MODE_PFM, |
---|
516 | 539 | [REGULATOR_MODE_NORMAL] = PMIC4_SMPS_MODE_AUTO, |
---|
517 | 540 | [REGULATOR_MODE_FAST] = PMIC4_SMPS_MODE_PWM, |
---|
| 541 | +}; |
---|
| 542 | + |
---|
| 543 | +static const int pmic_mode_map_pmic5_smps[REGULATOR_MODE_STANDBY + 1] = { |
---|
| 544 | + [REGULATOR_MODE_INVALID] = -EINVAL, |
---|
| 545 | + [REGULATOR_MODE_STANDBY] = PMIC5_SMPS_MODE_RETENTION, |
---|
| 546 | + [REGULATOR_MODE_IDLE] = PMIC5_SMPS_MODE_PFM, |
---|
| 547 | + [REGULATOR_MODE_NORMAL] = PMIC5_SMPS_MODE_AUTO, |
---|
| 548 | + [REGULATOR_MODE_FAST] = PMIC5_SMPS_MODE_PWM, |
---|
518 | 549 | }; |
---|
519 | 550 | |
---|
520 | 551 | static unsigned int |
---|
.. | .. |
---|
537 | 568 | break; |
---|
538 | 569 | default: |
---|
539 | 570 | mode = REGULATOR_MODE_INVALID; |
---|
| 571 | + break; |
---|
540 | 572 | } |
---|
541 | 573 | |
---|
542 | 574 | return mode; |
---|
.. | .. |
---|
548 | 580 | [REGULATOR_MODE_IDLE] = PMIC4_BOB_MODE_PFM, |
---|
549 | 581 | [REGULATOR_MODE_NORMAL] = PMIC4_BOB_MODE_AUTO, |
---|
550 | 582 | [REGULATOR_MODE_FAST] = PMIC4_BOB_MODE_PWM, |
---|
| 583 | +}; |
---|
| 584 | + |
---|
| 585 | +static const int pmic_mode_map_pmic5_bob[REGULATOR_MODE_STANDBY + 1] = { |
---|
| 586 | + [REGULATOR_MODE_INVALID] = -EINVAL, |
---|
| 587 | + [REGULATOR_MODE_STANDBY] = -EINVAL, |
---|
| 588 | + [REGULATOR_MODE_IDLE] = PMIC5_BOB_MODE_PFM, |
---|
| 589 | + [REGULATOR_MODE_NORMAL] = PMIC5_BOB_MODE_AUTO, |
---|
| 590 | + [REGULATOR_MODE_FAST] = PMIC5_BOB_MODE_PWM, |
---|
551 | 591 | }; |
---|
552 | 592 | |
---|
553 | 593 | static unsigned int rpmh_regulator_pmic4_bob_of_map_mode(unsigned int rpmh_mode) |
---|
.. | .. |
---|
566 | 606 | break; |
---|
567 | 607 | default: |
---|
568 | 608 | mode = REGULATOR_MODE_INVALID; |
---|
| 609 | + break; |
---|
569 | 610 | } |
---|
570 | 611 | |
---|
571 | 612 | return mode; |
---|
.. | .. |
---|
632 | 673 | .regulator_type = XOB, |
---|
633 | 674 | .ops = &rpmh_regulator_xob_ops, |
---|
634 | 675 | /* LVS hardware does not support voltage or mode configuration. */ |
---|
| 676 | +}; |
---|
| 677 | + |
---|
| 678 | +static const struct rpmh_vreg_hw_data pmic5_pldo = { |
---|
| 679 | + .regulator_type = VRM, |
---|
| 680 | + .ops = &rpmh_regulator_vrm_drms_ops, |
---|
| 681 | + .voltage_range = REGULATOR_LINEAR_RANGE(1504000, 0, 255, 8000), |
---|
| 682 | + .n_voltages = 256, |
---|
| 683 | + .hpm_min_load_uA = 10000, |
---|
| 684 | + .pmic_mode_map = pmic_mode_map_pmic5_ldo, |
---|
| 685 | + .of_map_mode = rpmh_regulator_pmic4_ldo_of_map_mode, |
---|
| 686 | +}; |
---|
| 687 | + |
---|
| 688 | +static const struct rpmh_vreg_hw_data pmic5_pldo_lv = { |
---|
| 689 | + .regulator_type = VRM, |
---|
| 690 | + .ops = &rpmh_regulator_vrm_drms_ops, |
---|
| 691 | + .voltage_range = REGULATOR_LINEAR_RANGE(1504000, 0, 62, 8000), |
---|
| 692 | + .n_voltages = 63, |
---|
| 693 | + .hpm_min_load_uA = 10000, |
---|
| 694 | + .pmic_mode_map = pmic_mode_map_pmic5_ldo, |
---|
| 695 | + .of_map_mode = rpmh_regulator_pmic4_ldo_of_map_mode, |
---|
| 696 | +}; |
---|
| 697 | + |
---|
| 698 | +static const struct rpmh_vreg_hw_data pmic5_nldo = { |
---|
| 699 | + .regulator_type = VRM, |
---|
| 700 | + .ops = &rpmh_regulator_vrm_drms_ops, |
---|
| 701 | + .voltage_range = REGULATOR_LINEAR_RANGE(320000, 0, 123, 8000), |
---|
| 702 | + .n_voltages = 124, |
---|
| 703 | + .hpm_min_load_uA = 30000, |
---|
| 704 | + .pmic_mode_map = pmic_mode_map_pmic5_ldo, |
---|
| 705 | + .of_map_mode = rpmh_regulator_pmic4_ldo_of_map_mode, |
---|
| 706 | +}; |
---|
| 707 | + |
---|
| 708 | +static const struct rpmh_vreg_hw_data pmic5_hfsmps510 = { |
---|
| 709 | + .regulator_type = VRM, |
---|
| 710 | + .ops = &rpmh_regulator_vrm_ops, |
---|
| 711 | + .voltage_range = REGULATOR_LINEAR_RANGE(320000, 0, 215, 8000), |
---|
| 712 | + .n_voltages = 216, |
---|
| 713 | + .pmic_mode_map = pmic_mode_map_pmic5_smps, |
---|
| 714 | + .of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode, |
---|
| 715 | +}; |
---|
| 716 | + |
---|
| 717 | +static const struct rpmh_vreg_hw_data pmic5_ftsmps510 = { |
---|
| 718 | + .regulator_type = VRM, |
---|
| 719 | + .ops = &rpmh_regulator_vrm_ops, |
---|
| 720 | + .voltage_range = REGULATOR_LINEAR_RANGE(300000, 0, 263, 4000), |
---|
| 721 | + .n_voltages = 264, |
---|
| 722 | + .pmic_mode_map = pmic_mode_map_pmic5_smps, |
---|
| 723 | + .of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode, |
---|
| 724 | +}; |
---|
| 725 | + |
---|
| 726 | +static const struct rpmh_vreg_hw_data pmic5_hfsmps515 = { |
---|
| 727 | + .regulator_type = VRM, |
---|
| 728 | + .ops = &rpmh_regulator_vrm_ops, |
---|
| 729 | + .voltage_range = REGULATOR_LINEAR_RANGE(320000, 0, 235, 16000), |
---|
| 730 | + .n_voltages = 236, |
---|
| 731 | + .pmic_mode_map = pmic_mode_map_pmic5_smps, |
---|
| 732 | + .of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode, |
---|
| 733 | +}; |
---|
| 734 | + |
---|
| 735 | +static const struct rpmh_vreg_hw_data pmic5_hfsmps515_1 = { |
---|
| 736 | + .regulator_type = VRM, |
---|
| 737 | + .ops = &rpmh_regulator_vrm_ops, |
---|
| 738 | + .voltage_range = REGULATOR_LINEAR_RANGE(900000, 0, 4, 16000), |
---|
| 739 | + .n_voltages = 5, |
---|
| 740 | + .pmic_mode_map = pmic_mode_map_pmic5_smps, |
---|
| 741 | + .of_map_mode = rpmh_regulator_pmic4_smps_of_map_mode, |
---|
| 742 | +}; |
---|
| 743 | + |
---|
| 744 | +static const struct rpmh_vreg_hw_data pmic5_bob = { |
---|
| 745 | + .regulator_type = VRM, |
---|
| 746 | + .ops = &rpmh_regulator_vrm_bypass_ops, |
---|
| 747 | + .voltage_range = REGULATOR_LINEAR_RANGE(3000000, 0, 31, 32000), |
---|
| 748 | + .n_voltages = 32, |
---|
| 749 | + .pmic_mode_map = pmic_mode_map_pmic5_bob, |
---|
| 750 | + .of_map_mode = rpmh_regulator_pmic4_bob_of_map_mode, |
---|
635 | 751 | }; |
---|
636 | 752 | |
---|
637 | 753 | #define RPMH_VREG(_name, _resource_name, _hw_data, _supply_name) \ |
---|
.. | .. |
---|
702 | 818 | {}, |
---|
703 | 819 | }; |
---|
704 | 820 | |
---|
| 821 | +static const struct rpmh_vreg_init_data pm8150_vreg_data[] = { |
---|
| 822 | + RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps510, "vdd-s1"), |
---|
| 823 | + RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps510, "vdd-s2"), |
---|
| 824 | + RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps510, "vdd-s3"), |
---|
| 825 | + RPMH_VREG("smps4", "smp%s4", &pmic5_hfsmps510, "vdd-s4"), |
---|
| 826 | + RPMH_VREG("smps5", "smp%s5", &pmic5_hfsmps510, "vdd-s5"), |
---|
| 827 | + RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps510, "vdd-s6"), |
---|
| 828 | + RPMH_VREG("smps7", "smp%s7", &pmic5_ftsmps510, "vdd-s7"), |
---|
| 829 | + RPMH_VREG("smps8", "smp%s8", &pmic5_ftsmps510, "vdd-s8"), |
---|
| 830 | + RPMH_VREG("smps9", "smp%s9", &pmic5_ftsmps510, "vdd-s9"), |
---|
| 831 | + RPMH_VREG("smps10", "smp%s10", &pmic5_ftsmps510, "vdd-s10"), |
---|
| 832 | + RPMH_VREG("ldo1", "ldo%s1", &pmic5_nldo, "vdd-l1-l8-l11"), |
---|
| 833 | + RPMH_VREG("ldo2", "ldo%s2", &pmic5_pldo, "vdd-l2-l10"), |
---|
| 834 | + RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo, "vdd-l3-l4-l5-l18"), |
---|
| 835 | + RPMH_VREG("ldo4", "ldo%s4", &pmic5_nldo, "vdd-l3-l4-l5-l18"), |
---|
| 836 | + RPMH_VREG("ldo5", "ldo%s5", &pmic5_nldo, "vdd-l3-l4-l5-l18"), |
---|
| 837 | + RPMH_VREG("ldo6", "ldo%s6", &pmic5_nldo, "vdd-l6-l9"), |
---|
| 838 | + RPMH_VREG("ldo7", "ldo%s7", &pmic5_pldo, "vdd-l7-l12-l14-l15"), |
---|
| 839 | + RPMH_VREG("ldo8", "ldo%s8", &pmic5_nldo, "vdd-l1-l8-l11"), |
---|
| 840 | + RPMH_VREG("ldo9", "ldo%s9", &pmic5_nldo, "vdd-l6-l9"), |
---|
| 841 | + RPMH_VREG("ldo10", "ldo%s10", &pmic5_pldo, "vdd-l2-l10"), |
---|
| 842 | + RPMH_VREG("ldo11", "ldo%s11", &pmic5_nldo, "vdd-l1-l8-l11"), |
---|
| 843 | + RPMH_VREG("ldo12", "ldo%s12", &pmic5_pldo_lv, "vdd-l7-l12-l14-l15"), |
---|
| 844 | + RPMH_VREG("ldo13", "ldo%s13", &pmic5_pldo, "vdd-l13-l16-l17"), |
---|
| 845 | + RPMH_VREG("ldo14", "ldo%s14", &pmic5_pldo_lv, "vdd-l7-l12-l14-l15"), |
---|
| 846 | + RPMH_VREG("ldo15", "ldo%s15", &pmic5_pldo_lv, "vdd-l7-l12-l14-l15"), |
---|
| 847 | + RPMH_VREG("ldo16", "ldo%s16", &pmic5_pldo, "vdd-l13-l16-l17"), |
---|
| 848 | + RPMH_VREG("ldo17", "ldo%s17", &pmic5_pldo, "vdd-l13-l16-l17"), |
---|
| 849 | + RPMH_VREG("ldo18", "ldo%s18", &pmic5_nldo, "vdd-l3-l4-l5-l18"), |
---|
| 850 | + {}, |
---|
| 851 | +}; |
---|
| 852 | + |
---|
| 853 | +static const struct rpmh_vreg_init_data pm8150l_vreg_data[] = { |
---|
| 854 | + RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps510, "vdd-s1"), |
---|
| 855 | + RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps510, "vdd-s2"), |
---|
| 856 | + RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps510, "vdd-s3"), |
---|
| 857 | + RPMH_VREG("smps4", "smp%s4", &pmic5_ftsmps510, "vdd-s4"), |
---|
| 858 | + RPMH_VREG("smps5", "smp%s5", &pmic5_ftsmps510, "vdd-s5"), |
---|
| 859 | + RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps510, "vdd-s6"), |
---|
| 860 | + RPMH_VREG("smps7", "smp%s7", &pmic5_ftsmps510, "vdd-s7"), |
---|
| 861 | + RPMH_VREG("smps8", "smp%s8", &pmic5_hfsmps510, "vdd-s8"), |
---|
| 862 | + RPMH_VREG("ldo1", "ldo%s1", &pmic5_pldo_lv, "vdd-l1-l8"), |
---|
| 863 | + RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo, "vdd-l2-l3"), |
---|
| 864 | + RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo, "vdd-l2-l3"), |
---|
| 865 | + RPMH_VREG("ldo4", "ldo%s4", &pmic5_pldo, "vdd-l4-l5-l6"), |
---|
| 866 | + RPMH_VREG("ldo5", "ldo%s5", &pmic5_pldo, "vdd-l4-l5-l6"), |
---|
| 867 | + RPMH_VREG("ldo6", "ldo%s6", &pmic5_pldo, "vdd-l4-l5-l6"), |
---|
| 868 | + RPMH_VREG("ldo7", "ldo%s7", &pmic5_pldo, "vdd-l7-l11"), |
---|
| 869 | + RPMH_VREG("ldo8", "ldo%s8", &pmic5_pldo_lv, "vdd-l1-l8"), |
---|
| 870 | + RPMH_VREG("ldo9", "ldo%s9", &pmic5_pldo, "vdd-l9-l10"), |
---|
| 871 | + RPMH_VREG("ldo10", "ldo%s10", &pmic5_pldo, "vdd-l9-l10"), |
---|
| 872 | + RPMH_VREG("ldo11", "ldo%s11", &pmic5_pldo, "vdd-l7-l11"), |
---|
| 873 | + RPMH_VREG("bob", "bob%s1", &pmic5_bob, "vdd-bob"), |
---|
| 874 | + {}, |
---|
| 875 | +}; |
---|
| 876 | + |
---|
| 877 | +static const struct rpmh_vreg_init_data pm8009_vreg_data[] = { |
---|
| 878 | + RPMH_VREG("smps1", "smp%s1", &pmic5_hfsmps510, "vdd-s1"), |
---|
| 879 | + RPMH_VREG("smps2", "smp%s2", &pmic5_hfsmps515, "vdd-s2"), |
---|
| 880 | + RPMH_VREG("ldo1", "ldo%s1", &pmic5_nldo, "vdd-l1"), |
---|
| 881 | + RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo, "vdd-l2"), |
---|
| 882 | + RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo, "vdd-l3"), |
---|
| 883 | + RPMH_VREG("ldo4", "ldo%s4", &pmic5_nldo, "vdd-l4"), |
---|
| 884 | + RPMH_VREG("ldo5", "ldo%s5", &pmic5_pldo, "vdd-l5-l6"), |
---|
| 885 | + RPMH_VREG("ldo6", "ldo%s6", &pmic5_pldo, "vdd-l5-l6"), |
---|
| 886 | + RPMH_VREG("ldo7", "ldo%s7", &pmic5_pldo_lv, "vdd-l7"), |
---|
| 887 | + {}, |
---|
| 888 | +}; |
---|
| 889 | + |
---|
| 890 | +static const struct rpmh_vreg_init_data pm8009_1_vreg_data[] = { |
---|
| 891 | + RPMH_VREG("smps1", "smp%s1", &pmic5_hfsmps510, "vdd-s1"), |
---|
| 892 | + RPMH_VREG("smps2", "smp%s2", &pmic5_hfsmps515_1, "vdd-s2"), |
---|
| 893 | + RPMH_VREG("ldo1", "ldo%s1", &pmic5_nldo, "vdd-l1"), |
---|
| 894 | + RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo, "vdd-l2"), |
---|
| 895 | + RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo, "vdd-l3"), |
---|
| 896 | + RPMH_VREG("ldo4", "ldo%s4", &pmic5_nldo, "vdd-l4"), |
---|
| 897 | + RPMH_VREG("ldo5", "ldo%s5", &pmic5_pldo, "vdd-l5-l6"), |
---|
| 898 | + RPMH_VREG("ldo6", "ldo%s6", &pmic5_pldo, "vdd-l5-l6"), |
---|
| 899 | + RPMH_VREG("ldo7", "ldo%s6", &pmic5_pldo_lv, "vdd-l7"), |
---|
| 900 | + {}, |
---|
| 901 | +}; |
---|
| 902 | + |
---|
| 903 | +static const struct rpmh_vreg_init_data pm6150_vreg_data[] = { |
---|
| 904 | + RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps510, "vdd-s1"), |
---|
| 905 | + RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps510, "vdd-s2"), |
---|
| 906 | + RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps510, "vdd-s3"), |
---|
| 907 | + RPMH_VREG("smps4", "smp%s4", &pmic5_hfsmps510, "vdd-s4"), |
---|
| 908 | + RPMH_VREG("smps5", "smp%s5", &pmic5_hfsmps510, "vdd-s5"), |
---|
| 909 | + RPMH_VREG("ldo1", "ldo%s1", &pmic5_nldo, "vdd-l1"), |
---|
| 910 | + RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo, "vdd-l2-l3"), |
---|
| 911 | + RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo, "vdd-l2-l3"), |
---|
| 912 | + RPMH_VREG("ldo4", "ldo%s4", &pmic5_nldo, "vdd-l4-l7-l8"), |
---|
| 913 | + RPMH_VREG("ldo5", "ldo%s5", &pmic5_pldo, "vdd-l5-l16-l17-l18-l19"), |
---|
| 914 | + RPMH_VREG("ldo6", "ldo%s6", &pmic5_nldo, "vdd-l6"), |
---|
| 915 | + RPMH_VREG("ldo7", "ldo%s7", &pmic5_nldo, "vdd-l4-l7-l8"), |
---|
| 916 | + RPMH_VREG("ldo8", "ldo%s8", &pmic5_nldo, "vdd-l4-l7-l8"), |
---|
| 917 | + RPMH_VREG("ldo9", "ldo%s9", &pmic5_nldo, "vdd-l9"), |
---|
| 918 | + RPMH_VREG("ldo10", "ldo%s10", &pmic5_pldo_lv, "vdd-l10-l14-l15"), |
---|
| 919 | + RPMH_VREG("ldo11", "ldo%s11", &pmic5_pldo_lv, "vdd-l11-l12-l13"), |
---|
| 920 | + RPMH_VREG("ldo12", "ldo%s12", &pmic5_pldo_lv, "vdd-l11-l12-l13"), |
---|
| 921 | + RPMH_VREG("ldo13", "ldo%s13", &pmic5_pldo_lv, "vdd-l11-l12-l13"), |
---|
| 922 | + RPMH_VREG("ldo14", "ldo%s14", &pmic5_pldo_lv, "vdd-l10-l14-l15"), |
---|
| 923 | + RPMH_VREG("ldo15", "ldo%s15", &pmic5_pldo_lv, "vdd-l10-l14-l15"), |
---|
| 924 | + RPMH_VREG("ldo16", "ldo%s16", &pmic5_pldo, "vdd-l5-l16-l17-l18-l19"), |
---|
| 925 | + RPMH_VREG("ldo17", "ldo%s17", &pmic5_pldo, "vdd-l5-l16-l17-l18-l19"), |
---|
| 926 | + RPMH_VREG("ldo18", "ldo%s18", &pmic5_pldo, "vdd-l5-l16-l17-l18-l19"), |
---|
| 927 | + RPMH_VREG("ldo19", "ldo%s19", &pmic5_pldo, "vdd-l5-l16-l17-l18-l19"), |
---|
| 928 | + {}, |
---|
| 929 | +}; |
---|
| 930 | + |
---|
| 931 | +static const struct rpmh_vreg_init_data pm6150l_vreg_data[] = { |
---|
| 932 | + RPMH_VREG("smps1", "smp%s1", &pmic5_ftsmps510, "vdd-s1"), |
---|
| 933 | + RPMH_VREG("smps2", "smp%s2", &pmic5_ftsmps510, "vdd-s2"), |
---|
| 934 | + RPMH_VREG("smps3", "smp%s3", &pmic5_ftsmps510, "vdd-s3"), |
---|
| 935 | + RPMH_VREG("smps4", "smp%s4", &pmic5_ftsmps510, "vdd-s4"), |
---|
| 936 | + RPMH_VREG("smps5", "smp%s5", &pmic5_ftsmps510, "vdd-s5"), |
---|
| 937 | + RPMH_VREG("smps6", "smp%s6", &pmic5_ftsmps510, "vdd-s6"), |
---|
| 938 | + RPMH_VREG("smps7", "smp%s7", &pmic5_ftsmps510, "vdd-s7"), |
---|
| 939 | + RPMH_VREG("smps8", "smp%s8", &pmic5_hfsmps510, "vdd-s8"), |
---|
| 940 | + RPMH_VREG("ldo1", "ldo%s1", &pmic5_pldo_lv, "vdd-l1-l8"), |
---|
| 941 | + RPMH_VREG("ldo2", "ldo%s2", &pmic5_nldo, "vdd-l2-l3"), |
---|
| 942 | + RPMH_VREG("ldo3", "ldo%s3", &pmic5_nldo, "vdd-l2-l3"), |
---|
| 943 | + RPMH_VREG("ldo4", "ldo%s4", &pmic5_pldo, "vdd-l4-l5-l6"), |
---|
| 944 | + RPMH_VREG("ldo5", "ldo%s5", &pmic5_pldo, "vdd-l4-l5-l6"), |
---|
| 945 | + RPMH_VREG("ldo6", "ldo%s6", &pmic5_pldo, "vdd-l4-l5-l6"), |
---|
| 946 | + RPMH_VREG("ldo7", "ldo%s7", &pmic5_pldo, "vdd-l7-l11"), |
---|
| 947 | + RPMH_VREG("ldo8", "ldo%s8", &pmic5_pldo, "vdd-l1-l8"), |
---|
| 948 | + RPMH_VREG("ldo9", "ldo%s9", &pmic5_pldo, "vdd-l9-l10"), |
---|
| 949 | + RPMH_VREG("ldo10", "ldo%s10", &pmic5_pldo, "vdd-l9-l10"), |
---|
| 950 | + RPMH_VREG("ldo11", "ldo%s11", &pmic5_pldo, "vdd-l7-l11"), |
---|
| 951 | + RPMH_VREG("bob", "bob%s1", &pmic5_bob, "vdd-bob"), |
---|
| 952 | + {}, |
---|
| 953 | +}; |
---|
| 954 | + |
---|
705 | 955 | static int rpmh_regulator_probe(struct platform_device *pdev) |
---|
706 | 956 | { |
---|
707 | 957 | struct device *dev = &pdev->dev; |
---|
.. | .. |
---|
739 | 989 | return 0; |
---|
740 | 990 | } |
---|
741 | 991 | |
---|
742 | | -static const struct of_device_id rpmh_regulator_match_table[] = { |
---|
| 992 | +static const struct of_device_id __maybe_unused rpmh_regulator_match_table[] = { |
---|
| 993 | + { |
---|
| 994 | + .compatible = "qcom,pm8005-rpmh-regulators", |
---|
| 995 | + .data = pm8005_vreg_data, |
---|
| 996 | + }, |
---|
| 997 | + { |
---|
| 998 | + .compatible = "qcom,pm8009-rpmh-regulators", |
---|
| 999 | + .data = pm8009_vreg_data, |
---|
| 1000 | + }, |
---|
| 1001 | + { |
---|
| 1002 | + .compatible = "qcom,pm8009-1-rpmh-regulators", |
---|
| 1003 | + .data = pm8009_1_vreg_data, |
---|
| 1004 | + }, |
---|
| 1005 | + { |
---|
| 1006 | + .compatible = "qcom,pm8150-rpmh-regulators", |
---|
| 1007 | + .data = pm8150_vreg_data, |
---|
| 1008 | + }, |
---|
| 1009 | + { |
---|
| 1010 | + .compatible = "qcom,pm8150l-rpmh-regulators", |
---|
| 1011 | + .data = pm8150l_vreg_data, |
---|
| 1012 | + }, |
---|
743 | 1013 | { |
---|
744 | 1014 | .compatible = "qcom,pm8998-rpmh-regulators", |
---|
745 | 1015 | .data = pm8998_vreg_data, |
---|
.. | .. |
---|
749 | 1019 | .data = pmi8998_vreg_data, |
---|
750 | 1020 | }, |
---|
751 | 1021 | { |
---|
752 | | - .compatible = "qcom,pm8005-rpmh-regulators", |
---|
753 | | - .data = pm8005_vreg_data, |
---|
| 1022 | + .compatible = "qcom,pm6150-rpmh-regulators", |
---|
| 1023 | + .data = pm6150_vreg_data, |
---|
| 1024 | + }, |
---|
| 1025 | + { |
---|
| 1026 | + .compatible = "qcom,pm6150l-rpmh-regulators", |
---|
| 1027 | + .data = pm6150l_vreg_data, |
---|
754 | 1028 | }, |
---|
755 | 1029 | {} |
---|
756 | 1030 | }; |
---|