Thanks everyone for answering,
Unfortunately, the solutions didn't work for me.
I've done some research and found a workaround (and, I think, the problem).
I found that the u-boot sets the various parent clocks before boot, but the kernel don't overwrite this setting (the specification in clk-imx6q.c doesn't apply).
Specifically, testing with devmem2 after boot :
CCM_CS2CDR (0x20C_402C) -> 0x007206C1 //MMDC_CH1 enabled on LDB_DI0_CLK_SEL)
After recompiling the uboot, setting manually the parent to PLL5_VIDEO, the issue disappear, and the kernel manages to control the PLL to the correct frequency.
I've added in the uboot platform file (board/freescale/mx6sabresd/mx6sabresd.c
/* Turn on LDB0,IPU DI0 clocks */
reg = __raw_readl(&mxc_ccm->CCGR3);
reg |= MXC_CCM_CCGR3_LDB_DI0_MASK;
writel(reg, &mxc_ccm->CCGR3);
/* set LDB0 clk select to 000 (pll5) */
reg = readl(&mxc_ccm->cs2cdr);
reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK);
reg |= (0 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET);
writel(reg, &mxc_ccm->cs2cdr);
/* LDB clock div by 7 */
reg = readl(&mxc_ccm->cscmr2);
reg |= MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV;
writel(reg, &mxc_ccm->cscmr2);
/* derive ipu1_di0_clk_root clock from ldb_di0_clk */
reg = readl(&mxc_ccm->chsccdr);
reg |= (CHSCCDR_CLK_SEL_LDB_DI0
<< MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
writel(reg, &mxc_ccm->chsccdr);
After boot:
CCM_CS2CDR (0x20C_402C) -> 0x007200C1 //PLL5_CLK enabled on LDB_DI0_CLK_SEL
Maybe the kernel fails to write the registers in the initialization process?
Thanks again, - ec