diff mbox

ARM: mach-omap2: Kconfig: select SUSPEND and PM_SLEEP if PM for omap3

Message ID CAFULf_wD-qNq5=X5pv=E8+Q2wR-N2n2_z=txL5t7EwF4dQrLYg@mail.gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Bjarne Steinsbo Aug. 14, 2011, 4:41 p.m. UTC
It's conceivable to configure a kernel with CONFIG_PM, but without
CONFIG_PM_SLEEP.

- If CONFIG_PM is defined, pm34xx.c calls cpu_suspend() in line 430.
- cpu_suspend() is a static inline defined in asm/suspend.h, calling
__cpu_suspend() to do the real job.
- But __cpu_suspend (in kernel/sleep.S) is only linked in if
CONFIG_PM_SLEEP is defined.

The result is a link error:
arch/arm/mach-omap2/built-in.o: In function `cpu_suspend':
arch/arm/include/asm/suspend.h:17: undefined reference to `__cpu_suspend'

There is a similar dependency error with a call to cpu_resume() in
sleep34xx.S, line 534.

Since the code obviously assumes that PM_SLEEP should be defined if
PM, change the omap2 Kconfig
to reflect this.  The existing selection of PM_OPP if PM serves as a
precedent for this solution.

When selecting PM_SLEEP, also select SUSPEND, which PM_SLEEP depends on.

Signed-off-by: Bjarne Steinsbo <bsteinsbo@gmail.com>
---
 arch/arm/mach-omap2/Kconfig |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

Comments

Bjarne Steinsbo Aug. 14, 2011, 6:22 p.m. UTC | #1
Forget this one.  I did get this problem compiling a randconfig, but
the explanation and the subsequent fix is incorrect.

Sorry about the noise.

Bjarne

On Sun, Aug 14, 2011 at 6:41 PM, Bjarne Steinsbo <bsteinsbo@gmail.com> wrote:
> It's conceivable to configure a kernel with CONFIG_PM, but without
> CONFIG_PM_SLEEP.
>
> - If CONFIG_PM is defined, pm34xx.c calls cpu_suspend() in line 430.
> - cpu_suspend() is a static inline defined in asm/suspend.h, calling
> __cpu_suspend() to do the real job.
> - But __cpu_suspend (in kernel/sleep.S) is only linked in if
> CONFIG_PM_SLEEP is defined.
>
> The result is a link error:
> arch/arm/mach-omap2/built-in.o: In function `cpu_suspend':
> arch/arm/include/asm/suspend.h:17: undefined reference to `__cpu_suspend'
>
> There is a similar dependency error with a call to cpu_resume() in
> sleep34xx.S, line 534.
>
> Since the code obviously assumes that PM_SLEEP should be defined if
> PM, change the omap2 Kconfig
> to reflect this.  The existing selection of PM_OPP if PM serves as a
> precedent for this solution.
>
> When selecting PM_SLEEP, also select SUSPEND, which PM_SLEEP depends on.
>
> Signed-off-by: Bjarne Steinsbo <bsteinsbo@gmail.com>
> ---
>  arch/arm/mach-omap2/Kconfig |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
> index 57b66d5..04a3a83 100644
> --- a/arch/arm/mach-omap2/Kconfig
> +++ b/arch/arm/mach-omap2/Kconfig
> @@ -36,6 +36,8 @@ config ARCH_OMAP3
>        select ARM_L1_CACHE_SHIFT_6 if !ARCH_OMAP4
>        select ARCH_HAS_OPP
>        select PM_OPP if PM
> +       select SUSPEND if PM
> +       select PM_SLEEP if PM
>
>  config ARCH_OMAP4
>        bool "TI OMAP4"
> --
> 1.7.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 57b66d5..04a3a83 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -36,6 +36,8 @@  config ARCH_OMAP3
 	select ARM_L1_CACHE_SHIFT_6 if !ARCH_OMAP4
 	select ARCH_HAS_OPP
 	select PM_OPP if PM
+	select SUSPEND if PM
+	select PM_SLEEP if PM

 config ARCH_OMAP4
 	bool "TI OMAP4"