1. 25 Sep, 2012 2 commits
    • Roland Stigge's avatar
      spi/pl022: Devicetree support w/o platform data · 39a6ac11
      Roland Stigge authored
      Even with devicetree support, we needed platform data to provide some data,
      leading to mixed device tree and platform data. This patch makes it possible to
      provide all that information via device tree. Now, the data must be provided
      via platform data _or_ device tree completely.
      
      Only in case of DMA where a callback specification is necessary (dma_filter()),
      platform data is the only option.
      Signed-off-by: default avatarRoland Stigge <stigge@antcom.de>
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      39a6ac11
    • Sylwester Nawrocki's avatar
      spi/s3c64xx: Don't free controller_data on non-dt platforms · 5bee3b94
      Sylwester Nawrocki authored
      When s3c64xx-spi is instantiated from device tree an instance of
      struct s3c64xx_spi_csinfo is dynamically allocated in the driver.
      For non-dt platform it is passed from board code through
      spi_register_board_info(). On error path in s3c64xx_spi_setup()
      function there is an attempt to free this data struct
      s3c64xx_spi_csinfo object as it would have been allocated in the
      driver for both, dt and non-dt based platforms. This leads to
      following bug when gpio request fails:
      
      spi spi1.0: Failed to get /CS gpio [21]: -16
      kernel BUG at mm/slub.c:3478!
      Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
      Modules linked in:
      CPU: 0    Not tainted  (3.6.0-rc5-00092-g9b0b493-dirty #6111)
      PC is at kfree+0x148/0x158
      LR is at s3c64xx_spi_setup+0xac/0x290
      pc : [<c00a513c>]    lr : [<c0227014>]    psr: 40000013
      sp : ee043e10  ip : c032883c  fp : c0481f7c
      r10: ee0abd80  r9 : 00000063  r8 : 00000000
      r7 : ee129e78  r6 : ee104a00  r5 : fffffff0  r4 : c047bc64
      r3 : 40000400  r2 : c047bc64  r1 : c04def60  r0 : 0004047b
      Flags: nZcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      Control: 10c5387d  Table: 4000404a  DAC: 00000015
      Process swapper/0 (pid: 1, stack limit = 0xee0422f0)
      Stack: (0xee043e10 to 0xee044000)
      ...
      [<c00a513c>] (kfree+0x148/0x158) from [<c0227014>] (s3c64xx_spi_setup+0xac/0x290)
      [<c0227014>] (s3c64xx_spi_setup+0xac/0x290) from [<c02251a4>] (spi_setup+0x34/0x4c)
      [<c02251a4>] (spi_setup+0x34/0x4c) from [<c02258d0>] (spi_add_device+0x98/0x128)
      [<c02258d0>] (spi_add_device+0x98/0x128) from [<c02259d4>] (spi_new_device+0x74/0xa8)
      [<c02259d4>] (spi_new_device+0x74/0xa8) from [<c0225a2c>] (spi_match_master_to_boardinfo+0x24/0x44)
      [<c0225a2c>] (spi_match_master_to_boardinfo+0x24/0x44) from [<c0225b40>] (spi_register_master+0xf4/0x2a8)
      [<c0225b40>] (spi_register_master+0xf4/0x2a8) from [<c043fe0c>] (s3c64xx_spi_probe+0x34c/0x42c)
      [<c043fe0c>] (s3c64xx_spi_probe+0x34c/0x42c) from [<c01fc198>] (platform_drv_probe+0x18/0x1c)
      
      There should be no attempt to kfree controller_data when it was
      externally provided through the board code. Fix this by freeing
      controller_data only when dev->of_node is not null.
      Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
      Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
      Acked-by: default avatarKukjin Kim <kgene.kim@samsung.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      5bee3b94
  2. 22 Sep, 2012 1 commit
  3. 20 Sep, 2012 1 commit
    • Patrice Chotard's avatar
      spi/pl022: adopt pinctrl support · 4f5e1b37
      Patrice Chotard authored
      Amend the PL022 pin controller to optionally take a pin control
      handle and set the state of the pins to "default" on boot and
      runtime resume, and to "sleep" at runtime suspend. This way we
      will dynamically save power on the SPI busses, for example some
      electronic designs may be able to ground the pins when unused
      instead of pull-up. Some pin controllers may want to set the
      pins as wake-up sources when sleeping.
      
      Effect on platforms using the PL022 driver:
      
      - If the platform does not use pin control - no semantic effect,
        the pinctrl stubs will kick in and resolve the situation.
      
      - Platforms using this driver and have pin control but no
        function defined for the PL022 need to either supply a
        "default" function in their map or enable pinctrl dummies
        so the driver is satisfied.
      
      - Platforms using this driver with hogs for setting up the PL022
        pin control - stop using hogs to take the pl022 pin control
        handle, let the driver handle this.
      
      I'be looked at some platforms that may be affected:
      
      - SPEAr: appears to define the proper functions in their device
        trees and not hogging them, so things should be smooth, the
        driver will simply start to take its pins.
      
      - Ux500: the proper function is defined and will be taken properly
        by the driver. New sleep states introduced by a separate patch to
        ux500 but no regression, since the default state is sufficient.
      
      - U300: old hog deleted as part of this patch.
      
      - LPC32xx: does not appear to be using pinctrl.
      
      - ARM Integrator IMPD1, RealView & Versatile: does not use pinctrl.
      Tested-by: default avatarRoland Stigge <stigge@antcom.de>
      Signed-off-by: default avatarPatrice Chotard <patrice.chotard@stericsson.com>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      4f5e1b37
  4. 12 Sep, 2012 1 commit
  5. 07 Sep, 2012 1 commit
  6. 05 Sep, 2012 5 commits
  7. 27 Aug, 2012 4 commits
  8. 23 Aug, 2012 1 commit
  9. 22 Aug, 2012 13 commits
  10. 17 Aug, 2012 3 commits
  11. 16 Aug, 2012 8 commits