Messages in this thread |  | | | Date | Tue, 28 Apr 2009 19:01:09 +0400 | | From | Anton Vorontsov <> | | Subject | Re: [PATCH 2/3] w1: ds2760: add support for EEPROM read and write |
| |
On Tue, Apr 28, 2009 at 10:55:01AM +0200, Daniel Mack wrote: > In order to modify the DS2762's status registers and to add support for > sleep mode, there is need for functions to write the internal EEPROM. > > Cc: Szabolcs Gyurko <szabolcs.gyurko@tlt.hu> > Cc: Matt Reimer <mreimer@vpop.net> > Cc: Anton Vorontsov <cbou@mail.ru> > Signed-off-by: Daniel Mack <daniel@caiaq.de> > ---
Evgeniy, don't mind if I take it via battery-2.6.git tree?
> drivers/w1/slaves/w1_ds2760.c | 28 ++++++++++++++++++++++++++++ > drivers/w1/slaves/w1_ds2760.h | 2 ++ > 2 files changed, 30 insertions(+), 0 deletions(-) > > diff --git a/drivers/w1/slaves/w1_ds2760.c b/drivers/w1/slaves/w1_ds2760.c > index 1f09d4e..5ad7a0b 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) > 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) > diff --git a/drivers/w1/slaves/w1_ds2760.h b/drivers/w1/slaves/w1_ds2760.h > index f130242..ea39419 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, > 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__ */ > -- > 1.6.2.1 >
-- Anton Vorontsov email: cbouatmailru@gmail.com irc://irc.freenode.net/bd2
|  |