1. 25 9月, 2012 1 次提交
    • S
      spi/s3c64xx: Don't free controller_data on non-dt platforms · 5bee3b94
      Sylwester Nawrocki 提交于
      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: NSylwester Nawrocki <s.nawrocki@samsung.com>
      Signed-off-by: NKyungmin Park <kyungmin.park@samsung.com>
      Acked-by: NKukjin Kim <kgene.kim@samsung.com>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      5bee3b94
  2. 23 9月, 2012 1 次提交
  3. 20 9月, 2012 1 次提交
    • P
      spi/pl022: adopt pinctrl support · 4f5e1b37
      Patrice Chotard 提交于
      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: NRoland Stigge <stigge@antcom.de>
      Signed-off-by: NPatrice Chotard <patrice.chotard@stericsson.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      4f5e1b37
  4. 12 9月, 2012 1 次提交
  5. 07 9月, 2012 1 次提交
  6. 06 9月, 2012 5 次提交
  7. 28 8月, 2012 4 次提交
  8. 23 8月, 2012 14 次提交
  9. 18 8月, 2012 3 次提交
  10. 17 8月, 2012 9 次提交