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 @@ 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 @@ 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 @@ 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 @@ 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 diff --git a/include/hab.h b/include/hab.h index 411e995..818d7ca 100644 --- a/include/hab.h +++ b/include/hab.h @@ -19,9 +19,14 @@ #define __HABV4_H #ifdef CONFIG_HABV4 -int habv4_get_status(void); +int imx28_hab_get_status(void); +int imx6_hab_get_status(void); #else -static inline int habv4_get_status(void) +static inline int imx28_hab_get_status(void) +{ + return -EPERM; +} +static inline int imx6_hab_get_status(void) { return -EPERM; }