diff options
| author | Neil Armstrong <narmstrong@baylibre.com> | 2016-08-11 09:16:45 -0400 |
|---|---|---|
| committer | Lee Jones <lee.jones@linaro.org> | 2016-08-31 04:33:43 -0400 |
| commit | eb87a669dd4a79fdbca14c402fdbcdb8695739ff (patch) | |
| tree | 8709f85a4591b8f04584fc9af54cbb01a9f51f2e | |
| parent | 08655bca2712880c9f30c8f3f8fb50e010920e74 (diff) | |
mfd: qcom-rpm: Add support for pm8018 RPM Regulator
In order to support the Qualcomm MDM9615 SoC, add support for the
RPM regulator entries in the qcom-rpm driver.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Acked-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
| -rw-r--r-- | Documentation/devicetree/bindings/mfd/qcom-rpm.txt | 1 | ||||
| -rw-r--r-- | drivers/mfd/qcom_rpm.c | 51 | ||||
| -rw-r--r-- | include/dt-bindings/mfd/qcom-rpm.h | 22 |
3 files changed, 74 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/mfd/qcom-rpm.txt b/Documentation/devicetree/bindings/mfd/qcom-rpm.txt index b98b291a31ba..72d68d497efd 100644 --- a/Documentation/devicetree/bindings/mfd/qcom-rpm.txt +++ b/Documentation/devicetree/bindings/mfd/qcom-rpm.txt | |||
| @@ -13,6 +13,7 @@ frequencies. | |||
| 13 | "qcom,rpm-msm8660" | 13 | "qcom,rpm-msm8660" |
| 14 | "qcom,rpm-msm8960" | 14 | "qcom,rpm-msm8960" |
| 15 | "qcom,rpm-ipq8064" | 15 | "qcom,rpm-ipq8064" |
| 16 | "qcom,rpm-mdm9615" | ||
| 16 | 17 | ||
| 17 | - reg: | 18 | - reg: |
| 18 | Usage: required | 19 | Usage: required |
diff --git a/drivers/mfd/qcom_rpm.c b/drivers/mfd/qcom_rpm.c index 2e44323455dd..a74210df5969 100644 --- a/drivers/mfd/qcom_rpm.c +++ b/drivers/mfd/qcom_rpm.c | |||
| @@ -388,11 +388,62 @@ static const struct qcom_rpm_data ipq806x_template = { | |||
| 388 | .ack_sel_size = 7, | 388 | .ack_sel_size = 7, |
| 389 | }; | 389 | }; |
| 390 | 390 | ||
| 391 | static const struct qcom_rpm_resource mdm9615_rpm_resource_table[] = { | ||
| 392 | [QCOM_RPM_CXO_CLK] = { 25, 9, 5, 1 }, | ||
| 393 | [QCOM_RPM_SYS_FABRIC_CLK] = { 26, 10, 9, 1 }, | ||
| 394 | [QCOM_RPM_DAYTONA_FABRIC_CLK] = { 27, 11, 11, 1 }, | ||
| 395 | [QCOM_RPM_SFPB_CLK] = { 28, 12, 12, 1 }, | ||
| 396 | [QCOM_RPM_CFPB_CLK] = { 29, 13, 13, 1 }, | ||
| 397 | [QCOM_RPM_EBI1_CLK] = { 30, 14, 16, 1 }, | ||
| 398 | [QCOM_RPM_APPS_FABRIC_HALT] = { 31, 15, 22, 2 }, | ||
| 399 | [QCOM_RPM_APPS_FABRIC_MODE] = { 33, 16, 23, 3 }, | ||
| 400 | [QCOM_RPM_APPS_FABRIC_IOCTL] = { 36, 17, 24, 1 }, | ||
| 401 | [QCOM_RPM_APPS_FABRIC_ARB] = { 37, 18, 25, 27 }, | ||
| 402 | [QCOM_RPM_PM8018_SMPS1] = { 64, 19, 30, 2 }, | ||
| 403 | [QCOM_RPM_PM8018_SMPS2] = { 66, 21, 31, 2 }, | ||
| 404 | [QCOM_RPM_PM8018_SMPS3] = { 68, 23, 32, 2 }, | ||
| 405 | [QCOM_RPM_PM8018_SMPS4] = { 70, 25, 33, 2 }, | ||
| 406 | [QCOM_RPM_PM8018_SMPS5] = { 72, 27, 34, 2 }, | ||
| 407 | [QCOM_RPM_PM8018_LDO1] = { 74, 29, 35, 2 }, | ||
| 408 | [QCOM_RPM_PM8018_LDO2] = { 76, 31, 36, 2 }, | ||
| 409 | [QCOM_RPM_PM8018_LDO3] = { 78, 33, 37, 2 }, | ||
| 410 | [QCOM_RPM_PM8018_LDO4] = { 80, 35, 38, 2 }, | ||
| 411 | [QCOM_RPM_PM8018_LDO5] = { 82, 37, 39, 2 }, | ||
| 412 | [QCOM_RPM_PM8018_LDO6] = { 84, 39, 40, 2 }, | ||
| 413 | [QCOM_RPM_PM8018_LDO7] = { 86, 41, 41, 2 }, | ||
| 414 | [QCOM_RPM_PM8018_LDO8] = { 88, 43, 42, 2 }, | ||
| 415 | [QCOM_RPM_PM8018_LDO9] = { 90, 45, 43, 2 }, | ||
| 416 | [QCOM_RPM_PM8018_LDO10] = { 92, 47, 44, 2 }, | ||
| 417 | [QCOM_RPM_PM8018_LDO11] = { 94, 49, 45, 2 }, | ||
| 418 | [QCOM_RPM_PM8018_LDO12] = { 96, 51, 46, 2 }, | ||
| 419 | [QCOM_RPM_PM8018_LDO13] = { 98, 53, 47, 2 }, | ||
| 420 | [QCOM_RPM_PM8018_LDO14] = { 100, 55, 48, 2 }, | ||
| 421 | [QCOM_RPM_PM8018_LVS1] = { 102, 57, 49, 1 }, | ||
| 422 | [QCOM_RPM_PM8018_NCP] = { 103, 58, 80, 2 }, | ||
| 423 | [QCOM_RPM_CXO_BUFFERS] = { 105, 60, 81, 1 }, | ||
| 424 | [QCOM_RPM_USB_OTG_SWITCH] = { 106, 61, 82, 1 }, | ||
| 425 | [QCOM_RPM_HDMI_SWITCH] = { 107, 62, 83, 1 }, | ||
| 426 | [QCOM_RPM_VOLTAGE_CORNER] = { 109, 64, 87, 1 }, | ||
| 427 | }; | ||
| 428 | |||
| 429 | static const struct qcom_rpm_data mdm9615_template = { | ||
| 430 | .version = 3, | ||
| 431 | .resource_table = mdm9615_rpm_resource_table, | ||
| 432 | .n_resources = ARRAY_SIZE(mdm9615_rpm_resource_table), | ||
| 433 | .req_ctx_off = 3, | ||
| 434 | .req_sel_off = 11, | ||
| 435 | .ack_ctx_off = 15, | ||
| 436 | .ack_sel_off = 23, | ||
| 437 | .req_sel_size = 4, | ||
| 438 | .ack_sel_size = 7, | ||
| 439 | }; | ||
| 440 | |||
| 391 | static const struct of_device_id qcom_rpm_of_match[] = { | 441 | static const struct of_device_id qcom_rpm_of_match[] = { |
| 392 | { .compatible = "qcom,rpm-apq8064", .data = &apq8064_template }, | 442 | { .compatible = "qcom,rpm-apq8064", .data = &apq8064_template }, |
| 393 | { .compatible = "qcom,rpm-msm8660", .data = &msm8660_template }, | 443 | { .compatible = "qcom,rpm-msm8660", .data = &msm8660_template }, |
| 394 | { .compatible = "qcom,rpm-msm8960", .data = &msm8960_template }, | 444 | { .compatible = "qcom,rpm-msm8960", .data = &msm8960_template }, |
| 395 | { .compatible = "qcom,rpm-ipq8064", .data = &ipq806x_template }, | 445 | { .compatible = "qcom,rpm-ipq8064", .data = &ipq806x_template }, |
| 446 | { .compatible = "qcom,rpm-mdm9615", .data = &mdm9615_template }, | ||
| 396 | { } | 447 | { } |
| 397 | }; | 448 | }; |
| 398 | MODULE_DEVICE_TABLE(of, qcom_rpm_of_match); | 449 | MODULE_DEVICE_TABLE(of, qcom_rpm_of_match); |
diff --git a/include/dt-bindings/mfd/qcom-rpm.h b/include/dt-bindings/mfd/qcom-rpm.h index 13a9d4bf2662..54aef5e21763 100644 --- a/include/dt-bindings/mfd/qcom-rpm.h +++ b/include/dt-bindings/mfd/qcom-rpm.h | |||
| @@ -147,6 +147,28 @@ | |||
| 147 | #define QCOM_RPM_SMB208_S1b 137 | 147 | #define QCOM_RPM_SMB208_S1b 137 |
| 148 | #define QCOM_RPM_SMB208_S2a 138 | 148 | #define QCOM_RPM_SMB208_S2a 138 |
| 149 | #define QCOM_RPM_SMB208_S2b 139 | 149 | #define QCOM_RPM_SMB208_S2b 139 |
| 150 | #define QCOM_RPM_PM8018_SMPS1 140 | ||
| 151 | #define QCOM_RPM_PM8018_SMPS2 141 | ||
| 152 | #define QCOM_RPM_PM8018_SMPS3 142 | ||
| 153 | #define QCOM_RPM_PM8018_SMPS4 143 | ||
| 154 | #define QCOM_RPM_PM8018_SMPS5 144 | ||
| 155 | #define QCOM_RPM_PM8018_LDO1 145 | ||
| 156 | #define QCOM_RPM_PM8018_LDO2 146 | ||
| 157 | #define QCOM_RPM_PM8018_LDO3 147 | ||
| 158 | #define QCOM_RPM_PM8018_LDO4 148 | ||
| 159 | #define QCOM_RPM_PM8018_LDO5 149 | ||
| 160 | #define QCOM_RPM_PM8018_LDO6 150 | ||
| 161 | #define QCOM_RPM_PM8018_LDO7 151 | ||
| 162 | #define QCOM_RPM_PM8018_LDO8 152 | ||
| 163 | #define QCOM_RPM_PM8018_LDO9 153 | ||
| 164 | #define QCOM_RPM_PM8018_LDO10 154 | ||
| 165 | #define QCOM_RPM_PM8018_LDO11 155 | ||
| 166 | #define QCOM_RPM_PM8018_LDO12 156 | ||
| 167 | #define QCOM_RPM_PM8018_LDO13 157 | ||
| 168 | #define QCOM_RPM_PM8018_LDO14 158 | ||
| 169 | #define QCOM_RPM_PM8018_LVS1 159 | ||
| 170 | #define QCOM_RPM_PM8018_NCP 160 | ||
| 171 | #define QCOM_RPM_VOLTAGE_CORNER 161 | ||
| 150 | 172 | ||
| 151 | /* | 173 | /* |
| 152 | * Constants used to select force mode for regulators. | 174 | * Constants used to select force mode for regulators. |
