Lines Matching refs:dev_info
62 static inline int ds2781_battery_io(struct ds2781_device_info *dev_info, in ds2781_battery_io() argument
65 return w1_ds2781_io(dev_info->w1_dev, buf, addr, count, io); in ds2781_battery_io()
68 static int w1_ds2781_read(struct ds2781_device_info *dev_info, char *buf, in w1_ds2781_read() argument
71 return ds2781_battery_io(dev_info, buf, addr, count, 0); in w1_ds2781_read()
74 static inline int ds2781_read8(struct ds2781_device_info *dev_info, u8 *val, in ds2781_read8() argument
77 return ds2781_battery_io(dev_info, val, addr, sizeof(u8), 0); in ds2781_read8()
80 static int ds2781_read16(struct ds2781_device_info *dev_info, s16 *val, in ds2781_read16() argument
86 ret = ds2781_battery_io(dev_info, raw, addr, sizeof(raw), 0); in ds2781_read16()
95 static inline int ds2781_read_block(struct ds2781_device_info *dev_info, in ds2781_read_block() argument
98 return ds2781_battery_io(dev_info, val, addr, count, 0); in ds2781_read_block()
101 static inline int ds2781_write(struct ds2781_device_info *dev_info, u8 *val, in ds2781_write() argument
104 return ds2781_battery_io(dev_info, val, addr, count, 1); in ds2781_write()
117 static int ds2781_save_eeprom(struct ds2781_device_info *dev_info, int reg) in ds2781_save_eeprom() argument
121 ret = ds2781_store_eeprom(dev_info->w1_dev, reg); in ds2781_save_eeprom()
125 ret = ds2781_recall_eeprom(dev_info->w1_dev, reg); in ds2781_save_eeprom()
133 static int ds2781_set_sense_register(struct ds2781_device_info *dev_info, in ds2781_set_sense_register() argument
138 ret = ds2781_write(dev_info, &conductance, in ds2781_set_sense_register()
143 return ds2781_save_eeprom(dev_info, DS2781_RSNSP); in ds2781_set_sense_register()
147 static int ds2781_get_rsgain_register(struct ds2781_device_info *dev_info, in ds2781_get_rsgain_register() argument
150 return ds2781_read16(dev_info, rsgain, DS2781_RSGAIN_MSB); in ds2781_get_rsgain_register()
154 static int ds2781_set_rsgain_register(struct ds2781_device_info *dev_info, in ds2781_set_rsgain_register() argument
160 ret = ds2781_write(dev_info, raw, in ds2781_set_rsgain_register()
165 return ds2781_save_eeprom(dev_info, DS2781_RSGAIN_MSB); in ds2781_set_rsgain_register()
168 static int ds2781_get_voltage(struct ds2781_device_info *dev_info, in ds2781_get_voltage() argument
175 ret = w1_ds2781_read(dev_info, val, DS2781_VOLT_MSB, 2 * sizeof(u8)); in ds2781_get_voltage()
197 static int ds2781_get_temperature(struct ds2781_device_info *dev_info, in ds2781_get_temperature() argument
204 ret = w1_ds2781_read(dev_info, val, DS2781_TEMP_MSB, 2 * sizeof(u8)); in ds2781_get_temperature()
224 static int ds2781_get_current(struct ds2781_device_info *dev_info, in ds2781_get_current() argument
235 ret = ds2781_read8(dev_info, &sense_res_raw, DS2781_RSNSP); in ds2781_get_current()
240 dev_err(dev_info->dev, "sense resistor value is 0\n"); in ds2781_get_current()
261 ret = ds2781_read16(dev_info, ¤t_raw, reg_msb); in ds2781_get_current()
269 static int ds2781_get_accumulated_current(struct ds2781_device_info *dev_info, in ds2781_get_accumulated_current() argument
280 ret = ds2781_read8(dev_info, &sense_res_raw, DS2781_RSNSP); in ds2781_get_accumulated_current()
285 dev_err(dev_info->dev, "sense resistor value is 0\n"); in ds2781_get_accumulated_current()
298 ret = ds2781_read16(dev_info, ¤t_raw, DS2781_ACR_MSB); in ds2781_get_accumulated_current()
306 static int ds2781_get_capacity(struct ds2781_device_info *dev_info, in ds2781_get_capacity() argument
312 ret = ds2781_read8(dev_info, &raw, DS2781_RARC); in ds2781_get_capacity()
320 static int ds2781_get_status(struct ds2781_device_info *dev_info, int *status) in ds2781_get_status() argument
324 ret = ds2781_get_current(dev_info, CURRENT_NOW, ¤t_uA); in ds2781_get_status()
328 ret = ds2781_get_capacity(dev_info, &capacity); in ds2781_get_status()
332 if (power_supply_am_i_supplied(dev_info->bat)) { in ds2781_get_status()
345 static int ds2781_get_charge_now(struct ds2781_device_info *dev_info, in ds2781_get_charge_now() argument
359 ret = ds2781_read16(dev_info, &charge_raw, DS2781_RAAC_MSB); in ds2781_get_charge_now()
367 static int ds2781_get_control_register(struct ds2781_device_info *dev_info, in ds2781_get_control_register() argument
370 return ds2781_read8(dev_info, control_reg, DS2781_CONTROL); in ds2781_get_control_register()
373 static int ds2781_set_control_register(struct ds2781_device_info *dev_info, in ds2781_set_control_register() argument
378 ret = ds2781_write(dev_info, &control_reg, in ds2781_set_control_register()
383 return ds2781_save_eeprom(dev_info, DS2781_CONTROL); in ds2781_set_control_register()
391 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_battery_get_property() local
395 ret = ds2781_get_voltage(dev_info, &val->intval); in ds2781_battery_get_property()
399 ret = ds2781_get_temperature(dev_info, &val->intval); in ds2781_battery_get_property()
411 ret = ds2781_get_current(dev_info, CURRENT_NOW, &val->intval); in ds2781_battery_get_property()
415 ret = ds2781_get_current(dev_info, CURRENT_AVG, &val->intval); in ds2781_battery_get_property()
419 ret = ds2781_get_status(dev_info, &val->intval); in ds2781_battery_get_property()
423 ret = ds2781_get_capacity(dev_info, &val->intval); in ds2781_battery_get_property()
427 ret = ds2781_get_accumulated_current(dev_info, &val->intval); in ds2781_battery_get_property()
431 ret = ds2781_get_charge_now(dev_info, &val->intval); in ds2781_battery_get_property()
461 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_get_pmod_enabled() local
464 ret = ds2781_get_control_register(dev_info, &control_reg); in ds2781_get_pmod_enabled()
480 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_set_pmod_enabled() local
483 ret = ds2781_get_control_register(dev_info, &control_reg); in ds2781_set_pmod_enabled()
492 dev_err(dev_info->dev, "Invalid pmod setting (0 or 1)\n"); in ds2781_set_pmod_enabled()
501 ret = ds2781_set_control_register(dev_info, control_reg); in ds2781_set_pmod_enabled()
515 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_get_sense_resistor_value() local
517 ret = ds2781_read8(dev_info, &sense_resistor, DS2781_RSNSP); in ds2781_get_sense_resistor_value()
533 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_set_sense_resistor_value() local
539 ret = ds2781_set_sense_register(dev_info, new_setting); in ds2781_set_sense_resistor_value()
553 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_get_rsgain_setting() local
555 ret = ds2781_get_rsgain_register(dev_info, &rsgain); in ds2781_get_rsgain_setting()
570 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_set_rsgain_setting() local
578 dev_err(dev_info->dev, "Invalid rsgain setting (0 - 1999)\n"); in ds2781_set_rsgain_setting()
582 ret = ds2781_set_rsgain_register(dev_info, new_setting); in ds2781_set_rsgain_setting()
596 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_get_pio_pin() local
598 ret = ds2781_read8(dev_info, &sfr, DS2781_SFR); in ds2781_get_pio_pin()
614 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_set_pio_pin() local
621 dev_err(dev_info->dev, "Invalid pio_pin setting (0 or 1)\n"); in ds2781_set_pio_pin()
625 ret = ds2781_write(dev_info, &new_setting, in ds2781_set_pio_pin()
640 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_read_param_eeprom_bin() local
642 return ds2781_read_block(dev_info, buf, in ds2781_read_param_eeprom_bin()
653 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_write_param_eeprom_bin() local
656 ret = ds2781_write(dev_info, buf, in ds2781_write_param_eeprom_bin()
661 ret = ds2781_save_eeprom(dev_info, DS2781_EEPROM_BLOCK1_START); in ds2781_write_param_eeprom_bin()
685 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_read_user_eeprom_bin() local
687 return ds2781_read_block(dev_info, buf, in ds2781_read_user_eeprom_bin()
699 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy); in ds2781_write_user_eeprom_bin() local
702 ret = ds2781_write(dev_info, buf, in ds2781_write_user_eeprom_bin()
707 ret = ds2781_save_eeprom(dev_info, DS2781_EEPROM_BLOCK0_START); in ds2781_write_user_eeprom_bin()
750 struct ds2781_device_info *dev_info; in ds2781_battery_probe() local
752 dev_info = devm_kzalloc(&pdev->dev, sizeof(*dev_info), GFP_KERNEL); in ds2781_battery_probe()
753 if (!dev_info) in ds2781_battery_probe()
756 platform_set_drvdata(pdev, dev_info); in ds2781_battery_probe()
758 dev_info->dev = &pdev->dev; in ds2781_battery_probe()
759 dev_info->w1_dev = pdev->dev.parent; in ds2781_battery_probe()
760 dev_info->bat_desc.name = dev_name(&pdev->dev); in ds2781_battery_probe()
761 dev_info->bat_desc.type = POWER_SUPPLY_TYPE_BATTERY; in ds2781_battery_probe()
762 dev_info->bat_desc.properties = ds2781_battery_props; in ds2781_battery_probe()
763 dev_info->bat_desc.num_properties = ARRAY_SIZE(ds2781_battery_props); in ds2781_battery_probe()
764 dev_info->bat_desc.get_property = ds2781_battery_get_property; in ds2781_battery_probe()
766 psy_cfg.drv_data = dev_info; in ds2781_battery_probe()
768 dev_info->bat = power_supply_register(&pdev->dev, &dev_info->bat_desc, in ds2781_battery_probe()
770 if (IS_ERR(dev_info->bat)) { in ds2781_battery_probe()
771 dev_err(dev_info->dev, "failed to register battery\n"); in ds2781_battery_probe()
772 ret = PTR_ERR(dev_info->bat); in ds2781_battery_probe()
776 ret = sysfs_create_group(&dev_info->bat->dev.kobj, &ds2781_attr_group); in ds2781_battery_probe()
778 dev_err(dev_info->dev, "failed to create sysfs group\n"); in ds2781_battery_probe()
782 ret = sysfs_create_bin_file(&dev_info->bat->dev.kobj, in ds2781_battery_probe()
785 dev_err(dev_info->dev, in ds2781_battery_probe()
790 ret = sysfs_create_bin_file(&dev_info->bat->dev.kobj, in ds2781_battery_probe()
793 dev_err(dev_info->dev, in ds2781_battery_probe()
801 sysfs_remove_bin_file(&dev_info->bat->dev.kobj, in ds2781_battery_probe()
804 sysfs_remove_group(&dev_info->bat->dev.kobj, &ds2781_attr_group); in ds2781_battery_probe()
806 power_supply_unregister(dev_info->bat); in ds2781_battery_probe()
813 struct ds2781_device_info *dev_info = platform_get_drvdata(pdev); in ds2781_battery_remove() local
819 sysfs_remove_group(&dev_info->bat->dev.kobj, &ds2781_attr_group); in ds2781_battery_remove()
821 power_supply_unregister(dev_info->bat); in ds2781_battery_remove()