* Pavel Machek <pavel@xxxxxx> [190919 09:27]: > Hi! > > > Let's allow reconfiguring the cpcap-charger max charge voltage and > > default to 4.2V that should be safe for the known users. > > > > This allows the users to use 4.35V for the extra capacity if really > > needed at a cost of probably shorter battery life. We check the > > constant charge voltage limit set by the battery. > > > > Some pieces of the property setting code is based on an earlier patch > > from Pavel Machek <pavel@xxxxxx> but limited to configuring the charge > > voltage for now. > > I'm sorry I'm a tiny bit busy at the moment. > > > +const int cpcap_charge_voltage[] = { > > + [CPCAP_REG_CRM_VCHRG_3V80] = 3800000, > > + [CPCAP_REG_CRM_VCHRG_4V10] = 4100000, > > + [CPCAP_REG_CRM_VCHRG_4V12] = 4120000, > > + [CPCAP_REG_CRM_VCHRG_4V15] = 4150000, > > + [CPCAP_REG_CRM_VCHRG_4V17] = 4170000, > > + [CPCAP_REG_CRM_VCHRG_4V20] = 4200000, > > + [CPCAP_REG_CRM_VCHRG_4V23] = 4230000, > > + [CPCAP_REG_CRM_VCHRG_4V25] = 4250000, > > + [CPCAP_REG_CRM_VCHRG_4V27] = 4270000, > > + [CPCAP_REG_CRM_VCHRG_4V30] = 4300000, > > + [CPCAP_REG_CRM_VCHRG_4V33] = 4330000, > > + [CPCAP_REG_CRM_VCHRG_4V35] = 4350000, > > + [CPCAP_REG_CRM_VCHRG_4V38] = 4380000, > > + [CPCAP_REG_CRM_VCHRG_4V40] = 4400000, > > + [CPCAP_REG_CRM_VCHRG_4V42] = 4420000, > > + [CPCAP_REG_CRM_VCHRG_4V44] = 4440000, > > +}; > > We really don't need this kind of explicit table, as the values can be > simply computed. Can I offer this? > > Best regards, > Pavel > > static int voltage_to_register(int microvolt) > { > int milivolt = microvolt/1000; > int res; > > if (milivolt < 4100) > return CPCAP_REG_CRM_VCHRG_3V80; > if (milivolt > 4350) > return -EINVAL; > > milivolt = milivolt - (4100 - 250); > res = milivolt / 250; > BUG_ON(res < 1); > BUG_ON(res > 0xb); > return CPCAP_REG_CRM_VCHRG(res); > } Well that does not help as we have four different ranges there. I got something figured out for the new suggested fix I posted. Regards, TOny