diff options
Diffstat (limited to 'drivers/w1')
-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__ */ |