From cfb0516f3cc36e3d0ec9b0bdabf1eb6ea2b275c1 Mon Sep 17 00:00:00 2001 From: Rex-BC Chen Date: Fri, 8 Jul 2022 13:58:33 +0800 Subject: [PATCH] feat(mt8188): initialize GIC Initialize GIC for mt8188. TEST=build pass BUG=b:236331724 Signed-off-by: Bo-Chen Chen Change-Id: I5acf77d654f1bbce32e9fbb3f3567600b7db10ed --- plat/mediatek/drivers/gic600/mt_gic_v3.c | 14 +++++++++++++- plat/mediatek/drivers/gic600/mt_gic_v3.h | 1 + plat/mediatek/drivers/gic600/rules.mk | 14 ++++++++++++++ plat/mediatek/include/mt8188/platform_def.h | 7 +++++++ plat/mediatek/mt8188/platform.mk | 1 + 5 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 plat/mediatek/drivers/gic600/rules.mk diff --git a/plat/mediatek/drivers/gic600/mt_gic_v3.c b/plat/mediatek/drivers/gic600/mt_gic_v3.c index 7652c4f0b..cca5d0a56 100644 --- a/plat/mediatek/drivers/gic600/mt_gic_v3.c +++ b/plat/mediatek/drivers/gic600/mt_gic_v3.c @@ -12,7 +12,7 @@ #include #include #include - +#include #include #include #include @@ -194,3 +194,15 @@ void mt_irq_set_pending(uint32_t irq) mmio_write_32(BASE_GICD_BASE + GICD_ISPENDR + irq / 32 * 4, bit); } + +int mt_gic_one_init(void) +{ + INFO("[%s] GIC initialization\n", __func__); + + /* Initialize the GIC driver, CPU and distributor interfaces */ + mt_gic_driver_init(); + mt_gic_init(); + + return 0; +} +MTK_PLAT_SETUP_0_INIT(mt_gic_one_init); diff --git a/plat/mediatek/drivers/gic600/mt_gic_v3.h b/plat/mediatek/drivers/gic600/mt_gic_v3.h index 98835f0f5..31513ef41 100644 --- a/plat/mediatek/drivers/gic600/mt_gic_v3.h +++ b/plat/mediatek/drivers/gic600/mt_gic_v3.h @@ -23,5 +23,6 @@ void gic_sgi_save_all(void); void gic_sgi_restore_all(void); uint32_t mt_irq_get_pending(uint32_t irq); void mt_irq_set_pending(uint32_t irq); +int mt_gic_one_init(void); #endif /* MT_GIC_V3_H */ diff --git a/plat/mediatek/drivers/gic600/rules.mk b/plat/mediatek/drivers/gic600/rules.mk new file mode 100644 index 000000000..3070591ed --- /dev/null +++ b/plat/mediatek/drivers/gic600/rules.mk @@ -0,0 +1,14 @@ +# +# Copyright (c) 2022, MediaTek Inc. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +LOCAL_DIR := $(call GET_LOCAL_DIR) + +MODULE := gic600 +LOCAL_SRCS-y := $(LOCAL_DIR)/mt_gic_v3.c + +PLAT_INCLUDES += -I${LOCAL_DIR} + +$(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 946ac0413..c09139cf1 100644 --- a/plat/mediatek/include/mt8188/platform_def.h +++ b/plat/mediatek/include/mt8188/platform_def.h @@ -25,6 +25,13 @@ #define UART0_BASE (IO_PHYS + 0x01002000) #define UART_BAUDRATE (115200) +/******************************************************************************* + * GIC-600 & interrupt handling related constants + ******************************************************************************/ +/* Base MTK_platform compatible GIC memory map */ +#define BASE_GICD_BASE (MT_GIC_BASE) +#define MT_GIC_RDIST_BASE (MT_GIC_BASE + 0x40000) + /******************************************************************************* * System counter frequency related constants ******************************************************************************/ diff --git a/plat/mediatek/mt8188/platform.mk b/plat/mediatek/mt8188/platform.mk index 08cebf036..82c4ce138 100644 --- a/plat/mediatek/mt8188/platform.mk +++ b/plat/mediatek/mt8188/platform.mk @@ -22,6 +22,7 @@ PLAT_INCLUDES := -I${MTK_PLAT}/common \ MODULES-y += $(MTK_PLAT)/common MODULES-y += $(MTK_PLAT)/lib/mtk_init MODULES-y += $(MTK_PLAT)/lib/pm +MODULES-y += $(MTK_PLAT)/drivers/gic600 MODULES-y += $(MTK_PLAT)/drivers/timer PLAT_BL_COMMON_SOURCES := common/desc_image_load.c \ -- 2.39.5