blob: 74b6fe04235fc6d1ea9738459c202bf09e5d4359 [file] [log] [blame]
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +05301/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
2 *
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>
35
36
37static uint32_t ldo1[][11]=
38{
39 {
40 LDOA_RES_TYPE, 1,
41 KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
42 KEY_MICRO_VOLT, 4, 0,
43 KEY_CURRENT, 4, 0,
44 },
45
46 {
47 LDOA_RES_TYPE, 1,
48 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
49 KEY_MICRO_VOLT, 4, 1200000,
50 KEY_CURRENT, 4, 40,
51 },
52};
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +053053
54static uint32_t ldo2[][11]=
55{
56 {
57 LDOA_RES_TYPE, 2,
58 KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
59 KEY_MICRO_VOLT, 4, 0,
60 KEY_CURRENT, 4, 0,
61 },
62
63 {
64 LDOA_RES_TYPE, 2,
65 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
66 KEY_MICRO_VOLT, 4, 1200000,
67 KEY_CURRENT, 4, 40,
68 },
69};
70
71static uint32_t ldo6[][11]=
72{
73 {
74 LDOA_RES_TYPE, 6,
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, 6,
82 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
83 KEY_MICRO_VOLT, 4, 1800000,
84 KEY_CURRENT, 4, 150,
85 },
86};
87
88
89static uint32_t ldo17[][11]=
90{
91 {
92 LDOA_RES_TYPE, 17,
93 KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
94 KEY_MICRO_VOLT, 4, 0,
95 KEY_CURRENT, 4, 0,
96 },
97
98 {
99 LDOA_RES_TYPE, 17,
100 KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
101 KEY_MICRO_VOLT, 4, 2850000,
102 KEY_CURRENT, 4, 40,
103 },
104};
105
Casey Piperd2af07b2015-04-01 18:01:58 -0700106void regulator_enable(uint32_t enable)
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530107{
Unnati Gandhi46edd9d2015-05-29 14:10:03 +0530108 if(platform_is_msm8956())
109 {
110 if (enable & REG_LDO1)
111 rpm_send_data(&ldo1[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
112
113 }
114 else
115 {
116 if (enable & REG_LDO2)
117 rpm_send_data(&ldo2[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
118 }
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530119
Casey Piperd2af07b2015-04-01 18:01:58 -0700120 if (enable & REG_LDO17)
121 rpm_send_data(&ldo17[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530122
Casey Piperd2af07b2015-04-01 18:01:58 -0700123 if (enable & REG_LDO6)
124 rpm_send_data(&ldo6[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530125}
126
Casey Piperd2af07b2015-04-01 18:01:58 -0700127void regulator_disable(uint32_t enable)
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530128{
Unnati Gandhi46edd9d2015-05-29 14:10:03 +0530129 if(platform_is_msm8956())
130 {
131 if (enable & REG_LDO1)
132 rpm_send_data(&ldo1[GENERIC_DISABLE][0], 36, RPM_REQUEST_TYPE);
133
134 }
135 else
136 {
137 if (enable & REG_LDO2)
138 rpm_send_data(&ldo2[GENERIC_DISABLE][0], 36, RPM_REQUEST_TYPE);
139 }
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530140
Padmanabhan Komanduru7cd26232015-04-16 10:43:29 -0700141 if (enable & REG_LDO17)
Casey Piperd2af07b2015-04-01 18:01:58 -0700142 rpm_send_data(&ldo17[GENERIC_DISABLE][0], 36, RPM_REQUEST_TYPE);
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530143
Padmanabhan Komanduru7cd26232015-04-16 10:43:29 -0700144 if (enable & REG_LDO6)
Casey Piperd2af07b2015-04-01 18:01:58 -0700145 rpm_send_data(&ldo6[GENERIC_DISABLE][0], 36, RPM_REQUEST_TYPE);
Aparna Mallavarapufa5f8a72015-03-31 06:21:36 +0530146}