26 Aug, 2011

1 commit


27 May, 2011

2 commits

  • Reorganize so the netlink connector one wire search command will update
    the kernel list of detected slave devices. Otherwise, a newly detected
    device is unusable because unless it's in the kernel list of known devices
    any commands will result in ENODEV status.

    Signed-off-by: David Fries
    Cc: Evgeniy Polyakov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Fries
     
  • The first patch adds generic functionnality to w1_io for Resume Command
    [A5h] lots of slaves support. I found it useful for multi-commands/reset
    workflows with the same slave on a multi-slave bus.

    This DS2408 w1 slave driver is not complete for all the features of the
    chip, but its sufficient if you use it as a simple IO expander. Enjoy!

    The ds1wm had Kconfig dependencies towards ARM && HAVE_CLK. I took them
    out since I was using the ds1wm on an x86_64 platform (ds1wm in a FPGA
    through pcie) and found them irrelevant.

    The clock freq/divisors at the top of ds1wm.c did not have the MSB set to
    1. This bit is CLK_EN which turns the whole prescaler and dividers on.
    The driver never mentionned this bit either, so I just included this bit
    right in the table entries. I also took the liberty to add a couple of
    entries to the table. The spec doesn't explicitely mentions these
    possibilities but the description and examination of the core shows the
    prescalers & dividers can be used for more than the table explicitely
    shows. The table I enlarged still doesn't cover all possibilities, but
    it's a good start.

    I also made a few tweaks to a couple of the read and write algorithms
    which made sense while I had my head very deep in the ds1wm documentation.
    We stressed it a lot with 10+ slaves on the bus, many ds2408, ds2431 and
    ds2433 at the same time doing extensive interaction. It proved quite
    stable in our production environment.

    This patch:

    Add generic functionnality to w1_io for Resume Command [A5h] lots of
    slaves support.

    Signed-off-by: Jean-François Dagenais
    Cc: Evgeniy Polyakov
    Cc: Szabolcs Gyurko
    Cc: Matt Reimer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean-François Dagenais
     

09 Jan, 2009

1 commit


13 Nov, 2008

1 commit

  • Export the w1_read_8 function for use of drivers. The OMAP HDQ
    driver(drivers/w1/masters/omap_hdq.c) uses this function.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Madhusudhan Chikkature
    Acked-by: Evgeniy Polyakov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Madhusudhan Chikkature
     

17 Oct, 2008

4 commits

  • Fixed data reading bug by replacing binary attribute with device one.

    Switching the sysfs read from bin_attribute to device_attribute. The data
    is far under PAGE_SIZE so the binary interface isn't required. As the
    device_attribute interface will make one call to w1_therm_read per file
    open and buffer, the result is, the following problems go away.

    buffer overflow:
    Execute a short read on w1_slave and w1_therm_read_bin would still
    return the full string size worth of data clobbering the user space
    buffer when it returned. Switching to device_attribute avoids the
    buffer overflow problems. With the snprintf formatted output dealing
    with short reads without doing a conversion per read would have
    been difficult.
    bad behavior:
    `cat w1_slave` would cause two temperature conversions to take place.
    Previously the code assumed W1_SLAVE_DATA_SIZE would be returned with
    each read. It would not return 0 unless the offset was less
    than W1_SLAVE_DATA_SIZE. The result was the first read did a
    temperature conversion, filled the buffer and returned, the
    offset in the second read would be less than
    W1_SLAVE_DATA_SIZE and also fill the buffer and return, the
    third read would finnally have a big enough offset to return 0
    and cause cat to stop. Now w1_therm_read will be called at
    most once per open.

    Signed-off-by: David Fries
    Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Fries
     
  • Add a strong pullup option to the w1 system. This supplies extra power
    for parasite powered devices. There is a w1_master_pullup sysfs entry and
    enable_pullup module parameter to enable or disable the strong pullup.

    The one wire bus requires at a minimum one wire and ground. The common
    wire is used for sending and receiving data as well as supplying power to
    devices that are parasite powered of which temperature sensors can be one
    example. The bus must be idle and left high while a temperature
    conversion is in progress, in addition the normal pullup resister on
    larger networks or even higher temperatures might not supply enough power.
    The pullup resister can't provide too much pullup current, because
    devices need to pull the bus down to write a value. This enables the
    strong pullup for supported hardware, which can supply more current when
    requested. Unsupported hardware will just delay with the bus high.

    The hardware USB 2490 one wire bus master has a bit on some commands which
    will enable the strong pullup as soon as the command finishes executing.
    To use strong pullup, call the new w1_next_pullup function to register the
    duration. The next write command will call set_pullup before sending the
    data, and reset the duration to zero once it returns.

    Switched from simple_strtol to strict_strtol.

    Signed-off-by: David Fries
    Cc: Evgeniy Polyakov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Fries
     
  • The w1_process thread's sleeping and termination has been modified.
    msleep_interruptible was replaced by schedule_timeout and schedule to
    allow for kthread_stop and wake_up_process to interrupt the sleep and the
    unbounded sleeping when a bus search is disabled. The W1_MASTER_NEED_EXIT
    and flags variable were removed as they were redundant with
    kthread_should_stop and kthread_stop. If w1_process is sleeping,
    requesting a search will immediately wake it up rather than waiting for
    the end of msleep_interruptible previously.

    Signed-off-by: David Fries
    Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Fries
     
  • w1_control_thread was removed which would wake up every second and process
    newly registered family codes and complete some final cleanup for a
    removed master. Those routines were moved to the threads that were
    previously requesting those operations. A new function
    w1_reconnect_slaves takes care of reconnecting existing slave devices when
    a new family code is registered or removed. The removal case was missing
    and would cause a deadlock waiting for the family code reference count to
    decrease, which will now happen. A problem with registering a family code
    was fixed. A slave device would be unattached if it wasn't yet claimed,
    then attached at the end of the list, two unclaimed slaves would cause an
    infinite loop.

    The struct w1_bus_master.search now takes a pointer to the struct
    w1_master device to avoid searching for it, which would have caused a
    lock ordering deadlock with the removal of w1_control_thread.

    Signed-off-by: David Fries
    Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Fries
     

23 Jun, 2006

6 commits

  • From: Adrian Bunk

    drivers/w1/w1.c:197: error: static declaration of 'w1_bus_type' follows non-static declaration
    drivers/w1/w1.h:217: error: previous declaration of 'w1_bus_type' was here

    Signed-off-by: Adrian Bunk
    Cc: Evgeniy Polyakov
    Signed-off-by: Andrew Morton
    Signed-off-by: Greg Kroah-Hartman

    Adrian Bunk
     
  • This patch contains the following possible cleanups:
    - the following file did't #include the header with the prototypes for
    it's global functions:
    - w1_int.c
    - #if 0 the following unused global function:
    - w1_family.c: w1_family_get()
    - make the following needlessly global functions static:
    - w1_family.c: __w1_family_put()
    - w1_io.c: w1_delay()
    - w1_io.c: w1_touch_bit()
    - w1_io.c: w1_read_8()
    - remove the following unused EXPORT_SYMBOL's:
    - w1_family.c: w1_family_put
    - w1_family.c: w1_family_registered

    Signed-off-by: Adrian Bunk
    Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Greg Kroah-Hartman

    Evgeniy Polyakov
     
  • Nice cleanup spotted by Adrian Bunk, which was lost due to moving to the
    completely new functionality.

    Shame-shame-shame on me.

    Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Greg Kroah-Hartman

    Evgeniy Polyakov
     
  • Use mutexes instead of semaphores.
    Patch tested on x86_64 and i386 with test bus master driver.

    Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Greg Kroah-Hartman

    Evgeniy Polyakov
     
  • There are three types of messages between w1 core and userspace:
    1. Events. They are generated each time new master or slave device found
    either due to automatic or requested search.
    2. Userspace commands. Includes read/write and search/alarm search comamnds.
    3. Replies to userspace commands.

    From: Evgeniy Polyakov
    Signed-off-by: Greg Kroah-Hartman

    Evgeniy Polyakov
     
  • Special file in each w1 slave device's directory called "rw" is created
    each time new slave and no appropriate w1 family is registered.
    "rw" file supports read and write operations, which allows to perform
    almost any kind of operations. Each logical operation is a transaction
    in nature, which can contain several (two or one) low-level operations.
    Let's see how one can read EEPROM context:
    1. one must write control buffer, i.e. buffer containing command byte
    and two byte address. At this step bus is reset and appropriate device
    is selected using either W1_SKIP_ROM or W1_MATCH_ROM command.
    Then provided control buffer is being written to the wire.
    2. reading. This will issue reading eeprom response.

    It is possible that between 1. and 2. w1 master thread will reset bus for
    searching and slave device will be even removed, but in this case 0xff will
    be read, since no device was selected.

    Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Greg Kroah-Hartman

    Evgeniy Polyakov
     

24 Mar, 2006

3 commits


09 Sep, 2005

4 commits


22 Jun, 2005

5 commits

  • I've created reconnect feature - if on start there are no registered families
    all new devices will have defailt family, later when driver for appropriate
    family is loaded, slaves, which were faound earlier, will still have defult
    family instead of right one. Reconnect feature will force control thread to run
    through all master devices and all slaves found and search for slaves with
    default family id and try to reconnect them.

    It does not store newly registered family and does not check only those slaves
    which have reg_num.family the same as being registered one - all slaves with
    default family are reconnected.

    Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Greg Kroah-Hartman

    Evgeniy Polyakov
     
  • …ble periodic searches.

    Adds a sysfs entry (w1_master_search) that allows you to disable/enable
    periodic searches.

    Signed-off-by: Ben Gardner <bgardner@wabtec.com>
    Signed-off-by: Evgeniy Polyakov <johnpol@2ka.mipt.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    Evgeniy Polyakov
     
  • Adds the triplet w1 master method and changes w1_search() to use it.

    Signed-off-by: Ben Gardner
    Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Greg Kroah-Hartman

    Evgeniy Polyakov
     
  • Removed some fields which are not required.
    First step for writing operations.
    Now only read and read name remain.
    Patch depends on w1 cleanups patch.

    Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Greg Kroah-Hartman

    Evgeniy Polyakov
     
  • - white space changes.
    - list_for_each_entry/list_for_each_entry_safe and reverse changes.
    - small coding style changes.
    - removed redundant NULL checks.
    - use attribute group and macros instead of direct device attributes.
    Patch is havily based on work from Adrian Bunk and Dmitry Torokhov,
    thanks guys.

    Signed-off-by: Evgeniy Polyakov
    Signed-off-by: Greg Kroah-Hartman

    Evgeniy Polyakov
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds