aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/soc/intel/common/block/cse/cse_lite.c48
1 files changed, 24 insertions, 24 deletions
diff --git a/src/soc/intel/common/block/cse/cse_lite.c b/src/soc/intel/common/block/cse/cse_lite.c
index 074d8bdf4a..8a6ff8eee9 100644
--- a/src/soc/intel/common/block/cse/cse_lite.c
+++ b/src/soc/intel/common/block/cse/cse_lite.c
@@ -292,7 +292,7 @@ static enum cb_err cse_get_bp_info(struct get_bp_info_rsp *bp_info_rsp)
* This function must be used before EOP.
* Returns false on failure and true on success.
*/
-static bool cse_set_next_boot_partition(enum boot_partition_id bp)
+static enum cb_err cse_set_next_boot_partition(enum boot_partition_id bp)
{
struct set_boot_partition_info_req {
struct mkhi_hdr hdr;
@@ -309,14 +309,14 @@ static bool cse_set_next_boot_partition(enum boot_partition_id bp)
if (bp != RO && bp != RW) {
printk(BIOS_ERR, "cse_lite: Incorrect partition id(%d) is provided", bp);
- return false;
+ return CB_ERR_ARG;
}
printk(BIOS_INFO, "cse_lite: Set Boot Partition Info Command (%s)\n", GET_BP_STR(bp));
if (!cse_is_bp_cmd_info_possible()) {
printk(BIOS_ERR, "cse_lite: CSE does not meet prerequisites\n");
- return false;
+ return CB_ERR;
}
struct mkhi_hdr switch_resp;
@@ -324,18 +324,18 @@ static bool cse_set_next_boot_partition(enum boot_partition_id bp)
if (heci_send_receive(&switch_req, sizeof(switch_req), &switch_resp, &sw_resp_sz,
HECI_MKHI_ADDR))
- return false;
+ return CB_ERR;
if (switch_resp.result) {
printk(BIOS_ERR, "cse_lite: Set Boot Partition Info Response Failed: %d\n",
switch_resp.result);
- return false;
+ return CB_ERR;
}
- return true;
+ return CB_SUCCESS;
}
-static bool cse_data_clear_request(const struct cse_bp_info *cse_bp_info)
+static enum cb_err cse_data_clear_request(const struct cse_bp_info *cse_bp_info)
{
struct data_clr_request {
struct mkhi_hdr hdr;
@@ -351,7 +351,7 @@ static bool cse_data_clear_request(const struct cse_bp_info *cse_bp_info)
if (!cse_is_hfs1_cws_normal() || !cse_is_hfs1_com_soft_temp_disable() ||
cse_get_current_bp(cse_bp_info) != RO) {
printk(BIOS_ERR, "cse_lite: CSE doesn't meet DATA CLEAR cmd prerequisites\n");
- return false;
+ return CB_ERR;
}
printk(BIOS_DEBUG, "cse_lite: Sending DATA CLEAR HECI command\n");
@@ -361,16 +361,16 @@ static bool cse_data_clear_request(const struct cse_bp_info *cse_bp_info)
if (heci_send_receive(&data_clr_rq, sizeof(data_clr_rq), &data_clr_rsp,
&data_clr_rsp_sz, HECI_MKHI_ADDR)) {
- return false;
+ return CB_ERR;
}
if (data_clr_rsp.result) {
printk(BIOS_ERR, "cse_lite: CSE DATA CLEAR command response failed: %d\n",
data_clr_rsp.result);
- return false;
+ return CB_ERR;
}
- return true;
+ return CB_SUCCESS;
}
__weak void cse_board_reset(void)
@@ -379,10 +379,10 @@ __weak void cse_board_reset(void)
}
/* Set the CSE's next boot partition and issues system reset */
-static bool cse_set_and_boot_from_next_bp(enum boot_partition_id bp)
+static enum cb_err cse_set_and_boot_from_next_bp(enum boot_partition_id bp)
{
- if (!cse_set_next_boot_partition(bp))
- return false;
+ if (cse_set_next_boot_partition(bp) != CB_SUCCESS)
+ return CB_ERR;
/* Allow the board to perform a reset for CSE RO<->RW jump */
cse_board_reset();
@@ -393,13 +393,13 @@ static bool cse_set_and_boot_from_next_bp(enum boot_partition_id bp)
die("cse_lite: Failed to reset the system\n");
/* Control never reaches here */
- return false;
+ return CB_ERR;
}
-static bool cse_boot_to_rw(const struct cse_bp_info *cse_bp_info)
+static enum cb_err cse_boot_to_rw(const struct cse_bp_info *cse_bp_info)
{
if (cse_get_current_bp(cse_bp_info) == RW)
- return true;
+ return CB_SUCCESS;
return cse_set_and_boot_from_next_bp(RW);
}
@@ -417,7 +417,7 @@ static bool cse_is_rw_dp_valid(const struct cse_bp_info *cse_bp_info)
* It returns true if RW partition doesn't indicate BP_STATUS_DATA_FAILURE
* otherwise false if any operation fails.
*/
-static bool cse_fix_data_failure_err(const struct cse_bp_info *cse_bp_info)
+static enum cb_err cse_fix_data_failure_err(const struct cse_bp_info *cse_bp_info)
{
/*
* If RW partition status indicates BP_STATUS_DATA_FAILURE,
@@ -426,10 +426,10 @@ static bool cse_fix_data_failure_err(const struct cse_bp_info *cse_bp_info)
* - Issue GLOBAL RESET HECI command.
*/
if (cse_is_rw_dp_valid(cse_bp_info))
- return true;
+ return CB_SUCCESS;
- if (!cse_data_clear_request(cse_bp_info))
- return false;
+ if (cse_data_clear_request(cse_bp_info) != CB_SUCCESS)
+ return CB_ERR;
return cse_boot_to_rw(cse_bp_info);
}
@@ -732,7 +732,7 @@ static bool cse_prep_for_rw_update(const struct cse_bp_info *cse_bp_info,
return false;
if ((status == CSE_UPDATE_DOWNGRADE) || (status == CSE_UPDATE_CORRUPTED)) {
- if (!cse_data_clear_request(cse_bp_info)) {
+ if (cse_data_clear_request(cse_bp_info) != CB_SUCCESS) {
printk(BIOS_ERR, "cse_lite: CSE data clear failed!\n");
return false;
}
@@ -1119,7 +1119,7 @@ void cse_fw_sync(void)
return;
}
- if (!cse_fix_data_failure_err(&cse_bp_info.bp_info))
+ if (cse_fix_data_failure_err(&cse_bp_info.bp_info) != CB_SUCCESS)
cse_trigger_vboot_recovery(CSE_LITE_SKU_DATA_WIPE_ERROR);
/*
@@ -1140,7 +1140,7 @@ void cse_fw_sync(void)
if (!cse_is_rw_bp_status_valid(&cse_bp_info.bp_info))
cse_trigger_vboot_recovery(CSE_LITE_SKU_RW_JUMP_ERROR);
- if (!cse_boot_to_rw(&cse_bp_info.bp_info)) {
+ if (cse_boot_to_rw(&cse_bp_info.bp_info) != CB_SUCCESS) {
printk(BIOS_ERR, "cse_lite: Failed to switch to RW\n");
cse_trigger_vboot_recovery(CSE_LITE_SKU_RW_SWITCH_ERROR);
}