Lines Matching defs:hwmon
11 #include <linux/hwmon.h>
12 #include <linux/hwmon-sysfs.h>
67 static inline int input_tsireg_to_mv(struct da9052_hwmon *hwmon, int value)
69 return DIV_ROUND_CLOSEST(value * hwmon->tsiref_mv, 1023);
88 struct da9052_hwmon *hwmon = dev_get_drvdata(dev);
91 mutex_lock(&hwmon->hwmon_lock);
93 ret = da9052_enable_vddout_channel(hwmon->da9052);
97 vdd = da9052_reg_read(hwmon->da9052, DA9052_VDD_RES_REG);
103 ret = da9052_disable_vddout_channel(hwmon->da9052);
107 mutex_unlock(&hwmon->hwmon_lock);
111 da9052_disable_vddout_channel(hwmon->da9052);
113 mutex_unlock(&hwmon->hwmon_lock);
120 struct da9052_hwmon *hwmon = dev_get_drvdata(dev);
123 ret = da9052_reg_read(hwmon->da9052, DA9052_ICHG_AV_REG);
134 struct da9052_hwmon *hwmon = dev_get_drvdata(dev);
136 return sprintf(buf, "%d\n", da9052_adc_read_temp(hwmon->da9052));
142 struct da9052_hwmon *hwmon = dev_get_drvdata(dev);
145 ret = da9052_adc_manual_read(hwmon->da9052, DA9052_ADC_VBAT);
156 struct da9052_hwmon *hwmon = dev_get_drvdata(dev);
160 ret = da9052_adc_manual_read(hwmon->da9052, channel);
167 static int da9052_request_tsi_read(struct da9052_hwmon *hwmon, int channel)
186 return da9052_reg_write(hwmon->da9052, DA9052_TSI_CONT_B_REG, val);
189 static int da9052_get_tsi_result(struct da9052_hwmon *hwmon, int channel)
195 err = da9052_group_read(hwmon->da9052, DA9052_TSI_X_MSB_REG,
223 struct da9052_hwmon *hwmon = dev_get_drvdata(dev);
226 reinit_completion(&hwmon->tsidone);
228 ret = da9052_request_tsi_read(hwmon, channel);
233 if (!wait_for_completion_timeout(&hwmon->tsidone,
237 return da9052_get_tsi_result(hwmon, channel);
243 struct da9052_hwmon *hwmon = dev_get_drvdata(dev);
247 mutex_lock(&hwmon->da9052->auxadc_lock);
249 mutex_unlock(&hwmon->da9052->auxadc_lock);
254 return sprintf(buf, "%d\n", input_tsireg_to_mv(hwmon, ret));
260 struct da9052_hwmon *hwmon = dev_get_drvdata(dev);
264 tjunc = da9052_reg_read(hwmon->da9052, DA9052_TJUNC_RES_REG);
268 toffset = da9052_reg_read(hwmon->da9052, DA9052_T_OFFSET_REG);
282 struct da9052_hwmon *hwmon = dev_get_drvdata(dev);
285 ret = da9052_adc_manual_read(hwmon->da9052, DA9052_ADC_VBBAT);
303 struct da9052_hwmon *hwmon = dev_get_drvdata(dev);
308 if (!hwmon->tsi_as_adc) {
389 struct da9052_hwmon *hwmon = data;
391 complete(&hwmon->tsidone);
398 struct da9052_hwmon *hwmon;
402 hwmon = devm_kzalloc(dev, sizeof(struct da9052_hwmon), GFP_KERNEL);
403 if (!hwmon)
406 platform_set_drvdata(pdev, hwmon);
408 mutex_init(&hwmon->hwmon_lock);
409 hwmon->da9052 = dev_get_drvdata(pdev->dev.parent);
411 init_completion(&hwmon->tsidone);
413 hwmon->tsi_as_adc =
416 if (hwmon->tsi_as_adc) {
417 hwmon->tsiref = devm_regulator_get(pdev->dev.parent, "tsiref");
418 if (IS_ERR(hwmon->tsiref)) {
419 err = PTR_ERR(hwmon->tsiref);
424 err = regulator_enable(hwmon->tsiref);
428 hwmon->tsiref_mv = regulator_get_voltage(hwmon->tsiref);
429 if (hwmon->tsiref_mv < 0) {
430 err = hwmon->tsiref_mv;
434 /* convert from microvolt (DT) to millivolt (hwmon) */
435 hwmon->tsiref_mv /= 1000;
438 if (hwmon->tsiref_mv < 1800 || hwmon->tsiref_mv > 2600) {
439 dev_err(hwmon->da9052->dev, "invalid TSIREF voltage: %d",
440 hwmon->tsiref_mv);
446 da9052_reg_write(hwmon->da9052, DA9052_TSI_CONT_A_REG, 0x00);
449 da9052_reg_update(hwmon->da9052, DA9052_ADC_CONT_REG,
453 err = da9052_request_irq(hwmon->da9052, DA9052_IRQ_TSIREADY,
455 hwmon);
464 hwmon,
473 if (hwmon->tsi_as_adc)
474 da9052_free_irq(hwmon->da9052, DA9052_IRQ_TSIREADY, hwmon);
476 if (hwmon->tsiref)
477 regulator_disable(hwmon->tsiref);
484 struct da9052_hwmon *hwmon = platform_get_drvdata(pdev);
486 if (hwmon->tsi_as_adc) {
487 da9052_free_irq(hwmon->da9052, DA9052_IRQ_TSIREADY, hwmon);
488 regulator_disable(hwmon->tsiref);
498 .name = "da9052-hwmon",
507 MODULE_ALIAS("platform:da9052-hwmon");