blob: 143d9c055e85687d6e0af91f6c00f4fa4ef0c6b1 [file] [log] [blame]
Xipeng Gu5affb812019-06-18 14:59:17 +08001/* Copyright (c) 2015, 2018-2019, The Linux Foundation. All rights reserved.
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +05302 *
3 * Redistribution and use in source and binary forms, with or without
4 * modification, are permitted provided that the following conditions are
5 * met:
6 * * Redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer.
8 * * Redistributions in binary form must reproduce the above
9 * copyright notice, this list of conditions and the following
10 * disclaimer in the documentation and/or other materials provided
11 * with the distribution.
12 * * Neither the name of The Linux Fundation, Inc. nor the names of its
13 * contributors may be used to endorse or promote products derived
14 * from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 */
29
30#include <regulator.h>
31#include <rpm-smd.h>
Casey Piperd2af07b2015-04-01 18:01:58 -070032#include <bits.h>
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +053033#include <debug.h>
Unnati Gandhi46edd9d2015-05-29 14:10:03 +053034#include <platform.h>
Xipeng Gu5affb812019-06-18 14:59:17 +080035#include <board.h>
Unnati Gandhi46edd9d2015-05-29 14:10:03 +053036
37
38static uint32_t ldo1[][11]=
39{
40 {
41 LDOA_RES_TYPE, 1,
42 KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
43 KEY_MICRO_VOLT, 4, 0,
44 KEY_CURRENT, 4, 0,
45 },
46
47 {
48 LDOA_RES_TYPE, 1,
49 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
50 KEY_MICRO_VOLT, 4, 1200000,
51 KEY_CURRENT, 4, 40,
52 },
53};
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +053054
55static uint32_t ldo2[][11]=
56{
57 {
58 LDOA_RES_TYPE, 2,
59 KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
60 KEY_MICRO_VOLT, 4, 0,
61 KEY_CURRENT, 4, 0,
62 },
63
64 {
65 LDOA_RES_TYPE, 2,
66 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
67 KEY_MICRO_VOLT, 4, 1200000,
68 KEY_CURRENT, 4, 40,
69 },
70};
71
Padmanabhan Komanduru2ab03a62018-05-17 14:38:59 +053072static uint32_t ldo5[][11] = {
73 {
74 LDOA_RES_TYPE, 5,
75 KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
76 KEY_MICRO_VOLT, 4, 0,
77 KEY_CURRENT, 4, 0,
78 },
79
80 {
81 LDOA_RES_TYPE, 5,
82 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
83 KEY_MICRO_VOLT, 4, 1800000,
84 KEY_CURRENT, 4, 150,
85 },
86};
87
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +053088static uint32_t ldo6[][11]=
89{
90 {
91 LDOA_RES_TYPE, 6,
92 KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
93 KEY_MICRO_VOLT, 4, 0,
94 KEY_CURRENT, 4, 0,
95 },
96
97 {
98 LDOA_RES_TYPE, 6,
99 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
100 KEY_MICRO_VOLT, 4, 1800000,
101 KEY_CURRENT, 4, 150,
102 },
103};
104
Xipeng Gu5affb812019-06-18 14:59:17 +0800105static uint32_t ldo6_pm660[][11]=
106{
107 {
108 LDOA_RES_TYPE, 6,
109 KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
110 KEY_MICRO_VOLT, 4, 0,
111 KEY_CURRENT, 4, 0,
112 },
113
114 {
115 LDOA_RES_TYPE, 6,
116 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
117 KEY_MICRO_VOLT, 4, 800000,
118 KEY_CURRENT, 4, 150,
119 },
120};
121
122static uint32_t ldo13_pm660[][11]=
123{
124 {
125 LDOA_RES_TYPE, 13,
126 KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
127 KEY_MICRO_VOLT, 4, 0,
128 KEY_CURRENT, 4, 0,
129 },
130
131 {
132 LDOA_RES_TYPE, 13,
133 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
134 KEY_MICRO_VOLT, 4, 1800000,
135 KEY_CURRENT, 4, 40,
136 },
137};
138
139static uint32_t ldo15_pm660[][11]=
140{
141 {
142 LDOA_RES_TYPE, 15,
143 KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
144 KEY_MICRO_VOLT, 4, 0,
145 KEY_CURRENT, 4, 0,
146 },
147
148 {
149 LDOA_RES_TYPE, 15,
150 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
151 KEY_MICRO_VOLT, 4, 2800000,
152 KEY_CURRENT, 4, 40,
153 },
154};
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530155
156static uint32_t ldo17[][11]=
157{
158 {
159 LDOA_RES_TYPE, 17,
160 KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
161 KEY_MICRO_VOLT, 4, 0,
162 KEY_CURRENT, 4, 0,
163 },
164
165 {
166 LDOA_RES_TYPE, 17,
167 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
168 KEY_MICRO_VOLT, 4, 2850000,
169 KEY_CURRENT, 4, 40,
170 },
171};
172
Casey Piperd2af07b2015-04-01 18:01:58 -0700173void regulator_enable(uint32_t enable)
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530174{
Xipeng Gu5affb812019-06-18 14:59:17 +0800175 uint32_t hw_subtype = board_hardware_subtype();
176
Padmanabhan Komanduru2ab03a62018-05-17 14:38:59 +0530177 if (platform_is_msm8956()) {
Unnati Gandhi46edd9d2015-05-29 14:10:03 +0530178 if (enable & REG_LDO1)
179 rpm_send_data(&ldo1[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
180
shaoxing0534f8b2019-07-08 19:56:02 +0800181 } else if (platform_is_sdm439() || platform_is_sdm429() || platform_is_sdm429w()) {
Padmanabhan Komanduru2ab03a62018-05-17 14:38:59 +0530182 if (enable & REG_LDO5)
183 rpm_send_data(&ldo5[GENERIC_ENABLE][0],
184 36, RPM_REQUEST_TYPE);
185 } else {
Unnati Gandhi46edd9d2015-05-29 14:10:03 +0530186 if (enable & REG_LDO2)
187 rpm_send_data(&ldo2[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
188 }
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530189
shaoxing0534f8b2019-07-08 19:56:02 +0800190 if ((platform_is_sdm429() || platform_is_sdm429w()) && hw_subtype
Xipeng Gu5affb812019-06-18 14:59:17 +0800191 == HW_PLATFORM_SUBTYPE_429W_PM660) {
192 if (enable & REG_LDO13)
193 rpm_send_data(&ldo13_pm660[GENERIC_ENABLE][0],
194 36, RPM_REQUEST_TYPE);
195 if (enable & REG_LDO15)
196 rpm_send_data(&ldo15_pm660[GENERIC_ENABLE][0],
197 36, RPM_REQUEST_TYPE);
198 }
199
Casey Piperd2af07b2015-04-01 18:01:58 -0700200 if (enable & REG_LDO17)
201 rpm_send_data(&ldo17[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530202
Xipeng Gu5affb812019-06-18 14:59:17 +0800203 if (enable & REG_LDO6) {
shaoxing0534f8b2019-07-08 19:56:02 +0800204 if ((platform_is_sdm429() || platform_is_sdm429w()) && hw_subtype
Xipeng Gu5affb812019-06-18 14:59:17 +0800205 == HW_PLATFORM_SUBTYPE_429W_PM660)
206 rpm_send_data(&ldo6_pm660[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
207 else
208 rpm_send_data(&ldo6[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
209 }
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530210}
211
Casey Piperd2af07b2015-04-01 18:01:58 -0700212void regulator_disable(uint32_t enable)
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530213{
Padmanabhan Komanduru2ab03a62018-05-17 14:38:59 +0530214 if (platform_is_msm8956()) {
Unnati Gandhi46edd9d2015-05-29 14:10:03 +0530215 if (enable & REG_LDO1)
216 rpm_send_data(&ldo1[GENERIC_DISABLE][0], 36, RPM_REQUEST_TYPE);
217
shaoxing0534f8b2019-07-08 19:56:02 +0800218 } else if (platform_is_sdm439() || platform_is_sdm429() || platform_is_sdm429w()) {
Padmanabhan Komanduru2ab03a62018-05-17 14:38:59 +0530219 if (enable & REG_LDO5)
220 rpm_send_data(&ldo5[GENERIC_DISABLE][0],
221 36, RPM_REQUEST_TYPE);
222 } else {
Unnati Gandhi46edd9d2015-05-29 14:10:03 +0530223 if (enable & REG_LDO2)
224 rpm_send_data(&ldo2[GENERIC_DISABLE][0], 36, RPM_REQUEST_TYPE);
225 }
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530226
Padmanabhan Komanduru7cd26232015-04-16 10:43:29 -0700227 if (enable & REG_LDO17)
Casey Piperd2af07b2015-04-01 18:01:58 -0700228 rpm_send_data(&ldo17[GENERIC_DISABLE][0], 36, RPM_REQUEST_TYPE);
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530229
Padmanabhan Komanduru7cd26232015-04-16 10:43:29 -0700230 if (enable & REG_LDO6)
Casey Piperd2af07b2015-04-01 18:01:58 -0700231 rpm_send_data(&ldo6[GENERIC_DISABLE][0], 36, RPM_REQUEST_TYPE);
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530232}