Loading drivers/hwmon/qpnp-adc-common.c +10 −4 Original line number Diff line number Diff line Loading @@ -920,17 +920,22 @@ int32_t qpnp_adc_scale_default(struct qpnp_vadc_chip *vadc, return -EINVAL; scale_voltage = (adc_code - chan_properties->adc_graph[CALIB_ABSOLUTE].adc_gnd) * chan_properties->adc_graph[CALIB_ABSOLUTE].dx; chan_properties->adc_graph[chan_properties->calib_type].adc_gnd) * chan_properties->adc_graph[chan_properties->calib_type].dx; if (scale_voltage < 0) { negative_offset = 1; scale_voltage = -scale_voltage; } do_div(scale_voltage, chan_properties->adc_graph[CALIB_ABSOLUTE].dy); chan_properties->adc_graph[chan_properties->calib_type].dy); if (negative_offset) scale_voltage = -scale_voltage; scale_voltage += chan_properties->adc_graph[CALIB_ABSOLUTE].dx; if (chan_properties->calib_type == CALIB_ABSOLUTE) scale_voltage += chan_properties->adc_graph[chan_properties->calib_type].dx; else scale_voltage *= 1000; if (scale_voltage < 0) { if (adc_properties->bipolar) { Loading Loading @@ -1411,6 +1416,7 @@ int32_t qpnp_adc_get_devicetree_data(struct spmi_device *spmi, adc_channel_list[i].adc_scale_fn = post_scaling; adc_channel_list[i].hw_settle_time = hw_settle_time; adc_channel_list[i].fast_avg_setup = fast_avg_setup; adc_channel_list[i].calib_type = calib_type; i++; } Loading drivers/hwmon/qpnp-adc-voltage.c +2 −0 Original line number Diff line number Diff line Loading @@ -1209,6 +1209,8 @@ int32_t qpnp_vadc_conv_seq_request(struct qpnp_vadc_chip *vadc, qpnp_vadc_amux_scaling_ratio[amux_prescaling].num; vadc->adc->amux_prop->chan_prop->offset_gain_denominator = qpnp_vadc_amux_scaling_ratio[amux_prescaling].den; vadc->adc->amux_prop->chan_prop->calib_type = vadc->adc->adc_channels[dt_index].calib_type; scale_type = vadc->adc->adc_channels[dt_index].adc_scale_fn; if (scale_type >= SCALE_NONE) { Loading include/linux/qpnp/qpnp-adc.h +2 −0 Original line number Diff line number Diff line Loading @@ -851,6 +851,7 @@ struct qpnp_vadc_chan_properties { enum qpnp_adc_meas_timer_2 meas_interval2; enum qpnp_adc_tm_channel_select tm_channel_select; enum qpnp_state_request state_request; enum qpnp_adc_calib_type calib_type; struct qpnp_vadc_linear_graph adc_graph[2]; }; Loading Loading @@ -894,6 +895,7 @@ struct qpnp_adc_amux { enum qpnp_adc_scale_fn_type adc_scale_fn; enum qpnp_adc_fast_avg_ctl fast_avg_setup; enum qpnp_adc_hw_settle_time hw_settle_time; enum qpnp_adc_calib_type calib_type; }; /** Loading Loading
drivers/hwmon/qpnp-adc-common.c +10 −4 Original line number Diff line number Diff line Loading @@ -920,17 +920,22 @@ int32_t qpnp_adc_scale_default(struct qpnp_vadc_chip *vadc, return -EINVAL; scale_voltage = (adc_code - chan_properties->adc_graph[CALIB_ABSOLUTE].adc_gnd) * chan_properties->adc_graph[CALIB_ABSOLUTE].dx; chan_properties->adc_graph[chan_properties->calib_type].adc_gnd) * chan_properties->adc_graph[chan_properties->calib_type].dx; if (scale_voltage < 0) { negative_offset = 1; scale_voltage = -scale_voltage; } do_div(scale_voltage, chan_properties->adc_graph[CALIB_ABSOLUTE].dy); chan_properties->adc_graph[chan_properties->calib_type].dy); if (negative_offset) scale_voltage = -scale_voltage; scale_voltage += chan_properties->adc_graph[CALIB_ABSOLUTE].dx; if (chan_properties->calib_type == CALIB_ABSOLUTE) scale_voltage += chan_properties->adc_graph[chan_properties->calib_type].dx; else scale_voltage *= 1000; if (scale_voltage < 0) { if (adc_properties->bipolar) { Loading Loading @@ -1411,6 +1416,7 @@ int32_t qpnp_adc_get_devicetree_data(struct spmi_device *spmi, adc_channel_list[i].adc_scale_fn = post_scaling; adc_channel_list[i].hw_settle_time = hw_settle_time; adc_channel_list[i].fast_avg_setup = fast_avg_setup; adc_channel_list[i].calib_type = calib_type; i++; } Loading
drivers/hwmon/qpnp-adc-voltage.c +2 −0 Original line number Diff line number Diff line Loading @@ -1209,6 +1209,8 @@ int32_t qpnp_vadc_conv_seq_request(struct qpnp_vadc_chip *vadc, qpnp_vadc_amux_scaling_ratio[amux_prescaling].num; vadc->adc->amux_prop->chan_prop->offset_gain_denominator = qpnp_vadc_amux_scaling_ratio[amux_prescaling].den; vadc->adc->amux_prop->chan_prop->calib_type = vadc->adc->adc_channels[dt_index].calib_type; scale_type = vadc->adc->adc_channels[dt_index].adc_scale_fn; if (scale_type >= SCALE_NONE) { Loading
include/linux/qpnp/qpnp-adc.h +2 −0 Original line number Diff line number Diff line Loading @@ -851,6 +851,7 @@ struct qpnp_vadc_chan_properties { enum qpnp_adc_meas_timer_2 meas_interval2; enum qpnp_adc_tm_channel_select tm_channel_select; enum qpnp_state_request state_request; enum qpnp_adc_calib_type calib_type; struct qpnp_vadc_linear_graph adc_graph[2]; }; Loading Loading @@ -894,6 +895,7 @@ struct qpnp_adc_amux { enum qpnp_adc_scale_fn_type adc_scale_fn; enum qpnp_adc_fast_avg_ctl fast_avg_setup; enum qpnp_adc_hw_settle_time hw_settle_time; enum qpnp_adc_calib_type calib_type; }; /** Loading