An error occurred fetching the project authors.
  1. 26 Jul, 2008 1 commit
    • Grant Likely's avatar
      spi: split up spi_new_device() to allow two stage registration. · dc87c98e
      Grant Likely authored
      spi_new_device() allocates and registers an spi device all in one swoop.
      If the driver needs to add extra data to the spi_device before it is
      registered, then this causes problems.  This is needed for OF device
      tree support so that the SPI device tree helper can add a pointer to
      the device node after the device is allocated, but before the device
      is registered.  OF aware SPI devices can then retrieve data out of the
      device node to populate a platform data structure.
      
      This patch splits the allocation and registration portions of code out
      of spi_new_device() and creates two new functions; spi_alloc_device()
      and spi_register_device().  spi_new_device() is modified to use the new
      functions for allocation and registration.  None of the existing users
      of spi_new_device() should be affected by this change.
      
      Drivers using the new API can forego the use of spi_board_info
      structure to describe the device layout and populate data into the
      spi_device structure directly.
      
      This change is in preparation for adding an OF device tree parser to
      generate spi_devices based on data in the device tree.
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Acked-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      dc87c98e
  2. 24 Jul, 2008 1 commit
    • Grant Likely's avatar
      spi: make spi_board_info.modalias a char array · 102eb975
      Grant Likely authored
      Currently, 'modalias' in the spi_device structure is a 'const char *'.
      The spi_new_device() function fills in the modalias value from a passed in
      spi_board_info data block.  Since it is a pointer copy, the new spi_device
      remains dependent on the spi_board_info structure after the new spi_device
      is registered (no other fields in spi_device directly depend on the
      spi_board_info structure; all of the other data is copied).
      
      This causes a problem when dynamically propulating the list of attached
      SPI devices.  For example, in arch/powerpc, the list of SPI devices can be
      populated from data in the device tree.  With the current code, the device
      tree adapter must kmalloc() a new spi_board_info structure for each new
      SPI device it finds in the device tree, and there is no simple mechanism
      in place for keeping track of these allocations.
      
      This patch changes modalias from a 'const char *' to a fixed char array.
      By copying the modalias string instead of referencing it, the dependency
      on the spi_board_info structure is eliminated and an outside caller does
      not need to maintain a separate spi_board_info allocation for each device.
      
      If searched through the code to the best of my ability for any references
      to modalias which may be affected by this change and haven't found
      anything.  It has been tested with the lite5200b platform in arch/powerpc.
      
      [dbrownell@users.sourceforge.net: cope with linux-next changes: KOBJ_NAME_LEN obliterated, etc]
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      102eb975
  3. 22 Jul, 2008 1 commit
  4. 06 Feb, 2008 2 commits
  5. 25 Jan, 2008 1 commit
  6. 05 Dec, 2007 2 commits
  7. 15 Nov, 2007 1 commit
  8. 16 Oct, 2007 1 commit
  9. 12 Oct, 2007 1 commit
    • Kay Sievers's avatar
      Driver core: change add_uevent_var to use a struct · 7eff2e7a
      Kay Sievers authored
      This changes the uevent buffer functions to use a struct instead of a
      long list of parameters. It does no longer require the caller to do the
      proper buffer termination and size accounting, which is currently wrong
      in some places. It fixes a known bug where parts of the uevent
      environment are overwritten because of wrong index calculations.
      
      Many thanks to Mathieu Desnoyers for finding bugs and improving the
      error handling.
      Signed-off-by: default avatarKay Sievers <kay.sievers@vrfy.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      Cc: Cornelia Huck <cornelia.huck@de.ibm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      
      7eff2e7a
  10. 31 Jul, 2007 1 commit
    • David Brownell's avatar
      spi device setup gets better error checking · 082c8cb4
      David Brownell authored
      This updates some error reporting paths in SPI device setup:
      
       - Move validation logic for SPI chipselects to spi_new_device(),
         which is where it should always have been.
      
       - In spi_new_device(), emit error messages if the device can't
         be created.  This is LOTS better than a silent failure; though
         eventually, the calling convention should probably change to
         use the <linux/err.h> conventions.
      
       - Includes one previously-missing check:  SPI masters must always
         have at least one chipselect, even for dedicated busses which
         always keep it selected!
      
      It also adds a FIXME (IDR for dynamic ID allocation) so the issue doesn't live
      purely in my mailbox.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      082c8cb4
  11. 22 Jul, 2007 1 commit
  12. 17 Jul, 2007 1 commit
  13. 04 Jun, 2007 1 commit
  14. 08 May, 2007 1 commit
  15. 27 Mar, 2007 1 commit
  16. 12 Feb, 2007 1 commit
  17. 08 Feb, 2007 1 commit
  18. 07 Feb, 2007 1 commit
  19. 26 Jan, 2007 1 commit
    • Atsushi Nemoto's avatar
      [PATCH] SPI: alternative fix for spi_busnum_to_master · 1e9a51dc
      Atsushi Nemoto authored
      If a SPI master device exists, udev (udevtrigger) causes kernel crash, due
      to wrong kobj pointer in kobject_uevent_env().  This problem was not in
      2.6.19.
      
      The backtrace (on MIPS) was:
      [<8024db6c>] kobject_uevent_env+0x54c/0x5e8
      [<802a8264>] store_uevent+0x1c/0x3c  (in drivers/class.c)
      [<801cb14c>] subsys_attr_store+0x2c/0x50
      [<801cb80c>] flush_write_buffer+0x38/0x5c
      [<801cb900>] sysfs_write_file+0xd0/0x190
      [<80181444>] vfs_write+0xc4/0x1a0
      [<80181cdc>] sys_write+0x54/0xa0
      [<8010dae4>] stack_done+0x20/0x3c
      
      flush_write_buffer() passes kobject of spi_master_class.subsys to
      subsys_addr_store(), then subsys_addr_store() passes a pointer to a struct
      subsystem to store_uevent() which expects a pointer to a struct
      class_device.  The problem seems subsys_attr_store() called instead of
      class_device_attr_store().
      
      This mismatch was caused by commit
      3bd0f694, which overrides kset of master
      class.  This made spi_master_class.subsys.kset.ktype NULL so
      subsys_sysfs_ops is used instead of class_dev_sysfs_ops.
      
      The commit was to fix spi_busnum_to_master().  Here is a patch fixes
      this function in other way, just searching children list of
      class_device.
      Signed-off-by: default avatarAtsushi Nemoto <anemo@mba.ocn.ne.jp>
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1e9a51dc
  20. 07 Dec, 2006 4 commits
  21. 03 Nov, 2006 1 commit
  22. 03 Jul, 2006 1 commit
  23. 28 Jun, 2006 1 commit
  24. 21 May, 2006 1 commit
  25. 16 May, 2006 2 commits
  26. 21 Feb, 2006 1 commit
  27. 14 Jan, 2006 5 commits
    • Andrew Morton's avatar
      [PATCH] spi: remove fastcall crap · 5d870c8e
      Andrew Morton authored
      gcc4 generates warnings when a non-FASTCALL function pointer is assigned to a
      FASTCALL one.  Perhaps it has taste.
      
      Cc: David Brownell <david-b@pacbell.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      5d870c8e
    • Vitaly Wool's avatar
      [PATCH] spi: use linked lists rather than an array · 8275c642
      Vitaly Wool authored
      This makes the SPI core and its users access transfers in the SPI message
      structure as linked list not as an array, as discussed on LKML.
      
      From: David Brownell <dbrownell@users.sourceforge.net>
      
        Updates including doc, bugfixes to the list code, add
        spi_message_add_tail().  Plus, initialize things _before_ grabbing the
        locks in some cases (in case it grows more expensive).  This also merges
        some bitbang updates of mine that didn't yet make it into the mm tree.
      Signed-off-by: default avatarVitaly Wool <vwool@ru.mvista.com>
      Signed-off-by: default avatarDmitry Pervushin <dpervushin@gmail.com>
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      8275c642
    • David Brownell's avatar
      [PATCH] SPI core tweaks, bugfix · 0c868461
      David Brownell authored
      This includes various updates to the SPI core:
      
        - Fixes a driver model refcount bug in spi_unregister_master() paths.
      
        - The spi_master structures now have wrappers which help keep drivers
          from needing class-level get/put for device data or for refcounts.
      
        - Check for a few setup errors that would cause oopsing later.
      
        - Docs say more about memory management.  Highlights the use of DMA-safe
          i/o buffers, and zero-initializing spi_message and such metadata.
      
        - Provide a simple alloc/free for spi_message and its spi_transfer;
          this is only one of the possible memory management policies.
      
      Nothing to break code that already works.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      0c868461
    • David Brownell's avatar
      [PATCH] spi: add spi_driver to SPI framework · b885244e
      David Brownell authored
      This is a refresh of the "Simple SPI Framework" found in 2.6.15-rc3-mm1
      which makes the following changes:
      
        * There's now a "struct spi_driver".  This increase the footprint
          of the core a bit, since it now includes code to do what the driver
          core was previously handling directly.  Documentation and comments
          were updated to match.
      
        * spi_alloc_master() now does class_device_initialize(), so it can
          at least be refcounted before spi_register_master().  To match,
          spi_register_master() switched over to class_device_add().
      
        * States explicitly that after transfer errors, spi_devices will be
          deselected.  We want fault recovery procedures to work the same
          for all controller drivers.
      
        * Minor tweaks:  controller_data no longer points to readonly data;
          prevent some potential cast-from-null bugs with container_of calls;
          clarifies some existing kerneldoc,
      
      And a few small cleanups.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      b885244e
    • David Brownell's avatar
      [PATCH] spi: simple SPI framework · 8ae12a0d
      David Brownell authored
      This is the core of a small SPI framework, implementing the model of a
      queue of messages which complete asynchronously (with thin synchronous
      wrappers on top).
      
        - It's still less than 2KB of ".text" (ARM).  If there's got to be a
          mid-layer for something so simple, that's the right size budget.  :)
      
        - The guts use board-specific SPI device tables to build the driver
          model tree.  (Hardware probing is rarely an option.)
      
        - This version of Kconfig includes no drivers.  At this writing there
          are two known master controller drivers (PXA/SSP, OMAP MicroWire)
          and three protocol drivers (CS8415a, ADS7846, DataFlash) with LKML
          mentions of other drivers in development.
      
        - No userspace API.  There are several implementations to compare.
          Implement them like any other driver, and bind them with sysfs.
      
      The changes from last version posted to LKML (on 11-Nov-2005) are minor,
      and include:
      
        - One bugfix (removes a FIXME), with the visible effect of making device
          names be "spiB.C" where B is the bus number and C is the chipselect.
      
        - The "caller provides DMA mappings" mechanism now has kerneldoc, for
          DMA drivers that want to be fancy.
      
        - Hey, the framework init can be subsys_init.  Even though board init
          logic fires earlier, at arch_init ... since the framework init is
          for driver support, and the board init support uses static init.
      
        - Various additional spec/doc clarifications based on discussions
          with other folk.  It adds a brief "thank you" at the end, for folk
          who've helped nudge this framework into existence.
      
      As I've said before, I think that "protocol tweaking" is the main support
      that this driver framework will need to evolve.
      
      From: Mark Underwood <basicmark@yahoo.com>
      
        Update the SPI framework to remove a potential priority inversion case by
        reverting to kmalloc if the pre-allocated DMA-safe buffer isn't available.
      Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      8ae12a0d