From fa248b6161e01612ac7ac4cb2a0ebec436ef1bb9 Mon Sep 17 00:00:00 2001 From: Subbaraman Narayanamurthy Date: Wed, 14 Jul 2021 19:10:20 -0700 Subject: [PATCH] iio: adc: qcom-spmi-adc5: Update ratios for SMB_* channels for ADC7 As per the hardware recommendation, add a ratio of 41/40 (i.e. numerator 40 and denominator 41 based on how it's used in our calculations) for the ADC channels that use SMB_TEMP pin because of the voltage divider circuit with a 1 K and 40 K in parallel. IIN_FB channel should be using the same ratio as that of IIN_SMB before. Hence, add a separate scaling factor for it. Change-Id: I4c3d76a068edf7c964a71c5082da54b115e7eb04 Signed-off-by: Subbaraman Narayanamurthy [quic_subbaram@quicinc.com: Fixed merge conflicts in qcom-spmi-adc5.c because common code moved to qcom-vadc-common.c] Signed-off-by: Subbaraman Narayanamurthy [quic_collinsd@quicinc.com: changed prescale "num" and "den" to "numerator" and "denominator" respectively] Signed-off-by: David Collins --- drivers/iio/adc/qcom-spmi-adc5.c | 10 +++++----- drivers/iio/adc/qcom-vadc-common.c | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/iio/adc/qcom-spmi-adc5.c b/drivers/iio/adc/qcom-spmi-adc5.c index cfa32c2859fd..8a50edd69345 100644 --- a/drivers/iio/adc/qcom-spmi-adc5.c +++ b/drivers/iio/adc/qcom-spmi-adc5.c @@ -625,17 +625,17 @@ static const struct adc5_channels adc7_chans_pmic[ADC5_MAX_CHANNEL] = { SCALE_HW_CALIB_DEFAULT) [ADC7_USB_IN_V_16] = ADC5_CHAN_VOLT("usb_in_v_div_16", 8, SCALE_HW_CALIB_DEFAULT) - [ADC7_AMUX_THM3] = ADC5_CHAN_TEMP("smb_temp", 0, + [ADC7_AMUX_THM3] = ADC5_CHAN_TEMP("smb_temp", 9, SCALE_HW_CALIB_PM7_SMB_TEMP) [ADC7_CHG_TEMP] = ADC5_CHAN_TEMP("chg_temp", 0, SCALE_HW_CALIB_PM7_CHG_TEMP) - [ADC7_IIN_FB] = ADC5_CHAN_CUR("iin_fb", 9, + [ADC7_IIN_FB] = ADC5_CHAN_CUR("iin_fb", 10, SCALE_HW_CALIB_CUR) - [ADC7_IIN_SMB] = ADC5_CHAN_CUR("iin_smb", 9, + [ADC7_IIN_SMB] = ADC5_CHAN_CUR("iin_smb", 12, SCALE_HW_CALIB_CUR) - [ADC7_ICHG_SMB] = ADC5_CHAN_CUR("ichg_smb", 10, + [ADC7_ICHG_SMB] = ADC5_CHAN_CUR("ichg_smb", 13, SCALE_HW_CALIB_CUR) - [ADC7_ICHG_FB] = ADC5_CHAN_CUR("ichg_fb", 11, + [ADC7_ICHG_FB] = ADC5_CHAN_CUR("ichg_fb", 14, SCALE_HW_CALIB_CUR_RAW) [ADC7_DIE_TEMP] = ADC5_CHAN_TEMP("die_temp", 0, SCALE_HW_CALIB_PMIC_THERM_PM7) diff --git a/drivers/iio/adc/qcom-vadc-common.c b/drivers/iio/adc/qcom-vadc-common.c index e23d735d761d..3e81aebfb018 100644 --- a/drivers/iio/adc/qcom-vadc-common.c +++ b/drivers/iio/adc/qcom-vadc-common.c @@ -530,9 +530,12 @@ static const struct u32_fract adc5_prescale_ratios[] = { { .numerator = 10, .denominator = 81 }, { .numerator = 1, .denominator = 10 }, { .numerator = 1, .denominator = 16 }, + { .numerator = 40, .denominator = 41 }, /* PM7_SMB_TEMP */ /* Prescale ratios for current channels below */ { .numerator = 32, .denominator = 100 }, /* IIN_FB, IIN_SMB */ { .numerator = 16, .denominator = 100 }, /* ICHG_SMB */ + { .numerator = 1280, .denominator = 4100 }, /* IIN_SMB_new */ + { .numerator = 640, .denominator = 4100 }, /* ICHG_SMB_new */ { .numerator = 1000, .denominator = 305185 }, /* ICHG_FB */ { .numerator = 1000, .denominator = 610370 }, /* ICHG_FB_2X */ };