blob: 4ad2ab98ae154023b39f8762677765103ad22bb8 [file] [log] [blame]
yuezonghe824eb0c2024-06-27 02:32:26 -07001/*
2 * zx234290-regulator-wrapper.c -- regulator for ZX234290 PMICs
3 *
4 * Copyright 2016 ZTE Inc.
5 *
6 * Author: yuxiang<yu.xiang5@zte.com.cn>
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License as published by the
10 * Free Software Foundation; either version 2 of the License, or (at your
11 * option) any later version.
12 *
13 */
14#include <linux/init.h> /* For init/exit macros */
15#include <linux/module.h> /* For MODULE_ marcros */
16#include <linux/interrupt.h>
17#include <linux/spinlock.h>
18#include <linux/platform_device.h>
19
20#include <linux/device.h>
21#include <linux/delay.h>
22#include <linux/mutex.h>
23#include <linux/mfd/zx234290.h>
24
25static int zDrvZx234290_DischargerConfig(void)
26{
27 int nRet = 0;
28 int index = 0 ;
29
30 /*enable all discharger*/
31 for(index = DISCHARGER_LDO_9; index < DISCHARGER_MAX; index++)
32 {
33 if(index == DISCHARGER_BUCK_X || index == DISCHARGER_LDO_X)
34 continue;
35 nRet = zx234290_SetDischarger(index, DISCHARGER_ENABLE);
36 if (0 != nRet)
37 {
38 return -EIO;
39 }
40 }
41 /*config, buck0 discharger disable*/
42 /*
43 nRet = Zx234290_SetDischarger(DISCHARGER_BUCK_0, DISCHARGER_DISBALE);
44 if (DRV_SUCCESS != nRet)
45 {
46 return DRV_ERROR;
47 }*/
48
49 return 0;
50}
51#if 1
52extern int pmu_chip_ver;
53
54int zDrvZx234290_NormalSleepConfig(void)
55{
56 int nRet = 0;
57
58 /* if chg_pwron, this bucks will be closed, we open them again when system reset... */
59 //zx234290_set_buck3_onoff(LDO_ENABLE_ON); /*RF 1V6*/
60 zx234290_set_buck4_onoff(LDO_ENABLE_ON); /*PA 3V6*/
61 //zx234290_set_ldo8_onoff(LDO_ENABLE_ON); /*ZSP JTAG/SD 2V85*/
62 //zx234290_set_ldo6_onoff(LDO_ENABLE_ON); /*SIM1 1V8ÕâÀï²»Óÿª£¬SIM¿¨×Ô¼º¿ª£¬·ñÔòÓ°ÏìʱÐò*/
63 if (pmu_chip_ver != 297)
64 zx234290_set_ldo10_onoff(LDO_ENABLE_ON); /*adc0.9v/dac0.9v/avdd_pll0.9v/avdd_abb0.9v*/
65 zx234290_set_ldo1_onoff(LDO_ENABLE_ON); /*USB 0V9*/
66 zx234290_set_ldo5_onoff(LDO_ENABLE_ON); /*USB 3V3*/
67
68 //nRet = Zx234290_SetBUCK1SleepMode(BUCK1_SLP_AUTO_ECO_SLP);
69 nRet = zx234290_set_buck1_sleep_mode(BUCK1_SLP_SHUTDOWN);
70 if (0 != nRet)
71 {
72 return -EIO;
73 }
74
75 nRet = zx234290_set_buck2_sleep_mode(BUCK234_SLP_ECO_WITH_ECO);
76 if (0 != nRet)
77 {
78 return -EIO;
79 }
80 //nRet = Zx234290_SetBUCK3SleepMode(BUCK234_SLP_ECO_WITH_ECO);
81 nRet = zx234290_set_buck3_sleep_mode(BUCK234_SLP_SHUTDOWN);
82 if (0 != nRet)
83 {
84 return -EIO;
85 }
86
87 nRet = zx234290_set_buck4_sleep_mode(BUCK234_SLP_SHUTDOWN);
88 if (0 != nRet)
89 {
90 return -EIO;
91 }
92 nRet = zx234290_set_ldo2_sleep_mode(LDOA_SLP_ECO_VOLT);
93 if (0 != nRet)
94 {
95 return -EIO;
96 }
97 nRet = zx234290_set_ldo3_sleep_mode(LDOA_SLP_ECO_VOLT);
98 if (0 != nRet)
99 {
100 return -EIO;
101 }
102
103 nRet = zx234290_set_ldo4_sleep_mode(LDOB_SLP_SHUTDOWN);
104 if (0 != nRet)
105 {
106 return -EIO;
107 }
108
109 nRet = zx234290_set_ldo6_sleep_mode(LDOB_SLP_ECO_VOLT);
110 if (0 != nRet)
111 {
112 return -EIO;
113 }
114
115 nRet = zx234290_set_ldo7_sleep_mode(LDOA_SLP_ECO_VOLT);
116 if (0 != nRet)
117 {
118 return -EIO;
119 }
120
121 nRet = zx234290_set_ldo8_sleep_mode(LDOA_SLP_ECO_VOLT);//×¢ÒâÐͺŻú²»ÄܹØ
122 if (0 != nRet)
123 {
124 return -EIO;
125 }
126
127 nRet = zx234290_set_ldo9_sleep_mode(LDOA_SLP_ECO_VOLT);
128 if (0 != nRet)
129 {
130 return -EIO;
131 }
132
133 nRet = zx234290_set_ldo10_sleep_mode(LDOA_SLP_ECO_VOLT);
134 if (0 != nRet)
135 {
136 return -EIO;
137 }
138
139 return 0;
140}
141/* for chaging power on */
142int zDrvZx234290_ChgOnSleepConfig(void)
143{
144 //zx234290_set_buck3_onoff(LDO_ENABLE_OFF); /*RF 1V6*/
145 zx234290_set_buck4_onoff(LDO_ENABLE_OFF); /*PA 3V6*/
146 //zx234290_set_ldo1_onoff(LDO_ENABLE_OFF); /*USB 0V9*/
147 //zx234290_set_ldo5_onoff(LDO_ENABLE_OFF); /*USB 3V3*/
148 zx234290_set_ldo6_onoff(LDO_ENABLE_OFF); /*SIM1 1V8*/
149 //zx234290_set_ldo7_onoff(LDO_ENABLE_OFF); /*RF 2V85*/
150 //zx234290_set_ldo8_onoff(LDO_ENABLE_ON); /*ZSP JTAG/SD 2V85 ÐͺŻú²»ÄܹØ*/
151 //zx234290_set_ldo9_onoff(LDO_ENABLE_OFF); /*PLL 0V9*/
152 zx234290_set_ldo10_onoff(LDO_ENABLE_OFF); /*ABB DIG*/
153
154 zx234290_set_buck1_sleep_mode(BUCK1_SLP_SHUTDOWN); /*vdcore*/
155 zx234290_set_buck2_sleep_mode(BUCK234_SLP_ECO_WITH_ECO);/*ddr1.2v/mcp1.2v/hsic1.2v*/
156 zx234290_set_buck3_sleep_mode(BUCK234_SLP_SHUTDOWN); /*RF 1V6*/
157 //zx234290_set_buck4_sleep_mode(BUCK234_SLP_SHUTDOWN); /*PA 3V6*/
158 //zx234290_set_ldo1_sleep_mode(LDOA_SLP_SHUTDOWN); /*USB 0V9*/
159 //zx234290_set_ldo5_sleep_mode(LDOA_SLP_SHUTDOWN); /*USB 3V3*/
160 zx234290_set_ldo2_sleep_mode(LDOA_SLP_ECO_VOLT); /*io1.8v/mcp1.8v/sd01.8v*/
161 zx234290_set_ldo3_sleep_mode(LDOA_SLP_ECO_VOLT); /*vp111.8v/vddr_pll1.8v/*/
162 zx234290_set_ldo4_sleep_mode(LDOA_SLP_SHUTDOWN); /*vcxo*/
163 //zx234290_set_ldo6_sleep_mode(LDOA_SLP_SHUTDOWN); /*SIM1 1V8*/
164 zx234290_set_ldo7_sleep_mode(LDOA_SLP_ECO_VOLT); /*RF -- 26M */
165 zx234290_set_ldo8_sleep_mode(LDOA_SLP_ECO_VOLT); /*ZSP JTAG/SD 2V85/LCD*/
166 zx234290_set_ldo9_sleep_mode(LDOA_SLP_ECO_VOLT); /*PLL 0V9*/
167 //zx234290_set_ldo10_sleep_mode(LDOA_SLP_SHUTDOWN); /*ABB DIG*/
168
169 return 0;
170}
171
172
173#endif
174#ifdef CONFIG_PMU_GM
175extern int zx234296h_support_parameter(void);
176#endif
177int zDrvZx234290_LdoInit(void)
178{
179 int ret = 0;
180
181#ifdef CONFIG_PMU_GM
182 zx234296h_support_parameter();
183#endif
184 //zDrvZx234290_Config();
185 ret = zDrvZx234290_LdoRstErr();
186
187 ret += zx234290_set_buck1_active_mode(BUCK_NRM_FORCE_PWM);
188
189 ret += zx234290_set_buck2_active_mode(BUCK_NRM_FORCE_PWM);
190
191 ret += zx234290_set_buck3_active_mode(BUCK_NRM_FORCE_PWM);
192
193 ret += zx234290_set_buck4_active_mode(BUCK_NRM_FORCE_PWM);
194
195
196 ret += zDrvZx234290_DischargerConfig();
197
198 //zDrvZx234290_SleepConfig();
199
200 ret += zx234290_SetLlpEnable(LLP_ENABLE);
201 ret += zx234290_SetTllpToDo(LLP_SHUTDOWN);
202 // ret += zx234290_SetRestartDly(LLP_DLY_500MS); //LLP_DLY_250MS
203 if(ret != 0)
204 {
205 printk("zx234290 zDrvZx234290_LdoInit err\n");
206 return -1;
207 }
208
209 return 0;
210}
211#if 1 /* vdd_CORE0 -- 0.9V -- BUCK1 */
212/*******************************************************************************
213 * Function:
214 * Description:
215 * Parameters:
216 * Input:
217 *
218 * Output:
219 *
220 * Returns:
221 *
222 *
223 * Others:
224 ********************************************************************************/
225int zx234290_setcore_onoff(T_ZDrvPmic_Enable status)
226{
227 int ret = 0;
228
229 ret = zx234290_set_buck1_onoff((T_ZDrvZx234290_LDO_ENABLE)status);
230
231 return ret;
232}
233
234T_ZDrvPmic_Enable zx234290_getcore_onoff(void)
235{
236 int status;
237
238 status = zx234290_get_buck1_onoff();
239
240 return (T_ZDrvPmic_Enable)status;
241}
242int zx234290_setcore_voltage(int vol)
243{
244 int ret = 0;
245 switch (vol)
246 {
247 case 900:
248 {
249 ret = zx234290_set_buck1_voltage(VBUCKA_0_900);
250 break;
251 }
252
253 case 1100:
254 {
255 ret = zx234290_set_buck1_voltage(VBUCKA_1_100);
256 break;
257 }
258 default:
259 {
260 ret = -EINVAL;
261 }
262 }
263
264 return ret;
265}
266
267int zx234290_getcore_voltage(void)
268{
269 int vget;
270 T_ZDrvZx234290_VbuckA vol;
271
272 vol = zx234290_get_buck1_voltage();
273 switch (vol)
274 {
275 case VBUCKA_0_900:
276 {
277 vget = 900;
278 break;
279 }
280
281 case VBUCKA_1_100:
282 {
283 vget = 1100;
284 break;
285 }
286
287 default:
288 {
289 return -EINVAL;
290 }
291 }
292
293 return vget;
294}
295
296int zx234290_setcore_sleepmode(T_ZDrvPmic_SlpMode mode)
297{
298 int ret = 0;
299
300 switch (mode)
301 {
302 case PM_SLPMODE_AUTO_NORMAL:
303 case PM_SLPMODE_ECO_NRMV:
304 case PM_SLPMODE_ECO_SLPV:
305 case PM_SLPMODE_OFF:
306 {
307 ret = zx234290_set_buck1_sleep_mode((T_ZDrvZx234290_BUCK1_SLPMODE)mode);
308 break;
309 }
310 default:
311 {
312 ret = -EINVAL;
313 }
314 }
315
316 return ret;
317}
318
319T_ZDrvPmic_SlpMode zx234290_getcore_sleepmode(void)
320{
321 T_ZDrvPmic_SlpMode getMode;
322 T_ZDrvZx234290_BUCK1_SLPMODE mode;
323
324 mode = zx234290_get_buck1_sleep_mode();
325 switch (mode)
326 {
327 case BUCK1_SLP_AUTO_WITHOUT_ECO:
328 {
329 getMode = PM_SLPMODE_AUTO_NORMAL;
330 break;
331 }
332 case BUCK1_SLP_AUTO_ECO:
333 {
334 getMode = PM_SLPMODE_ECO_NRMV;
335 break;
336 }
337 case BUCK1_SLP_AUTO_ECO_SLP:
338 {
339 getMode = PM_SLPMODE_ECO_SLPV;
340 break;
341 }
342
343 case BUCK1_SLP_SHUTDOWN:
344 {
345 getMode = PM_SLPMODE_OFF;
346 break;
347 }
348 default:
349 {
350 return PM_SLPMODE_NOT_SUPPORT;
351 }
352 }
353
354 return getMode;
355}
356
357int zx234290_setcore_sleepvoltage(int vol) /* buck1 sleep vol */
358{
359 int ret = 0;
360 switch (vol)
361 {
362 case 800:
363 {
364 ret = zx234290_set_buck1_sleep_voltage(VBUCKA_0_800);
365 break;
366 }
367 case 900:
368 {
369 ret = zx234290_set_buck1_sleep_voltage(VBUCKA_0_900);
370 break;
371 }
372
373 case 1100:
374 {
375 ret = zx234290_set_buck1_sleep_voltage(VBUCKA_1_100);
376 break;
377 }
378 default:
379 {
380 ret = -EINVAL;
381 }
382 }
383
384 return ret;
385}
386#endif
387
388
389#if 1 /* USB 0.9V-- LDO1 */
390/*******************************************************************************
391 * Function:
392 * Description:
393 * Parameters:
394 * Input:
395 *
396 * Output:
397 *
398 * Returns:
399 *
400 *
401 * Others:
402 ********************************************************************************/
403int zx234290_setusb_v0v9_onoff(T_ZDrvPmic_Enable status)
404{
405 int ret = 0;
406
407 ret = zx234290_set_ldo1_onoff((T_ZDrvZx234290_LDO_ENABLE)status);
408
409 return ret;
410}
411
412int zx234290_setusb_v0v9_onoff_PSM(T_ZDrvPmic_Enable status)
413{
414 int ret = 0;
415
416 ret = zx234290_set_ldo1_onoff_PSM((T_ZDrvZx234290_LDO_ENABLE)status);
417
418 return ret;
419}
420
421T_ZDrvPmic_Enable zx234290_getusb_v0v9_onoff(void)
422{
423 int status;
424
425 status = zx234290_get_ldo1_onoff();
426
427 return (T_ZDrvPmic_Enable)status;
428}
429
430int zx234290_setusb_v0v9_voltage(int vol)
431{
432 int ret = 0;
433 switch (vol)
434 {
435 case 900:
436 {
437 ret = zx234290_set_ldo1_voltage(VLDOA_0_900);
438 break;
439 }
440 default:
441 {
442 ret = -EINVAL;
443 }
444 }
445 return ret;
446}
447
448int zx234290_getusb_v0v9_voltage(void)
449{
450 int vget;
451 T_ZDrvZx234290_VldoA vol;
452
453 vol = zx234290_get_ldo1_voltage();
454 switch (vol)
455 {
456 case VLDOA_0_900:
457 {
458 vget = 900;
459 break;
460 }
461 default:
462 {
463 return -EINVAL;
464 }
465 }
466
467 return vget;
468}
469
470int zx234290_setusb_v0v9_sleepmode(T_ZDrvPmic_SlpMode mode)
471{
472 int ret = 0;
473
474 switch (mode)
475 {
476 case PM_SLPMODE_AUTO_NORMAL:
477 case PM_SLPMODE_ECO_NRMV:
478 case PM_SLPMODE_ECO_SLPV:
479 case PM_SLPMODE_OFF:
480 {
481 ret = zx234290_set_ldo1_sleep_mode((T_ZDrvZx234290_LDOA_SLPMODE)mode);
482 break;
483 }
484 default:
485 {
486 ret = -EINVAL;
487 }
488 }
489 return ret;
490
491}
492
493T_ZDrvPmic_SlpMode zx234290_getusb_v0v9_sleepmode(void)
494{
495 T_ZDrvPmic_SlpMode getMode;
496 T_ZDrvZx234290_LDOA_SLPMODE mode;
497
498 mode = zx234290_get_ldo1_sleep_mode();
499 switch (mode)
500 {
501 case LDOA_SLP_NRM_MODE:
502 {
503 getMode = PM_SLPMODE_AUTO_NORMAL;
504 break;
505 }
506 case LDOA_SLP_ECO_VOLT:
507 {
508 getMode = PM_SLPMODE_ECO_NRMV;
509 break;
510 }
511 case LDOA_SLP_ECO_VOLT_SLP:
512 {
513 getMode = PM_SLPMODE_ECO_SLPV;
514 break;
515 }
516 case LDOA_SLP_SHUTDOWN:
517 {
518 getMode = PM_SLPMODE_OFF;
519 break;
520 }
521 default:
522 {
523 return PM_SLPMODE_NOT_SUPPORT;
524 }
525 }
526 return getMode;
527}
528
529#endif
530
531#if 1 /* USB 3.3V-- LDO1 */
532/*******************************************************************************
533 * Function:
534 * Description:
535 * Parameters:
536 * Input:
537 *
538 * Output:
539 *
540 * Returns:
541 *
542 *
543 * Others:
544 ********************************************************************************/
545int zx234290_setusb_v3v3_onoff(T_ZDrvPmic_Enable status)
546{
547 int ret = 0;
548
549 ret = zx234290_set_ldo5_onoff((T_ZDrvZx234290_LDO_ENABLE)status);
550
551 return ret;
552}
553
554int zx234290_setusb_v3v3_onoff_PSM(T_ZDrvPmic_Enable status)
555{
556 int ret = 0;
557
558 ret = zx234290_set_ldo5_onoff_PSM((T_ZDrvZx234290_LDO_ENABLE)status);
559
560 return ret;
561}
562
563
564T_ZDrvPmic_Enable zx234290_getusb_v3v3_onoff(void)
565{
566 int status;
567
568 status = zx234290_get_ldo5_onoff();
569
570 return (T_ZDrvPmic_Enable)status;
571}
572
573int zx234290_setusb_v3v3_voltage(int vol)
574{
575 int ret = 0;
576 switch (vol)
577 {
578 case 3300:
579 {
580 ret = zx234290_set_ldo5_voltage(VLDOC_3_300);
581 break;
582 }
583 default:
584 {
585 ret = -EINVAL;
586 }
587 }
588 return ret;
589}
590
591int zx234290_getusb_v3v3_voltage(void)
592{
593 int vget;
594 T_ZDrvZx234290_VldoB vol;
595
596 vol = zx234290_get_ldo5_voltage();
597 switch (vol)
598 {
599 case VLDOC_3_300:
600 {
601 vget = 3300;
602 break;
603 }
604 default:
605 {
606 return -EINVAL;
607 }
608 }
609
610 return vget;
611}
612
613int zx234290_setusb_v3v3_sleepmode(T_ZDrvPmic_SlpMode mode)
614{
615 int ret = 0;
616
617 switch (mode)
618 {
619 case PM_SLPMODE_AUTO_NORMAL:
620 case PM_SLPMODE_ECO_NRMV:
621 case PM_SLPMODE_ECO_SLPV:
622 case PM_SLPMODE_OFF:
623 {
624 ret = zx234290_set_ldo5_sleep_mode((T_ZDrvZx234290_LDOB_SLPMODE)mode);
625 break;
626 }
627 default:
628 {
629 ret = -EINVAL;
630 }
631 }
632 return ret;
633
634}
635
636T_ZDrvPmic_SlpMode zx234290_getusb_v3v3_sleepmode(void)
637{
638 T_ZDrvPmic_SlpMode getMode;
639 T_ZDrvZx234290_LDOB_SLPMODE mode;
640
641 mode = zx234290_get_ldo5_sleep_mode();
642 switch (mode)
643 {
644 case LDOA_SLP_NRM_MODE:
645 {
646 getMode = PM_SLPMODE_AUTO_NORMAL;
647 break;
648 }
649 case LDOA_SLP_ECO_VOLT:
650 {
651 getMode = PM_SLPMODE_ECO_NRMV;
652 break;
653 }
654 case LDOA_SLP_ECO_VOLT_SLP:
655 {
656 getMode = PM_SLPMODE_ECO_SLPV;
657 break;
658 }
659 case LDOA_SLP_SHUTDOWN:
660 {
661 getMode = PM_SLPMODE_OFF;
662 break;
663 }
664 default:
665 {
666 return PM_SLPMODE_NOT_SUPPORT;
667 }
668 }
669 return getMode;
670}
671#endif
672
673#if 1 /* SIM1 1.8V/3.0V -- LDO6 */
674/*******************************************************************************
675 * Function:
676 * Description:
677 * Parameters:
678 * Input:
679 *
680 * Output:
681 *
682 * Returns:
683 *
684 *
685 * Others:
686 ********************************************************************************/
687int zx234290_setsim1_onoff(T_ZDrvPmic_Enable status)
688{
689 int ret = 0;
690
691 ret = zx234290_set_ldo6_onoff((T_ZDrvZx234290_LDO_ENABLE)status);
692
693 return ret;
694}
695
696
697T_ZDrvPmic_Enable zx234290_getsim1_onoff(void)
698{
699 int status;
700
701 status = zx234290_get_ldo6_onoff();
702
703 return (T_ZDrvPmic_Enable)status;
704}
705int zx234290_setsim1_voltage(int vol)
706{
707 int ret = 0;
708 switch (vol)
709 {
710 case 1800:
711 {
712 ret = zx234290_set_ldo6_voltage(VLDOD_1_800);
713 break;
714 }
715
716 case 3000:
717 {
718 ret = zx234290_set_ldo6_voltage(VLDOD_3_000);
719 break;
720 }
721
722 default:
723 {
724 ret = -EINVAL;
725 }
726 }
727
728 return ret;
729}
730int zx234290_getsim1_voltage(void)
731{
732 int vget;
733 T_ZDrvZx234290_VldoD vol;
734
735 vol = zx234290_get_ldo6_voltage();
736 switch (vol)
737 {
738 case VLDOD_1_800:
739 {
740 vget = 1800;
741 break;
742 }
743
744 case VLDOD_3_000:
745 {
746 vget = 3000;
747 break;
748 }
749
750 default:
751 {
752 return -EINVAL;
753 }
754 }
755
756 return vget;
757}
758
759int zx234290_setsim1_sleepmode(T_ZDrvPmic_SlpMode mode)
760{
761 int ret = 0;
762
763 switch (mode)
764 {
765 case PM_SLPMODE_AUTO_NORMAL:
766 case PM_SLPMODE_ECO_NRMV:
767 case PM_SLPMODE_OFF:
768 {
769 ret = zx234290_set_ldo6_sleep_mode((T_ZDrvZx234290_LDOB_SLPMODE)mode);
770 break;
771 }
772 default:
773 {
774 ret = -EINVAL;
775 }
776 }
777
778 return ret;
779}
780
781T_ZDrvPmic_SlpMode zx234290_getsim1_sleepmode(void)
782{
783 T_ZDrvPmic_SlpMode getMode;
784 T_ZDrvZx234290_LDOB_SLPMODE mode;
785
786 mode = zx234290_get_ldo6_sleep_mode();
787 switch (mode)
788 {
789 case LDOB_SLP_NRM_MODE:
790 {
791 getMode = PM_SLPMODE_AUTO_NORMAL;
792 break;
793 }
794 case LDOB_SLP_ECO_VOLT:
795 {
796 getMode = PM_SLPMODE_ECO_NRMV;
797 break;
798 }
799 case LDOB_SLP_SHUTDOWN:
800 {
801 getMode = PM_SLPMODE_OFF;
802 break;
803 }
804 default:
805 {
806 return PM_SLPMODE_NOT_SUPPORT;
807 }
808 }
809
810 return getMode;
811}
812#endif
813
814#if 1 /* SIM2 1.8V/3.0V -- LDO6 */
815/*******************************************************************************
816 * Function:
817 * Description:
818 * Parameters:
819 * Input:
820 *
821 * Output:
822 *
823 * Returns:
824 *
825 *
826 * Others:
827 ********************************************************************************/
828int zx234290_setsim2_onoff(T_ZDrvPmic_Enable status)
829{
830 int ret = 0;
831
832 ret = zx234290_set_ldo10_onoff((T_ZDrvZx234290_LDO_ENABLE)status);
833
834 return ret;
835}
836
837
838T_ZDrvPmic_Enable zx234290_getsim2_onoff(void)
839{
840 T_ZDrvZx234290_LDO_ENABLE status;
841
842 status = zx234290_get_ldo10_onoff();
843
844 return (T_ZDrvPmic_Enable)status;
845}
846
847int zx234290_setsim2_voltage(int vol)
848{
849 int ret = 0;
850 switch (vol)
851 {
852 case 1800:
853 {
854 ret = zx234297_set_ldo10_voltageF(VLDOF_1_800);
855 break;
856 }
857
858 case 3000:
859 {
860 ret = zx234297_set_ldo10_voltageF(VLDOF_3_000);
861 break;
862 }
863
864 default:
865 {
866 ret = -EINVAL;
867 }
868 }
869
870 return ret;
871}
872int zx234290_getsim2_voltage(void)
873{
874 int vget;
875 T_ZDrvZx234297_VldoF vol;
876
877 vol = zx234290_get_ldo10_voltageF();
878 switch (vol)
879 {
880 case VLDOF_1_800:
881 {
882 vget = 1800;
883 break;
884 }
885
886 case VLDOF_3_000:
887 {
888 vget = 3000;
889 break;
890 }
891
892 default:
893 {
894 return -EINVAL;
895 }
896 }
897
898 return vget;
899}
900
901int zx234290_setsim2_sleepmode(T_ZDrvPmic_SlpMode mode)
902{
903 int ret = 0;
904
905 switch (mode)
906 {
907 case PM_SLPMODE_AUTO_NORMAL:
908 case PM_SLPMODE_ECO_NRMV:
909 case PM_SLPMODE_OFF:
910 {
911 ret = zx234290_set_ldo10_sleep_mode((T_ZDrvZx234290_LDOA_SLPMODE)mode);
912 break;
913 }
914 default:
915 {
916 ret = -EINVAL;
917 }
918 }
919
920 return ret;
921}
922
923T_ZDrvPmic_SlpMode zx234290_getsim2_sleepmode(void)
924{
925 T_ZDrvPmic_SlpMode getMode;
926 T_ZDrvZx234290_LDOA_SLPMODE mode;
927
928 mode = zx234290_get_ldo10_sleep_mode();
929 switch (mode)
930 {
931 case LDOA_SLP_NRM_MODE:
932 {
933 getMode = PM_SLPMODE_AUTO_NORMAL;
934 break;
935 }
936 case LDOA_SLP_ECO_VOLT:
937 {
938 getMode = PM_SLPMODE_ECO_NRMV;
939 break;
940 }
941 case LDOA_SLP_ECO_VOLT_SLP:
942 {
943 getMode = PM_SLPMODE_ECO_SLPV;
944 break;
945 }
946 case LDOA_SLP_SHUTDOWN:
947 {
948 getMode = PM_SLPMODE_OFF;
949 break;
950 }
951 default:
952 {
953 return PM_SLPMODE_NOT_SUPPORT;
954 }
955 }
956
957 return getMode;
958}
959#endif
960
961
962#if 1 /* SD1- 1.8V/2.8V --LDO8 */
963/*******************************************************************************
964 * Function:
965 * Description:
966 * Parameters:
967 * Input:
968 *
969 * Output:
970 *
971 * Returns:
972 *
973 *
974 * Others:
975 ********************************************************************************/
976int zx234290_setsd1_onoff(T_ZDrvPmic_Enable status)
977{
978 int ret = 0;
979
980 ret = zx234290_set_ldo8_onoff((T_ZDrvZx234290_LDO_ENABLE)status);
981
982 return ret;
983}
984
985T_ZDrvPmic_Enable zx234290_getsd1_onoff(void)
986{
987 int status;
988
989 status = zx234290_get_ldo8_onoff();
990
991 return (T_ZDrvPmic_Enable)status;
992}
993int zx234290_setsd1_voltage(int vol)
994{
995 int ret = 0;
996
997 switch (vol)
998 {
999 case 1800:
1000 {
1001 ret = zx234290_set_ldo8_voltage(VLDOD_1_800);
1002 break;
1003 }
1004 case 2800:
1005 {
1006 ret = zx234290_set_ldo8_voltage(VLDOD_2_800);
1007 break;
1008 }
1009 default:
1010 {
1011 ret = -EINVAL;
1012 }
1013 }
1014
1015 return ret;
1016}
1017
1018int zx234290_getsd1_voltage(void)
1019{
1020 int vget;
1021 T_ZDrvZx234290_VldoD vol;
1022
1023 vol = zx234290_get_ldo8_voltage();
1024
1025 switch (vol)
1026 {
1027 case VLDOD_1_800:
1028 {
1029 vget = 1800;
1030 break;
1031 }
1032
1033 case VLDOD_2_800:
1034 {
1035 vget = 2800;
1036 break;
1037 }
1038
1039 default:
1040 {
1041 return -EINVAL;
1042 }
1043 }
1044
1045 return vget;
1046}
1047
1048int zx234290_setsd1_sleepmode(T_ZDrvPmic_SlpMode mode)
1049{
1050 int ret = 0;
1051
1052 switch (mode)
1053 {
1054 case PM_SLPMODE_AUTO_NORMAL:
1055 case PM_SLPMODE_ECO_NRMV:
1056 case PM_SLPMODE_ECO_SLPV:
1057 case PM_SLPMODE_OFF:
1058 {
1059 ret = zx234290_set_ldo8_sleep_mode((T_ZDrvZx234290_LDOA_SLPMODE)mode);
1060 break;
1061 }
1062 default:
1063 {
1064 ret = -EINVAL;
1065 }
1066 }
1067
1068 return ret;
1069}
1070
1071T_ZDrvPmic_SlpMode zx234290_getsd1_sleepmode(void)
1072{
1073 T_ZDrvPmic_SlpMode getMode;
1074 T_ZDrvZx234290_LDOA_SLPMODE mode;
1075
1076 mode = zx234290_get_ldo8_sleep_mode();
1077
1078 switch (mode)
1079 {
1080 case LDOA_SLP_NRM_MODE:
1081 {
1082 getMode = PM_SLPMODE_AUTO_NORMAL;
1083 break;
1084 }
1085 case LDOA_SLP_ECO_VOLT:
1086 {
1087 getMode = PM_SLPMODE_ECO_NRMV;
1088 break;
1089 }
1090 case LDOA_SLP_ECO_VOLT_SLP:
1091 {
1092 getMode = PM_SLPMODE_ECO_SLPV;
1093 break;
1094 }
1095 case LDOA_SLP_SHUTDOWN:
1096 {
1097 getMode = PM_SLPMODE_OFF;
1098 break;
1099 }
1100 default:
1101 {
1102 return PM_SLPMODE_NOT_SUPPORT;
1103 }
1104 }
1105
1106 return getMode;
1107}
1108
1109#endif
1110
1111#if 1
1112int zDrvPmic_SetNormal_Onoff(T_ZDrvPmic_Regulator regulator, T_ZDrvPmic_Enable enable)
1113{
1114 int ret = 0;
1115
1116 switch (regulator)
1117 {
1118 case VSD1:
1119 ret = zx234290_setsd1_onoff(enable);
1120 break;
1121
1122 case VSIM1:
1123 ret = zx234290_setsim1_onoff(enable);
1124 break;
1125
1126 case VSIM2:
1127 ret = zx234290_setsim2_onoff(enable);
1128 break;
1129
1130 case VUSB_0V9:
1131 ret = zx234290_setusb_v0v9_onoff(enable);
1132 break;
1133
1134 case VUSB_3V3:
1135 ret = zx234290_setusb_v3v3_onoff(enable);
1136 break;
1137
1138 default:
1139 return -EINVAL;
1140 }
1141
1142 return ret;
1143}
1144EXPORT_SYMBOL(zDrvPmic_SetNormal_Onoff);
1145
1146
1147int zDrvPmic_SetNormal_Onoff_PSM(T_ZDrvPmic_Regulator regulator, T_ZDrvPmic_Enable enable)
1148{
1149 int ret = 0;
1150
1151 switch (regulator)
1152 {
1153 case VSD1:
1154 ret = zx234290_setsd1_onoff(enable);
1155 break;
1156
1157 case VSIM1:
1158 ret = zx234290_setsim1_onoff(enable);
1159 break;
1160
1161 case VUSB_0V9:
1162 ret = zx234290_setusb_v0v9_onoff_PSM(enable);
1163 break;
1164
1165 case VUSB_3V3:
1166 ret = zx234290_setusb_v3v3_onoff_PSM(enable);
1167 break;
1168
1169 default:
1170 return -EINVAL;
1171 }
1172
1173 return ret;
1174}
1175EXPORT_SYMBOL(zDrvPmic_SetNormal_Onoff_PSM);
1176
1177
1178
1179int zDrvPmic_SetNormal_Voltage(T_ZDrvPmic_Regulator regulator, int voltage)
1180{
1181 int ret = 0;
1182
1183 switch (regulator)
1184 {
1185 case VSD1:
1186 ret = zx234290_setsd1_voltage(voltage);
1187 break;
1188
1189 case VSIM1:
1190 ret = zx234290_setsim1_voltage(voltage);
1191 break;
1192 case VSIM2:
1193 ret = zx234290_setsim2_voltage(voltage);
1194 break;
1195 case VUSB_0V9:
1196 ret = zx234290_setusb_v0v9_voltage(voltage);
1197 break;
1198
1199 case VUSB_3V3:
1200 ret = zx234290_setusb_v0v9_voltage(voltage);
1201 break;
1202
1203 default:
1204 return -EINVAL;
1205 }
1206
1207 return ret;
1208}
1209EXPORT_SYMBOL(zDrvPmic_SetNormal_Voltage);
1210
1211
1212
1213int zDrvPmic_SetSleep_Voltage(T_ZDrvPmic_Regulator regulator, int voltage)
1214{
1215 int ret = 0;
1216
1217 switch (regulator)
1218 {
1219 case VCORE0:
1220 break;
1221
1222 case VCORE1:
1223 {
1224 ret = zx234290_setcore_voltage(voltage);
1225 if (ret != 0)
1226 {
1227 return ret;
1228 }
1229 break;
1230 }
1231
1232 default:
1233 return -EINVAL;
1234 }
1235
1236 return ret;
1237}
1238
1239EXPORT_SYMBOL(zDrvPmic_SetSleep_Voltage);
1240
1241
1242int zDrvPmic_GetNormal_Onoff(T_ZDrvPmic_Regulator regulator, T_ZDrvPmic_Enable* enable)
1243{
1244 int ret = 0;
1245
1246 switch (regulator)
1247 {
1248
1249 case VSD1:
1250 *enable = zx234290_getsd1_onoff();
1251 break;
1252
1253 case VSIM1:
1254 *enable = zx234290_getsim1_onoff();
1255 break;
1256
1257 case VUSB_0V9:
1258 *enable = zx234290_getusb_v0v9_onoff();
1259 break;
1260
1261 case VUSB_3V3:
1262 *enable = zx234290_getusb_v3v3_onoff();
1263 break;
1264
1265 default:
1266 return -EINVAL;
1267 }
1268
1269 return ret;
1270}
1271
1272EXPORT_SYMBOL(zDrvPmic_GetNormal_Onoff);
1273
1274
1275int zDrvPmic_GetNormal_Voltage(T_ZDrvPmic_Regulator regulator, int* voltage)
1276{
1277 int ret = 0;
1278
1279 switch (regulator)
1280 {
1281
1282 case VSD1:
1283 *voltage = zx234290_getsd1_voltage();
1284 break;
1285
1286 case VSIM1:
1287 *voltage = zx234290_getsim1_voltage();
1288 break;
1289
1290 case VUSB_0V9:
1291 *voltage = zx234290_getusb_v0v9_voltage();
1292 break;
1293
1294 case VUSB_3V3:
1295 *voltage = zx234290_getusb_v3v3_voltage();
1296 break;
1297
1298 default:
1299 return -EINVAL;
1300 }
1301
1302 return ret;
1303}
1304
1305EXPORT_SYMBOL(zDrvPmic_GetNormal_Voltage);
1306#endif
1307