/* Copyright (c) 2013, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

qcom,qrd-4v35-2000mAh-data {
	qcom,fcc-mah = <2000>;
	qcom,default-rbatt-mohm = <172>;
	qcom,rbatt-capacitive-mohm = <0>;
	qcom,flat-ocv-threshold-uv = <3800000>;
	qcom,max-voltage-uv = <4350000>;
	qcom,v-cutoff-uv = <3400000>;
	qcom,chg-term-ua = <100000>;
	qcom,batt-id-kohm = <200>;

	qcom,rbatt-sf-lut {
		qcom,lut-col-legend = <(-20) 0 25 40 60>;
		qcom,lut-row-legend = <100 95 90 85 80>,
				<75 70 65 60 55>,
				<50 45 40 35 30>,
				<25 20 16 13 11>,
				<10 9 8 7 6>,
				<5 4 3 2 1>;
		qcom,lut-data = <2422 324 100 79 72>,
				<2417 325 100 79 71>,
				<2344 327 100 80 72>,
				<2416 336 102 81 73>,
				<2072 354 107 82 73>,
				<1961 372 113 84 75>,
				<1929 341 118 87 77>,
				<1929 321 130 93 80>,
				<2041 306 140 104 85>,
				<2202 292 119 96 83>,
				<2374 290 98 80 73>,
				<2550 292 98 79 72>,
				<2727 294 99 81 73>,
				<2904 303 100 82 75>,
				<3091 323 100 81 73>,
				<3278 348 100 80 73>,
				<3470 376 99 79 72>,
				<3627 386 100 79 72>,
				<3672 398 100 80 71>,
				<3812 424 100 80 73>,
				<3895 443 101 80 73>,
				<3985 465 102 82 75>,
				<4094 497 105 83 76>,
				<4211 533 109 85 79>,
				<4335 579 113 87 80>,
				<4505 612 113 85 76>,
				<4693 643 113 86 77>,
				<4930 712 120 90 81>,
				<5283 835 145 111 107>,
				<10293 15765 5566 6904 2547>;
	};

	qcom,fcc-temp-lut {
		qcom,lut-col-legend = <(-20) 0 25 40 60>;
		qcom,lut-data = <2096 2124 2121 2118 2103>;
	};

	qcom,pc-temp-ocv-lut {
		qcom,lut-col-legend = <(-20) 0 25 40 60>;
		qcom,lut-row-legend = <100 95 90 85 80>,
				<75 70 65 60 55>,
				<50 45 40 35 30>,
				<25 20 16 13 11>,
				<10 9 8 7 6>,
				<5 4 3 2 1>,
				<0>;
		qcom,lut-data = <4340 4340 4335 4330 4323>,
				<4217 4260 4265 4263 4258>,
				<4135 4203 4207 4205 4201>,
				<4084 4150 4152 4150 4146>,
				<3992 4101 4101 4097 4093>,
				<3934 4049 4051 4046 4044>,
				<3889 3974 3995 3998 3999>,
				<3852 3926 3958 3961 3959>,
				<3832 3892 3921 3923 3921>,
				<3819 3859 3874 3877 3877>,
				<3807 3831 3838 3838 3838>,
				<3796 3809 3815 3815 3814>,
				<3784 3792 3797 3797 3796>,
				<3770 3780 3783 3782 3781>,
				<3754 3770 3772 3769 3764>,
				<3737 3758 3763 3754 3742>,
				<3717 3737 3744 3735 3720>,
				<3700 3713 3718 3710 3696>,
				<3687 3701 3692 3683 3671>,
				<3674 3695 3689 3681 3669>,
				<3667 3692 3688 3680 3669>,
				<3659 3690 3687 3680 3668>,
				<3649 3687 3685 3678 3667>,
				<3636 3683 3683 3676 3664>,
				<3618 3674 3679 3671 3658>,
				<3596 3652 3663 3652 3632>,
				<3566 3611 3620 3606 3584>,
				<3522 3547 3555 3540 3517>,
				<3460 3449 3461 3446 3424>,
				<3356 3282 3312 3299 3273>,
				<3000 3000 3000 3000 3000>;
	};
};
