// SPDX-License-Identifier: GPL-2.0-only
/*
 * Battery device tree entries
 *
 * Copyright 2022 Google LLC
 *
 */

/* Wait new profile for RC2 */

maxim,config {
	maxim,default-pack-b-0k {
		maxim,batt-id-kohm = <0>;
		maxim,model-version = <0>;
		maxim,fg-model = /bits/ 16 <
			0x9760 0xa510 0xb100 0xb600 0xb7a0 0xb900 0xba70 0xbc70
			0xbde0 0xbfc0 0xc250 0xc510 0xc990 0xcea0 0xd040 0xd750
			0x0060 0x0120 0x0200 0x0710 0x0e80 0x0df0 0x1430 0x1bd0
			0x1520 0x0d70 0x0950 0x08e0 0x0800 0x0780 0x06b0 0x01e0
			0x0100 0x0100 0x0100 0x0100 0x0100 0x0100 0x0100 0x0100
			0x0100 0x0100 0x0100 0x0100 0x0100 0x0100 0x0100 0x0100
		>;
		maxim,fg-params = /bits/ 16 <
			/* 0x0036 */	0xf060	/* nIAvgEmpty -> IAvgEmpty */
			/* 0x002a */	0x2038	/* nRelaxCFG -> RelaxCFG */
			/* 0x0028 */	0x260E	/* nLearnCFG -> LearnCFG */
			/* 0x001D */	0x4217	/* Config: */
			/* 0x00BB */	0x0090	/* Config2: OCVQen|DSOCIi */
			/* 0x0013 */	0x5F00	/* nFullSOCThr -> FullSOCThr*/
			/* 0x0035 */	0x030F	/* nFullCapRep */
			/* 0x0018 */	0x030F	/* nDesignCap */
			/* 0x0046 */	0x0c80	/* dPacc - 0xc80: dQaCC=200%, 0x190: dQaCC=25% */
			/* 0x0045 */	0x0031	/* dQacc - nFullCapNom/2 == 200%, */
						/* slow convergence - nFullCapNom/16 == 25% */
			/* 0x0023 */	0x030F	/* nFullCapNom */
			/* 0x003A */	0xA561	/* nVEmpty */
			/* 0x0012 */	0x1100	/* nQRTable00 -> QResidual00 */
			/* 0x0022 */	0x0800	/* nQRTable10 -> QResidual10 */
			/* 0x0032 */	0x0341	/* nQRTable20 -> QResidual20 */
			/* 0x0042 */	0x0302	/* nQRTable30 -> QResidual30 */
			/* 0x0038 */	0x0700	/* nRcomp0 */
			/* 0x0039 */	0x223E	/* nTempco */
			/* 0x001E */	0x018A	/* ICHGTerm */
			/* 0x002C */	0xED51	/* *TGain */
			/* 0x002D */	0x1EBA	/* *TOFF */
			/* 0x00B9 */	0x0014	/* *TCurve */
			/* 0x002B */	0x3870	/* *nMiscCfg */
			/* 0x0004 */	0x0000	/* AtRate @ 0x04 */
			/* 0x0049 */	0x2241	/* ConvCFG */
			/* 0x0029 */	0xc623	/* FilterCFG */
			/* 0x003c */	0x2D00	/* TaskPeriod */
		>;
	};
	/* F10-B_3296_ATL_062922_5mOhm_RC2_CT_146mA.model+settings.ini.txt http://b/239656345#comment6 */
	maxim,atl-pack-b-1k {
		maxim,batt-id-kohm = <1>;
		maxim,model-version = <3>;
		maxim,force-reset-model-data;
		maxim,rc1-tempco = /bits/ 16 <0x1d1f>;
		maxim,rc2-tempco = /bits/ 16 <0x1402>;
		maxim,rc2-learncfg = /bits/ 16 <0x260e>;
		maxim,fg-model = /bits/ 16 <
			0xa500 0xae30 0xb720 0xba50 0xbcb0 0xbe40 0xbfb0 0xc0b0
			0xc280 0xc6c0 0xc970 0xce80 0xd1c0 0xd470 0xda60 0xdeb0
			0x0080 0x0210 0x0d00 0x0f70 0x1a00 0x0d90 0x14d0 0x0a50
			0x0970 0x07a0 0x06e0 0x05f0 0x05f0 0x07f0 0x04e0 0x04e0
			0x0200 0x0200 0x0200 0x0200 0x0200 0x0200 0x0200 0x0200
			0x0200 0x0200 0x0200 0x0200 0x0200 0x0200 0x0200 0x0200
		>;
		maxim,fg-params = /bits/ 16 <
			/* 0x0036 */	0xf060	/* nIAvgEmpty -> IAvgEmpty */
			/* 0x002a */	0x0838	/* nRelaxCFG -> RelaxCFG */
			/* 0x0028 */	0x260e	/* nLearnCFG -> LearnCFG */
			/* 0x001D */	0x4217	/* Config: */
			/* 0x00BB */	0x0090	/* Config2: OCVQen|DSOCIi */
			/* 0x0013 */	0x5a05	/* nFullSOCThr -> FullSOCThr*/
			/* 0x0035 */	0x02e9	/* nFullCapRep */
			/* 0x0018 */	0x02e9	/* nDesignCap */
			/* 0x0046 */	0x3200	/* dPacc - 0xc80: dQaCC=200%, 0x190: dQaCC=25% */
			/* 0x0045 */	0x00ba	/* dQacc - nFullCapNom/2 == 200%, */
						/* slow convergence - nFullCapNom/16 == 25% */
			/* 0x0023 */	0x02e9	/* nFullCapNom */
			/* 0x003A */	0xa55a	/* nVEmpty */
			/* 0x0012 */	0x1b00	/* nQRTable00 -> QResidual00 */
			/* 0x0022 */	0x0b80	/* nQRTable10 -> QResidual10 */
			/* 0x0032 */	0x0480	/* nQRTable20 -> QResidual20 */
			/* 0x0042 */	0x0280	/* nQRTable30 -> QResidual30 */
			/* 0x0038 */	0x0520	/* nRcomp0 */
			/* 0x0039 */	0x1402	/* nTempco */
			/* 0x001E */	0x01d3	/* ICHGTerm */
			/* 0x002C */	0xED51	/* *TGain */
			/* 0x002D */	0x1EBA	/* *TOFF */
			/* 0x00B9 */	0x0014	/* *TCurve */
			/* 0x002B */	0x3870	/* *nMiscCfg */
			/* 0x0004 */	0x1900	/* AtRate @ 0x04 */
			/* 0x0049 */	0x2241	/* ConvCFG */
			/* 0x0029 */	0x0624	/* FilterCFG */
			/* 0x003c */	0x2D00	/* TaskPeriod */
		>;
	};
	/* F10-B_3298_COS_062922_5mOhm_RC2_CT_146mA.model+settings.ini.txt http://b/239656345#comment6 */
	maxim,cos-pack-b-2k {
		maxim,batt-id-kohm = <2>;
		maxim,model-version = <3>;
		maxim,force-reset-model-data;
		maxim,rc1-tempco = /bits/ 16 <0x171f>;
		maxim,rc2-tempco = /bits/ 16 <0x1202>;
		maxim,rc2-learncfg = /bits/ 16 <0x260e>;
		maxim,fg-model = /bits/ 16 <
			0xa4f0 0xb040 0xb7a0 0xb940 0xbaf0 0xbda0 0xbea0 0xc070
			0xc490 0xc840 0xcad0 0xce20 0xd130 0xd550 0xd860 0xdea0
			0x0020 0x0310 0x1410 0x0a10 0x0f80 0x1a10 0x0f00 0x0be0
			0x05d0 0x09b0 0x05f0 0x0810 0x05a0 0x08e0 0x06a0 0x06a0
			0x0200 0x0200 0x0200 0x0200 0x0200 0x0200 0x0200 0x0200
			0x0200 0x0200 0x0200 0x0200 0x0200 0x0200 0x0200 0x0200
		>;
		maxim,fg-params = /bits/ 16 <
			/* 0x0036 */	0xf060	/* nIAvgEmpty -> IAvgEmpty */
			/* 0x002a */	0x0838	/* nRelaxCFG -> RelaxCFG */
			/* 0x0028 */	0x260e	/* nLearnCFG -> LearnCFG */
			/* 0x001D */	0x4217	/* Config: */
			/* 0x00BB */	0x0090	/* Config2: OCVQen|DSOCIi */
			/* 0x0013 */	0x5a05	/* nFullSOCThr -> FullSOCThr*/
			/* 0x0035 */	0x02e9	/* nFullCapRep */
			/* 0x0018 */	0x02e9	/* nDesignCap */
			/* 0x0046 */	0x3200	/* dPacc - 0xc80: dQaCC=200%, 0x190: dQaCC=25% */
			/* 0x0045 */	0x00ba	/* dQacc - nFullCapNom/2 == 200%, */
						/* slow convergence - nFullCapNom/16 == 25% */
			/* 0x0023 */	0x02e9	/* nFullCapNom */
			/* 0x003A */	0xa55a	/* nVEmpty */
			/* 0x0012 */	0x1700	/* nQRTable00 -> QResidual00 */
			/* 0x0022 */	0x0980	/* nQRTable10 -> QResidual10 */
			/* 0x0032 */	0x0280	/* nQRTable20 -> QResidual20 */
			/* 0x0042 */	0x0200	/* nQRTable30 -> QResidual30 */
			/* 0x0038 */	0x04e0	/* nRcomp0 */
			/* 0x0039 */	0x1202	/* nTempco */
			/* 0x001E */	0x01d3	/* ICHGTerm */
			/* 0x002C */	0xED51	/* *TGain */
			/* 0x002D */	0x1EBA	/* *TOFF */
			/* 0x00B9 */	0x0014	/* *TCurve */
			/* 0x002B */	0x3870	/* *nMiscCfg */
			/* 0x0004 */	0x1900	/* AtRate @ 0x04 */
			/* 0x0049 */	0x2241	/* ConvCFG */
			/* 0x0029 */	0x0624	/* FilterCFG */
			/* 0x003c */	0x2D00	/* TaskPeriod */
		>;
	};
};
