hc
2024-05-10 ee930fffee469d076998274a2ca55e13dc1efb67
kernel/drivers/regulator/qcom-rpmh-regulator.c
....@@ -1,5 +1,5 @@
11 // 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.
33
44 #define pr_fmt(fmt) "%s: " fmt, __func__
55
....@@ -22,9 +22,9 @@
2222
2323 /**
2424 * 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,
2626 * 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
2828 * of PMIC regulators.
2929 */
3030 enum rpmh_regulator_type {
....@@ -50,6 +50,20 @@
5050 #define PMIC4_BOB_MODE_AUTO 2
5151 #define PMIC4_BOB_MODE_PWM 3
5252
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
+
5367 /**
5468 * struct rpmh_vreg_hw_data - RPMh regulator hardware configurations
5569 * @regulator_type: RPMh accelerator type used to manage this
....@@ -72,7 +86,7 @@
7286 struct rpmh_vreg_hw_data {
7387 enum rpmh_regulator_type regulator_type;
7488 const struct regulator_ops *ops;
75
- const struct regulator_linear_range voltage_range;
89
+ const struct linear_range voltage_range;
7690 int n_voltages;
7791 int hpm_min_load_uA;
7892 const int *pmic_mode_map;
....@@ -385,13 +399,13 @@
385399
386400 /**
387401 * 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
391405 * 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
393407 * 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
395409 * resources defined for the top level PMIC device
396410 *
397411 * Return: 0 on success, errno on failure
....@@ -410,11 +424,11 @@
410424 vreg->dev = dev;
411425
412426 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))
414428 break;
415429
416430 if (!rpmh_data->name) {
417
- dev_err(dev, "Unknown regulator %s\n", node->name);
431
+ dev_err(dev, "Unknown regulator %pOFn\n", node);
418432 return -EINVAL;
419433 }
420434
....@@ -423,8 +437,8 @@
423437
424438 vreg->addr = cmd_db_read_addr(rpmh_resource_name);
425439 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);
428442 return -ENODEV;
429443 }
430444
....@@ -469,13 +483,13 @@
469483 rdev = devm_regulator_register(dev, &vreg->rdesc, &reg_config);
470484 if (IS_ERR(rdev)) {
471485 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);
474488 return ret;
475489 }
476490
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);
479493
480494 return 0;
481495 }
....@@ -485,6 +499,14 @@
485499 [REGULATOR_MODE_STANDBY] = PMIC4_LDO_MODE_RETENTION,
486500 [REGULATOR_MODE_IDLE] = PMIC4_LDO_MODE_LPM,
487501 [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,
488510 [REGULATOR_MODE_FAST] = -EINVAL,
489511 };
490512
....@@ -504,6 +526,7 @@
504526 break;
505527 default:
506528 mode = REGULATOR_MODE_INVALID;
529
+ break;
507530 }
508531
509532 return mode;
....@@ -515,6 +538,14 @@
515538 [REGULATOR_MODE_IDLE] = PMIC4_SMPS_MODE_PFM,
516539 [REGULATOR_MODE_NORMAL] = PMIC4_SMPS_MODE_AUTO,
517540 [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,
518549 };
519550
520551 static unsigned int
....@@ -537,6 +568,7 @@
537568 break;
538569 default:
539570 mode = REGULATOR_MODE_INVALID;
571
+ break;
540572 }
541573
542574 return mode;
....@@ -548,6 +580,14 @@
548580 [REGULATOR_MODE_IDLE] = PMIC4_BOB_MODE_PFM,
549581 [REGULATOR_MODE_NORMAL] = PMIC4_BOB_MODE_AUTO,
550582 [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,
551591 };
552592
553593 static unsigned int rpmh_regulator_pmic4_bob_of_map_mode(unsigned int rpmh_mode)
....@@ -566,6 +606,7 @@
566606 break;
567607 default:
568608 mode = REGULATOR_MODE_INVALID;
609
+ break;
569610 }
570611
571612 return mode;
....@@ -632,6 +673,81 @@
632673 .regulator_type = XOB,
633674 .ops = &rpmh_regulator_xob_ops,
634675 /* 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,
635751 };
636752
637753 #define RPMH_VREG(_name, _resource_name, _hw_data, _supply_name) \
....@@ -702,6 +818,140 @@
702818 {},
703819 };
704820
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
+
705955 static int rpmh_regulator_probe(struct platform_device *pdev)
706956 {
707957 struct device *dev = &pdev->dev;
....@@ -739,7 +989,27 @@
739989 return 0;
740990 }
741991
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
+ },
7431013 {
7441014 .compatible = "qcom,pm8998-rpmh-regulators",
7451015 .data = pm8998_vreg_data,
....@@ -749,8 +1019,12 @@
7491019 .data = pmi8998_vreg_data,
7501020 },
7511021 {
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,
7541028 },
7551029 {}
7561030 };