You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge git://git.infradead.org/battery-2.6
* git://git.infradead.org/battery-2.6: da9030_battery: Fix race between event handler and monitor Add MAX17040 Fuel Gauge driver w1: ds2760_battery: add support for sleep mode feature w1: ds2760: add support for EEPROM read and write ds2760_battery: cleanups in ds2760_battery_probe()
This commit is contained in:
@@ -68,6 +68,34 @@ int w1_ds2760_write(struct device *dev, char *buf, int addr, size_t count)
|
||||
return w1_ds2760_io(dev, buf, addr, count, 1);
|
||||
}
|
||||
|
||||
static int w1_ds2760_eeprom_cmd(struct device *dev, int addr, int cmd)
|
||||
{
|
||||
struct w1_slave *sl = container_of(dev, struct w1_slave, dev);
|
||||
|
||||
if (!dev)
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&sl->master->mutex);
|
||||
|
||||
if (w1_reset_select_slave(sl) == 0) {
|
||||
w1_write_8(sl->master, cmd);
|
||||
w1_write_8(sl->master, addr);
|
||||
}
|
||||
|
||||
mutex_unlock(&sl->master->mutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int w1_ds2760_store_eeprom(struct device *dev, int addr)
|
||||
{
|
||||
return w1_ds2760_eeprom_cmd(dev, addr, W1_DS2760_COPY_DATA);
|
||||
}
|
||||
|
||||
int w1_ds2760_recall_eeprom(struct device *dev, int addr)
|
||||
{
|
||||
return w1_ds2760_eeprom_cmd(dev, addr, W1_DS2760_RECALL_DATA);
|
||||
}
|
||||
|
||||
static ssize_t w1_ds2760_read_bin(struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr,
|
||||
char *buf, loff_t off, size_t count)
|
||||
@@ -200,6 +228,8 @@ static void __exit w1_ds2760_exit(void)
|
||||
|
||||
EXPORT_SYMBOL(w1_ds2760_read);
|
||||
EXPORT_SYMBOL(w1_ds2760_write);
|
||||
EXPORT_SYMBOL(w1_ds2760_store_eeprom);
|
||||
EXPORT_SYMBOL(w1_ds2760_recall_eeprom);
|
||||
|
||||
module_init(w1_ds2760_init);
|
||||
module_exit(w1_ds2760_exit);
|
||||
|
||||
@@ -25,6 +25,10 @@
|
||||
|
||||
#define DS2760_PROTECTION_REG 0x00
|
||||
#define DS2760_STATUS_REG 0x01
|
||||
#define DS2760_STATUS_IE (1 << 2)
|
||||
#define DS2760_STATUS_SWEN (1 << 3)
|
||||
#define DS2760_STATUS_RNAOP (1 << 4)
|
||||
#define DS2760_STATUS_PMOD (1 << 5)
|
||||
#define DS2760_EEPROM_REG 0x07
|
||||
#define DS2760_SPECIAL_FEATURE_REG 0x08
|
||||
#define DS2760_VOLTAGE_MSB 0x0c
|
||||
@@ -38,6 +42,7 @@
|
||||
#define DS2760_EEPROM_BLOCK0 0x20
|
||||
#define DS2760_ACTIVE_FULL 0x20
|
||||
#define DS2760_EEPROM_BLOCK1 0x30
|
||||
#define DS2760_STATUS_WRITE_REG 0x31
|
||||
#define DS2760_RATED_CAPACITY 0x32
|
||||
#define DS2760_CURRENT_OFFSET_BIAS 0x33
|
||||
#define DS2760_ACTIVE_EMPTY 0x3b
|
||||
@@ -46,5 +51,7 @@ extern int w1_ds2760_read(struct device *dev, char *buf, int addr,
|
||||
size_t count);
|
||||
extern int w1_ds2760_write(struct device *dev, char *buf, int addr,
|
||||
size_t count);
|
||||
extern int w1_ds2760_store_eeprom(struct device *dev, int addr);
|
||||
extern int w1_ds2760_recall_eeprom(struct device *dev, int addr);
|
||||
|
||||
#endif /* !__w1_ds2760_h__ */
|
||||
|
||||
Reference in New Issue
Block a user