lkml.org 
[lkml]   [2009]   [Apr]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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


    \
     
     \ /
      Last update: 2009-04-28 17:05    [W:0.039 / U:0.188 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site