fix(intel): bit-wise configuration flag handling
Change configuration type handling to bit-wise flag. This is to align
with Linux's FPGA Manager definitions and promotes better compatibility.
Signed-off-by: Abdul Halim, Muhammad Hadi Asyrafi <muhammad.hadi.asyrafi.abdul.halim@intel.com>
Signed-off-by: Jit Loon Lim <jit.loon.lim@intel.com>
Signed-off-by: Sieu Mun Tang <sieu.mun.tang@intel.com>
Change-Id: I5aaf91d3fec538fe3f4fe8395d9adb47ec969434
diff --git a/plat/intel/soc/common/socfpga_sip_svc.c b/plat/intel/soc/common/socfpga_sip_svc.c
index 77b91b2..56a88ab 100644
--- a/plat/intel/soc/common/socfpga_sip_svc.c
+++ b/plat/intel/soc/common/socfpga_sip_svc.c
@@ -23,7 +23,7 @@
static int read_block, max_blocks;
static uint32_t send_id, rcv_id;
static uint32_t bytes_per_block, blocks_submitted;
-static bool is_full_reconfig;
+static bool bridge_disable;
/* RSU static variables */
static uint32_t rsu_dcmf_ver[4] = {0};
@@ -102,10 +102,9 @@
return INTEL_SIP_SMC_STATUS_ERROR;
}
- if (query_type != 1) {
- /* full reconfiguration */
- if (is_full_reconfig)
- socfpga_bridges_enable(); /* Enable bridge */
+ if (bridge_disable) {
+ socfpga_bridges_enable(); /* Enable bridge */
+ bridge_disable = false;
}
return INTEL_SIP_SMC_STATUS_OK;
@@ -191,7 +190,7 @@
return status;
}
-static int intel_fpga_config_start(uint32_t type)
+static int intel_fpga_config_start(uint32_t flag)
{
uint32_t argument = 0x1;
uint32_t response[3];
@@ -199,8 +198,13 @@
unsigned int size = 0;
unsigned int resp_len = ARRAY_SIZE(response);
- if ((config_type)type == FULL_CONFIG) {
- is_full_reconfig = true;
+ if (!CONFIG_TEST_FLAG(flag, PARTIAL_CONFIG)) {
+ bridge_disable = true;
+ }
+
+ if (CONFIG_TEST_FLAG(flag, AUTHENTICATION)) {
+ size = 1;
+ bridge_disable = false;
}
mailbox_clear_response();
@@ -212,6 +216,7 @@
CMD_CASUAL, response, &resp_len);
if (status < 0) {
+ bridge_disable = false;
return INTEL_SIP_SMC_STATUS_ERROR;
}
@@ -232,9 +237,8 @@
read_block = 0;
current_buffer = 0;
- /* full reconfiguration */
- if (is_full_reconfig) {
- /* Disable bridge */
+ /* Disable bridge on full reconfiguration */
+ if (bridge_disable) {
socfpga_bridges_disable();
}