On Mon, Jul 23, 2018 at 07:52:58PM +0200, Krzysztof Kozlowski wrote: > The pinctrl driver defines an IRQ chip which handles external wakeup > interrupts, therefore from logical point of view, it is the owner of > external interrupt mask. The register controlling the mask belongs to > Power Management Unit address space so it has to be accessed with PMU > syscon regmap handle. > > This mask should be written to hardware during system suspend. Till now > ARMv7 machine code was responsible for this which created a dependency > between pin controller driver and arch/arm/mach code. > > Try to rework this dependency so the pinctrl driver will write external > wakeup interrupt mask during late suspend. > > Impact on ARMv7 designs (S5Pv210 and Exynos) > ============================================ > This duplicates setting mask with existing machine code > arch/arm/mach-exynos/suspend.c and arch/arm/mach-s5pv210/pm.c but it is > not a problem - the wakeup mask register will be written twice. The > machine code will be cleaned up later. > > The difference between implementation here and ARMv7 machine code > (arch/arm/mach-*) is the time of writing the mask: > 1. The machine code is writing the mask quite late during system suspend > path, after offlining secondary CPUs and just before doing actual > suspend. > 2. The implementation in pinctrl driver uses late suspend ops, therefore it > will write the mask much earlier. Hopefully late enough, after all > drivers will enable or disable its interrupt wakeup > (enable_irq_wake() etc). > > Impact on ARMv8 designs (Exynos5433 and Exynos7) > ================================================ > The Suspend to RAM was not supported and external wakeup interrupt mask > was not written to HW. This change brings us one step closer to > supporting Suspend to RAM. > > Signed-off-by: Krzysztof Kozlowski <krzk@xxxxxxxxxx> > Cc: Tomasz Figa <tomasz.figa@xxxxxxxxx> > Cc: Sylwester Nawrocki <snawrocki@xxxxxxxxxx> > Acked-by: Tomasz Figa <tomasz.figa@xxxxxxxxx> > --- > drivers/pinctrl/samsung/pinctrl-exynos.c | 50 ++++++++++++++++++++++++++++- > drivers/pinctrl/samsung/pinctrl-samsung.h | 3 ++ > include/linux/soc/samsung/exynos-regs-pmu.h | 2 ++ > 3 files changed, 54 insertions(+), 1 deletion(-) Thanks, applied all previous, up to this one. Best regards, Krzysztof -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html