blob: 67edab6e9908a8f97323a0e7b66433a2a698964b [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef __AML_PM_H__
#define __AML_PM_H__
#include <linux/notifier.h>
/* wake up reason*/
#define UDEFINED_WAKEUP 0
#define CHARGING_WAKEUP 1
#define REMOTE_WAKEUP 2
#define RTC_WAKEUP 3
#define BT_WAKEUP 4
#define WIFI_WAKEUP 5
#define POWER_KEY_WAKEUP 6
#define AUTO_WAKEUP 7
#define CEC_WAKEUP 8
#define REMOTE_CUS_WAKEUP 9
#define ETH_PHY_WAKEUP 10
#define CECB_WAKEUP 11
#define ETH_PHY_GPIO 12
#define VAD_WAKEUP 13
#define HDMI_RX_WAKEUP 14
unsigned int get_resume_method(void);
unsigned int get_resume_reason(void);
unsigned int is_pm_s2idle_mode(void);
#ifdef CONFIG_AMLOGIC_LEGACY_EARLY_SUSPEND
enum {
EARLY_SUSPEND_LEVEL_BLANK_SCREEN = 50,
EARLY_SUSPEND_LEVEL_STOP_DRAWING = 100,
EARLY_SUSPEND_LEVEL_DISABLE_FB = 150,
};
struct early_suspend {
struct list_head link;
int level;
void (*suspend)(struct early_suspend *h);
void (*resume)(struct early_suspend *h);
void *param;
};
void register_early_suspend(struct early_suspend *handler);
void unregister_early_suspend(struct early_suspend *handler);
unsigned int lgcy_early_suspend_init(struct platform_device *pdev);
#endif //CONFIG_AMLOGIC_LEGACY_EARLY_SUSPEND
#ifdef CONFIG_AMLOGIC_M8B_SUSPEND
/*l2c virtual addr*/
#define IO_PL310_BASE 0xfe000000
/*IR, power key, low power,
*adapter plug in/out and so on,
*are all use this flag.
*/
#define FLAG_WAKEUP_PWRKEY 0x1234abcd
#define FLAG_WAKEUP_ALARM 0x12345678
#define FLAG_WAKEUP_WIFI 0x12340001
#define FLAG_WAKEUP_BT 0x12340002
#define FLAG_WAKEUP_PWROFF 0x12340003
/*AOBUS*/
#define AO_RTI_STATUS_REG2 0x0008
#define AO_RTC_ADDR0 0x0740
#define AO_RTC_ADDR1 0x0744
#define AO_RTC_ADDR2 0x0748
#define AO_RTC_ADDR3 0x074c
#define AO_UART_STATUS 0x04cc
#define AO_UART_REG5 0x04d4
/*CBUS*/
#define HHI_SYS_PLL_CNTL 0x10c0
#define HHI_MPEG_CLK_CNTL 0x105d
#endif //CONFIG_AMLOGIC_M8B_SUSPEND
#endif //__AML_PM_H__