Tool/software:
As I described in the previous post , i am setup the firewall on R5f from a u-boot/Linux configuration.
Based onthe last post I am using the function
#include "firewall.h"
int32_t t2930_sw500_startFirewall(void)
{
int32_t status = SystemP_SUCCESS;
status = t2930_sw500_setupFirewall_I2c();
status = t2930_sw500_setupFirewall_Spi();
status = t2930_sw500_setupFirewall_Adc();
status = t2930_sw500_setupFirewall_msram(MSRAM0_FWL_ID, REGION_MSRAM_ID, CONFIG_FW_MSRAM0_LOWER, CONFIG_FW_MSRAM0_UPPER);
status = t2930_sw500_setupFirewall_msram(MSRAM1_FWL_ID, REGION_MSRAM_ID, CONFIG_FW_MSRAM1_LOWER, CONFIG_FW_MSRAM1_UPPER);
status = t2930_sw500_setupFirewall_msram(MSRAM2_FWL_ID, REGION_MSRAM_ID, CONFIG_FW_MSRAM2_LOWER, CONFIG_FW_MSRAM2_UPPER);
status = t2930_sw500_setupFirewall_msram(MSRAM3_FWL_ID, REGION_MSRAM_ID, CONFIG_FW_MSRAM3_LOWER, CONFIG_FW_MSRAM3_UPPER);
status = t2930_sw500_setupFirewall_msram(MSRAM4_FWL_ID, REGION_MSRAM_ID, CONFIG_FW_MSRAM4_LOWER, CONFIG_FW_MSRAM4_UPPER);
status = t2930_sw500_setupFirewall_msram(MSRAM5_FWL_ID, REGION_MSRAM_ID, CONFIG_FW_MSRAM5_LOWER, CONFIG_FW_MSRAM5_UPPER);
status = t2930_sw500_setupFirewall_msram(MSRAM6_FWL_ID, REGION_MSRAM6_ID, CONFIG_FW_MSRAM6_LOWER, CONFIG_FW_MSRAM6_UPPER);
status = t2930_sw500_setupFirewall_msram(MSRAM7_FWL_ID, REGION_MSRAM_ID, CONFIG_FW_MSRAM7_LOWER, CONFIG_FW_MSRAM7_UPPER);
return status;
}
int32_t t2930_sw500_setupFirewall_Spi(void)
{
int32_t status = SystemP_FAILURE;
struct tisci_msg_fwl_set_firewall_region_req fwl_set_req;
struct tisci_msg_fwl_set_firewall_region_resp fwl_set_resp = { 0 };
fwl_set_req.fwl_id = SA2_UL0_FWL_ID;
fwl_set_req.region = REGION_MCSPI0_ID;
fwl_set_req.n_permission_regs = REGION_COUNT;
fwl_set_req.control = FWL_CONTROL_ENABLE;
fwl_set_req.permissions[0] = ((uint32_t) PRIVID_MAIN_0_R5_0_SECURE << 16) | ((FWL_PERM_SEC_MASK |
FWL_PERM_PRIV_MASK |
FWL_PERM_USER_MASK) & FWL_PERM_RW_ALL);
fwl_set_req.start_address = CONFIG_FW_MCSPI0_LOWER;
fwl_set_req.end_address = CONFIG_FW_MCSPI0_UPPER;
status = Sciclient_firewallSetRegion(&fwl_set_req, &fwl_set_resp, SystemP_TIMEOUT);
DebugP_log("firewall SPI %d\n", status);
return status;
}
int32_t t2930_sw500_setupFirewall_Adc(void)
{
int32_t status = SystemP_FAILURE;
struct tisci_msg_fwl_set_firewall_region_req fwl_set_req;
struct tisci_msg_fwl_set_firewall_region_resp fwl_set_resp = { 0 };
fwl_set_req.fwl_id = SA2_UL0_FWL_ID;
fwl_set_req.region = REGION_ADC_ID;
fwl_set_req.n_permission_regs = REGION_COUNT;
fwl_set_req.control = FWL_CONTROL_ENABLE;
fwl_set_req.permissions[0] = ((uint32_t) PRIVID_MAIN_0_R5_0_SECURE << 16) | ((FWL_PERM_SEC_MASK |
FWL_PERM_PRIV_MASK |
FWL_PERM_USER_MASK) & FWL_PERM_RW_ALL);
fwl_set_req.start_address = CONFIG_FW_ADC_FIFO_REGION0_LOWER;
fwl_set_req.end_address = CONFIG_FW_ADC_FIFO_REGION0_UPPER;
status = Sciclient_firewallSetRegion(&fwl_set_req, &fwl_set_resp, SystemP_TIMEOUT);
DebugP_log("firewall ADC %d\n", status);
return status;
}
int32_t t2930_sw500_setupFirewall_I2c(void)
{
int32_t status = SystemP_FAILURE;
struct tisci_msg_fwl_set_firewall_region_req fwl_set_req;
struct tisci_msg_fwl_set_firewall_region_resp fwl_set_resp = { 0 };
fwl_set_req.fwl_id = SA2_UL0_FWL_ID;
fwl_set_req.region = REGION_I2C1_ID;
fwl_set_req.n_permission_regs = REGION_COUNT;
fwl_set_req.control = FWL_CONTROL_ENABLE;
fwl_set_req.permissions[0] = ((uint32_t) PRIVID_MAIN_0_R5_0_SECURE << 16) | ((FWL_PERM_SEC_MASK |
FWL_PERM_PRIV_MASK |
FWL_PERM_USER_MASK) & FWL_PERM_RW_ALL);
fwl_set_req.start_address = CONFIG_FW_I2C1_LOWER;
fwl_set_req.end_address = CONFIG_FW_I2C1_UPPER;
status = Sciclient_firewallSetRegion(&fwl_set_req, &fwl_set_resp, SystemP_TIMEOUT);
DebugP_log("firewall I2C %d\n", status);
return status;
}
int32_t t2930_sw500_setupFirewall_msram (uint16_t fwl_id, uint16_t region_id, uint64_t start_address, uint64_t end_address)
{
int32_t status = SystemP_FAILURE;
struct tisci_msg_fwl_set_firewall_region_req fwl_set_req;
struct tisci_msg_fwl_set_firewall_region_resp fwl_set_resp = { 0 };
fwl_set_req.fwl_id = fwl_id;
fwl_set_req.region = region_id;
fwl_set_req.n_permission_regs = REGION_COUNT;
fwl_set_req.control = FWL_CONTROL_ENABLE;
fwl_set_req.permissions[0] = ((uint32_t) PRIVID_MAIN_0_R5_0_SECURE << 16) | ((FWL_PERM_SEC_MASK |
FWL_PERM_PRIV_MASK |
FWL_PERM_USER_MASK) & FWL_PERM_RW_ALL);
fwl_set_req.start_address = start_address;
fwl_set_req.end_address = end_address;
status = Sciclient_firewallSetRegion(&fwl_set_req, &fwl_set_resp, SystemP_TIMEOUT);
DebugP_log("firewall MSRAM id %d status %d\n", fwl_id, status);
return status;
}
[r5f0-0] 0.009262s : firewall SPI -1
[r5f0-0] 0.009392s : firewall ADC 0
[r5f0-0] 0.009504s : firewall MSRAM id 14 status 0
[r5f0-0] 0.009619s : firewall MSRAM id 15 status 0
[r5f0-0] 0.009738s : firewall MSRAM id 16 status 0
[r5f0-0] 0.009851s : firewall MSRAM id 19 status 0
[r5f0-0] 0.009962s : firewall MSRAM id 18 status 0
[r5f0-0] 0.010080s : firewall MSRAM id 17 status 0
[r5f0-0] 0.010201s : firewall MSRAM id 23 status 0
[r5f0-0] 0.010286s : firewall MSRAM id 24 status -1
