/* 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-4v2-1800mah-data {
	qcom,fcc-mah = <1800>;
	qcom,default-rbatt-mohm = <146>;
	qcom,rbatt-capacitive-mohm = <0>;
	qcom,flat-ocv-threshold-uv = <3800000>;
	qcom,max-voltage-uv = <4200000>;
	qcom,v-cutoff-uv = <3400000>;
	qcom,chg-term-ua = <100000>;
	qcom,batt-id-kohm = <47>;

	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 15 10 9>,
				<8 7 6 5 4>,
				<3 2 1 0>;
		qcom,lut-data = <904 234 100 85 80>,
				<905 234 100 85 80>,
				<934 244 102 86 81>,
				<928 254 105 87 82>,
				<933 268 109 89 84>,
				<924 280 114 91 85>,
				<913 283 123 96 88>,
				<916 267 135 103 91>,
				<930 252 137 110 95>,
				<954 247 117 106 95>,
				<990 247 103 88 85>,
				<1036 253 104 86 84>,
				<1101 264 108 89 85>,
				<1211 286 112 93 88>,
				<1366 340 120 95 87>,
				<1601 394 128 95 87>,
				<2178 402 128 97 89>,
				<5419 423 126 97 89>,
				<10789 528 128 97 91>,
				<13463 589 132 100 91>,
				<17695 678 137 102 92>,
				<23046 814 145 104 93>,
				<30725 1019 153 106 93>,
				<41382 1359 156 106 93>,
				<56311 1959 165 108 95>,
				<77209 3523 189 117 99>,
				<104609 6039 235 127 105>,
				<138858 9711 352 141 112>,
				<165825 15373 1069 246 226>;
	};

	qcom,fcc-temp-lut {
		qcom,lut-col-legend = <(-20) 0 25 40 60>;
		qcom,lut-data = <1859 1868 1873 1861 1859>;
	};

	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 15 10 9>,
				<8 7 6 5 4>,
				<3 2 1 0>;
		qcom,lut-data = <4178 4176 4174 4169 4163>,
				<4090 4100 4105 4101 4099>,
				<4029 4049 4053 4050 4048>,
				<3973 3998 4006 4004 4002>,
				<3932 3959 3965 3962 3960>,
				<3891 3920 3928 3925 3922>,
				<3855 3882 3894 3891 3889>,
				<3825 3844 3862 3862 3859>,
				<3803 3813 3829 3834 3831>,
				<3788 3792 3797 3802 3800>,
				<3777 3780 3778 3776 3773>,
				<3764 3775 3771 3767 3763>,
				<3749 3769 3766 3763 3757>,
				<3725 3756 3758 3755 3750>,
				<3687 3727 3736 3735 3729>,
				<3631 3675 3698 3698 3691>,
				<3571 3607 3637 3642 3637>,
				<3514 3548 3568 3572 3570>,
				<3458 3506 3519 3522 3522>,
				<3444 3498 3511 3516 3515>,
				<3430 3489 3503 3509 3508>,
				<3413 3477 3493 3500 3500>,
				<3395 3461 3478 3488 3486>,
				<3373 3433 3446 3463 3456>,
				<3346 3394 3397 3418 3410>,
				<3307 3341 3334 3361 3352>,
				<3251 3270 3254 3287 3277>,
				<3160 3167 3152 3183 3172>,
				<3000 3000 3000 3000 3000>;
	};
};
