Lines Matching refs:dev_info

61 static inline int ds2781_battery_io(struct ds2781_device_info *dev_info,
64 return w1_ds2781_io(dev_info->w1_dev, buf, addr, count, io);
67 static int w1_ds2781_read(struct ds2781_device_info *dev_info, char *buf,
70 return ds2781_battery_io(dev_info, buf, addr, count, 0);
73 static inline int ds2781_read8(struct ds2781_device_info *dev_info, u8 *val,
76 return ds2781_battery_io(dev_info, val, addr, sizeof(u8), 0);
79 static int ds2781_read16(struct ds2781_device_info *dev_info, s16 *val,
85 ret = ds2781_battery_io(dev_info, raw, addr, sizeof(raw), 0);
94 static inline int ds2781_read_block(struct ds2781_device_info *dev_info,
97 return ds2781_battery_io(dev_info, val, addr, count, 0);
100 static inline int ds2781_write(struct ds2781_device_info *dev_info, u8 *val,
103 return ds2781_battery_io(dev_info, val, addr, count, 1);
116 static int ds2781_save_eeprom(struct ds2781_device_info *dev_info, int reg)
120 ret = ds2781_store_eeprom(dev_info->w1_dev, reg);
124 ret = ds2781_recall_eeprom(dev_info->w1_dev, reg);
132 static int ds2781_set_sense_register(struct ds2781_device_info *dev_info,
137 ret = ds2781_write(dev_info, &conductance,
142 return ds2781_save_eeprom(dev_info, DS2781_RSNSP);
146 static int ds2781_get_rsgain_register(struct ds2781_device_info *dev_info,
149 return ds2781_read16(dev_info, rsgain, DS2781_RSGAIN_MSB);
153 static int ds2781_set_rsgain_register(struct ds2781_device_info *dev_info,
159 ret = ds2781_write(dev_info, raw,
164 return ds2781_save_eeprom(dev_info, DS2781_RSGAIN_MSB);
167 static int ds2781_get_voltage(struct ds2781_device_info *dev_info,
174 ret = w1_ds2781_read(dev_info, val, DS2781_VOLT_MSB, 2 * sizeof(u8));
196 static int ds2781_get_temperature(struct ds2781_device_info *dev_info,
203 ret = w1_ds2781_read(dev_info, val, DS2781_TEMP_MSB, 2 * sizeof(u8));
223 static int ds2781_get_current(struct ds2781_device_info *dev_info,
234 ret = ds2781_read8(dev_info, &sense_res_raw, DS2781_RSNSP);
239 dev_err(dev_info->dev, "sense resistor value is 0\n");
260 ret = ds2781_read16(dev_info, &current_raw, reg_msb);
268 static int ds2781_get_accumulated_current(struct ds2781_device_info *dev_info,
279 ret = ds2781_read8(dev_info, &sense_res_raw, DS2781_RSNSP);
284 dev_err(dev_info->dev, "sense resistor value is 0\n");
297 ret = ds2781_read16(dev_info, &current_raw, DS2781_ACR_MSB);
305 static int ds2781_get_capacity(struct ds2781_device_info *dev_info,
311 ret = ds2781_read8(dev_info, &raw, DS2781_RARC);
319 static int ds2781_get_status(struct ds2781_device_info *dev_info, int *status)
323 ret = ds2781_get_current(dev_info, CURRENT_NOW, &current_uA);
327 ret = ds2781_get_capacity(dev_info, &capacity);
331 if (power_supply_am_i_supplied(&dev_info->bat)) {
344 static int ds2781_get_charge_now(struct ds2781_device_info *dev_info,
358 ret = ds2781_read16(dev_info, &charge_raw, DS2781_RAAC_MSB);
366 static int ds2781_get_control_register(struct ds2781_device_info *dev_info,
369 return ds2781_read8(dev_info, control_reg, DS2781_CONTROL);
372 static int ds2781_set_control_register(struct ds2781_device_info *dev_info,
377 ret = ds2781_write(dev_info, &control_reg,
382 return ds2781_save_eeprom(dev_info, DS2781_CONTROL);
390 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
394 ret = ds2781_get_voltage(dev_info, &val->intval);
398 ret = ds2781_get_temperature(dev_info, &val->intval);
410 ret = ds2781_get_current(dev_info, CURRENT_NOW, &val->intval);
414 ret = ds2781_get_current(dev_info, CURRENT_AVG, &val->intval);
418 ret = ds2781_get_status(dev_info, &val->intval);
422 ret = ds2781_get_capacity(dev_info, &val->intval);
426 ret = ds2781_get_accumulated_current(dev_info, &val->intval);
430 ret = ds2781_get_charge_now(dev_info, &val->intval);
460 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
463 ret = ds2781_get_control_register(dev_info, &control_reg);
479 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
482 ret = ds2781_get_control_register(dev_info, &control_reg);
491 dev_err(dev_info->dev, "Invalid pmod setting (0 or 1)\n");
500 ret = ds2781_set_control_register(dev_info, control_reg);
514 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
516 ret = ds2781_read8(dev_info, &sense_resistor, DS2781_RSNSP);
532 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
538 ret = ds2781_set_sense_register(dev_info, new_setting);
552 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
554 ret = ds2781_get_rsgain_register(dev_info, &rsgain);
569 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
577 dev_err(dev_info->dev, "Invalid rsgain setting (0 - 1999)\n");
581 ret = ds2781_set_rsgain_register(dev_info, new_setting);
595 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
597 ret = ds2781_read8(dev_info, &sfr, DS2781_SFR);
613 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
620 dev_err(dev_info->dev, "Invalid pio_pin setting (0 or 1)\n");
624 ret = ds2781_write(dev_info, &new_setting,
639 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
643 return ds2781_read_block(dev_info, buf,
654 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
659 ret = ds2781_write(dev_info, buf,
664 ret = ds2781_save_eeprom(dev_info, DS2781_EEPROM_BLOCK1_START);
688 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
692 return ds2781_read_block(dev_info, buf,
704 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
709 ret = ds2781_write(dev_info, buf,
714 ret = ds2781_save_eeprom(dev_info, DS2781_EEPROM_BLOCK0_START);
756 struct ds2781_device_info *dev_info;
758 dev_info = devm_kzalloc(&pdev->dev, sizeof(*dev_info), GFP_KERNEL);
759 if (!dev_info)
762 platform_set_drvdata(pdev, dev_info);
764 dev_info->dev = &pdev->dev;
765 dev_info->w1_dev = pdev->dev.parent;
766 dev_info->bat.name = dev_name(&pdev->dev);
767 dev_info->bat.type = POWER_SUPPLY_TYPE_BATTERY;
768 dev_info->bat.properties = ds2781_battery_props;
769 dev_info->bat.num_properties = ARRAY_SIZE(ds2781_battery_props);
770 dev_info->bat.get_property = ds2781_battery_get_property;
772 ret = power_supply_register(&pdev->dev, &dev_info->bat);
774 dev_err(dev_info->dev, "failed to register battery\n");
778 ret = sysfs_create_group(&dev_info->bat.dev->kobj, &ds2781_attr_group);
780 dev_err(dev_info->dev, "failed to create sysfs group\n");
784 ret = sysfs_create_bin_file(&dev_info->bat.dev->kobj,
787 dev_err(dev_info->dev,
792 ret = sysfs_create_bin_file(&dev_info->bat.dev->kobj,
795 dev_err(dev_info->dev,
803 sysfs_remove_bin_file(&dev_info->bat.dev->kobj,
806 sysfs_remove_group(&dev_info->bat.dev->kobj, &ds2781_attr_group);
808 power_supply_unregister(&dev_info->bat);
815 struct ds2781_device_info *dev_info = platform_get_drvdata(pdev);
818 sysfs_remove_group(&dev_info->bat.dev->kobj, &ds2781_attr_group);
820 power_supply_unregister(&dev_info->bat);