From e9310c34b018944a6c29a8f408f0a34b43a0df6d Mon Sep 17 00:00:00 2001 From: Hui Liu Date: Thu, 28 Jul 2022 20:28:32 +0800 Subject: [PATCH] feat(mt8188): add pmic and pwrap support Add PWRAP and PMIC driver to support power-off. TEST=build pass. BUG=b:233720142 Signed-off-by: Hui Liu Change-Id: Id9951134925f6cb5f8d304a7b8e7901837809bd9 --- plat/mediatek/drivers/pmic/rules.mk | 15 ++++++++++ .../drivers/pmic_wrap/mt8188/pmic_wrap_init.h | 30 +++++++++++++++++++ plat/mediatek/drivers/pmic_wrap/rules.mk | 20 +++++++++++++ plat/mediatek/include/mt8188/platform_def.h | 5 ++++ plat/mediatek/mt8188/plat_config.mk | 1 + plat/mediatek/mt8188/platform.mk | 2 ++ 6 files changed, 73 insertions(+) create mode 100644 plat/mediatek/drivers/pmic/rules.mk create mode 100644 plat/mediatek/drivers/pmic_wrap/mt8188/pmic_wrap_init.h create mode 100644 plat/mediatek/drivers/pmic_wrap/rules.mk diff --git a/plat/mediatek/drivers/pmic/rules.mk b/plat/mediatek/drivers/pmic/rules.mk new file mode 100644 index 000000000..e408b034f --- /dev/null +++ b/plat/mediatek/drivers/pmic/rules.mk @@ -0,0 +1,15 @@ +# +# Copyright (c) 2022, MediaTek Inc. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +LOCAL_DIR := $(call GET_LOCAL_DIR) + +MODULE := pmic + +LOCAL_SRCS-y += ${LOCAL_DIR}/pmic.c + +PLAT_INCLUDES += -I${LOCAL_DIR}/ + +$(eval $(call MAKE_MODULE,$(MODULE),$(LOCAL_SRCS-y),$(MTK_BL))) diff --git a/plat/mediatek/drivers/pmic_wrap/mt8188/pmic_wrap_init.h b/plat/mediatek/drivers/pmic_wrap/mt8188/pmic_wrap_init.h new file mode 100644 index 000000000..9027daf15 --- /dev/null +++ b/plat/mediatek/drivers/pmic_wrap/mt8188/pmic_wrap_init.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2022, MediaTek Inc. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef PMIC_WRAP_INIT_H +#define PMIC_WRAP_INIT_H + +#include + +#include "platform_def.h" +#include + +static struct mt8188_pmic_wrap_regs *const mtk_pwrap = (void *)PMIC_WRAP_BASE; + +/* PMIC_WRAP registers */ +struct mt8188_pmic_wrap_regs { + uint32_t init_done; + uint32_t reserved[543]; + uint32_t wacs2_cmd; + uint32_t wacs2_wdata; + uint32_t reserved1[3]; + uint32_t wacs2_rdata; + uint32_t reserved2[3]; + uint32_t wacs2_vldclr; + uint32_t wacs2_sta; +}; + +#endif /* PMIC_WRAP_INIT_H */ diff --git a/plat/mediatek/drivers/pmic_wrap/rules.mk b/plat/mediatek/drivers/pmic_wrap/rules.mk new file mode 100644 index 000000000..9ba44a6bf --- /dev/null +++ b/plat/mediatek/drivers/pmic_wrap/rules.mk @@ -0,0 +1,20 @@ +# +# Copyright (c) 2022, MediaTek Inc. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +LOCAL_DIR := $(call GET_LOCAL_DIR) + +MODULE := pmic_wrap + +ifeq (${USE_PMIC_WRAP_INIT_V2}, 1) +LOCAL_SRCS-y += ${LOCAL_DIR}/pmic_wrap_init_v2.c +else +LOCAL_SRCS-y += ${LOCAL_DIR}/pmic_wrap_init.c +endif + +PLAT_INCLUDES += -I${LOCAL_DIR}/ +PLAT_INCLUDES += -I${LOCAL_DIR}/${MTK_SOC} + +$(eval $(call MAKE_MODULE,$(MODULE),$(LOCAL_SRCS-y),$(MTK_BL))) diff --git a/plat/mediatek/include/mt8188/platform_def.h b/plat/mediatek/include/mt8188/platform_def.h index fa8cd41dc..0b38c63f1 100644 --- a/plat/mediatek/include/mt8188/platform_def.h +++ b/plat/mediatek/include/mt8188/platform_def.h @@ -25,6 +25,11 @@ #define UART0_BASE (IO_PHYS + 0x01002000) #define UART_BAUDRATE (115200) +/******************************************************************************* + * PMIC related constants + ******************************************************************************/ +#define PMIC_WRAP_BASE (IO_PHYS + 0x00024000) + /******************************************************************************* * Infra IOMMU related constants ******************************************************************************/ diff --git a/plat/mediatek/mt8188/plat_config.mk b/plat/mediatek/mt8188/plat_config.mk index e5b3fc57d..0dbe5e710 100644 --- a/plat/mediatek/mt8188/plat_config.mk +++ b/plat/mediatek/mt8188/plat_config.mk @@ -16,6 +16,7 @@ GICV3_SUPPORT_GIC600 := 1 # MTK options # PLAT_EXTRA_RODATA_INCLUDES := 1 +USE_PMIC_WRAP_INIT_V2 := 1 # Configs for A78 and A55 CTX_INCLUDE_AARCH32_REGS := 0 diff --git a/plat/mediatek/mt8188/platform.mk b/plat/mediatek/mt8188/platform.mk index 8ba66da60..4743164f1 100644 --- a/plat/mediatek/mt8188/platform.mk +++ b/plat/mediatek/mt8188/platform.mk @@ -26,6 +26,8 @@ MODULES-y += $(MTK_PLAT)/drivers/cirq MODULES-y += $(MTK_PLAT)/drivers/dp MODULES-y += $(MTK_PLAT)/drivers/gic600 MODULES-y += $(MTK_PLAT)/drivers/iommu +MODULES-y += $(MTK_PLAT)/drivers/pmic +MODULES-y += $(MTK_PLAT)/drivers/pmic_wrap MODULES-y += $(MTK_PLAT)/drivers/timer PLAT_BL_COMMON_SOURCES := common/desc_image_load.c \