summaryrefslogtreecommitdiffstats
path: root/drivers/hab/habv4.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/hab/habv4.c')
-rw-r--r--drivers/hab/habv4.c46
1 files changed, 19 insertions, 27 deletions
diff --git a/drivers/hab/habv4.c b/drivers/hab/habv4.c
index 8521b88..a44a94b 100644
--- a/drivers/hab/habv4.c
+++ b/drivers/hab/habv4.c
@@ -99,29 +99,6 @@ struct habv4_rvt {
void (*failsafe)(void);
} __packed;
-static const struct habv4_rvt *__rvt;
-
-static inline const struct habv4_rvt *habv4_get_rvt(void)
-{
- if (__rvt)
- return __rvt;
-
- if (cpu_is_mx28())
- __rvt = (void *)HABV4_RVT_IMX28;
- else if (cpu_is_mx6())
- __rvt = (void *)HABV4_RVT_IMX6;
-
- if (__rvt->header.tag != HAB_TAG_RVT) {
- pr_err("ERROR - RVT not found!\n");
- return NULL;
- }
-
- pr_info("Found RVT v%d.%d\n", __rvt->header.par >> 4,
- __rvt->header.par & 0xf);
-
- return __rvt;
-}
-
static const char *habv4_get_status_str(enum hab_status status)
{
switch (status) {
@@ -197,9 +174,8 @@ static void habv4_display_event(uint8_t *data, uint32_t len)
printf("\n\n");
}
-int habv4_get_status(void)
+static int habv4_get_status(const struct habv4_rvt *rvt)
{
- const struct habv4_rvt *rvt = habv4_get_rvt();
uint8_t data[256];
uint32_t len = sizeof(data);
uint32_t index = 0;
@@ -207,8 +183,10 @@ int habv4_get_status(void)
enum hab_config config = 0x0;
enum hab_state state = 0x0;
- if (!rvt)
- return -ENODEV;
+ if (rvt->header.tag != HAB_TAG_RVT) {
+ pr_err("ERROR - RVT not found!\n");
+ return -EINVAL;
+ }
status = rvt->report_status(&config, &state);
pr_info("Status: %s (0x%02x)\n", habv4_get_status_str(status), status);
@@ -235,3 +213,17 @@ int habv4_get_status(void)
return -EPERM;
}
+
+int imx6_hab_get_status(void)
+{
+ const struct habv4_rvt *rvt = (void *)HABV4_RVT_IMX6;
+
+ return habv4_get_status(rvt);
+}
+
+int imx28_hab_get_status(void)
+{
+ const struct habv4_rvt *rvt = (void *)HABV4_RVT_IMX28;
+
+ return habv4_get_status(rvt);
+} \ No newline at end of file