[PATCH 11/13] misc: ele_api: Add Voltage change start and finish APIs

Peng Fan peng.fan at nxp.com
Sun Jan 11 13:46:19 CET 2026


Hi Primoz,

> Subject: Re: [PATCH 11/13] misc: ele_api: Add Voltage change start
> and finish APIs
> 
> Hi Peng,
> 
> On 8. 01. 26 12:06, Peng Fan (OSS) wrote:
> > From: Ye Li <ye.li at nxp.com>
> >
> > On GDET enabled part, need to call voltage change start and finish
> 
> Just a question, is this some special part or a regular i.MX93?

It is a special part.  Figure 1. Part number nomenclature in [1],
there is a special fuse char. "Full featured with GDET enabled", 

[1] https://www.nxp.com.cn/docs/en/data-sheet/IMX93AEC.pdf

Regards
Peng.

> 
> How or where do you enable Glitch detection?

The detection is done by Secure Enclave, it is confidential.

Thanks,
Peng.

> 
> Thanks,
> BR,
> Primoz
> 
> 
> > APIs when adjust the voltage more than 100mv. Otherwise GDET will
> be
> > triggered and system is reset
> >
> > Reviewed-by: Peng Fan <peng.fan at nxp.com>
> > Signed-off-by: Ye Li <ye.li at nxp.com>
> > Signed-off-by: Peng Fan <peng.fan at nxp.com>
> > ---
> >  arch/arm/include/asm/mach-imx/ele_api.h |  4 +++
> >  drivers/misc/imx_ele/ele_api.c          | 50
> +++++++++++++++++++++++++++++++++
> >  2 files changed, 54 insertions(+)
> >
> > diff --git a/arch/arm/include/asm/mach-imx/ele_api.h
> > b/arch/arm/include/asm/mach-imx/ele_api.h
> > index 64b243dcaaa..4e1afc42bd8 100644
> > --- a/arch/arm/include/asm/mach-imx/ele_api.h
> > +++ b/arch/arm/include/asm/mach-imx/ele_api.h
> > @@ -14,6 +14,8 @@
> >  #define ELE_PING_REQ (0x01)
> >  #define ELE_FW_AUTH_REQ (0x02)
> >  #define ELE_RESTART_RST_TIMER_REQ (0x04)
> > +#define ELE_VOLT_CHANGE_START_REQ (0x12) #define
> > +ELE_VOLT_CHANGE_FINISH_REQ (0x13)
> >  #define ELE_DUMP_DEBUG_BUFFER_REQ (0x21)  #define
> > ELE_OEM_CNTN_AUTH_REQ (0x87)  #define ELE_VERIFY_IMAGE_REQ
> (0x88) @@
> > -160,4 +162,6 @@ int ele_return_lifecycle_update(ulong
> signed_msg_blk,
> > u32 *response);  int ele_start_rng(void);  int
> > ele_write_shadow_fuse(u32 fuse_id, u32 fuse_val, u32 *response);
> int
> > ele_read_shadow_fuse(u32 fuse_id, u32 *fuse_val, u32 *response);
> > +int ele_volt_change_start_req(void);
> > +int ele_volt_change_finish_req(void);
> >  #endif
> > diff --git a/drivers/misc/imx_ele/ele_api.c
> > b/drivers/misc/imx_ele/ele_api.c index 661f70cf870..e7aee0fcef1
> 100644
> > --- a/drivers/misc/imx_ele/ele_api.c
> > +++ b/drivers/misc/imx_ele/ele_api.c
> > @@ -794,3 +794,53 @@ int ele_generate_dek_blob(u32 key_id, u32
> > src_paddr, u32 dst_paddr, u32 max_outp
> >
> >  	return ret;
> >  }
> > +
> > +int ele_volt_change_start_req(void)
> > +{
> > +	struct udevice *dev = gd->arch.ele_dev;
> > +	int size = sizeof(struct ele_msg);
> > +	struct ele_msg msg = {};
> > +	int ret;
> > +
> > +	if (!dev) {
> > +		printf("ele dev is not initialized\n");
> > +		return -ENODEV;
> > +	}
> > +
> > +	msg.version = ELE_VERSION;
> > +	msg.tag = ELE_CMD_TAG;
> > +	msg.size = 1;
> > +	msg.command = ELE_VOLT_CHANGE_START_REQ;
> > +
> > +	ret = misc_call(dev, false, &msg, size, &msg, size);
> > +	if (ret)
> > +		printf("Error: %s: ret %d, response 0x%x\n",
> > +		       __func__, ret, msg.data[0]);
> > +
> > +	return ret;
> > +}
> > +
> > +int ele_volt_change_finish_req(void)
> > +{
> > +	struct udevice *dev = gd->arch.ele_dev;
> > +	int size = sizeof(struct ele_msg);
> > +	struct ele_msg msg = {};
> > +	int ret;
> > +
> > +	if (!dev) {
> > +		printf("ele dev is not initialized\n");
> > +		return -ENODEV;
> > +	}
> > +
> > +	msg.version = ELE_VERSION;
> > +	msg.tag = ELE_CMD_TAG;
> > +	msg.size = 1;
> > +	msg.command = ELE_VOLT_CHANGE_FINISH_REQ;
> > +
> > +	ret = misc_call(dev, false, &msg, size, &msg, size);
> > +	if (ret)
> > +		printf("Error: %s: ret %d, response 0x%x\n",
> > +		       __func__, ret, msg.data[0]);
> > +
> > +	return ret;
> > +}
> >
> 
> --
> Primoz Fiser
> phone: +386-41-390-545
> email: primoz.fiser at norik.com
> --
> Norik systems d.o.o.
> Your embedded software partner
> Slovenia, EU
> phone: +386-41-540-545
> email: info at norik.com



More information about the U-Boot mailing list