static ssize_t low_ua_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int val = 0; int ret = 0; ret = convert_to_int(buf, &val); if (ret) return ret; gbcl->btm_low_threshold_uv = current_to_voltage(gbcl, val); return count; }
static ssize_t low_ua_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int val = 0; int ret = 0; ret = convert_to_int(buf, &val); if (ret) return ret; if (gbcl->bcl_monitor_type == BCL_IBAT_MONITOR_TYPE) gbcl->btm_low_threshold_uv = current_to_voltage(gbcl, val); else gbcl->ibat_low_thresh.trip_value = val; return count; }
static int probe_btm_properties(struct bcl_context *bcl) { int ret = 0, curr_ua = 0; int adc_interval_us; struct device_node *ibat_node = NULL, *dev_node = bcl->dev->of_node; char *key = NULL; key = "qcom,ibat-monitor"; ibat_node = of_find_node_by_name(dev_node, key); if (!ibat_node) { ret = -ENODEV; goto btm_probe_exit; } key = "qcom,uv-to-ua-numerator"; ret = of_property_read_u32(ibat_node, key, &bcl->btm_uv_to_ua_numerator); if (ret < 0) goto btm_probe_exit; key = "qcom,uv-to-ua-denominator"; ret = of_property_read_u32(ibat_node, key, &bcl->btm_uv_to_ua_denominator); if (ret < 0) goto btm_probe_exit; key = "qcom,low-threshold-uamp"; ret = of_property_read_u32(ibat_node, key, &curr_ua); if (ret < 0) goto btm_probe_exit; bcl->btm_low_threshold_uv = current_to_voltage(bcl, curr_ua); key = "qcom,high-threshold-uamp"; ret = of_property_read_u32(ibat_node, key, &curr_ua); if (ret < 0) goto btm_probe_exit; bcl->btm_high_threshold_uv = current_to_voltage(bcl, curr_ua); key = "qcom,mitigation-freq-khz"; ret = of_property_read_u32(ibat_node, key, &bcl->btm_freq_max); if (ret < 0) goto btm_probe_exit; key = "qcom,ibat-channel"; ret = of_property_read_u32(ibat_node, key, &bcl->btm_ibat_chan); if (ret < 0) goto btm_probe_exit; key = "qcom,adc-interval-usec"; ret = of_property_read_u32(ibat_node, key, &adc_interval_us); if (ret < 0) goto btm_probe_exit; bcl->btm_adc_interval = uSec_to_adc_time(bcl, adc_interval_us); key = "qcom,vph-channel"; ret = of_property_read_u32(ibat_node, key, &bcl->btm_vph_chan); if (ret < 0) goto btm_probe_exit; key = "qcom,vph-high-threshold-uv"; ret = of_property_read_u32(ibat_node, key, &bcl->btm_vph_high_thresh); if (ret < 0) goto btm_probe_exit; key = "qcom,vph-low-threshold-uv"; ret = of_property_read_u32(ibat_node, key, &bcl->btm_vph_low_thresh); if (ret < 0) goto btm_probe_exit; key = "ibat-threshold"; bcl->btm_adc_tm_dev = qpnp_get_adc_tm(bcl->dev, key); if (IS_ERR(bcl->btm_adc_tm_dev)) { ret = PTR_ERR(bcl->btm_adc_tm_dev); goto btm_probe_exit; } key = "ibat"; bcl->btm_vadc_dev = qpnp_get_vadc(bcl->dev, key); if (IS_ERR(bcl->btm_vadc_dev)) { ret = PTR_ERR(bcl->btm_vadc_dev); goto btm_probe_exit; } get_vdd_rstr_freq(bcl, ibat_node); bcl->btm_freq_max = max(bcl->btm_freq_max, bcl->thermal_freq_limit); bcl->btm_mode = BCL_MONITOR_DISABLED; bcl->bcl_monitor_type = BCL_IBAT_MONITOR_TYPE; snprintf(bcl->bcl_type, BCL_NAME_LENGTH, "%s", bcl_type[BCL_IBAT_MONITOR_TYPE]); ret = cpufreq_register_notifier(&bcl_cpufreq_notifier, CPUFREQ_POLICY_NOTIFIER); if (ret) pr_err("Error with cpufreq register. err:%d\n", ret); btm_probe_exit: if (ret && ret != -EPROBE_DEFER) dev_info(bcl->dev, "%s:%s Error reading key:%s. ret = %d\n", KBUILD_MODNAME, __func__, key, ret); return ret; }