# Amlogic pm

menu "Meson core pm driver"

config AMLOGIC_SUSPEND
    bool "Meson chips pm driver"
    depends on PM
    default n
    help
      This is the Amlogic core pm driver for meson family chips
      AMLOGIC_GX_SUSPEND provides pm driver for GX family chips
      AMLOGIC_M8B_SUSPEND provides pm driver for m8b (32bit) chip.
      If you want this support, you should say Y here.

config AMLOGIC_GX_SUSPEND
    bool "Meson gx chips pm driver"
    depends on AMLOGIC_SUSPEND
    depends on CPU_IDLE
    depends on PM_WAKELOCKS
    depends on PM
    depends on ARM64 || ARM
    default n
    help
      This is the Amlogic suspend driver for 64bit family chips
      It provides PM suspend entry to ATF. It invoke ATF via idle routine.
      It support PSCIv0.2 or newer version.

      If you want this support, you should say Y here.

config AMLOGIC_LEGACY_EARLY_SUSPEND
    bool "A re-implement early_suspend instead of legacy ealry_suspend."
    depends on AMLOGIC_GX_SUSPEND
    depends on PM
    default n
    help
      Kernel has abandoned legacy early_suspend mechanism.
      Here re-implement a early_suspend for use driver
      legacy early_suspend code easily.

      If you want this support, you should say Y here.

endmenu
