1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
2 | /* |
3 | * max8952.h - Voltage regulation for the Maxim 8952 |
4 | * |
5 | * Copyright (C) 2010 Samsung Electrnoics |
6 | * MyungJoo Ham <myungjoo.ham@samsung.com> |
7 | */ |
8 | |
9 | #ifndef REGULATOR_MAX8952 |
10 | #define REGULATOR_MAX8952 |
11 | |
12 | #include <linux/regulator/machine.h> |
13 | |
14 | enum { |
15 | MAX8952_DVS_MODE0, |
16 | MAX8952_DVS_MODE1, |
17 | MAX8952_DVS_MODE2, |
18 | MAX8952_DVS_MODE3, |
19 | }; |
20 | |
21 | enum { |
22 | MAX8952_DVS_770mV = 0, |
23 | MAX8952_DVS_780mV, |
24 | MAX8952_DVS_790mV, |
25 | MAX8952_DVS_800mV, |
26 | MAX8952_DVS_810mV, |
27 | MAX8952_DVS_820mV, |
28 | MAX8952_DVS_830mV, |
29 | MAX8952_DVS_840mV, |
30 | MAX8952_DVS_850mV, |
31 | MAX8952_DVS_860mV, |
32 | MAX8952_DVS_870mV, |
33 | MAX8952_DVS_880mV, |
34 | MAX8952_DVS_890mV, |
35 | MAX8952_DVS_900mV, |
36 | MAX8952_DVS_910mV, |
37 | MAX8952_DVS_920mV, |
38 | MAX8952_DVS_930mV, |
39 | MAX8952_DVS_940mV, |
40 | MAX8952_DVS_950mV, |
41 | MAX8952_DVS_960mV, |
42 | MAX8952_DVS_970mV, |
43 | MAX8952_DVS_980mV, |
44 | MAX8952_DVS_990mV, |
45 | MAX8952_DVS_1000mV, |
46 | MAX8952_DVS_1010mV, |
47 | MAX8952_DVS_1020mV, |
48 | MAX8952_DVS_1030mV, |
49 | MAX8952_DVS_1040mV, |
50 | MAX8952_DVS_1050mV, |
51 | MAX8952_DVS_1060mV, |
52 | MAX8952_DVS_1070mV, |
53 | MAX8952_DVS_1080mV, |
54 | MAX8952_DVS_1090mV, |
55 | MAX8952_DVS_1100mV, |
56 | MAX8952_DVS_1110mV, |
57 | MAX8952_DVS_1120mV, |
58 | MAX8952_DVS_1130mV, |
59 | MAX8952_DVS_1140mV, |
60 | MAX8952_DVS_1150mV, |
61 | MAX8952_DVS_1160mV, |
62 | MAX8952_DVS_1170mV, |
63 | MAX8952_DVS_1180mV, |
64 | MAX8952_DVS_1190mV, |
65 | MAX8952_DVS_1200mV, |
66 | MAX8952_DVS_1210mV, |
67 | MAX8952_DVS_1220mV, |
68 | MAX8952_DVS_1230mV, |
69 | MAX8952_DVS_1240mV, |
70 | MAX8952_DVS_1250mV, |
71 | MAX8952_DVS_1260mV, |
72 | MAX8952_DVS_1270mV, |
73 | MAX8952_DVS_1280mV, |
74 | MAX8952_DVS_1290mV, |
75 | MAX8952_DVS_1300mV, |
76 | MAX8952_DVS_1310mV, |
77 | MAX8952_DVS_1320mV, |
78 | MAX8952_DVS_1330mV, |
79 | MAX8952_DVS_1340mV, |
80 | MAX8952_DVS_1350mV, |
81 | MAX8952_DVS_1360mV, |
82 | MAX8952_DVS_1370mV, |
83 | MAX8952_DVS_1380mV, |
84 | MAX8952_DVS_1390mV, |
85 | MAX8952_DVS_1400mV, |
86 | }; |
87 | |
88 | enum { |
89 | MAX8952_SYNC_FREQ_26MHZ, /* Default */ |
90 | MAX8952_SYNC_FREQ_13MHZ, |
91 | MAX8952_SYNC_FREQ_19_2MHZ, |
92 | }; |
93 | |
94 | enum { |
95 | MAX8952_RAMP_32mV_us = 0, /* Default */ |
96 | MAX8952_RAMP_16mV_us, |
97 | MAX8952_RAMP_8mV_us, |
98 | MAX8952_RAMP_4mV_us, |
99 | MAX8952_RAMP_2mV_us, |
100 | MAX8952_RAMP_1mV_us, |
101 | MAX8952_RAMP_0_5mV_us, |
102 | MAX8952_RAMP_0_25mV_us, |
103 | }; |
104 | |
105 | #define MAX8952_NUM_DVS_MODE 4 |
106 | |
107 | struct max8952_platform_data { |
108 | u32 default_mode; |
109 | u32 dvs_mode[MAX8952_NUM_DVS_MODE]; /* MAX8952_DVS_MODEx_XXXXmV */ |
110 | |
111 | u32 sync_freq; |
112 | u32 ramp_speed; |
113 | |
114 | struct regulator_init_data *reg_data; |
115 | }; |
116 | |
117 | |
118 | #endif /* REGULATOR_MAX8952 */ |
119 | |