bdk: smmu: reset heap on disable

And rename domain init/deinit
This commit is contained in:
CTCaer
2026-03-18 05:32:56 +02:00
parent 5328c21df6
commit c6c89ce0b1
3 changed files with 9 additions and 9 deletions

View File

@@ -156,6 +156,7 @@ void smmu_disable()
smmu_enable_payload[SMMU_PAYLOAD_EN_SHIFT] = SMMU_PAYLOAD_EN_SET;
smmu_enabled = false;
smmu_heap = (void *)SMMU_HEAP_ADDR;
}
void smmu_reset_heap()
@@ -163,7 +164,7 @@ void smmu_reset_heap()
smmu_heap = (void *)SMMU_HEAP_ADDR;
}
void *smmu_init_domain(u32 dev_base, u32 asid)
void *smmu_domain_init(u32 dev_base, u32 asid)
{
void *ptb = _smmu_pdir_alloc();
@@ -178,7 +179,7 @@ void *smmu_init_domain(u32 dev_base, u32 asid)
return ptb;
}
void smmu_deinit_domain(u32 dev_base, u32 asid)
void smmu_domain_deinit(u32 dev_base, u32 asid)
{
MC(MC_SMMU_PTB_ASID) = asid;
MC(MC_SMMU_PTB_DATA) = 0;

View File

@@ -15,11 +15,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <utils/types.h>
#ifndef _SMMU_H_
#define _SMMU_H_
#include <utils/types.h>
#include <assert.h>
#define MC_SMMU_AVPC_ASID 0x23C
@@ -68,8 +67,8 @@ void smmu_init();
void smmu_enable();
void smmu_disable();
void smmu_reset_heap();
void *smmu_init_domain(u32 dev_base, u32 asid);
void smmu_deinit_domain(u32 dev_base, u32 asid);
void *smmu_domain_init(u32 dev_base, u32 asid);
void smmu_domain_deinit(u32 dev_base, u32 asid);
void smmu_domain_bypass(u32 dev_base, bool bypass);
void smmu_map(void *ptb, u32 iova, u64 iopa, u32 pages, u32 attr);
void smmu_map_huge(void *ptb, u32 iova, u64 iopa, u32 regions, u32 attr);

View File

@@ -146,7 +146,7 @@ int tsec_query(void *tsec_keys, tsec_ctxt_t *tsec_ctxt)
if (type == TSEC_FW_TYPE_EMU)
{
// Init SMMU translation for TSEC.
ptb = smmu_init_domain(MC_SMMU_TSEC_ASID, 1);
ptb = smmu_domain_init(MC_SMMU_TSEC_ASID, 1);
smmu_init();
// Enable SMMU.
@@ -230,7 +230,7 @@ int tsec_query(void *tsec_keys, tsec_ctxt_t *tsec_ctxt)
if (kidx != 8)
{
res = -6;
smmu_deinit_domain(MC_SMMU_TSEC_ASID, 1);
smmu_domain_deinit(MC_SMMU_TSEC_ASID, 1);
goto out_free;
}
@@ -241,7 +241,7 @@ int tsec_query(void *tsec_keys, tsec_ctxt_t *tsec_ctxt)
memcpy(tsec_keys, &key, 0x20);
memcpy(tsec_ctxt->pkg1, iram, 0x30000);
smmu_deinit_domain(MC_SMMU_TSEC_ASID, 1);
smmu_domain_deinit(MC_SMMU_TSEC_ASID, 1);
// for (int i = 0; i < kidx; i++)
// gfx_printf("key %08X\n", key[i]);