On Mon, Oct 02, 2023 at 11:20:43AM +0200, Ahmad Fatoum wrote: > From: Rouven Czerwinski <r.czerwinski@xxxxxxxxxxxxxx> > > 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@xxxxxxxxxxxxxx> > Signed-off-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx> > --- > 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) { The opening brace should be on the next line. > + if (cpu_is_mx6()) { > + return OCOTP_SEC_CONFIG_1; > + } else { > + return MX8M_OCOTP_SEC_CONFIG_1; > + } > +} Given that the i.MX8M defines have a SoC prefix I would find it more natural to test with if (cpu_is_mx8m()) instead of if (cpu_is_mx6()). > + > 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()) { Right now we only support i.MX6 and i.MX8MQ, so this is always true. Have you considered creating a i.MX8MQ and a i.MX6 specific struct imx_hab_ops {} entry? Given the amount of if(cpu_is_*()) expressions the result may look cleaner. BTW struct imx_hab_ops has a init() function pointer which seems unused. Could you remove it along the way? Sascha -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |