bdk: smmu: reset heap on disable
And rename domain init/deinit
This commit is contained in:
@@ -156,6 +156,7 @@ void smmu_disable()
|
|||||||
smmu_enable_payload[SMMU_PAYLOAD_EN_SHIFT] = SMMU_PAYLOAD_EN_SET;
|
smmu_enable_payload[SMMU_PAYLOAD_EN_SHIFT] = SMMU_PAYLOAD_EN_SET;
|
||||||
|
|
||||||
smmu_enabled = false;
|
smmu_enabled = false;
|
||||||
|
smmu_heap = (void *)SMMU_HEAP_ADDR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void smmu_reset_heap()
|
void smmu_reset_heap()
|
||||||
@@ -163,7 +164,7 @@ void smmu_reset_heap()
|
|||||||
smmu_heap = (void *)SMMU_HEAP_ADDR;
|
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();
|
void *ptb = _smmu_pdir_alloc();
|
||||||
|
|
||||||
@@ -178,7 +179,7 @@ void *smmu_init_domain(u32 dev_base, u32 asid)
|
|||||||
return ptb;
|
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_ASID) = asid;
|
||||||
MC(MC_SMMU_PTB_DATA) = 0;
|
MC(MC_SMMU_PTB_DATA) = 0;
|
||||||
|
|||||||
@@ -15,11 +15,10 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <utils/types.h>
|
|
||||||
|
|
||||||
#ifndef _SMMU_H_
|
#ifndef _SMMU_H_
|
||||||
#define _SMMU_H_
|
#define _SMMU_H_
|
||||||
|
|
||||||
|
#include <utils/types.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#define MC_SMMU_AVPC_ASID 0x23C
|
#define MC_SMMU_AVPC_ASID 0x23C
|
||||||
@@ -68,8 +67,8 @@ void smmu_init();
|
|||||||
void smmu_enable();
|
void smmu_enable();
|
||||||
void smmu_disable();
|
void smmu_disable();
|
||||||
void smmu_reset_heap();
|
void smmu_reset_heap();
|
||||||
void *smmu_init_domain(u32 dev_base, u32 asid);
|
void *smmu_domain_init(u32 dev_base, u32 asid);
|
||||||
void smmu_deinit_domain(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_domain_bypass(u32 dev_base, bool bypass);
|
||||||
void smmu_map(void *ptb, u32 iova, u64 iopa, u32 pages, u32 attr);
|
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);
|
void smmu_map_huge(void *ptb, u32 iova, u64 iopa, u32 regions, u32 attr);
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ int tsec_query(void *tsec_keys, tsec_ctxt_t *tsec_ctxt)
|
|||||||
if (type == TSEC_FW_TYPE_EMU)
|
if (type == TSEC_FW_TYPE_EMU)
|
||||||
{
|
{
|
||||||
// Init SMMU translation for TSEC.
|
// 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();
|
smmu_init();
|
||||||
|
|
||||||
// Enable SMMU.
|
// Enable SMMU.
|
||||||
@@ -230,7 +230,7 @@ int tsec_query(void *tsec_keys, tsec_ctxt_t *tsec_ctxt)
|
|||||||
if (kidx != 8)
|
if (kidx != 8)
|
||||||
{
|
{
|
||||||
res = -6;
|
res = -6;
|
||||||
smmu_deinit_domain(MC_SMMU_TSEC_ASID, 1);
|
smmu_domain_deinit(MC_SMMU_TSEC_ASID, 1);
|
||||||
|
|
||||||
goto out_free;
|
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_keys, &key, 0x20);
|
||||||
memcpy(tsec_ctxt->pkg1, iram, 0x30000);
|
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++)
|
// for (int i = 0; i < kidx; i++)
|
||||||
// gfx_printf("key %08X\n", key[i]);
|
// gfx_printf("key %08X\n", key[i]);
|
||||||
|
|||||||
Reference in New Issue
Block a user