mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 19:47:08 +02:00
iio: qcom-spmi-adc5: add CHG_TEMP channel for PMIC7
Add support to read CHG_TEMP channel on PM8350B to get charger temperature. Change-Id: I33c69e56d47b0ab37772df8d55eae2ab0c5bad86 Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org> [quic_subbaram@quicinc.com: Fixed trivial merge conflict in qcom-vadc-common.h due to location change] Signed-off-by: Subbaraman Narayanamurthy <quic_subbaram@quicinc.com> [quic_collinsd@quicinc.com: changed struct vadc_prescale_ratio to struct u32_fract] Signed-off-by: David Collins <quic_collinsd@quicinc.com>
This commit is contained in:
parent
dbc9f0e777
commit
ea56889092
|
|
@ -618,6 +618,8 @@ static const struct adc5_channels adc7_chans_pmic[ADC5_MAX_CHANNEL] = {
|
|||
SCALE_HW_CALIB_DEFAULT)
|
||||
[ADC7_AMUX_THM3] = ADC5_CHAN_TEMP("smb_temp", 0,
|
||||
SCALE_HW_CALIB_PM7_SMB_TEMP)
|
||||
[ADC7_CHG_TEMP] = ADC5_CHAN_TEMP("chg_temp", 0,
|
||||
SCALE_HW_CALIB_PM7_CHG_TEMP)
|
||||
[ADC7_DIE_TEMP] = ADC5_CHAN_TEMP("die_temp", 0,
|
||||
SCALE_HW_CALIB_PMIC_THERM_PM7)
|
||||
[ADC7_AMUX_THM1_100K_PU] = ADC5_CHAN_TEMP("amux_thm1_pu2", 0,
|
||||
|
|
|
|||
|
|
@ -572,6 +572,10 @@ static int qcom_vadc_scale_hw_chg5_temp(
|
|||
const struct u32_fract *prescale,
|
||||
const struct adc5_data *data,
|
||||
u16 adc_code, int *result_mdec);
|
||||
static int qcom_vadc_scale_hw_pm7_chg_temp(
|
||||
const struct u32_fract *prescale,
|
||||
const struct adc5_data *data,
|
||||
u16 adc_code, int *result_mdec);
|
||||
static int qcom_vadc_scale_hw_calib_die_temp(
|
||||
const struct u32_fract *prescale,
|
||||
const struct adc5_data *data,
|
||||
|
|
@ -600,6 +604,7 @@ static struct qcom_adc5_scale_type scale_adc5_fn[] = {
|
|||
[SCALE_HW_CALIB_PM5_SMB_TEMP] = {qcom_vadc_scale_hw_smb_temp},
|
||||
[SCALE_HW_CALIB_PM5_SMB1398_TEMP] = {qcom_vadc_scale_hw_smb1398_temp},
|
||||
[SCALE_HW_CALIB_PM7_SMB_TEMP] = {qcom_vadc_scale_hw_pm7_smb_temp},
|
||||
[SCALE_HW_CALIB_PM7_CHG_TEMP] = {qcom_vadc_scale_hw_pm7_chg_temp},
|
||||
};
|
||||
|
||||
static int qcom_vadc_map_voltage_temp(const struct vadc_map_pt *pts,
|
||||
|
|
@ -917,6 +922,26 @@ static int qcom_vadc7_scale_hw_calib_die_temp(
|
|||
voltage, result_mdec);
|
||||
}
|
||||
|
||||
static int qcom_vadc_scale_hw_pm7_chg_temp(
|
||||
const struct u32_fract *prescale,
|
||||
const struct adc5_data *data,
|
||||
u16 adc_code, int *result_mdec)
|
||||
{
|
||||
s64 temp;
|
||||
int result_uv;
|
||||
|
||||
result_uv = qcom_vadc_scale_code_voltage_factor(adc_code,
|
||||
prescale, data, 1);
|
||||
|
||||
/* T(C) = Vadc/0.0033 – 277.12 */
|
||||
temp = div_s64((30303LL * result_uv) - (27712 * 1000000LL), 100000);
|
||||
pr_debug("adc_code: %u result_uv: %d temp: %lld\n", adc_code, result_uv,
|
||||
temp);
|
||||
*result_mdec = temp > 0 ? temp : 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int qcom_vadc_scale_hw_pm7_smb_temp(
|
||||
const struct u32_fract *prescale,
|
||||
const struct adc5_data *data,
|
||||
|
|
|
|||
|
|
@ -120,6 +120,8 @@ struct vadc_linear_graph {
|
|||
* SMB1398 temperature.
|
||||
* SCALE_HW_CALIB_PM7_SMB_TEMP: Returns result in millidegrees for PMIC7
|
||||
* SMB139x temperature.
|
||||
* SCALE_HW_CALIB_PM7_CHG_TEMP: Returns result in millidegrees for PMIC7
|
||||
* charger temperature.
|
||||
*/
|
||||
enum vadc_scale_fn_type {
|
||||
SCALE_DEFAULT = 0,
|
||||
|
|
@ -140,6 +142,7 @@ enum vadc_scale_fn_type {
|
|||
SCALE_HW_CALIB_BATT_THERM_400K,
|
||||
SCALE_HW_CALIB_PM5_SMB1398_TEMP,
|
||||
SCALE_HW_CALIB_PM7_SMB_TEMP,
|
||||
SCALE_HW_CALIB_PM7_CHG_TEMP,
|
||||
SCALE_HW_CALIB_INVALID,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user