183f836c9SKarl Li /* 283f836c9SKarl Li * Copyright (c) 2024, MediaTek Inc. All rights reserved. 383f836c9SKarl Li * 483f836c9SKarl Li * SPDX-License-Identifier: BSD-3-Clause 583f836c9SKarl Li */ 683f836c9SKarl Li 783f836c9SKarl Li #ifndef APUSYS_RV_PWR_CTL_H 883f836c9SKarl Li #define APUSYS_RV_PWR_CTL_H 983f836c9SKarl Li 1083f836c9SKarl Li #include <platform_def.h> 1183f836c9SKarl Li 123ee4b2deSKarl Li #include "apusys_rv.h" 133ee4b2deSKarl Li 1483f836c9SKarl Li #define SUPPORT_APU_CLEAR_MBOX_DUMMY (1) 1583f836c9SKarl Li 1683f836c9SKarl Li enum apu_hw_sem_sys_id { 1783f836c9SKarl Li APU_HW_SEM_SYS_APU = 0UL, /* mbox0 */ 1883f836c9SKarl Li APU_HW_SEM_SYS_GZ = 1UL, /* mbox1 */ 1983f836c9SKarl Li APU_HW_SEM_SYS_SCP = 3UL, /* mbox3 */ 2083f836c9SKarl Li APU_HW_SEM_SYS_APMCU = 11UL, /* mbox11 */ 2183f836c9SKarl Li }; 2283f836c9SKarl Li 233ee4b2deSKarl Li int apusys_rv_pwr_ctrl(enum APU_PWR_OP op); 2483f836c9SKarl Li int rv_iommu_hw_sem_unlock(void); 2583f836c9SKarl Li int rv_iommu_hw_sem_trylock(void); 2683f836c9SKarl Li int apu_hw_sema_ctl(uint32_t sem_addr, uint8_t usr_bit, uint8_t ctl, uint32_t timeout, 2783f836c9SKarl Li uint8_t bypass); 2883f836c9SKarl Li 2983f836c9SKarl Li #define HW_SEM_TIMEOUT (300) /* 300 us */ 30*1ba50c33SChungying Lu #define HW_SEM_NO_WAIT (0) /* no wait */ 3183f836c9SKarl Li 3283f836c9SKarl Li /* APU MBOX */ 3383f836c9SKarl Li #define MBOX_WKUP_CFG (0x80) 3483f836c9SKarl Li #define MBOX_WKUP_MASK (0x84) 3583f836c9SKarl Li #define MBOX_FUNC_CFG (0xb0) 3683f836c9SKarl Li #define MBOX_DOMAIN_CFG (0xe0) 3783f836c9SKarl Li 3883f836c9SKarl Li #define MBOX_CTRL_LOCK BIT(0) 3983f836c9SKarl Li #define MBOX_NO_MPU_SHIFT (16) 4083f836c9SKarl Li #define MBOX_RC_SHIFT (24) 4183f836c9SKarl Li 4283f836c9SKarl Li #define MBOX_RX_NS_SHIFT (16) 4383f836c9SKarl Li #define MBOX_RX_DOMAIN_SHIFT (17) 4483f836c9SKarl Li #define MBOX_TX_NS_SHIFT (24) 4583f836c9SKarl Li #define MBOX_TX_DOMAIN_SHIFT (25) 4683f836c9SKarl Li 4783f836c9SKarl Li #define APU_REG_AO_GLUE_CONFG (APU_AO_CTRL + 0x20) 4883f836c9SKarl Li 4983f836c9SKarl Li #define ENABLE_INFRA_WA 5083f836c9SKarl Li 5183f836c9SKarl Li enum apu_infra_bit_id { 5283f836c9SKarl Li APU_INFRA_SYS_APMCU = 1UL, 5383f836c9SKarl Li APU_INFRA_SYS_GZ = 2UL, 5483f836c9SKarl Li APU_INFRA_SYS_SCP = 3UL, 5583f836c9SKarl Li }; 5683f836c9SKarl Li 5783f836c9SKarl Li #define APU_MBOX(i) (APU_MBOX0 + 0x10000 * i) 5883f836c9SKarl Li 5983f836c9SKarl Li #define APU_MBOX_FUNC_CFG(i) (APU_MBOX(i) + MBOX_FUNC_CFG) 6083f836c9SKarl Li #define APU_MBOX_DOMAIN_CFG(i) (APU_MBOX(i) + MBOX_DOMAIN_CFG) 6183f836c9SKarl Li #define APU_MBOX_WKUP_CFG(i) (APU_MBOX(i) + MBOX_WKUP_CFG) 6283f836c9SKarl Li 633ee4b2deSKarl Li enum apu_hw_sem_op { 643ee4b2deSKarl Li HW_SEM_PUT = 0, 653ee4b2deSKarl Li HW_SEM_GET = 1, 663ee4b2deSKarl Li }; 673ee4b2deSKarl Li 683ee4b2deSKarl Li #define HW_SEM_PUT_BIT_SHIFT (16) 6983f836c9SKarl Li 7083f836c9SKarl Li /* bypass mbox register Dump for secure master */ 7183f836c9SKarl Li #define APU_MBOX_DBG_EN (0x190f2380) 7283f836c9SKarl Li 7383f836c9SKarl Li /* apu_mbox register definition for mbox addr change*/ 7483f836c9SKarl Li #define APU_MBOX_SEMA0_CTRL (0x090) 7583f836c9SKarl Li #define APU_MBOX_SEMA0_RST (0x094) 7683f836c9SKarl Li #define APU_MBOX_SEMA0_STA (0x098) 7783f836c9SKarl Li #define APU_MBOX_SEMA1_CTRL (0x0A0) 7883f836c9SKarl Li #define APU_MBOX_SEMA1_RST (0x0A4) 7983f836c9SKarl Li #define APU_MBOX_SEMA1_STA (0x0A8) 8083f836c9SKarl Li #define APU_MBOX_DUMMY (0x040) 8183f836c9SKarl Li #define APU_MBOX_OFFSET(i) (0x10000 * i) 8283f836c9SKarl Li 8383f836c9SKarl Li /* apu infra workaround */ 8483f836c9SKarl Li #define APU_INFRA_DISABLE (APU_INFRA_BASE + 0xC18) 8583f836c9SKarl Li #define APU_INFRA_ENABLE (APU_INFRA_BASE + 0xC14) 8683f836c9SKarl Li #define APU_INFRA_STATUS (APU_INFRA_BASE + 0xC10) 873ee4b2deSKarl Li #define APU_INFRA_STATUS_MASK (0x1fffe) 8883f836c9SKarl Li #define APU_INFRA_HW_SEM (APUSYS_CE_BASE + 0xE00) 8983f836c9SKarl Li #define APU_RPC_STATUS (0x190f0044) 9083f836c9SKarl Li 913ee4b2deSKarl Li #define APU_INFRA_BIT_OFF (16) 923ee4b2deSKarl Li #define APU_RPC_STATUS_BIT BIT(0) 933ee4b2deSKarl Li 9483f836c9SKarl Li #endif /* APUSYS_RV_PWR_CTL_H */ 95