I have a custom board based on the imx6q pop with 2GB LPDDR2. The default configuration boots the device with the lpddr2 memory in 2x32 fixed mode. I now have a requirement to enable 4KB interleaving for the memory.
I want to be able to do this without hardware modification. I've tested/confirmed that by chaining (rework) the boot config pins I'm able to use the interleaving mode, but this is the least desired method.
I also know that I can blow the fuses with settings for interleaving, i'm leaving this option as a last resort.
Is there a way to enable this functionality entirely by some software mechanisms? Below are the options i'm wondering about now, in order of preference.
1 - Can I use some DCD configurations to enable interleaving? If so, would you have an example?
2 - How about OTP shadow registers? Is there some mechanism that'd allow me to modify and use the updated values to enable interleaving? I've seen in the reference manual that I can reload shadow registers but I'm not sure what this actually does, or if it's even applicable to what i'm trying to do.
3 - Use PERSIST_OVERRIDE_SBMR1 (SRC_GPR10[28]) after setting SRC_GPR9 to correct values for interleaving. This would require a WDOG reset so it's my least preferred of the software methods.
Please advise on best route.
Thanks