• Binbin Wu's avatar
    pinctrl: pinctrl-intel: move gpio suspend/resume to noirq phase · 2fef3276
    Binbin Wu authored
    In current driver, SET_LATE_SYSTEM_SLEEP_PM_OPS is used to install the
    callbacks for suspend/resume.
    GPIO pin may be used as the interrupt pin by some device. However, using
    SET_LATE_SYSTEM_SLEEP_PM_OPS() to install the callbacks, the resume
    callback is called after resume_device_irqs(). Unintended interrupts may
    arrive due to resuming device irqs first, but the GPIO controller is not
    properly restored.
    
    Normally, for a SMP system, there are multiple cores, so even when there are
    unintended interrupts, BSP gets the chance to initialize the GPIO chip soon.
    But when there is only 1 core is active (other cores are offlined or
    single core) during resume, it is more easily to observe the unintended
    interrupts.
    
    This patch renames the suspend/resume function by adding suffix "_noirq",
    and installs the callbacks using SET_NOIRQ_SYSTEM_SLEEP_PM_OPS().
    Signed-off-by: default avatarBinbin Wu <binbin.wu@intel.com>
    Acked-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    2fef3276
pinctrl-intel.h 6.08 KB