Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge remote-tracking branch 'regulator/topic/qcom' into regulator-next

+170
+48
Documentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.txt
··· 23 23 "qcom,rpm-pm8916-regulators" 24 24 "qcom,rpm-pm8941-regulators" 25 25 "qcom,rpm-pm8994-regulators" 26 + "qcom,rpm-pm8998-regulators" 26 27 "qcom,rpm-pma8084-regulators" 28 + "qcom,rpm-pmi8998-regulators" 27 29 28 30 - vdd_s1-supply: 29 31 - vdd_s2-supply: ··· 133 131 - vdd_s10-supply: 134 132 - vdd_s11-supply: 135 133 - vdd_s12-supply: 134 + - vdd_s13-supply: 135 + - vdd_l1_l27-supply: 136 + - vdd_l20_l24-supply: 137 + - vdd_l26-supply: 138 + - vdd_l2_l8_l17-supply: 139 + - vdd_l3_l11-supply: 140 + - vdd_l4_l5-supply: 141 + - vdd_l6-supply: 142 + - vdd_l7_l12_l14_l15-supply: 143 + - vdd_l9-supply: 144 + - vdd_l10_l23_l25-supply: 145 + - vdd_l13_l19_l21-supply: 146 + - vdd_l16_l28-supply: 147 + - vdd_l18_l22-supply: 148 + - vdd_lvs1_lvs2-supply: 149 + Usage: optional (pmi8998 only) 150 + Value type: <phandle> 151 + Definition: reference to regulator supplying the input pin, as 152 + described in the data sheet 153 + 154 + - vdd_s1-supply: 155 + - vdd_s2-supply: 156 + - vdd_s3-supply: 157 + - vdd_s4-supply: 158 + - vdd_s5-supply: 159 + - vdd_s6-supply: 160 + - vdd_s7-supply: 161 + - vdd_s8-supply: 162 + - vdd_s9-supply: 163 + - vdd_s10-supply: 164 + - vdd_s11-supply: 165 + - vdd_s12-supply: 136 166 - vdd_l1_l11-supply: 137 167 - vdd_l2_l3_l4_l27-supply: 138 168 - vdd_l5_l7-supply: ··· 178 144 - vdd_l21-supply: 179 145 - vdd_l22-supply: 180 146 Usage: optional (pma8084 only) 147 + Value type: <phandle> 148 + Definition: reference to regulator supplying the input pin, as 149 + described in the data sheet 150 + 151 + - vdd_bob-supply: 152 + Usage: optional (pmi8998 only) 181 153 Value type: <phandle> 182 154 Definition: reference to regulator supplying the input pin, as 183 155 described in the data sheet ··· 209 169 l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20, 210 170 l21, l22, l23, l24, l25, l26, l27, l28, l29, l30, l31, l32, lvs1, lvs2 211 171 172 + pm8998: 173 + s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, l1, l2, l3, l4, 174 + l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, 175 + l20, l21, l22, l23, l24, l25, l26, l27, l28, lvs1, lvs2 176 + 212 177 pma8084: 213 178 s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, l1, l2, l3, l4, l5, 214 179 l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20, 215 180 l21, l22, l23, l24, l25, l26, l27, lvs1, lvs2, lvs3, lvs4, 5vs1 181 + 182 + pmi8998: 183 + bob 216 184 217 185 The content of each sub-node is defined by the standard binding for regulators - 218 186 see regulator.txt.
+121
drivers/regulator/qcom_smd-regulator.c
··· 165 165 .is_enabled = rpm_reg_is_enabled, 166 166 }; 167 167 168 + static const struct regulator_ops rpm_bob_ops = { 169 + .enable = rpm_reg_enable, 170 + .disable = rpm_reg_disable, 171 + .is_enabled = rpm_reg_is_enabled, 172 + 173 + .get_voltage = rpm_reg_get_voltage, 174 + .set_voltage = rpm_reg_set_voltage, 175 + }; 176 + 168 177 static const struct regulator_desc pma8084_hfsmps = { 169 178 .linear_ranges = (struct regulator_linear_range[]) { 170 179 REGULATOR_LINEAR_RANGE(375000, 0, 95, 12500), ··· 362 353 .fixed_uV = 1740000, 363 354 .n_voltages = 1, 364 355 .ops = &rpm_smps_ldo_ops_fixed, 356 + }; 357 + 358 + static const struct regulator_desc pm8998_ftsmps = { 359 + .linear_ranges = (struct regulator_linear_range[]) { 360 + REGULATOR_LINEAR_RANGE(320000, 0, 258, 4000), 361 + }, 362 + .n_linear_ranges = 1, 363 + .n_voltages = 259, 364 + .ops = &rpm_smps_ldo_ops, 365 + }; 366 + 367 + static const struct regulator_desc pm8998_hfsmps = { 368 + .linear_ranges = (struct regulator_linear_range[]) { 369 + REGULATOR_LINEAR_RANGE(320000, 0, 215, 8000), 370 + }, 371 + .n_linear_ranges = 1, 372 + .n_voltages = 216, 373 + .ops = &rpm_smps_ldo_ops, 374 + }; 375 + 376 + static const struct regulator_desc pm8998_nldo = { 377 + .linear_ranges = (struct regulator_linear_range[]) { 378 + REGULATOR_LINEAR_RANGE(312000, 0, 127, 8000), 379 + }, 380 + .n_linear_ranges = 1, 381 + .n_voltages = 128, 382 + .ops = &rpm_smps_ldo_ops, 383 + }; 384 + 385 + static const struct regulator_desc pm8998_pldo = { 386 + .linear_ranges = (struct regulator_linear_range[]) { 387 + REGULATOR_LINEAR_RANGE(1664000, 0, 255, 8000), 388 + }, 389 + .n_linear_ranges = 1, 390 + .n_voltages = 256, 391 + .ops = &rpm_smps_ldo_ops, 392 + }; 393 + 394 + static const struct regulator_desc pm8998_pldo_lv = { 395 + .linear_ranges = (struct regulator_linear_range[]) { 396 + REGULATOR_LINEAR_RANGE(1256000, 0, 127, 8000), 397 + }, 398 + .n_linear_ranges = 1, 399 + .n_voltages = 128, 400 + .ops = &rpm_smps_ldo_ops, 401 + }; 402 + 403 + static const struct regulator_desc pm8998_switch = { 404 + .ops = &rpm_switch_ops, 405 + }; 406 + 407 + static const struct regulator_desc pmi8998_bob = { 408 + .linear_ranges = (struct regulator_linear_range[]) { 409 + REGULATOR_LINEAR_RANGE(1824000, 0, 83, 32000), 410 + }, 411 + .n_linear_ranges = 1, 412 + .n_voltages = 84, 413 + .ops = &rpm_bob_ops, 365 414 }; 366 415 367 416 struct rpm_regulator_data { ··· 611 544 {} 612 545 }; 613 546 547 + static const struct rpm_regulator_data rpm_pm8998_regulators[] = { 548 + { "s1", QCOM_SMD_RPM_SMPA, 1, &pm8998_ftsmps, "vdd_s1" }, 549 + { "s2", QCOM_SMD_RPM_SMPA, 2, &pm8998_ftsmps, "vdd_s2" }, 550 + { "s3", QCOM_SMD_RPM_SMPA, 3, &pm8998_hfsmps, "vdd_s3" }, 551 + { "s4", QCOM_SMD_RPM_SMPA, 4, &pm8998_hfsmps, "vdd_s4" }, 552 + { "s5", QCOM_SMD_RPM_SMPA, 5, &pm8998_hfsmps, "vdd_s5" }, 553 + { "s6", QCOM_SMD_RPM_SMPA, 6, &pm8998_ftsmps, "vdd_s6" }, 554 + { "s7", QCOM_SMD_RPM_SMPA, 7, &pm8998_ftsmps, "vdd_s7" }, 555 + { "s8", QCOM_SMD_RPM_SMPA, 8, &pm8998_ftsmps, "vdd_s8" }, 556 + { "s9", QCOM_SMD_RPM_SMPA, 9, &pm8998_ftsmps, "vdd_s9" }, 557 + { "s10", QCOM_SMD_RPM_SMPA, 10, &pm8998_ftsmps, "vdd_s10" }, 558 + { "s11", QCOM_SMD_RPM_SMPA, 11, &pm8998_ftsmps, "vdd_s11" }, 559 + { "s12", QCOM_SMD_RPM_SMPA, 12, &pm8998_ftsmps, "vdd_s12" }, 560 + { "s13", QCOM_SMD_RPM_SMPA, 13, &pm8998_ftsmps, "vdd_s13" }, 561 + { "l1", QCOM_SMD_RPM_LDOA, 1, &pm8998_nldo, "vdd_l1_l27" }, 562 + { "l2", QCOM_SMD_RPM_LDOA, 2, &pm8998_nldo, "vdd_l2_l8_l17" }, 563 + { "l3", QCOM_SMD_RPM_LDOA, 3, &pm8998_nldo, "vdd_l3_l11" }, 564 + { "l4", QCOM_SMD_RPM_LDOA, 4, &pm8998_nldo, "vdd_l4_l5" }, 565 + { "l5", QCOM_SMD_RPM_LDOA, 5, &pm8998_nldo, "vdd_l4_l5" }, 566 + { "l6", QCOM_SMD_RPM_LDOA, 6, &pm8998_pldo, "vdd_l6" }, 567 + { "l7", QCOM_SMD_RPM_LDOA, 7, &pm8998_pldo_lv, "vdd_l7_l12_l14_l15" }, 568 + { "l8", QCOM_SMD_RPM_LDOA, 8, &pm8998_nldo, "vdd_l2_l8_l17" }, 569 + { "l9", QCOM_SMD_RPM_LDOA, 9, &pm8998_pldo, "vdd_l9" }, 570 + { "l10", QCOM_SMD_RPM_LDOA, 10, &pm8998_pldo, "vdd_l10_l23_l25" }, 571 + { "l11", QCOM_SMD_RPM_LDOA, 11, &pm8998_nldo, "vdd_l3_l11" }, 572 + { "l12", QCOM_SMD_RPM_LDOA, 12, &pm8998_pldo_lv, "vdd_l7_l12_l14_l15" }, 573 + { "l13", QCOM_SMD_RPM_LDOA, 13, &pm8998_pldo, "vdd_l13_l19_l21" }, 574 + { "l14", QCOM_SMD_RPM_LDOA, 14, &pm8998_pldo_lv, "vdd_l7_l12_l14_l15" }, 575 + { "l15", QCOM_SMD_RPM_LDOA, 15, &pm8998_pldo_lv, "vdd_l7_l12_l14_l15" }, 576 + { "l16", QCOM_SMD_RPM_LDOA, 16, &pm8998_pldo, "vdd_l16_l28" }, 577 + { "l17", QCOM_SMD_RPM_LDOA, 17, &pm8998_nldo, "vdd_l2_l8_l17" }, 578 + { "l18", QCOM_SMD_RPM_LDOA, 18, &pm8998_pldo, "vdd_l18_l22" }, 579 + { "l19", QCOM_SMD_RPM_LDOA, 19, &pm8998_pldo, "vdd_l13_l19_l21" }, 580 + { "l20", QCOM_SMD_RPM_LDOA, 20, &pm8998_pldo, "vdd_l20_l24" }, 581 + { "l21", QCOM_SMD_RPM_LDOA, 21, &pm8998_pldo, "vdd_l13_l19_l21" }, 582 + { "l22", QCOM_SMD_RPM_LDOA, 22, &pm8998_pldo, "vdd_l18_l22" }, 583 + { "l23", QCOM_SMD_RPM_LDOA, 23, &pm8998_pldo, "vdd_l10_l23_l25" }, 584 + { "l24", QCOM_SMD_RPM_LDOA, 24, &pm8998_pldo, "vdd_l20_l24" }, 585 + { "l25", QCOM_SMD_RPM_LDOA, 25, &pm8998_pldo, "vdd_l10_l23_l25" }, 586 + { "l26", QCOM_SMD_RPM_LDOA, 26, &pm8998_nldo, "vdd_l26" }, 587 + { "l27", QCOM_SMD_RPM_LDOA, 27, &pm8998_nldo, "vdd_l1_l27" }, 588 + { "l28", QCOM_SMD_RPM_LDOA, 28, &pm8998_pldo, "vdd_l16_l28" }, 589 + { "lvs1", QCOM_SMD_RPM_VSA, 1, &pm8998_switch, "vdd_lvs1_lvs2" }, 590 + { "lvs2", QCOM_SMD_RPM_VSA, 2, &pm8998_switch, "vdd_lvs1_lvs2" }, 591 + {} 592 + }; 593 + 594 + static const struct rpm_regulator_data rpm_pmi8998_regulators[] = { 595 + { "bob", QCOM_SMD_RPM_BOBB, 1, &pmi8998_bob, "vdd_bob" }, 596 + {} 597 + }; 598 + 614 599 static const struct of_device_id rpm_of_match[] = { 615 600 { .compatible = "qcom,rpm-pm8841-regulators", .data = &rpm_pm8841_regulators }, 616 601 { .compatible = "qcom,rpm-pm8916-regulators", .data = &rpm_pm8916_regulators }, 617 602 { .compatible = "qcom,rpm-pm8941-regulators", .data = &rpm_pm8941_regulators }, 618 603 { .compatible = "qcom,rpm-pm8994-regulators", .data = &rpm_pm8994_regulators }, 604 + { .compatible = "qcom,rpm-pm8998-regulators", .data = &rpm_pm8998_regulators }, 619 605 { .compatible = "qcom,rpm-pma8084-regulators", .data = &rpm_pma8084_regulators }, 606 + { .compatible = "qcom,rpm-pmi8998-regulators", .data = &rpm_pmi8998_regulators }, 620 607 {} 621 608 }; 622 609 MODULE_DEVICE_TABLE(of, rpm_of_match);
+1
include/linux/soc/qcom/smd-rpm.h
··· 10 10 /* 11 11 * Constants used for addressing resources in the RPM. 12 12 */ 13 + #define QCOM_SMD_RPM_BOBB 0x62626f62 13 14 #define QCOM_SMD_RPM_BOOST 0x61747362 14 15 #define QCOM_SMD_RPM_BUS_CLK 0x316b6c63 15 16 #define QCOM_SMD_RPM_BUS_MASTER 0x73616d62