summaryrefslogtreecommitdiffstats
path: root/drivers/hab
diff options
context:
space:
mode:
authorMarc Kleine-Budde <mkl@pengutronix.de>2018-08-27 17:14:26 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2018-08-29 09:16:58 +0200
commit81e2b508e7857a1bc6ecf947bb523679e394edc5 (patch)
treeabb27d610cf17f73cd71415e84260a2bb32eb306 /drivers/hab
parent5ffad78c0dce0f389bc48dd5eb0015a62e40d7d2 (diff)
downloadbarebox-81e2b508e7857a1bc6ecf947bb523679e394edc5.tar.gz
barebox-81e2b508e7857a1bc6ecf947bb523679e394edc5.tar.xz
i.MX habv4: habv4_get_status(): display warning events, too
The current code only retrieves the HAB errors from the ROM. If there are HAB warnings during startup, the code throws this wrong error message. > HABv4: ERROR: Recompile with larger event data buffer (at least 36 bytes) The correct solution is to retrieve the warnings from the ROM, too. Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/hab')
-rw-r--r--drivers/hab/habv4.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/hab/habv4.c b/drivers/hab/habv4.c
index 4d2d377d08..74b5af2229 100644
--- a/drivers/hab/habv4.c
+++ b/drivers/hab/habv4.c
@@ -179,7 +179,7 @@ static void habv4_display_event(uint8_t *data, uint32_t len)
static int habv4_get_status(const struct habv4_rvt *rvt)
{
uint8_t data[256];
- uint32_t len = sizeof(data);
+ uint32_t len;
uint32_t index = 0;
enum hab_status status;
enum hab_config config = 0x0;
@@ -200,8 +200,19 @@ static int habv4_get_status(const struct habv4_rvt *rvt)
return 0;
}
+ len = sizeof(data);
+ while (rvt->report_event(HAB_STATUS_WARNING, index, data, &len) == HAB_STATUS_SUCCESS) {
+ pr_err("-------- HAB warning Event %d --------\n", index);
+ pr_err("event data:\n");
+
+ habv4_display_event(data, len);
+ len = sizeof(data);
+ index++;
+ }
+
+ len = sizeof(data);
while (rvt->report_event(HAB_STATUS_FAILURE, index, data, &len) == HAB_STATUS_SUCCESS) {
- pr_err("-------- HAB Event %d --------\n", index);
+ pr_err("-------- HAB failure Event %d --------\n", index);
pr_err("event data:\n");
habv4_display_event(data, len);
@@ -210,6 +221,7 @@ static int habv4_get_status(const struct habv4_rvt *rvt)
}
/* Check reason for stopping */
+ len = sizeof(data);
if (rvt->report_event(HAB_STATUS_ANY, index, NULL, &len) == HAB_STATUS_SUCCESS)
pr_err("ERROR: Recompile with larger event data buffer (at least %d bytes)\n\n", len);