LDB clock disappear issue

cancel
Showing results for 
Search instead for 
Did you mean: 

LDB clock disappear issue

547 Views
shanxigjz
Contributor II

We are investigating the some phenomenon.
It's called the "white screen after power fluctuation test bug".
We tried to manually turn on/off power repeatedly in our lab, and we managed to reproduced the bug after about 2 hours of test. When the car kit screen becomes white screen, we measured the TW8836(LCD video processor:which is connected to i.MX6 LCD IF) dot clock and there is no signal on the clock line(we don't have high speed oscilloscope to measure the LDB clock). We guess this indicates that the LDB clock has stopped. If this is really the case, then we think at least the following reasons can make the LDB clock disappear: (1) the LDB clock source (PLL2 PFD0, ie. PLL_SYS PFD_528) has stopped; (2) the LDB has been disabled (3) the IPU DI has problem such that the LDB is starved to death.

For (2) it is unlikely since there is no decisive software logic can causing this randomly appearing phenomena;

For (3), we don't have any information about similar reported problems in the IPU driver in freescale BSP;

For (1) , We found that in the u-boot code provided by freescale BSP (u-boot-2009.08), there is a paragraph of description(\cpu\arm_cortexa8\mx6\generic.c, arch_cpu_init(), line 1102):
     /* Due to hardware limitation, on MX6Q we need to gate/ungate all PFDs
      * to make sure PFD is working right, otherwise, PFDs may
      * not output clock after reset, MX6DL and MX6SL have added 396M pfd
      * workaround in ROM code, as bus clock need it
      */
Would you please teach us what is the detail of this imx6 hardware limitation? Especially, in what operation condition this hardware limitation will cause PLL PFDs to stop outputting clock? And what is the software caution points in setting the PFD divisor?
FYI the code we used when setting the PLL2_PFD0 in uboot is like this:

/* PLL_SYS, PFD0 enable */

writel(0x80, ANATOP_BASE_ADDR + 0x104); // gate it at first

reg = readl(ANATOP_BASE_ADDR + 0x100);

reg &= ~0x0000003F;

reg |= 0x00000023;

writel(reg, ANATOP_BASE_ADDR + 0x100);

writel(0x80, ANATOP_BASE_ADDR + 0x108); // remove gating


    

0 Kudos
2 Replies

43 Views
fabio_estevam
NXP Employee
NXP Employee

Most likely it is the same issue that we fixed in the 3.10.17 GA kernel with the following commit:

http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/commit/?h=imx_3.10.17_1.0.1_ga&id=eecbe9...

0 Kudos

43 Views
igorpadykov
NXP TechSupport
NXP TechSupport

Hi Gao

very shortly: although the PFD errata ERR006282 (ROM code uses nonreset PFDs to

generate clocks, which may lead to random boot failures) has been resolved in

the latest silicon (i.MX6DQ Rev D /1.3), application should reset the PFDs before

any reprogramming or relocking. Also it may be useful to look at

EB790  Configuration of Phase Fractional Dividers

Best regards

chip

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos