Merge tag 'v3.10.55' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / kr076 / power / cust_battery_meter_table.h
1 #ifndef _CUST_BATTERY_METER_TABLE_H
2 #define _CUST_BATTERY_METER_TABLE_H
3
4 #include <mach/mt_typedefs.h>
5
6 // ============================================================
7 // define
8 // ============================================================
9 #define BAT_NTC_10 1
10 #define BAT_NTC_47 0
11 #define BAT_NTC_100 0
12
13 #ifdef CONFIG_MTK_PMIC_MT6397
14 #define RBAT_PULL_UP_R 24000
15 #define RBAT_PULL_DOWN_R 100000000
16 #define RBAT_PULL_UP_VOLT 1200
17
18 #else
19
20 #if (BAT_NTC_10 == 1)
21 #define RBAT_PULL_UP_R 16900
22 #define RBAT_PULL_DOWN_R 30000
23 #endif
24 #if (BAT_NTC_47 == 1)
25 #define RBAT_PULL_UP_R 61900
26 #define RBAT_PULL_DOWN_R 100000
27 #endif
28 #if (BAT_NTC_100 == 1)
29 #define RBAT_PULL_UP_R 24000
30 #define RBAT_PULL_DOWN_R 100000000
31 #endif
32 #define RBAT_PULL_UP_VOLT 1800
33 #endif
34
35
36 // ============================================================
37 // ENUM
38 // ============================================================
39
40 // ============================================================
41 // structure
42 // ============================================================
43
44 // ============================================================
45 // typedef
46 // ============================================================
47 typedef struct _BATTERY_PROFILE_STRUC
48 {
49 kal_int32 percentage;
50 kal_int32 voltage;
51 } BATTERY_PROFILE_STRUC, *BATTERY_PROFILE_STRUC_P;
52
53 typedef struct _R_PROFILE_STRUC
54 {
55 kal_int32 resistance; // Ohm
56 kal_int32 voltage;
57 } R_PROFILE_STRUC, *R_PROFILE_STRUC_P;
58
59 typedef enum
60 {
61 T1_0C,
62 T2_25C,
63 T3_50C
64 } PROFILE_TEMPERATURE;
65
66 // ============================================================
67 // External Variables
68 // ============================================================
69
70 // ============================================================
71 // External function
72 // ============================================================
73
74 // ============================================================
75 // <DOD, Battery_Voltage> Table
76 // ============================================================
77 #if (BAT_NTC_10 == 1)
78 BATT_TEMPERATURE Batt_Temperature_Table[] = {
79 {-20,76241},
80 {-15,58649},
81 {-10,45569},
82 { -5,35735},
83 { 0,28271},
84 { 5,22551},
85 { 10,18136},
86 { 15,14696},
87 { 20,11997},
88 { 25,10000},
89 { 30,8365},
90 { 35,7011},
91 { 40,5951},
92 { 45,4992},
93 { 50,4217},
94 { 55,3579},
95 { 60,3051}
96 };
97 #endif
98
99 #if (BAT_NTC_47 == 1)
100 BATT_TEMPERATURE Batt_Temperature_Table[] = {
101 {-20,483954},
102 {-15,360850},
103 {-10,271697},
104 { -5,206463},
105 { 0,158214},
106 { 5,122259},
107 { 10,95227},
108 { 15,74730},
109 { 20,59065},
110 { 25,47000},
111 { 30,37643},
112 { 35,30334},
113 { 40,24591},
114 { 45,20048},
115 { 50,16433},
116 { 55,13539},
117 { 60,11210}
118 };
119 #endif
120
121 #if (BAT_NTC_100 == 1)
122 BATT_TEMPERATURE Batt_Temperature_Table[] = {
123 {-20,1151037},
124 {-15,846579},
125 {-10,628988},
126 { -5,471632},
127 { 0,357012},
128 { 5,272500},
129 { 10,209710},
130 { 15,162651},
131 { 20,127080},
132 { 25,100000},
133 { 30,79222},
134 { 35,63167},
135 { 40,50677},
136 { 45,40904},
137 { 50,33195},
138 { 55,27091},
139 { 60,22224}
140 };
141 #endif
142 // T0 -10C
143 BATTERY_PROFILE_STRUC battery_profile_t0[] =
144 {
145 {0 ,4174},
146 {2 ,4151},
147 {4 ,4131},
148 {6 ,4113},
149 {8 ,4096},
150 {10 ,4080},
151 {11 ,4065},
152 {13 ,4048},
153 {15 ,4030},
154 {17 ,4013},
155 {19 ,3998},
156 {21 ,3984},
157 {23 ,3972},
158 {25 ,3961},
159 {27 ,3950},
160 {29 ,3938},
161 {30 ,3927},
162 {32 ,3917},
163 {34 ,3907},
164 {36 ,3897},
165 {38 ,3887},
166 {40 ,3874},
167 {42 ,3858},
168 {44 ,3840},
169 {46 ,3828},
170 {48 ,3819},
171 {50 ,3811},
172 {51 ,3805},
173 {53 ,3800},
174 {55 ,3794},
175 {57 ,3790},
176 {59 ,3785},
177 {61 ,3782},
178 {63 ,3778},
179 {65 ,3776},
180 {67 ,3775},
181 {69 ,3773},
182 {71 ,3770},
183 {72 ,3767},
184 {74 ,3763},
185 {76 ,3757},
186 {78 ,3748},
187 {80 ,3740},
188 {82 ,3729},
189 {84 ,3713},
190 {86 ,3695},
191 {88 ,3687},
192 {90 ,3684},
193 {91 ,3681},
194 {93 ,3677},
195 {95 ,3662},
196 {97 ,3594},
197 {98 ,3481},
198 {99,3450},
199 {100,3420}
200 };
201
202
203 // T1 0C
204 BATTERY_PROFILE_STRUC battery_profile_t1[] =
205 {
206 {0 ,4174},
207 {2 ,4151},
208 {4 ,4131},
209 {6 ,4113},
210 {8 ,4096},
211 {10 ,4080},
212 {11 ,4065},
213 {13 ,4048},
214 {15 ,4030},
215 {17 ,4013},
216 {19 ,3998},
217 {21 ,3984},
218 {23 ,3972},
219 {25 ,3961},
220 {27 ,3950},
221 {29 ,3938},
222 {30 ,3927},
223 {32 ,3917},
224 {34 ,3907},
225 {36 ,3897},
226 {38 ,3887},
227 {40 ,3874},
228 {42 ,3858},
229 {44 ,3840},
230 {46 ,3828},
231 {48 ,3819},
232 {50 ,3811},
233 {51 ,3805},
234 {53 ,3800},
235 {55 ,3794},
236 {57 ,3790},
237 {59 ,3785},
238 {61 ,3782},
239 {63 ,3778},
240 {65 ,3776},
241 {67 ,3775},
242 {69 ,3773},
243 {71 ,3770},
244 {72 ,3767},
245 {74 ,3763},
246 {76 ,3757},
247 {78 ,3748},
248 {80 ,3740},
249 {82 ,3729},
250 {84 ,3713},
251 {86 ,3695},
252 {88 ,3687},
253 {90 ,3684},
254 {91 ,3681},
255 {93 ,3677},
256 {95 ,3662},
257 {97 ,3594},
258 {98 ,3481},
259 {99,3450},
260 {100,3420}
261
262 };
263
264
265 // T2 25C
266 BATTERY_PROFILE_STRUC battery_profile_t2[] =
267 {
268 {0 ,4174},
269 {2 ,4151},
270 {4 ,4131},
271 {6 ,4113},
272 {8 ,4096},
273 {10 ,4080},
274 {11 ,4065},
275 {13 ,4048},
276 {15 ,4030},
277 {17 ,4013},
278 {19 ,3998},
279 {21 ,3984},
280 {23 ,3972},
281 {25 ,3961},
282 {27 ,3950},
283 {29 ,3938},
284 {30 ,3927},
285 {32 ,3917},
286 {34 ,3907},
287 {36 ,3897},
288 {38 ,3887},
289 {40 ,3874},
290 {42 ,3858},
291 {44 ,3840},
292 {46 ,3828},
293 {48 ,3819},
294 {50 ,3811},
295 {51 ,3805},
296 {53 ,3800},
297 {55 ,3794},
298 {57 ,3790},
299 {59 ,3785},
300 {61 ,3782},
301 {63 ,3778},
302 {65 ,3776},
303 {67 ,3775},
304 {69 ,3773},
305 {71 ,3770},
306 {72 ,3767},
307 {74 ,3763},
308 {76 ,3757},
309 {78 ,3748},
310 {80 ,3740},
311 {82 ,3729},
312 {84 ,3713},
313 {86 ,3695},
314 {88 ,3687},
315 {90 ,3684},
316 {91 ,3681},
317 {93 ,3677},
318 {95 ,3662},
319 {97 ,3594},
320 {98 ,3481},
321 {99,3450},
322 {100,3420}
323
324 };
325
326 // T3 50C
327 BATTERY_PROFILE_STRUC battery_profile_t3[] =
328 {
329 {0 ,4174},
330 {2 ,4151},
331 {4 ,4131},
332 {6 ,4113},
333 {8 ,4096},
334 {10 ,4080},
335 {11 ,4065},
336 {13 ,4048},
337 {15 ,4030},
338 {17 ,4013},
339 {19 ,3998},
340 {21 ,3984},
341 {23 ,3972},
342 {25 ,3961},
343 {27 ,3950},
344 {29 ,3938},
345 {30 ,3927},
346 {32 ,3917},
347 {34 ,3907},
348 {36 ,3897},
349 {38 ,3887},
350 {40 ,3874},
351 {42 ,3858},
352 {44 ,3840},
353 {46 ,3828},
354 {48 ,3819},
355 {50 ,3811},
356 {51 ,3805},
357 {53 ,3800},
358 {55 ,3794},
359 {57 ,3790},
360 {59 ,3785},
361 {61 ,3782},
362 {63 ,3778},
363 {65 ,3776},
364 {67 ,3775},
365 {69 ,3773},
366 {71 ,3770},
367 {72 ,3767},
368 {74 ,3763},
369 {76 ,3757},
370 {78 ,3748},
371 {80 ,3740},
372 {82 ,3729},
373 {84 ,3713},
374 {86 ,3695},
375 {88 ,3687},
376 {90 ,3684},
377 {91 ,3681},
378 {93 ,3677},
379 {95 ,3662},
380 {97 ,3594},
381 {98 ,3481},
382 {99,3450},
383 {100,3420}
384
385 };
386
387 // battery profile for actual temperature. The size should be the same as T1, T2 and T3
388 BATTERY_PROFILE_STRUC battery_profile_temperature[] =
389 {
390 {0, 0},
391 {0, 0},
392 {0, 0},
393 {0, 0},
394 {0, 0},
395 {0, 0},
396 {0, 0},
397 {0, 0},
398 {0, 0},
399 {0, 0},
400 {0, 0},
401 {0, 0},
402 {0, 0},
403 {0, 0},
404 {0, 0},
405 {0, 0},
406 {0, 0},
407 {0, 0},
408 {0, 0},
409 {0, 0},
410 {0, 0},
411 {0, 0},
412 {0, 0},
413 {0, 0},
414 {0, 0},
415 {0, 0},
416 {0, 0},
417 {0, 0},
418 {0, 0},
419 {0, 0},
420 {0, 0},
421 {0, 0},
422 {0, 0},
423 {0, 0},
424 {0, 0},
425 {0, 0},
426 {0, 0},
427 {0, 0},
428 {0, 0},
429 {0, 0},
430 {0, 0},
431 {0, 0},
432 {0, 0},
433 {0, 0},
434 {0, 0},
435 {0, 0},
436 {0, 0},
437 {0, 0},
438 {0, 0},
439 {0, 0},
440 {0, 0},
441 {0, 0},
442 {0, 0},
443 {0, 0},
444 {0, 0},
445 {0, 0},
446 {0, 0},
447 {0, 0},
448 {0, 0},
449 {0, 0},
450 {0, 0},
451 {0, 0},
452 {0, 0},
453 {0, 0},
454 {0, 0},
455 {0, 0},
456 {0, 0},
457 {0, 0},
458 {0, 0},
459 {0, 0},
460 {0, 0},
461 {0, 0},
462 {0, 0},
463 {0, 0},
464 {0, 0},
465 {0, 0},
466 {0, 0},
467 {0, 0},
468 {0, 0},
469 {0, 0},
470 {0, 0},
471 {0, 0},
472 {0, 0},
473 {0, 0},
474 {0, 0},
475 {0, 0},
476 };
477
478
479 // ============================================================
480 // <Rbat, Battery_Voltage> Table
481 // ============================================================
482 // T0 -10C
483 R_PROFILE_STRUC r_profile_t0[] =
484 {
485 {153,4174},
486 {153,4151},
487 {155,4131},
488 {158,4113},
489 {160,4096},
490 {162,4080},
491 {167,4065},
492 {170,4048},
493 {172,4030},
494 {173,4013},
495 {177,3998},
496 {177,3984},
497 {182,3972},
498 {185,3961},
499 {187,3950},
500 {188,3938},
501 {190,3927},
502 {193,3917},
503 {195,3907},
504 {198,3897},
505 {200,3887},
506 {195,3874},
507 {185,3858},
508 {172,3840},
509 {167,3828},
510 {165,3819},
511 {163,3811},
512 {167,3805},
513 {168,3800},
514 {170,3794},
515 {173,3790},
516 {173,3785},
517 {177,3782},
518 {178,3778},
519 {182,3776},
520 {187,3775},
521 {190,3773},
522 {192,3770},
523 {193,3767},
524 {195,3763},
525 {193,3757},
526 {192,3748},
527 {195,3740},
528 {197,3729},
529 {195,3713},
530 {193,3695},
531 {193,3687},
532 {203,3684},
533 {220,3681},
534 {240,3677},
535 {258,3662},
536 {255,3594},
537 {293,3481},
538 {305,3382},
539 {255,3353},
540 {233,3338},
541 {215,3329},
542 {210,3323},
543 {202,3318},
544 {198,3316},
545 {193,3314},
546 {188,3313},
547 {188,3311},
548 {187,3312},
549 {185,3310},
550 {187,3310},
551 {187,3309},
552 {185,3307},
553 {182,3308},
554 {183,3307},
555 {182,3307},
556 {183,3307},
557 {185,3307},
558 {187,3306},
559 {185,3306},
560 {185,3306},
561 {183,3305},
562 {188,3304},
563 {187,3303},
564 {188,3302},
565 {185,3301},
566 {185,3301},
567 {187,3301},
568 {185,3300},
569 {187,3300},
570 {167,3300}
571 };
572
573 // T1 0C
574 R_PROFILE_STRUC r_profile_t1[] =
575 {
576 {153,4174},
577 {153,4151},
578 {155,4131},
579 {158,4113},
580 {160,4096},
581 {162,4080},
582 {167,4065},
583 {170,4048},
584 {172,4030},
585 {173,4013},
586 {177,3998},
587 {177,3984},
588 {182,3972},
589 {185,3961},
590 {187,3950},
591 {188,3938},
592 {190,3927},
593 {193,3917},
594 {195,3907},
595 {198,3897},
596 {200,3887},
597 {195,3874},
598 {185,3858},
599 {172,3840},
600 {167,3828},
601 {165,3819},
602 {163,3811},
603 {167,3805},
604 {168,3800},
605 {170,3794},
606 {173,3790},
607 {173,3785},
608 {177,3782},
609 {178,3778},
610 {182,3776},
611 {187,3775},
612 {190,3773},
613 {192,3770},
614 {193,3767},
615 {195,3763},
616 {193,3757},
617 {192,3748},
618 {195,3740},
619 {197,3729},
620 {195,3713},
621 {193,3695},
622 {193,3687},
623 {203,3684},
624 {220,3681},
625 {240,3677},
626 {258,3662},
627 {255,3594},
628 {293,3481},
629 {305,3382},
630 {255,3353},
631 {233,3338},
632 {215,3329},
633 {210,3323},
634 {202,3318},
635 {198,3316},
636 {193,3314},
637 {188,3313},
638 {188,3311},
639 {187,3312},
640 {185,3310},
641 {187,3310},
642 {187,3309},
643 {185,3307},
644 {182,3308},
645 {183,3307},
646 {182,3307},
647 {183,3307},
648 {185,3307},
649 {187,3306},
650 {185,3306},
651 {185,3306},
652 {183,3305},
653 {188,3304},
654 {187,3303},
655 {188,3302},
656 {185,3301},
657 {185,3301},
658 {187,3301},
659 {185,3300},
660 {187,3300},
661 {167,3300}
662 };
663
664 // T2 25C
665 R_PROFILE_STRUC r_profile_t2[] =
666 {
667 {153,4174},
668 {153,4151},
669 {155,4131},
670 {158,4113},
671 {160,4096},
672 {162,4080},
673 {167,4065},
674 {170,4048},
675 {172,4030},
676 {173,4013},
677 {177,3998},
678 {177,3984},
679 {182,3972},
680 {185,3961},
681 {187,3950},
682 {188,3938},
683 {190,3927},
684 {193,3917},
685 {195,3907},
686 {198,3897},
687 {200,3887},
688 {195,3874},
689 {185,3858},
690 {172,3840},
691 {167,3828},
692 {165,3819},
693 {163,3811},
694 {167,3805},
695 {168,3800},
696 {170,3794},
697 {173,3790},
698 {173,3785},
699 {177,3782},
700 {178,3778},
701 {182,3776},
702 {187,3775},
703 {190,3773},
704 {192,3770},
705 {193,3767},
706 {195,3763},
707 {193,3757},
708 {192,3748},
709 {195,3740},
710 {197,3729},
711 {195,3713},
712 {193,3695},
713 {193,3687},
714 {203,3684},
715 {220,3681},
716 {240,3677},
717 {258,3662},
718 {255,3594},
719 {293,3481},
720 {305,3382},
721 {255,3353},
722 {233,3338},
723 {215,3329},
724 {210,3323},
725 {202,3318},
726 {198,3316},
727 {193,3314},
728 {188,3313},
729 {188,3311},
730 {187,3312},
731 {185,3310},
732 {187,3310},
733 {187,3309},
734 {185,3307},
735 {182,3308},
736 {183,3307},
737 {182,3307},
738 {183,3307},
739 {185,3307},
740 {187,3306},
741 {185,3306},
742 {185,3306},
743 {183,3305},
744 {188,3304},
745 {187,3303},
746 {188,3302},
747 {185,3301},
748 {185,3301},
749 {187,3301},
750 {185,3300},
751 {187,3300},
752 {167,3300}
753 };
754
755 // T3 50C
756 R_PROFILE_STRUC r_profile_t3[] =
757 {
758 {153,4174},
759 {153,4151},
760 {155,4131},
761 {158,4113},
762 {160,4096},
763 {162,4080},
764 {167,4065},
765 {170,4048},
766 {172,4030},
767 {173,4013},
768 {177,3998},
769 {177,3984},
770 {182,3972},
771 {185,3961},
772 {187,3950},
773 {188,3938},
774 {190,3927},
775 {193,3917},
776 {195,3907},
777 {198,3897},
778 {200,3887},
779 {195,3874},
780 {185,3858},
781 {172,3840},
782 {167,3828},
783 {165,3819},
784 {163,3811},
785 {167,3805},
786 {168,3800},
787 {170,3794},
788 {173,3790},
789 {173,3785},
790 {177,3782},
791 {178,3778},
792 {182,3776},
793 {187,3775},
794 {190,3773},
795 {192,3770},
796 {193,3767},
797 {195,3763},
798 {193,3757},
799 {192,3748},
800 {195,3740},
801 {197,3729},
802 {195,3713},
803 {193,3695},
804 {193,3687},
805 {203,3684},
806 {220,3681},
807 {240,3677},
808 {258,3662},
809 {255,3594},
810 {293,3481},
811 {305,3382},
812 {255,3353},
813 {233,3338},
814 {215,3329},
815 {210,3323},
816 {202,3318},
817 {198,3316},
818 {193,3314},
819 {188,3313},
820 {188,3311},
821 {187,3312},
822 {185,3310},
823 {187,3310},
824 {187,3309},
825 {185,3307},
826 {182,3308},
827 {183,3307},
828 {182,3307},
829 {183,3307},
830 {185,3307},
831 {187,3306},
832 {185,3306},
833 {185,3306},
834 {183,3305},
835 {188,3304},
836 {187,3303},
837 {188,3302},
838 {185,3301},
839 {185,3301},
840 {187,3301},
841 {185,3300},
842 {187,3300},
843 {167,3300}
844 };
845
846 // r-table profile for actual temperature. The size should be the same as T1, T2 and T3
847 R_PROFILE_STRUC r_profile_temperature[] =
848 {
849 {0, 0},
850 {0, 0},
851 {0, 0},
852 {0, 0},
853 {0, 0},
854 {0, 0},
855 {0, 0},
856 {0, 0},
857 {0, 0},
858 {0, 0},
859 {0, 0},
860 {0, 0},
861 {0, 0},
862 {0, 0},
863 {0, 0},
864 {0, 0},
865 {0, 0},
866 {0, 0},
867 {0, 0},
868 {0, 0},
869 {0, 0},
870 {0, 0},
871 {0, 0},
872 {0, 0},
873 {0, 0},
874 {0, 0},
875 {0, 0},
876 {0, 0},
877 {0, 0},
878 {0, 0},
879 {0, 0},
880 {0, 0},
881 {0, 0},
882 {0, 0},
883 {0, 0},
884 {0, 0},
885 {0, 0},
886 {0, 0},
887 {0, 0},
888 {0, 0},
889 {0, 0},
890 {0, 0},
891 {0, 0},
892 {0, 0},
893 {0, 0},
894 {0, 0},
895 {0, 0},
896 {0, 0},
897 {0, 0},
898 {0, 0},
899 {0, 0},
900 {0, 0},
901 {0, 0},
902 {0, 0},
903 {0, 0},
904 {0, 0},
905 {0, 0},
906 {0, 0},
907 {0, 0},
908 {0, 0},
909 {0, 0},
910 {0, 0},
911 {0, 0},
912 {0, 0},
913 {0, 0},
914 {0, 0},
915 {0, 0},
916 {0, 0},
917 {0, 0},
918 {0, 0},
919 {0, 0},
920 {0, 0},
921 {0, 0},
922 {0, 0},
923 {0, 0},
924 {0, 0},
925 {0, 0},
926 {0, 0},
927 {0, 0},
928 {0, 0},
929 {0, 0},
930 {0, 0},
931 {0, 0},
932 {0, 0},
933 {0, 0},
934 {0, 0},
935 };
936
937 // ============================================================
938 // function prototype
939 // ============================================================
940 int fgauge_get_saddles(void);
941 BATTERY_PROFILE_STRUC_P fgauge_get_profile(kal_uint32 temperature);
942
943 int fgauge_get_saddles_r_table(void);
944 R_PROFILE_STRUC_P fgauge_get_profile_r_table(kal_uint32 temperature);
945
946 #endif //#ifndef _CUST_BATTERY_METER_TABLE_H
947