ipq806x: add power regulators support
[15.05/openwrt.git] / target / linux / ipq806x / patches-4.0 / 121-mfd-qcom_rpm-Add-support-for-IPQ8064.patch
1 From 4d54b0adfa67476e6509bc8646b9dbac642e8a29 Mon Sep 17 00:00:00 2001
2 From: Josh Cartwright <joshc@codeaurora.org>
3 Date: Thu, 26 Mar 2015 11:29:26 -0700
4 Subject: [PATCH] mfd: qcom_rpm: Add support for IPQ8064
5
6 The IPQ8064 also includes an RPM following the same message structure as
7 other chips.  In addition, it supports a few new resource types to
8 support the NSS fabric clocks and the SMB208/SMB209 regulators found on
9 the reference boards.
10
11 Signed-off-by: Josh Cartwright <joshc@codeaurora.org>
12 Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
13 Signed-off-by: Lee Jones <lee.jones@linaro.org>
14 ---
15  drivers/mfd/qcom_rpm.c | 41 +++++++++++++++++++++++++++++++++++++++++
16  1 file changed, 41 insertions(+)
17
18 --- a/drivers/mfd/qcom_rpm.c
19 +++ b/drivers/mfd/qcom_rpm.c
20 @@ -323,10 +323,51 @@ static const struct qcom_rpm_data msm896
21         .n_resources = ARRAY_SIZE(msm8960_rpm_resource_table),
22  };
23  
24 +static const struct qcom_rpm_resource ipq806x_rpm_resource_table[] = {
25 +       [QCOM_RPM_CXO_CLK] =                    { 25, 9, 5, 1 },
26 +       [QCOM_RPM_PXO_CLK] =                    { 26, 10, 6, 1 },
27 +       [QCOM_RPM_APPS_FABRIC_CLK] =            { 27, 11, 8, 1 },
28 +       [QCOM_RPM_SYS_FABRIC_CLK] =             { 28, 12, 9, 1 },
29 +       [QCOM_RPM_NSS_FABRIC_0_CLK] =           { 29, 13, 10, 1 },
30 +       [QCOM_RPM_DAYTONA_FABRIC_CLK] =         { 30, 14, 11, 1 },
31 +       [QCOM_RPM_SFPB_CLK] =                   { 31, 15, 12, 1 },
32 +       [QCOM_RPM_CFPB_CLK] =                   { 32, 16, 13, 1 },
33 +       [QCOM_RPM_NSS_FABRIC_1_CLK] =           { 33, 17, 14, 1 },
34 +       [QCOM_RPM_EBI1_CLK] =                   { 34, 18, 16, 1 },
35 +       [QCOM_RPM_APPS_FABRIC_HALT] =           { 35, 19, 18, 2 },
36 +       [QCOM_RPM_APPS_FABRIC_MODE] =           { 37, 20, 19, 3 },
37 +       [QCOM_RPM_APPS_FABRIC_IOCTL] =          { 40, 21, 20, 1 },
38 +       [QCOM_RPM_APPS_FABRIC_ARB] =            { 41, 22, 21, 12 },
39 +       [QCOM_RPM_SYS_FABRIC_HALT] =            { 53, 23, 22, 2 },
40 +       [QCOM_RPM_SYS_FABRIC_MODE] =            { 55, 24, 23, 3 },
41 +       [QCOM_RPM_SYS_FABRIC_IOCTL] =           { 58, 25, 24, 1 },
42 +       [QCOM_RPM_SYS_FABRIC_ARB] =             { 59, 26, 25, 30 },
43 +       [QCOM_RPM_MM_FABRIC_HALT] =             { 89, 27, 26, 2 },
44 +       [QCOM_RPM_MM_FABRIC_MODE] =             { 91, 28, 27, 3 },
45 +       [QCOM_RPM_MM_FABRIC_IOCTL] =            { 94, 29, 28, 1 },
46 +       [QCOM_RPM_MM_FABRIC_ARB] =              { 95, 30, 29, 2 },
47 +       [QCOM_RPM_CXO_BUFFERS] =                { 209, 33, 31, 1 },
48 +       [QCOM_RPM_USB_OTG_SWITCH] =             { 210, 34, 32, 1 },
49 +       [QCOM_RPM_HDMI_SWITCH] =                { 211, 35, 33, 1 },
50 +       [QCOM_RPM_DDR_DMM] =                    { 212, 36, 34, 2 },
51 +       [QCOM_RPM_VDDMIN_GPIO] =                { 215, 40, 39, 1 },
52 +       [QCOM_RPM_SMB208_S1a] =                 { 216, 41, 90, 2 },
53 +       [QCOM_RPM_SMB208_S1b] =                 { 218, 43, 91, 2 },
54 +       [QCOM_RPM_SMB208_S2a] =                 { 220, 45, 92, 2 },
55 +       [QCOM_RPM_SMB208_S2b] =                 { 222, 47, 93, 2 },
56 +};
57 +
58 +static const struct qcom_rpm_data ipq806x_template = {
59 +       .version = 3,
60 +       .resource_table = ipq806x_rpm_resource_table,
61 +       .n_resources = ARRAY_SIZE(ipq806x_rpm_resource_table),
62 +};
63 +
64  static const struct of_device_id qcom_rpm_of_match[] = {
65         { .compatible = "qcom,rpm-apq8064", .data = &apq8064_template },
66         { .compatible = "qcom,rpm-msm8660", .data = &msm8660_template },
67         { .compatible = "qcom,rpm-msm8960", .data = &msm8960_template },
68 +       { .compatible = "qcom,rpm-ipq8064", .data = &ipq806x_template },
69         { }
70  };
71  MODULE_DEVICE_TABLE(of, qcom_rpm_of_match);