Lines Matching refs:dev_info

53 static inline int ds2781_battery_io(struct ds2781_device_info *dev_info,
56 return w1_ds2781_io(dev_info->w1_dev, buf, addr, count, io);
59 static int w1_ds2781_read(struct ds2781_device_info *dev_info, char *buf,
62 return ds2781_battery_io(dev_info, buf, addr, count, 0);
65 static inline int ds2781_read8(struct ds2781_device_info *dev_info, u8 *val,
68 return ds2781_battery_io(dev_info, val, addr, sizeof(u8), 0);
71 static int ds2781_read16(struct ds2781_device_info *dev_info, s16 *val,
77 ret = ds2781_battery_io(dev_info, raw, addr, sizeof(raw), 0);
86 static inline int ds2781_read_block(struct ds2781_device_info *dev_info,
89 return ds2781_battery_io(dev_info, val, addr, count, 0);
92 static inline int ds2781_write(struct ds2781_device_info *dev_info, u8 *val,
95 return ds2781_battery_io(dev_info, val, addr, count, 1);
108 static int ds2781_save_eeprom(struct ds2781_device_info *dev_info, int reg)
112 ret = ds2781_store_eeprom(dev_info->w1_dev, reg);
116 ret = ds2781_recall_eeprom(dev_info->w1_dev, reg);
124 static int ds2781_set_sense_register(struct ds2781_device_info *dev_info,
129 ret = ds2781_write(dev_info, &conductance,
134 return ds2781_save_eeprom(dev_info, DS2781_RSNSP);
138 static int ds2781_get_rsgain_register(struct ds2781_device_info *dev_info,
141 return ds2781_read16(dev_info, rsgain, DS2781_RSGAIN_MSB);
145 static int ds2781_set_rsgain_register(struct ds2781_device_info *dev_info,
151 ret = ds2781_write(dev_info, raw,
156 return ds2781_save_eeprom(dev_info, DS2781_RSGAIN_MSB);
159 static int ds2781_get_voltage(struct ds2781_device_info *dev_info,
166 ret = w1_ds2781_read(dev_info, val, DS2781_VOLT_MSB, 2 * sizeof(u8));
188 static int ds2781_get_temperature(struct ds2781_device_info *dev_info,
195 ret = w1_ds2781_read(dev_info, val, DS2781_TEMP_MSB, 2 * sizeof(u8));
215 static int ds2781_get_current(struct ds2781_device_info *dev_info,
226 ret = ds2781_read8(dev_info, &sense_res_raw, DS2781_RSNSP);
231 dev_err(dev_info->dev, "sense resistor value is 0\n");
252 ret = ds2781_read16(dev_info, &current_raw, reg_msb);
260 static int ds2781_get_accumulated_current(struct ds2781_device_info *dev_info,
271 ret = ds2781_read8(dev_info, &sense_res_raw, DS2781_RSNSP);
276 dev_err(dev_info->dev, "sense resistor value is 0\n");
289 ret = ds2781_read16(dev_info, &current_raw, DS2781_ACR_MSB);
297 static int ds2781_get_capacity(struct ds2781_device_info *dev_info,
303 ret = ds2781_read8(dev_info, &raw, DS2781_RARC);
311 static int ds2781_get_status(struct ds2781_device_info *dev_info, int *status)
315 ret = ds2781_get_current(dev_info, CURRENT_NOW, &current_uA);
319 ret = ds2781_get_capacity(dev_info, &capacity);
323 if (power_supply_am_i_supplied(dev_info->bat)) {
336 static int ds2781_get_charge_now(struct ds2781_device_info *dev_info,
350 ret = ds2781_read16(dev_info, &charge_raw, DS2781_RAAC_MSB);
358 static int ds2781_get_control_register(struct ds2781_device_info *dev_info,
361 return ds2781_read8(dev_info, control_reg, DS2781_CONTROL);
364 static int ds2781_set_control_register(struct ds2781_device_info *dev_info,
369 ret = ds2781_write(dev_info, &control_reg,
374 return ds2781_save_eeprom(dev_info, DS2781_CONTROL);
382 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
386 ret = ds2781_get_voltage(dev_info, &val->intval);
390 ret = ds2781_get_temperature(dev_info, &val->intval);
402 ret = ds2781_get_current(dev_info, CURRENT_NOW, &val->intval);
406 ret = ds2781_get_current(dev_info, CURRENT_AVG, &val->intval);
410 ret = ds2781_get_status(dev_info, &val->intval);
414 ret = ds2781_get_capacity(dev_info, &val->intval);
418 ret = ds2781_get_accumulated_current(dev_info, &val->intval);
422 ret = ds2781_get_charge_now(dev_info, &val->intval);
452 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
455 ret = ds2781_get_control_register(dev_info, &control_reg);
471 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
474 ret = ds2781_get_control_register(dev_info, &control_reg);
483 dev_err(dev_info->dev, "Invalid pmod setting (0 or 1)\n");
492 ret = ds2781_set_control_register(dev_info, control_reg);
506 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
508 ret = ds2781_read8(dev_info, &sense_resistor, DS2781_RSNSP);
524 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
530 ret = ds2781_set_sense_register(dev_info, new_setting);
544 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
546 ret = ds2781_get_rsgain_register(dev_info, &rsgain);
561 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
569 dev_err(dev_info->dev, "Invalid rsgain setting (0 - 1999)\n");
573 ret = ds2781_set_rsgain_register(dev_info, new_setting);
587 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
589 ret = ds2781_read8(dev_info, &sfr, DS2781_SFR);
605 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
612 dev_err(dev_info->dev, "Invalid pio_pin setting (0 or 1)\n");
616 ret = ds2781_write(dev_info, &new_setting,
631 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
633 return ds2781_read_block(dev_info, buf,
644 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
647 ret = ds2781_write(dev_info, buf,
652 ret = ds2781_save_eeprom(dev_info, DS2781_EEPROM_BLOCK1_START);
676 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
678 return ds2781_read_block(dev_info, buf,
690 struct ds2781_device_info *dev_info = to_ds2781_device_info(psy);
693 ret = ds2781_write(dev_info, buf,
698 ret = ds2781_save_eeprom(dev_info, DS2781_EEPROM_BLOCK0_START);
752 struct ds2781_device_info *dev_info;
754 dev_info = devm_kzalloc(&pdev->dev, sizeof(*dev_info), GFP_KERNEL);
755 if (!dev_info)
758 platform_set_drvdata(pdev, dev_info);
760 dev_info->dev = &pdev->dev;
761 dev_info->w1_dev = pdev->dev.parent;
762 dev_info->bat_desc.name = dev_name(&pdev->dev);
763 dev_info->bat_desc.type = POWER_SUPPLY_TYPE_BATTERY;
764 dev_info->bat_desc.properties = ds2781_battery_props;
765 dev_info->bat_desc.num_properties = ARRAY_SIZE(ds2781_battery_props);
766 dev_info->bat_desc.get_property = ds2781_battery_get_property;
768 psy_cfg.drv_data = dev_info;
771 dev_info->bat = devm_power_supply_register(&pdev->dev,
772 &dev_info->bat_desc,
774 if (IS_ERR(dev_info->bat)) {
775 dev_err(dev_info->dev, "failed to register battery\n");
776 return PTR_ERR(dev_info->bat);