Is it necessary to set efuse_prog_supply_gate in order to blow OTP?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Is it necessary to set efuse_prog_supply_gate in order to blow OTP?

1,221 Views
george
Senior Contributor II

Dear All,

 

We set CCM_CGPR [ efuse_prog_supply_gate ] bit, in order to blow OTP.

However, It seems that even unset can blow OTP.

 

We can see it set in SDK for i.MX6.

But, we cannot find that it is set in u-boot and linux-kernel source code.

 

Possibly, is this bit unnecessary in order to blow efuse on i.MX6?

Please let me know the detailed function for this bit in i.MX6.

 

Best Regards,

George

 

P.S. If the eFUSE values are reload to shadow registers, with this bit set, we will get an incorrect value in some areas.

Original Attachment has been moved to: incorrect_shadow_register.txt.zip

Original Attachment has been moved to: can_blow_also_with_unset_supply_gate.txt.zip

0 Kudos
5 Replies

748 Views
jamesbone
NXP TechSupport
NXP TechSupport

You may use U-boot to work with the fuses, assuming VDD_FUSE is

proper for writing. Below is IIM command  help of U-boot.

U-Boot > help iim

iim - IIM sub system

Usage:

iim Warning: all numbers in parameter are in hex format!

iim read <bank> <row>   - Read some fuses

iim read fecmac - Read FEC Mac address

iim blow <bank> <row> <value>   - Blow some fuses

iim blow fecmac <0x##:0x##:0x##:0x##:0x##:0x##>- Blow FEC Mac address MX53-LOCO

U-Boot >

0 Kudos

748 Views
george
Senior Contributor II

Dear James,

SDK differs from u-boot and linux why.

We need to get to know which is correct.

That is because it is probably related to product quality.

Is it necessary to set efuse_prog_supply_gate bit in order to blow eFUSE?

Best Regards,

George

0 Kudos

747 Views
jamesbone
NXP TechSupport
NXP TechSupport

AS I mention in my first intervention, you need  to have the efuse_prog_supply_gate, since this enables the internal voltage of 2.8v required to burn the fuses so this are the steps to follow:

1- Make sure that VDD_FUSE is at 3-3.3V

2 - Enable fuse programming by setting the EFUSE_PROG_SUPPLY_GATE bit.

3 - Make sure that the clock to the IIM is enabled, CCM_CCGR0[31:30).

4 - For reading follow the reading instructions in the IIM chapter. 

5 - For writing follow the writing instructions in the IIM chapter.

0 Kudos

748 Views
george
Senior Contributor II

Dear James,

Thank you for the reply.

Possibly my description was not enough.

We are using i.MX6.

I checked the iim command which you say.

It is in the newest yocto environment.

u-boot-imx/2014.04-r0/git/drivers/misc/fsl_iim.c :

  98

  99 #if !defined(CONFIG_MX51) && !defined(CONFIG_MX53)

100 #define enable_efuse_prog_supply(enable)

101 #endif

102

  :

236

237 int fuse_prog(u32 bank, u32 word, u32 val)

238 {

239        struct fsl_iim *regs;

240        u32 bit;

241        int ret;

242

243        ret = prepare_write(&regs, bank, word, val, __func__);

244        if (ret)

245                return ret;

246

247        enable_efuse_prog_supply(1);

248        for (bit = 0; val; bit++, val >>= 1)

249                if (val & 0x01) {

250                        ret = prog_bit(regs, bank, word, bit);

251                        if (ret) {

252                                enable_efuse_prog_supply(0);

253                                return ret;

254                        }

255                }

256        enable_efuse_prog_supply(0);

257

258        return 0;

259 }

260

According to this description, in i.MX6, it seems that efuse_prog_supply_gate bit is not changed.

*By #define in line 100, enable_efuse_prog_supply(x) replaces the NULL character.

In i.MX51 or i.MX53, The enable_efuse_prog_supply(x) is declared in u-boot-imx/2014.04-r0/git/arch/arm/cpu/armv7/mx5/clock.c.

In i.MX6, The enable_efuse_prog_supply(x) seems not to declare it other than above #define.

Because we have much inconsistency (the answer from you is included), we wish to know which is correct.

Please help us for a while more.

Best Regards,

George

0 Kudos

748 Views
george
Senior Contributor II

Dear jamesbone,

I was waiting for someone to post here.

Thank you for the reply.

We know that u-boot has a command for burning eFUSEs.

However, my customer's bootloader and OS are their original.

Also in a manufacturing process, they have to use it, in order to burn eFUSEs.

We wrote the program at first based on SDK.

However, because the behavior was doubtful, we referred to u-boot next.

It seems that however, both are different.

Therefore, we do not see the rightness of using set efuse_prog_supply_gate bit.

Can you investigate about this?

Best Regards,

George

0 Kudos