From f7584f25285b94e2ea0f312399d1aef9671673b2 Mon Sep 17 00:00:00 2001 From: Ji Luo Date: Tue, 28 Apr 2020 10:52:56 +0800 Subject: [PATCH] MA-17046-3 Add implementation to get ONOFF button status Add board level implementation to get the ON-OFF button status for imx8q/imx8m. Test: Get ON-OFF button status on imx7ulp/imx8m/imx8q. Change-Id: I8e4ea61ec1c52ab7cfa20b5498756a25f3cd2f8d Signed-off-by: Ji Luo (cherry picked from commit 44c6edfbd2607f1458220031467fc7de20dc46be) --- arch/arm/include/asm/arch-mx7ulp/imx-regs.h | 2 ++ board/freescale/imx8mm_evk/imx8mm_evk.c | 6 ++++++ board/freescale/imx8mn_evk/imx8mn_evk.c | 6 ++++++ board/freescale/imx8mp_evk/imx8mp_evk.c | 6 ++++++ board/freescale/imx8mq_evk/imx8mq_evk.c | 6 ++++++ board/freescale/imx8qm_mek/imx8qm_mek.c | 9 +++++++++ board/freescale/imx8qxp_mek/imx8qxp_mek.c | 9 +++++++++ board/freescale/mx7ulp_evk/mx7ulp_evk.c | 7 +++++++ 8 files changed, 51 insertions(+) diff --git a/arch/arm/include/asm/arch-mx7ulp/imx-regs.h b/arch/arm/include/asm/arch-mx7ulp/imx-regs.h index de4e32903a..4103c6ec8a 100644 --- a/arch/arm/include/asm/arch-mx7ulp/imx-regs.h +++ b/arch/arm/include/asm/arch-mx7ulp/imx-regs.h @@ -966,6 +966,8 @@ #define SNVS_LPCR_DPEN (0x20) #define SNVS_LPCR_SRTC_ENV (0x1) +#define SNVS_BASE_REVB (0x41070000) +#define SNVS_HPSR_REVB (SNVS_BASE_REVB + 0x14) #define SRC_BASE_ADDR CMC1_RBASE #define IRAM_BASE_ADDR OCRAM_0_BASE diff --git a/board/freescale/imx8mm_evk/imx8mm_evk.c b/board/freescale/imx8mm_evk/imx8mm_evk.c index 562a251f36..e979d32d8d 100644 --- a/board/freescale/imx8mm_evk/imx8mm_evk.c +++ b/board/freescale/imx8mm_evk/imx8mm_evk.c @@ -329,3 +329,9 @@ int board_late_init(void) #endif return 0; } + +#ifdef CONFIG_ANDROID_SUPPORT +bool is_power_key_pressed(void) { + return (bool)(!!(readl(SNVS_HPSR) & (0x1 << 6))); +} +#endif diff --git a/board/freescale/imx8mn_evk/imx8mn_evk.c b/board/freescale/imx8mn_evk/imx8mn_evk.c index 0f43e02c30..3e39074403 100644 --- a/board/freescale/imx8mn_evk/imx8mn_evk.c +++ b/board/freescale/imx8mn_evk/imx8mn_evk.c @@ -329,3 +329,9 @@ int board_late_init(void) #endif return 0; } + +#ifdef CONFIG_ANDROID_SUPPORT +bool is_power_key_pressed(void) { + return (bool)(!!(readl(SNVS_HPSR) & (0x1 << 6))); +} +#endif diff --git a/board/freescale/imx8mp_evk/imx8mp_evk.c b/board/freescale/imx8mp_evk/imx8mp_evk.c index 2afee7df9e..b4923b5be2 100644 --- a/board/freescale/imx8mp_evk/imx8mp_evk.c +++ b/board/freescale/imx8mp_evk/imx8mp_evk.c @@ -496,6 +496,12 @@ ulong board_get_usable_ram_top(ulong total_size) } #endif +#ifdef CONFIG_ANDROID_SUPPORT +bool is_power_key_pressed(void) { + return (bool)(!!(readl(SNVS_HPSR) & (0x1 << 6))); +} +#endif + #ifdef CONFIG_SPL_MMC_SUPPORT #define UBOOT_RAW_SECTOR_OFFSET 0x40 unsigned long spl_mmc_get_uboot_raw_sector(struct mmc *mmc) diff --git a/board/freescale/imx8mq_evk/imx8mq_evk.c b/board/freescale/imx8mq_evk/imx8mq_evk.c index 92e3949bf6..688d47a2a5 100644 --- a/board/freescale/imx8mq_evk/imx8mq_evk.c +++ b/board/freescale/imx8mq_evk/imx8mq_evk.c @@ -279,3 +279,9 @@ int board_late_init(void) return 0; } + +#ifdef CONFIG_ANDROID_SUPPORT +bool is_power_key_pressed(void) { + return (bool)(!!(readl(SNVS_HPSR) & (0x1 << 6))); +} +#endif diff --git a/board/freescale/imx8qm_mek/imx8qm_mek.c b/board/freescale/imx8qm_mek/imx8qm_mek.c index 80e60aa658..fafd23f953 100644 --- a/board/freescale/imx8qm_mek/imx8qm_mek.c +++ b/board/freescale/imx8qm_mek/imx8qm_mek.c @@ -520,3 +520,12 @@ int board_late_init(void) return 0; } + +#ifdef CONFIG_ANDROID_SUPPORT +bool is_power_key_pressed(void) { + sc_bool_t status = SC_FALSE; + + sc_misc_get_button_status(-1, &status); + return (bool)status; +} +#endif diff --git a/board/freescale/imx8qxp_mek/imx8qxp_mek.c b/board/freescale/imx8qxp_mek/imx8qxp_mek.c index 96f99c745b..8c2a21a963 100644 --- a/board/freescale/imx8qxp_mek/imx8qxp_mek.c +++ b/board/freescale/imx8qxp_mek/imx8qxp_mek.c @@ -419,3 +419,12 @@ int board_late_init(void) return 0; } + +#ifdef CONFIG_ANDROID_SUPPORT +bool is_power_key_pressed(void) { + sc_bool_t status = SC_FALSE; + + sc_misc_get_button_status(-1, &status); + return (bool)status; +} +#endif diff --git a/board/freescale/mx7ulp_evk/mx7ulp_evk.c b/board/freescale/mx7ulp_evk/mx7ulp_evk.c index 247dd4e28f..ce716756b9 100644 --- a/board/freescale/mx7ulp_evk/mx7ulp_evk.c +++ b/board/freescale/mx7ulp_evk/mx7ulp_evk.c @@ -158,3 +158,10 @@ int board_late_init(void) return 0; } + +#ifdef CONFIG_ANDROID_SUPPORT +bool is_power_key_pressed(void) { + /* the onoff button is 'pressed' by default on evk board */ + return (bool)(!(readl(SNVS_HPSR_REVB) & (0x1 << 6))); +} +#endif -- 2.17.1