1 /* 2 * Copyright (c) 2023, MediaTek Inc. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <common/debug.h> 8 #include <lib/mmio.h> 9 #include "mt_spm_notifier.h" 10 #include "mt_spm_sspm_intc.h" 11 #include <platform_def.h> 12 13 #define MT_SPM_SSPM_MBOX_OFF(x) (SSPM_MBOX_3_BASE + x) 14 #define MT_SPM_MBOX(slot) MT_SPM_SSPM_MBOX_OFF((slot << 2UL)) 15 16 /* LOOKUP SSPM_MBOX_SPM_LP1 */ 17 #define SSPM_MBOX_SPM_LP_LOOKUP1 MT_SPM_MBOX(0) 18 /* LOOKUP SSPM_MBOX_SPM_LP2 */ 19 #define SSPM_MBOX_SPM_LP_LOOKUP2 MT_SPM_MBOX(1) 20 21 #define SSPM_MBOX_SPM_LP1 MT_SPM_MBOX(2) 22 #define SSPM_MBOX_SPM_LP2 MT_SPM_MBOX(3) 23 mt_spm_sspm_notify_u32(int type,unsigned int val)24int mt_spm_sspm_notify_u32(int type, unsigned int val) 25 { 26 switch (type) { 27 case MT_SPM_NOTIFY_LP_ENTER: 28 mmio_write_32(SSPM_MBOX_SPM_LP1, val); 29 DO_SPM_SSPM_LP_SUSPEND(); 30 break; 31 case MT_SPM_NOTIFY_LP_LEAVE: 32 mmio_write_32(SSPM_MBOX_SPM_LP1, val); 33 DO_SPM_SSPM_LP_RESUME(); 34 break; 35 default: 36 panic(); 37 break; 38 } 39 return 0; 40 } 41