I've developed few custom boards based around IMX6Q processor and ran into a strange problem when getting the board up !
1. First the board cannot pass DDR_Stress_Test (V2.7) for calibration and always ends up reporting a DCD_Write_Failed error (MR value - 0004, DCD Verification un-ticked). But after tweaking a bit I found out that the issue was caused by CCM_CGRx register values. The initial DDR script is meant to write reset values to those registers when DDR calibration starts (via OTG, Boot mode switches) :
setmem /32 0x020c4068 = 0xffffffff
setmem /32 0x020c406c = 0xffffffff
setmem /32 0x020c4070 = 0xffffffff
setmem /32 0x020c4074 = 0xffffffff
setmem /32 0x020c4078 = 0xffffffff
setmem /32 0x020c407c = 0xffffffff
setmem /32 0x020c4080 = 0xffffffff // CCM_CCGR6
setmem /32 0x020c4084 = 0xffffffff
For some reason, the highlighted register write cannot be performed and this seemed to be the issue for DCD_Write_Failed. After commenting this and also after lowering the ARM_Speed I was able to do the calibration. However even manual write to CCM_CCGR6 through Stress_Tester is not successful. This can be performed in some of the Sabre Reference boards though ! But when reading the address in Stress_Tester, it gives the value of 0xFFFF0003 ! The DDR calibration result is shown below (5th Run) :
2. After updating the u-boot with above calibrated values, I successfully burnt the serial flash and got the board to boot, but at some point of the boot process, kernel starts to hang giving a kernel panic. I am using Yocto Krogoth version and kernel 4.1.15 ! The panic message is reproducible :
[Bash] Kernel Panic - Pastebin.com (Showing two instances of kernel panic)
3. The external crystal oscillator generates 24MHz for XTAL frequency.
So does this look like an issue of clocking of the system ? Why accessing CCM_CCGR6 is restricted, although its address is valid under serial mode DCD address range ? Further could this be due to a faulty chip ?
Thanks in Advance