Lines Matching refs:dev_info

64 static inline int ds2780_battery_io(struct ds2780_device_info *dev_info,
67 if (dev_info->mutex_holder == current)
68 return w1_ds2780_io_nolock(dev_info->w1_dev, buf, addr, count, io);
70 return w1_ds2780_io(dev_info->w1_dev, buf, addr, count, io);
73 static inline int ds2780_read8(struct ds2780_device_info *dev_info, u8 *val,
76 return ds2780_battery_io(dev_info, val, addr, sizeof(u8), 0);
79 static int ds2780_read16(struct ds2780_device_info *dev_info, s16 *val,
85 ret = ds2780_battery_io(dev_info, raw, addr, sizeof(raw), 0);
94 static inline int ds2780_read_block(struct ds2780_device_info *dev_info,
97 return ds2780_battery_io(dev_info, val, addr, count, 0);
100 static inline int ds2780_write(struct ds2780_device_info *dev_info, u8 *val,
103 return ds2780_battery_io(dev_info, val, addr, count, 1);
116 static int ds2780_save_eeprom(struct ds2780_device_info *dev_info, int reg)
120 ret = ds2780_store_eeprom(dev_info->w1_dev, reg);
124 ret = ds2780_recall_eeprom(dev_info->w1_dev, reg);
132 static int ds2780_set_sense_register(struct ds2780_device_info *dev_info,
137 ret = ds2780_write(dev_info, &conductance,
142 return ds2780_save_eeprom(dev_info, DS2780_RSNSP_REG);
146 static int ds2780_get_rsgain_register(struct ds2780_device_info *dev_info,
149 return ds2780_read16(dev_info, rsgain, DS2780_RSGAIN_MSB_REG);
153 static int ds2780_set_rsgain_register(struct ds2780_device_info *dev_info,
159 ret = ds2780_write(dev_info, raw,
164 return ds2780_save_eeprom(dev_info, DS2780_RSGAIN_MSB_REG);
167 static int ds2780_get_voltage(struct ds2780_device_info *dev_info,
182 ret = ds2780_read16(dev_info, &voltage_raw,
195 static int ds2780_get_temperature(struct ds2780_device_info *dev_info,
211 ret = ds2780_read16(dev_info, &temperature_raw,
226 static int ds2780_get_current(struct ds2780_device_info *dev_info,
237 ret = ds2780_read8(dev_info, &sense_res_raw, DS2780_RSNSP_REG);
242 dev_err(dev_info->dev, "sense resistor value is 0\n");
263 ret = ds2780_read16(dev_info, &current_raw, reg_msb);
271 static int ds2780_get_accumulated_current(struct ds2780_device_info *dev_info,
282 ret = ds2780_read8(dev_info, &sense_res_raw, DS2780_RSNSP_REG);
287 dev_err(dev_info->dev, "sense resistor value is 0\n");
300 ret = ds2780_read16(dev_info, &current_raw, DS2780_ACR_MSB_REG);
308 static int ds2780_get_capacity(struct ds2780_device_info *dev_info,
314 ret = ds2780_read8(dev_info, &raw, DS2780_RARC_REG);
322 static int ds2780_get_status(struct ds2780_device_info *dev_info, int *status)
326 ret = ds2780_get_current(dev_info, CURRENT_NOW, &current_uA);
330 ret = ds2780_get_capacity(dev_info, &capacity);
346 static int ds2780_get_charge_now(struct ds2780_device_info *dev_info,
360 ret = ds2780_read16(dev_info, &charge_raw, DS2780_RAAC_MSB_REG);
368 static int ds2780_get_control_register(struct ds2780_device_info *dev_info,
371 return ds2780_read8(dev_info, control_reg, DS2780_CONTROL_REG);
374 static int ds2780_set_control_register(struct ds2780_device_info *dev_info,
379 ret = ds2780_write(dev_info, &control_reg,
384 return ds2780_save_eeprom(dev_info, DS2780_CONTROL_REG);
392 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
396 ret = ds2780_get_voltage(dev_info, &val->intval);
400 ret = ds2780_get_temperature(dev_info, &val->intval);
412 ret = ds2780_get_current(dev_info, CURRENT_NOW, &val->intval);
416 ret = ds2780_get_current(dev_info, CURRENT_AVG, &val->intval);
420 ret = ds2780_get_status(dev_info, &val->intval);
424 ret = ds2780_get_capacity(dev_info, &val->intval);
428 ret = ds2780_get_accumulated_current(dev_info, &val->intval);
432 ret = ds2780_get_charge_now(dev_info, &val->intval);
462 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
465 ret = ds2780_get_control_register(dev_info, &control_reg);
481 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
484 ret = ds2780_get_control_register(dev_info, &control_reg);
493 dev_err(dev_info->dev, "Invalid pmod setting (0 or 1)\n");
502 ret = ds2780_set_control_register(dev_info, control_reg);
516 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
518 ret = ds2780_read8(dev_info, &sense_resistor, DS2780_RSNSP_REG);
534 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
540 ret = ds2780_set_sense_register(dev_info, new_setting);
554 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
556 ret = ds2780_get_rsgain_register(dev_info, &rsgain);
571 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
579 dev_err(dev_info->dev, "Invalid rsgain setting (0 - 1999)\n");
583 ret = ds2780_set_rsgain_register(dev_info, new_setting);
597 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
599 ret = ds2780_read8(dev_info, &sfr, DS2780_SFR_REG);
615 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
622 dev_err(dev_info->dev, "Invalid pio_pin setting (0 or 1)\n");
626 ret = ds2780_write(dev_info, &new_setting,
641 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
647 return ds2780_read_block(dev_info, buf,
658 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
665 ret = ds2780_write(dev_info, buf,
670 ret = ds2780_save_eeprom(dev_info, DS2780_EEPROM_BLOCK1_START);
694 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
700 return ds2780_read_block(dev_info, buf,
711 struct ds2780_device_info *dev_info = to_ds2780_device_info(psy);
718 ret = ds2780_write(dev_info, buf,
723 ret = ds2780_save_eeprom(dev_info, DS2780_EEPROM_BLOCK0_START);
765 struct ds2780_device_info *dev_info;
767 dev_info = kzalloc(sizeof(*dev_info), GFP_KERNEL);
768 if (!dev_info) {
773 platform_set_drvdata(pdev, dev_info);
775 dev_info->dev = &pdev->dev;
776 dev_info->w1_dev = pdev->dev.parent;
777 dev_info->bat.name = dev_name(&pdev->dev);
778 dev_info->bat.type = POWER_SUPPLY_TYPE_BATTERY;
779 dev_info->bat.properties = ds2780_battery_props;
780 dev_info->bat.num_properties = ARRAY_SIZE(ds2780_battery_props);
781 dev_info->bat.get_property = ds2780_battery_get_property;
782 dev_info->mutex_holder = current;
784 ret = power_supply_register(&pdev->dev, &dev_info->bat);
786 dev_err(dev_info->dev, "failed to register battery\n");
790 ret = sysfs_create_group(&dev_info->bat.dev->kobj, &ds2780_attr_group);
792 dev_err(dev_info->dev, "failed to create sysfs group\n");
796 ret = sysfs_create_bin_file(&dev_info->bat.dev->kobj,
799 dev_err(dev_info->dev,
804 ret = sysfs_create_bin_file(&dev_info->bat.dev->kobj,
807 dev_err(dev_info->dev,
812 dev_info->mutex_holder = NULL;
817 sysfs_remove_bin_file(&dev_info->bat.dev->kobj,
820 sysfs_remove_group(&dev_info->bat.dev->kobj, &ds2780_attr_group);
822 power_supply_unregister(&dev_info->bat);
824 kfree(dev_info);
831 struct ds2780_device_info *dev_info = platform_get_drvdata(pdev);
833 dev_info->mutex_holder = current;
836 sysfs_remove_group(&dev_info->bat.dev->kobj, &ds2780_attr_group);
838 power_supply_unregister(&dev_info->bat);
840 kfree(dev_info);