Loading drivers/iio/adc/qcom-spmi-adc5.c +18 −0 Original line number Diff line number Diff line Loading @@ -618,6 +618,8 @@ static const struct adc_channels adc_chans_pmic5[ADC_MAX_CHANNEL] = { SCALE_HW_CALIB_DEFAULT) [ADC_VBAT_SNS] = ADC_CHAN_VOLT("vbat_sns", 3, SCALE_HW_CALIB_DEFAULT) [ADC_VCOIN] = ADC_CHAN_VOLT("vcoin", 3, SCALE_HW_CALIB_DEFAULT) [ADC_DIE_TEMP] = ADC_CHAN_TEMP("die_temp", 1, SCALE_HW_CALIB_PMIC_THERM) [ADC_USB_IN_I] = ADC_CHAN_VOLT("usb_in_i_uv", 1, Loading @@ -633,12 +635,22 @@ static const struct adc_channels adc_chans_pmic5[ADC_MAX_CHANNEL] = { SCALE_HW_CALIB_DEFAULT) [ADC_XO_THERM_PU2] = ADC_CHAN_TEMP("xo_therm", 1, SCALE_HW_CALIB_XOTHERM) [ADC_BAT_THERM_PU2] = ADC_CHAN_TEMP("bat_therm_pu2", 1, SCALE_HW_CALIB_BATT_THERM_100K) [ADC_BAT_THERM_PU1] = ADC_CHAN_TEMP("bat_therm_pu1", 1, SCALE_HW_CALIB_BATT_THERM_30K) [ADC_BAT_THERM_PU3] = ADC_CHAN_TEMP("bat_therm_pu3", 1, SCALE_HW_CALIB_BATT_THERM_400K) [ADC_BAT_ID_PU2] = ADC_CHAN_TEMP("bat_id", 1, SCALE_HW_CALIB_DEFAULT) [ADC_AMUX_THM1_PU2] = ADC_CHAN_TEMP("amux_thm1_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) [ADC_AMUX_THM2_PU2] = ADC_CHAN_TEMP("amux_thm2_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) [ADC_AMUX_THM3_PU2] = ADC_CHAN_TEMP("amux_thm3_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) [ADC_AMUX_THM4_PU2] = ADC_CHAN_TEMP("amux_thm4_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) [ADC_INT_EXT_ISENSE_VBAT_VDATA] = ADC_CHAN_POWER("int_ext_isense", 1, SCALE_HW_CALIB_CUR) [ADC_EXT_ISENSE_VBAT_VDATA] = ADC_CHAN_POWER("ext_isense", 1, Loading @@ -647,6 +659,12 @@ static const struct adc_channels adc_chans_pmic5[ADC_MAX_CHANNEL] = { SCALE_HW_CALIB_CUR) [ADC_AMUX_THM2] = ADC_CHAN_TEMP("amux_thm2", 1, SCALE_HW_CALIB_PM5_SMB_TEMP) [ADC_AMUX_THM3] = ADC_CHAN_TEMP("amux_thm3", 1, SCALE_HW_CALIB_PM5_SMB_TEMP) [ADC_GPIO1_PU2] = ADC_CHAN_TEMP("gpio1_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) [ADC_GPIO4_PU2] = ADC_CHAN_TEMP("gpio4_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) }; static const struct adc_channels adc_chans_rev2[ADC_MAX_CHANNEL] = { Loading drivers/iio/adc/qcom-vadc-common.c +318 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,237 @@ static const struct vadc_map_pt adcmap_100k_104ef_104fb_1875_vref[] = { { 46, 125000 }, }; /* * Voltage to temperature table for 100k pull up for bat_therm with * Alium. */ static const struct vadc_map_pt adcmap_batt_therm_100k[] = { {1840, -400}, {1835, -380}, {1828, -360}, {1821, -340}, {1813, -320}, {1803, -300}, {1793, -280}, {1781, -260}, {1768, -240}, {1753, -220}, {1737, -200}, {1719, -180}, {1700, -160}, {1679, -140}, {1655, -120}, {1630, -100}, {1603, -80}, {1574, -60}, {1543, -40}, {1510, -20}, {1475, 0}, {1438, 20}, {1400, 40}, {1360, 60}, {1318, 80}, {1276, 100}, {1232, 120}, {1187, 140}, {1142, 160}, {1097, 180}, {1051, 200}, {1005, 220}, {960, 240}, {915, 260}, {871, 280}, {828, 300}, {786, 320}, {745, 340}, {705, 360}, {666, 380}, {629, 400}, {594, 420}, {560, 440}, {527, 460}, {497, 480}, {467, 500}, {439, 520}, {413, 540}, {388, 560}, {365, 580}, {343, 600}, {322, 620}, {302, 640}, {284, 660}, {267, 680}, {251, 700}, {235, 720}, {221, 740}, {208, 760}, {195, 780}, {184, 800}, {173, 820}, {163, 840}, {153, 860}, {144, 880}, {136, 900}, {128, 920}, {120, 940}, {114, 960}, {107, 980} }; /* * Voltage to temperature table for 30k pull up for bat_therm with * Alium. */ static const struct vadc_map_pt adcmap_batt_therm_30k[] = { {1864, -400}, {1863, -380}, {1861, -360}, {1858, -340}, {1856, -320}, {1853, -300}, {1850, -280}, {1846, -260}, {1842, -240}, {1837, -220}, {1831, -200}, {1825, -180}, {1819, -160}, {1811, -140}, {1803, -120}, {1794, -100}, {1784, -80}, {1773, -60}, {1761, -40}, {1748, -20}, {1734, 0}, {1718, 20}, {1702, 40}, {1684, 60}, {1664, 80}, {1643, 100}, {1621, 120}, {1597, 140}, {1572, 160}, {1546, 180}, {1518, 200}, {1489, 220}, {1458, 240}, {1426, 260}, {1393, 280}, {1359, 300}, {1324, 320}, {1288, 340}, {1252, 360}, {1214, 380}, {1176, 400}, {1138, 420}, {1100, 440}, {1061, 460}, {1023, 480}, {985, 500}, {947, 520}, {910, 540}, {873, 560}, {836, 580}, {801, 600}, {766, 620}, {732, 640}, {699, 660}, {668, 680}, {637, 700}, {607, 720}, {578, 740}, {550, 760}, {524, 780}, {498, 800}, {474, 820}, {451, 840}, {428, 860}, {407, 880}, {387, 900}, {367, 920}, {349, 940}, {332, 960}, {315, 980} }; /* * Voltage to temperature table for 400k pull up for bat_therm with * Alium. */ static const struct vadc_map_pt adcmap_batt_therm_400k[] = { {1744, -400}, {1724, -380}, {1701, -360}, {1676, -340}, {1648, -320}, {1618, -300}, {1584, -280}, {1548, -260}, {1509, -240}, {1468, -220}, {1423, -200}, {1377, -180}, {1328, -160}, {1277, -140}, {1225, -120}, {1171, -100}, {1117, -80}, {1062, -60}, {1007, -40}, {953, -20}, {899, 0}, {847, 20}, {795, 40}, {745, 60}, {697, 80}, {651, 100}, {607, 120}, {565, 140}, {526, 160}, {488, 180}, {453, 200}, {420, 220}, {390, 240}, {361, 260}, {334, 280}, {309, 300}, {286, 320}, {265, 340}, {245, 360}, {227, 380}, {210, 400}, {195, 420}, {180, 440}, {167, 460}, {155, 480}, {144, 500}, {133, 520}, {124, 540}, {115, 560}, {107, 580}, {99, 600}, {92, 620}, {86, 640}, {80, 660}, {75, 680}, {70, 700}, {65, 720}, {61, 740}, {57, 760}, {53, 780}, {50, 800}, {46, 820}, {43, 840}, {41, 860}, {38, 880}, {36, 900}, {34, 920}, {32, 940}, {30, 960}, {28, 980} }; static int qcom_vadc_map_voltage_temp(const struct vadc_map_pt *pts, u32 tablesize, s32 input, s64 *output) { Loading Loading @@ -278,6 +509,84 @@ static int qcom_vadc_scale_hw_calib_therm( return 0; } static int qcom_vadc_scale_hw_calib_batt_therm_100( const struct vadc_prescale_ratio *prescale, const struct adc_data *data, u16 adc_code, int *result_mdec) { s64 voltage = 0, result = 0, adc_vdd_ref_mv = 1875; int ret; if (adc_code > VADC5_MAX_CODE) adc_code = 0; /* (ADC code * vref_vadc (1.875V)) / full_scale_code */ voltage = (s64) adc_code * adc_vdd_ref_mv * 1000; voltage = div64_s64(voltage, (data->full_scale_code_volt * 1000)); ret = qcom_vadc_map_voltage_temp(adcmap_batt_therm_100k, ARRAY_SIZE(adcmap_batt_therm_100k), voltage, &result); if (ret) return ret; *result_mdec = result; return 0; } static int qcom_vadc_scale_hw_calib_batt_therm_30( const struct vadc_prescale_ratio *prescale, const struct adc_data *data, u16 adc_code, int *result_mdec) { s64 voltage = 0, result = 0, adc_vdd_ref_mv = 1875; int ret; if (adc_code > VADC5_MAX_CODE) adc_code = 0; /* (ADC code * vref_vadc (1.875V)) / full_scale_code */ voltage = (s64) adc_code * adc_vdd_ref_mv * 1000; voltage = div64_s64(voltage, (data->full_scale_code_volt * 1000)); ret = qcom_vadc_map_voltage_temp(adcmap_batt_therm_30k, ARRAY_SIZE(adcmap_batt_therm_30k), voltage, &result); if (ret) return ret; *result_mdec = result; return 0; } static int qcom_vadc_scale_hw_calib_batt_therm_400( const struct vadc_prescale_ratio *prescale, const struct adc_data *data, u16 adc_code, int *result_mdec) { s64 voltage = 0, result = 0, adc_vdd_ref_mv = 1875; int ret; if (adc_code > VADC5_MAX_CODE) adc_code = 0; /* (ADC code * vref_vadc (1.875V)) / full_scale_code */ voltage = (s64) adc_code * adc_vdd_ref_mv * 1000; voltage = div64_s64(voltage, (data->full_scale_code_volt * 1000)); ret = qcom_vadc_map_voltage_temp(adcmap_batt_therm_400k, ARRAY_SIZE(adcmap_batt_therm_400k), voltage, &result); if (ret) return ret; *result_mdec = result; return 0; } static int qcom_vadc_scale_hw_calib_die_temp( const struct vadc_prescale_ratio *prescale, const struct adc_data *data, Loading Loading @@ -432,6 +741,15 @@ int qcom_vadc_hw_scale(enum vadc_scale_fn_type scaletype, case SCALE_HW_CALIB_XOTHERM: return qcom_vadc_scale_hw_calib_therm(prescale, data, adc_code, result); case SCALE_HW_CALIB_BATT_THERM_100K: return qcom_vadc_scale_hw_calib_batt_therm_100(prescale, data, adc_code, result); case SCALE_HW_CALIB_BATT_THERM_30K: return qcom_vadc_scale_hw_calib_batt_therm_30(prescale, data, adc_code, result); case SCALE_HW_CALIB_BATT_THERM_400K: return qcom_vadc_scale_hw_calib_batt_therm_400(prescale, data, adc_code, result); case SCALE_HW_CALIB_PMIC_THERM: return qcom_vadc_scale_hw_calib_die_temp(prescale, data, adc_code, result); Loading drivers/iio/adc/qcom-vadc-common.h +12 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,15 @@ struct vadc_prescale_ratio { * charger temperature. * SCALE_HW_CALIB_PM5_SMB_TEMP: Returns result in millidegrees for PMIC5 * SMB1390 temperature. * SCALE_HW_CALIB_BATT_THERM_100K: Returns battery thermistor voltage in * decidegC using 100k pullup. The hardware applies offset/slope to adc * code. * SCALE_HW_CALIB_BATT_THERM_30K: Returns battery thermistor voltage in * decidegC using 30k pullup. The hardware applies offset/slope to adc * code. * SCALE_HW_CALIB_BATT_THERM_400K: Returns battery thermistor voltage in * decidegC using 400k pullup. The hardware applies offset/slope to adc * code. */ enum vadc_scale_fn_type { SCALE_DEFAULT = 0, Loading @@ -132,6 +141,9 @@ enum vadc_scale_fn_type { SCALE_HW_CALIB_CUR, SCALE_HW_CALIB_PM5_CHG_TEMP, SCALE_HW_CALIB_PM5_SMB_TEMP, SCALE_HW_CALIB_BATT_THERM_100K, SCALE_HW_CALIB_BATT_THERM_30K, SCALE_HW_CALIB_BATT_THERM_400K, }; struct adc_data { Loading Loading
drivers/iio/adc/qcom-spmi-adc5.c +18 −0 Original line number Diff line number Diff line Loading @@ -618,6 +618,8 @@ static const struct adc_channels adc_chans_pmic5[ADC_MAX_CHANNEL] = { SCALE_HW_CALIB_DEFAULT) [ADC_VBAT_SNS] = ADC_CHAN_VOLT("vbat_sns", 3, SCALE_HW_CALIB_DEFAULT) [ADC_VCOIN] = ADC_CHAN_VOLT("vcoin", 3, SCALE_HW_CALIB_DEFAULT) [ADC_DIE_TEMP] = ADC_CHAN_TEMP("die_temp", 1, SCALE_HW_CALIB_PMIC_THERM) [ADC_USB_IN_I] = ADC_CHAN_VOLT("usb_in_i_uv", 1, Loading @@ -633,12 +635,22 @@ static const struct adc_channels adc_chans_pmic5[ADC_MAX_CHANNEL] = { SCALE_HW_CALIB_DEFAULT) [ADC_XO_THERM_PU2] = ADC_CHAN_TEMP("xo_therm", 1, SCALE_HW_CALIB_XOTHERM) [ADC_BAT_THERM_PU2] = ADC_CHAN_TEMP("bat_therm_pu2", 1, SCALE_HW_CALIB_BATT_THERM_100K) [ADC_BAT_THERM_PU1] = ADC_CHAN_TEMP("bat_therm_pu1", 1, SCALE_HW_CALIB_BATT_THERM_30K) [ADC_BAT_THERM_PU3] = ADC_CHAN_TEMP("bat_therm_pu3", 1, SCALE_HW_CALIB_BATT_THERM_400K) [ADC_BAT_ID_PU2] = ADC_CHAN_TEMP("bat_id", 1, SCALE_HW_CALIB_DEFAULT) [ADC_AMUX_THM1_PU2] = ADC_CHAN_TEMP("amux_thm1_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) [ADC_AMUX_THM2_PU2] = ADC_CHAN_TEMP("amux_thm2_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) [ADC_AMUX_THM3_PU2] = ADC_CHAN_TEMP("amux_thm3_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) [ADC_AMUX_THM4_PU2] = ADC_CHAN_TEMP("amux_thm4_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) [ADC_INT_EXT_ISENSE_VBAT_VDATA] = ADC_CHAN_POWER("int_ext_isense", 1, SCALE_HW_CALIB_CUR) [ADC_EXT_ISENSE_VBAT_VDATA] = ADC_CHAN_POWER("ext_isense", 1, Loading @@ -647,6 +659,12 @@ static const struct adc_channels adc_chans_pmic5[ADC_MAX_CHANNEL] = { SCALE_HW_CALIB_CUR) [ADC_AMUX_THM2] = ADC_CHAN_TEMP("amux_thm2", 1, SCALE_HW_CALIB_PM5_SMB_TEMP) [ADC_AMUX_THM3] = ADC_CHAN_TEMP("amux_thm3", 1, SCALE_HW_CALIB_PM5_SMB_TEMP) [ADC_GPIO1_PU2] = ADC_CHAN_TEMP("gpio1_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) [ADC_GPIO4_PU2] = ADC_CHAN_TEMP("gpio4_pu2", 1, SCALE_HW_CALIB_THERM_100K_PULLUP) }; static const struct adc_channels adc_chans_rev2[ADC_MAX_CHANNEL] = { Loading
drivers/iio/adc/qcom-vadc-common.c +318 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,237 @@ static const struct vadc_map_pt adcmap_100k_104ef_104fb_1875_vref[] = { { 46, 125000 }, }; /* * Voltage to temperature table for 100k pull up for bat_therm with * Alium. */ static const struct vadc_map_pt adcmap_batt_therm_100k[] = { {1840, -400}, {1835, -380}, {1828, -360}, {1821, -340}, {1813, -320}, {1803, -300}, {1793, -280}, {1781, -260}, {1768, -240}, {1753, -220}, {1737, -200}, {1719, -180}, {1700, -160}, {1679, -140}, {1655, -120}, {1630, -100}, {1603, -80}, {1574, -60}, {1543, -40}, {1510, -20}, {1475, 0}, {1438, 20}, {1400, 40}, {1360, 60}, {1318, 80}, {1276, 100}, {1232, 120}, {1187, 140}, {1142, 160}, {1097, 180}, {1051, 200}, {1005, 220}, {960, 240}, {915, 260}, {871, 280}, {828, 300}, {786, 320}, {745, 340}, {705, 360}, {666, 380}, {629, 400}, {594, 420}, {560, 440}, {527, 460}, {497, 480}, {467, 500}, {439, 520}, {413, 540}, {388, 560}, {365, 580}, {343, 600}, {322, 620}, {302, 640}, {284, 660}, {267, 680}, {251, 700}, {235, 720}, {221, 740}, {208, 760}, {195, 780}, {184, 800}, {173, 820}, {163, 840}, {153, 860}, {144, 880}, {136, 900}, {128, 920}, {120, 940}, {114, 960}, {107, 980} }; /* * Voltage to temperature table for 30k pull up for bat_therm with * Alium. */ static const struct vadc_map_pt adcmap_batt_therm_30k[] = { {1864, -400}, {1863, -380}, {1861, -360}, {1858, -340}, {1856, -320}, {1853, -300}, {1850, -280}, {1846, -260}, {1842, -240}, {1837, -220}, {1831, -200}, {1825, -180}, {1819, -160}, {1811, -140}, {1803, -120}, {1794, -100}, {1784, -80}, {1773, -60}, {1761, -40}, {1748, -20}, {1734, 0}, {1718, 20}, {1702, 40}, {1684, 60}, {1664, 80}, {1643, 100}, {1621, 120}, {1597, 140}, {1572, 160}, {1546, 180}, {1518, 200}, {1489, 220}, {1458, 240}, {1426, 260}, {1393, 280}, {1359, 300}, {1324, 320}, {1288, 340}, {1252, 360}, {1214, 380}, {1176, 400}, {1138, 420}, {1100, 440}, {1061, 460}, {1023, 480}, {985, 500}, {947, 520}, {910, 540}, {873, 560}, {836, 580}, {801, 600}, {766, 620}, {732, 640}, {699, 660}, {668, 680}, {637, 700}, {607, 720}, {578, 740}, {550, 760}, {524, 780}, {498, 800}, {474, 820}, {451, 840}, {428, 860}, {407, 880}, {387, 900}, {367, 920}, {349, 940}, {332, 960}, {315, 980} }; /* * Voltage to temperature table for 400k pull up for bat_therm with * Alium. */ static const struct vadc_map_pt adcmap_batt_therm_400k[] = { {1744, -400}, {1724, -380}, {1701, -360}, {1676, -340}, {1648, -320}, {1618, -300}, {1584, -280}, {1548, -260}, {1509, -240}, {1468, -220}, {1423, -200}, {1377, -180}, {1328, -160}, {1277, -140}, {1225, -120}, {1171, -100}, {1117, -80}, {1062, -60}, {1007, -40}, {953, -20}, {899, 0}, {847, 20}, {795, 40}, {745, 60}, {697, 80}, {651, 100}, {607, 120}, {565, 140}, {526, 160}, {488, 180}, {453, 200}, {420, 220}, {390, 240}, {361, 260}, {334, 280}, {309, 300}, {286, 320}, {265, 340}, {245, 360}, {227, 380}, {210, 400}, {195, 420}, {180, 440}, {167, 460}, {155, 480}, {144, 500}, {133, 520}, {124, 540}, {115, 560}, {107, 580}, {99, 600}, {92, 620}, {86, 640}, {80, 660}, {75, 680}, {70, 700}, {65, 720}, {61, 740}, {57, 760}, {53, 780}, {50, 800}, {46, 820}, {43, 840}, {41, 860}, {38, 880}, {36, 900}, {34, 920}, {32, 940}, {30, 960}, {28, 980} }; static int qcom_vadc_map_voltage_temp(const struct vadc_map_pt *pts, u32 tablesize, s32 input, s64 *output) { Loading Loading @@ -278,6 +509,84 @@ static int qcom_vadc_scale_hw_calib_therm( return 0; } static int qcom_vadc_scale_hw_calib_batt_therm_100( const struct vadc_prescale_ratio *prescale, const struct adc_data *data, u16 adc_code, int *result_mdec) { s64 voltage = 0, result = 0, adc_vdd_ref_mv = 1875; int ret; if (adc_code > VADC5_MAX_CODE) adc_code = 0; /* (ADC code * vref_vadc (1.875V)) / full_scale_code */ voltage = (s64) adc_code * adc_vdd_ref_mv * 1000; voltage = div64_s64(voltage, (data->full_scale_code_volt * 1000)); ret = qcom_vadc_map_voltage_temp(adcmap_batt_therm_100k, ARRAY_SIZE(adcmap_batt_therm_100k), voltage, &result); if (ret) return ret; *result_mdec = result; return 0; } static int qcom_vadc_scale_hw_calib_batt_therm_30( const struct vadc_prescale_ratio *prescale, const struct adc_data *data, u16 adc_code, int *result_mdec) { s64 voltage = 0, result = 0, adc_vdd_ref_mv = 1875; int ret; if (adc_code > VADC5_MAX_CODE) adc_code = 0; /* (ADC code * vref_vadc (1.875V)) / full_scale_code */ voltage = (s64) adc_code * adc_vdd_ref_mv * 1000; voltage = div64_s64(voltage, (data->full_scale_code_volt * 1000)); ret = qcom_vadc_map_voltage_temp(adcmap_batt_therm_30k, ARRAY_SIZE(adcmap_batt_therm_30k), voltage, &result); if (ret) return ret; *result_mdec = result; return 0; } static int qcom_vadc_scale_hw_calib_batt_therm_400( const struct vadc_prescale_ratio *prescale, const struct adc_data *data, u16 adc_code, int *result_mdec) { s64 voltage = 0, result = 0, adc_vdd_ref_mv = 1875; int ret; if (adc_code > VADC5_MAX_CODE) adc_code = 0; /* (ADC code * vref_vadc (1.875V)) / full_scale_code */ voltage = (s64) adc_code * adc_vdd_ref_mv * 1000; voltage = div64_s64(voltage, (data->full_scale_code_volt * 1000)); ret = qcom_vadc_map_voltage_temp(adcmap_batt_therm_400k, ARRAY_SIZE(adcmap_batt_therm_400k), voltage, &result); if (ret) return ret; *result_mdec = result; return 0; } static int qcom_vadc_scale_hw_calib_die_temp( const struct vadc_prescale_ratio *prescale, const struct adc_data *data, Loading Loading @@ -432,6 +741,15 @@ int qcom_vadc_hw_scale(enum vadc_scale_fn_type scaletype, case SCALE_HW_CALIB_XOTHERM: return qcom_vadc_scale_hw_calib_therm(prescale, data, adc_code, result); case SCALE_HW_CALIB_BATT_THERM_100K: return qcom_vadc_scale_hw_calib_batt_therm_100(prescale, data, adc_code, result); case SCALE_HW_CALIB_BATT_THERM_30K: return qcom_vadc_scale_hw_calib_batt_therm_30(prescale, data, adc_code, result); case SCALE_HW_CALIB_BATT_THERM_400K: return qcom_vadc_scale_hw_calib_batt_therm_400(prescale, data, adc_code, result); case SCALE_HW_CALIB_PMIC_THERM: return qcom_vadc_scale_hw_calib_die_temp(prescale, data, adc_code, result); Loading
drivers/iio/adc/qcom-vadc-common.h +12 −0 Original line number Diff line number Diff line Loading @@ -118,6 +118,15 @@ struct vadc_prescale_ratio { * charger temperature. * SCALE_HW_CALIB_PM5_SMB_TEMP: Returns result in millidegrees for PMIC5 * SMB1390 temperature. * SCALE_HW_CALIB_BATT_THERM_100K: Returns battery thermistor voltage in * decidegC using 100k pullup. The hardware applies offset/slope to adc * code. * SCALE_HW_CALIB_BATT_THERM_30K: Returns battery thermistor voltage in * decidegC using 30k pullup. The hardware applies offset/slope to adc * code. * SCALE_HW_CALIB_BATT_THERM_400K: Returns battery thermistor voltage in * decidegC using 400k pullup. The hardware applies offset/slope to adc * code. */ enum vadc_scale_fn_type { SCALE_DEFAULT = 0, Loading @@ -132,6 +141,9 @@ enum vadc_scale_fn_type { SCALE_HW_CALIB_CUR, SCALE_HW_CALIB_PM5_CHG_TEMP, SCALE_HW_CALIB_PM5_SMB_TEMP, SCALE_HW_CALIB_BATT_THERM_100K, SCALE_HW_CALIB_BATT_THERM_30K, SCALE_HW_CALIB_BATT_THERM_400K, }; struct adc_data { Loading