diff options
| -rw-r--r-- | drivers/w1/slaves/w1_ds2760.c | 30 | ||||
| -rw-r--r-- | drivers/w1/slaves/w1_ds2760.h | 2 |
2 files changed, 32 insertions, 0 deletions
diff --git a/drivers/w1/slaves/w1_ds2760.c b/drivers/w1/slaves/w1_ds2760.c index 1f09d4e4144c..59f708efe25f 100644 --- a/drivers/w1/slaves/w1_ds2760.c +++ b/drivers/w1/slaves/w1_ds2760.c | |||
| @@ -68,6 +68,34 @@ int w1_ds2760_write(struct device *dev, char *buf, int addr, size_t count) | |||
| 68 | return w1_ds2760_io(dev, buf, addr, count, 1); | 68 | return w1_ds2760_io(dev, buf, addr, count, 1); |
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | static int w1_ds2760_eeprom_cmd(struct device *dev, int addr, int cmd) | ||
| 72 | { | ||
| 73 | struct w1_slave *sl = container_of(dev, struct w1_slave, dev); | ||
| 74 | |||
| 75 | if (!dev) | ||
| 76 | return -EINVAL; | ||
| 77 | |||
| 78 | mutex_lock(&sl->master->mutex); | ||
| 79 | |||
| 80 | if (w1_reset_select_slave(sl) == 0) { | ||
| 81 | w1_write_8(sl->master, cmd); | ||
| 82 | w1_write_8(sl->master, addr); | ||
| 83 | } | ||
| 84 | |||
| 85 | mutex_unlock(&sl->master->mutex); | ||
| 86 | return 0; | ||
| 87 | } | ||
| 88 | |||
| 89 | int w1_ds2760_store_eeprom(struct device *dev, int addr) | ||
| 90 | { | ||
| 91 | return w1_ds2760_eeprom_cmd(dev, addr, W1_DS2760_COPY_DATA); | ||
| 92 | } | ||
| 93 | |||
| 94 | int w1_ds2760_recall_eeprom(struct device *dev, int addr) | ||
| 95 | { | ||
| 96 | return w1_ds2760_eeprom_cmd(dev, addr, W1_DS2760_RECALL_DATA); | ||
| 97 | } | ||
| 98 | |||
| 71 | static ssize_t w1_ds2760_read_bin(struct kobject *kobj, | 99 | static ssize_t w1_ds2760_read_bin(struct kobject *kobj, |
| 72 | struct bin_attribute *bin_attr, | 100 | struct bin_attribute *bin_attr, |
| 73 | char *buf, loff_t off, size_t count) | 101 | char *buf, loff_t off, size_t count) |
| @@ -200,6 +228,8 @@ static void __exit w1_ds2760_exit(void) | |||
| 200 | 228 | ||
| 201 | EXPORT_SYMBOL(w1_ds2760_read); | 229 | EXPORT_SYMBOL(w1_ds2760_read); |
| 202 | EXPORT_SYMBOL(w1_ds2760_write); | 230 | EXPORT_SYMBOL(w1_ds2760_write); |
| 231 | EXPORT_SYMBOL(w1_ds2760_store_eeprom); | ||
| 232 | EXPORT_SYMBOL(w1_ds2760_recall_eeprom); | ||
| 203 | 233 | ||
| 204 | module_init(w1_ds2760_init); | 234 | module_init(w1_ds2760_init); |
| 205 | module_exit(w1_ds2760_exit); | 235 | module_exit(w1_ds2760_exit); |
diff --git a/drivers/w1/slaves/w1_ds2760.h b/drivers/w1/slaves/w1_ds2760.h index f1302429cb02..ea39419172a6 100644 --- a/drivers/w1/slaves/w1_ds2760.h +++ b/drivers/w1/slaves/w1_ds2760.h | |||
| @@ -46,5 +46,7 @@ extern int w1_ds2760_read(struct device *dev, char *buf, int addr, | |||
| 46 | size_t count); | 46 | size_t count); |
| 47 | extern int w1_ds2760_write(struct device *dev, char *buf, int addr, | 47 | extern int w1_ds2760_write(struct device *dev, char *buf, int addr, |
| 48 | size_t count); | 48 | size_t count); |
| 49 | extern int w1_ds2760_store_eeprom(struct device *dev, int addr); | ||
| 50 | extern int w1_ds2760_recall_eeprom(struct device *dev, int addr); | ||
| 49 | 51 | ||
| 50 | #endif /* !__w1_ds2760_h__ */ | 52 | #endif /* !__w1_ds2760_h__ */ |
