• 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
core.c 54 KB