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

Primoz Fiser primoz.fiser at norik.com
Fri Jan 9 12:37:31 CET 2026


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?

How or where do you enable Glitch detection?

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