Skip to content
Snippets Groups Projects
  1. Jun 03, 2008
    • Haavard Skinnemoen's avatar
      SPI API improvements · d255bb0e
      Haavard Skinnemoen authored
      
      This patch gets rid of the spi_chipsel table and adds a handful of new
      functions that makes the SPI layer cleaner and more flexible.
      
      Instead of the spi_chipsel table, each board that wants to use SPI
      gets to implement three hooks:
        * spi_cs_activate(): Activates the chipselect for a given slave
        * spi_cs_deactivate(): Deactivates the chipselect for a given slave
        * spi_cs_is_valid(): Determines if the given bus/chipselect
          combination can be activated.
      
      Not all drivers may need those extra functions however. If that's the
      case, the board code may just leave them out (assuming they know what
      the driver needs) or rely on the linker to strip them out (assuming
      --gc-sections is being used.)
      
      To set up communication parameters for a given slave, the driver needs
      to call spi_setup_slave(). This returns a pointer to an opaque
      spi_slave struct which must be passed as a parameter to subsequent SPI
      calls. This struct can be freed by calling spi_free_slave(), but most
      driver probably don't want to do this.
      
      Before starting one or more SPI transfers, the driver must call
      spi_claim_bus() to gain exclusive access to the SPI bus and initialize
      the hardware. When all transfers are done, the driver must call
      spi_release_bus() to make the bus available to others, and possibly
      shut down the SPI controller hardware.
      
      spi_xfer() behaves mostly the same as before, but it now takes a
      spi_slave parameter instead of a spi_chipsel function pointer. It also
      got a new parameter, flags, which is used to specify chip select
      behaviour. This may be extended with other flags in the future.
      
      This patch has been build-tested on all powerpc and arm boards
      involved. I have not tested NIOS since I don't have a toolchain for it
      installed, so I expect some breakage there even though I've tried
      fixing up everything I could find by visual inspection.
      
      I have run-time tested this on AVR32 ATNGW100 using the atmel_spi and
      DataFlash drivers posted as a follow-up. I'd like some help testing
      other boards that use the existing SPI API.
      
      But most of all, I'd like some comments on the new API. Is this stuff
      usable for everyone? If not, why?
      
      Changed in v4:
        - Build fixes for various boards, drivers and commands
        - Provide common struct spi_slave definition that can be extended by
          drivers
        - Pass a struct spi_slave * to spi_cs_activate and spi_cs_deactivate
        - Make default bus and mode build-time configurable
        - Override default SPI bus ID and mode on mx32ads and imx31_litekit.
      
      Changed in v3:
        - Add opaque struct spi_slave for controller-specific data associated
          with a slave.
        - Add spi_claim_bus() and spi_release_bus()
        - Add spi_free_slave()
        - spi_setup() is now called spi_setup_slave() and returns a
          struct spi_slave
        - soft_spi now supports four SPI modes (CPOL|CPHA)
        - Add bus parameter to spi_setup_slave()
        - Convert the new i.MX32 SPI driver
        - Convert the new MC13783 RTC driver
      
      Changed in v2:
        - Convert the mpc8xxx_spi driver and the mpc8349emds board to the
          new API.
      
      Signed-off-by: default avatarHaavard Skinnemoen <hskinnemoen@atmel.com>
      Tested-by: default avatarGuennadi Liakhovetski <lg@denx.de>
      d255bb0e
    • Haavard Skinnemoen's avatar
      Move definition of container_of() to common.h · 28901120
      Haavard Skinnemoen authored
      
      AVR32 and AT91SAM9 both have their own identical definitions of
      container_of() taken from the Linux kernel. Move it to common.h so
      that all architectures can use it.
      
      container_of() is already used by some drivers, and will be used
      extensively by the new and improved SPI API.
      
      Signed-off-by: default avatarHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
      28901120
    • Haavard Skinnemoen's avatar
      soft_i2c: Pull SDA high before reading · 110e006f
      Haavard Skinnemoen authored
      
      Spotted by Dean Capindale.
      
      Systems that support open-drain GPIO properly are allowed provide an
      empty I2C_TRISTATE define. However, this means that we need to be
      careful not to drive SDA low when the slave is expected to respond.
      
      This patch adds a missing I2C_SDA(1) to read_byte() required to
      tristate the SDA line on systems that support open-drain GPIO.
      
      Signed-off-by: default avatarHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
      110e006f
    • Kumar Gala's avatar
      Fix warnings from gcc-4.3.0 build on a ppc host · f979690e
      Kumar Gala authored
      
      * The cfi_flash.c memset fix actual allows the board to boot so there is
        a bit more going on here than just resolving warnings associated with
        uninitialized variables.
      
      * include/asm/bitops.h:302: warning: '__swab32p' is static but used in
        inline function 'ext2_find_next_zero_bit' which is not static
      
      Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
      f979690e
    • Becky Bruce's avatar
      MPC512x: Change traps.c to not reference non-addressable memory · 9b124a68
      Becky Bruce authored
      
      Currently, END_OF_RAM is used by the trap code to determine if
      we should attempt to access the stack pointer or not. However,
      on systems with a lot of RAM, only a subset of the RAM is
      guaranteed to be mapped in and accessible.  Change END_OF_RAM
      to use get_effective_memsize() instead of using the raw ram
      size out of the bd.
      
      Signed-off-by: default avatarBecky Bruce <becky.bruce@freescale.com>
      9b124a68
    • Kumar Gala's avatar
      Make sure common.h is the first include. · 81673e9a
      Kumar Gala authored
      
      If common.h isn't first we can get CONFIG_ options defined in the
      board config file ignored.  This can cause an issue if any of those
      config options impact the size of types of data structures
      (eg CONFIG_PHYS_64BIT).
      
      Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
      81673e9a
    • Marian Balakowicz's avatar
      Avoid initrd and logbuffer area overlaps · 95d449ad
      Marian Balakowicz authored
      
      Add logbuffer to reserved LMB areas to prevent initrd allocation
      from overlaping with it.
      
      Make sure to use correct logbuffer base address.
      
      Signed-off-by: default avatarMarian Balakowicz <m8@semihalf.com>
      95d449ad
    • Sascha Laue's avatar
      6956d53d
    • Becky Bruce's avatar
      e34a0e91
    • Becky Bruce's avatar
      PPC: Add print_bats() to lib_ppc/bat_rw.c · d5b9b8cd
      Becky Bruce authored
      
      This function prints the values of all the BAT register
      pairs - I needed this for debug earlier this week; adding it to
      lib_ppc so others can use it (and add it to reginfo commands
      if so desired).
      
      Signed-off-by: default avatarBecky Bruce <becky.bruce@freescale.com>
      d5b9b8cd
    • Becky Bruce's avatar
      PPC: Change lib_ppc/bat_rw.c to use high bats · c148f24c
      Becky Bruce authored
      
      Currently, this code only deals with BATs 0-3, which makes
      it useless on systems that support BATs 4-7.  Add the
      support for these registers.
      
      Signed-off-by: default avatarBecky Bruce <Becky.bruce@freescale.com>
      c148f24c
    • Becky Bruce's avatar
      PPC: Create and use CONFIG_HIGH_BATS · 31d82672
      Becky Bruce authored
      
      Change all code that conditionally operates on high bat
      registers (that is, BATs 4-7) to look at CONFIG_HIGH_BATS
      instead of the myriad ways this is done now.  Define the option
      for every config for which high bats are supported (and
      enabled by early boot, on parts where they're not always
      enabled)
      
      Signed-off-by: default avatarBecky Bruce <becky.bruce@freescale.com>
      31d82672
  2. Jun 02, 2008
  3. May 29, 2008
  4. May 28, 2008
  5. May 27, 2008
Loading