diff --git a/src/soc/mediatek/mt8192/Makefile.inc b/src/soc/mediatek/mt8192/Makefile.inc index dc6548bf80..ccf571e760 100644 --- a/src/soc/mediatek/mt8192/Makefile.inc +++ b/src/soc/mediatek/mt8192/Makefile.inc @@ -2,6 +2,7 @@ ifeq ($(CONFIG_SOC_MEDIATEK_MT8192),y) bootblock-y += ../common/auxadc.c bootblock-y += bootblock.c +bootblock-y += eint_event.c bootblock-y += flash_controller.c bootblock-y += ../common/gpio.c gpio.c bootblock-y += ../common/i2c.c i2c.c diff --git a/src/soc/mediatek/mt8192/bootblock.c b/src/soc/mediatek/mt8192/bootblock.c index 5295422859..1c95d65c94 100644 --- a/src/soc/mediatek/mt8192/bootblock.c +++ b/src/soc/mediatek/mt8192/bootblock.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ #include +#include #include #include #include @@ -18,4 +19,5 @@ void bootblock_soc_init(void) mt6359p_init(); mt6315_init(); rtc_boot(); + unmask_eint_event_mask(); } diff --git a/src/soc/mediatek/mt8192/eint_event.c b/src/soc/mediatek/mt8192/eint_event.c new file mode 100644 index 0000000000..b3538a1ddf --- /dev/null +++ b/src/soc/mediatek/mt8192/eint_event.c @@ -0,0 +1,10 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include + +void unmask_eint_event_mask(void) +{ + int i; + for (i = 0; i < ARRAY_SIZE(mtk_eint_event->eint_event_mask_clr); i++) + write32(&mtk_eint_event->eint_event_mask_clr[i], 0xffffffff); +} diff --git a/src/soc/mediatek/mt8192/include/soc/eint_event.h b/src/soc/mediatek/mt8192/include/soc/eint_event.h new file mode 100644 index 0000000000..05d1fbcb0c --- /dev/null +++ b/src/soc/mediatek/mt8192/include/soc/eint_event.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef SOC_MEDIATEK_MT8192_EINT_EVENT_H +#define SOC_MEDIATEK_MT8192_EINT_EVENT_H + +#include +#include + +/* eint event mask cler register */ +struct eint_event_reg { + uint32_t eint_event_mask_clr[7]; +}; + +/* eint_base + 0x880 is eint_event_mask_clr register with access type W1C. */ +static struct eint_event_reg *const mtk_eint_event = (void *)(EINT_BASE + 0x880); + +/* unmask eint event, eint can wakeup by spm */ +void unmask_eint_event_mask(void); + +#endif