ZHCABB2 June 2021 DRA821U , DRA829J , DRA829V , TDA4VM , TDA4VM-Q1
创建一个包含条目的表,其中每个条目代表一个防火墙区域。这种格式与 SysConfig 工具使用的 .c 输出格式相同。下面的示例为 A72 主防火墙创建了三个区域。
struct ti_sci_msg_fwl_region {
uint16_t fwl_id;
uint16_t region;
uint32_t n_permission_regs;
uint32_t control;
uint32_t permissions[FWL_MAX_PRIVID_SLOTS];
uint64_t start_address;
uint64_t end_address;
} __attribute__((__packed__));
void J721E_Set_Firewall(uint32_t isBuildHs)
{
int32_t status = CSL_EFAIL;
struct ti_sci_msg_fwl_region j721e_fwl_data[] = {
/* compute_cluster Master firewall - background region 0 */
{
.fwl_id = CSL_MSTR_FW_A72SS0_CORE0_CPU_0_CPU_0_MSMC_ID,
.region = 0,
.n_permission_regs = 1,
.control = 0x30A,
.start_address = 0x00000000,
.end_address = 0xFFFFFFFFF,
.permissions = { 0x1FFFF }, // PrivId 1U
},
/* compute_cluster Master firewall - region 1 */
{
.fwl_id = CSL_MSTR_FW_A72SS0_CORE0_CPU_0_CPU_0_MSMC_ID,
.region = 1,
.n_permission_regs = 1,
.control = 0x20A,
.start_address = 0xa0000000,
.end_address = 0xa8ffffff,
.permissions = { 0x10000 }, // PrivId 1U
},
/* compute_cluster Master firewall - region 2 */
{
.fwl_id = CSL_MSTR_FW_A72SS0_CORE0_CPU_0_CPU_0_MSMC_ID,
.region = 2,
.n_permission_regs = 1,
.control = 0x20A,
.start_address = 0xce000000,
.end_address = 0xfbffffff,
.permissions = { 0x10000 }, // PrivId 1U
},
};