[PATCH 2/2] HAB: extend fuse information with i.MX8M
Ahmad Fatoum
a.fatoum at pengutronix.de
Mon Oct 2 02:20:43 PDT 2023
From: Rouven Czerwinski <r.czerwinski at pengutronix.de>
The i.MX8M family of processors moved the SEC_CONFIG_1 fuse to a
different location. Extend the hab driver with the new location and take
care of the DIR_BT_DIS fuse which only needs to be burned on i.MX8MQ.
Signed-off-by: Rouven Czerwinski <r.czerwinski at pengutronix.de>
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
drivers/hab/hab.c | 32 +++++++++++++++++++++++++++-----
1 file changed, 27 insertions(+), 5 deletions(-)
diff --git a/drivers/hab/hab.c b/drivers/hab/hab.c
index aa848979b467..ee402352f243 100644
--- a/drivers/hab/hab.c
+++ b/drivers/hab/hab.c
@@ -150,23 +150,45 @@ static int imx_hab_permanent_write_enable_ocotp(int enable)
return imx_ocotp_permanent_write(enable);
}
+static uint32_t get_sec_config_fuse(void) {
+ if (cpu_is_mx6()) {
+ return OCOTP_SEC_CONFIG_1;
+ } else {
+ return MX8M_OCOTP_SEC_CONFIG_1;
+ }
+}
+
static int imx_hab_lockdown_device_ocotp(void)
{
int ret;
+ uint32_t dis_fuse;
+ uint32_t sec_fuse;
- ret = imx_ocotp_write_field(OCOTP_DIR_BT_DIS, 1);
- if (ret < 0)
- return ret;
+ if (cpu_is_mx6() || cpu_is_mx8mq()) {
+ if (cpu_is_mx6()) {
+ dis_fuse = OCOTP_DIR_BT_DIS;
+ } else {
+ dis_fuse = MX8MQ_OCOTP_DIR_BT_DIS;
+ }
+ ret = imx_ocotp_write_field(dis_fuse, 1);
+ if (ret < 0)
+ return ret;
+ }
- return imx_ocotp_write_field(OCOTP_SEC_CONFIG_1, 1);
+ sec_fuse = get_sec_config_fuse();
+
+ return imx_ocotp_write_field(sec_fuse, 1);
}
static int imx_hab_device_locked_down_ocotp(void)
{
int ret;
+ uint32_t fuse;
unsigned int v;
- ret = imx_ocotp_read_field(OCOTP_SEC_CONFIG_1, &v);
+ fuse = get_sec_config_fuse();
+
+ ret = imx_ocotp_read_field(fuse, &v);
if (ret < 0)
return ret;
--
2.39.2
More information about the barebox
mailing list