Managed to do it by adding the following code in board_init_f:
/* Set the DDR clock to 297MHz as follows:
1 - Change PFD0 divider to generate 297MHz
2 - Change pre_periph2_clk_sel to source its clock from PFD0 (by default it takes it from PFD2)
See IMX6ULRM section 18.3
*/
u32 reg;
// Change PFD0 divider to 32
reg = readl(&mxc_ccm->analog_pfd_528);
reg &= ~0x3F;
reg |= 32U;
writel(reg, &mxc_ccm->analog_pfd_528);
// Toggle PFD0 clock gate
writel(1U << 7, &mxc_ccm->analog_pfd_528_tog);
writel(1U << 7, &mxc_ccm->analog_pfd_528_tog);
// Set PRE_PERIPH2_CLK source to PFD0
reg = readl(&mxc_ccm->cbcmr);
reg &= ~(3U << 21);
reg |= (2U << 21);
writel(reg, &mxc_ccm->cbcmr);
// Enable CLKO1 and CLKO2
// CLKO1 -> axi_clk_roo
// CLKO2 -> mmdc_clk_root
writel(0x05 | (7U << 4) | (1U << 7) |
(1U << 16) | (7U << 21) | (1U << 24), &mxc_ccm->ccosr);
iomux_v3_cfg_t const clkout_pads[] = {
MX6_PAD_JTAG_TMS__CCM_CLKO1 | MUX_PAD_CTRL(PAD_CTL_HYS | PAD_CTL_SPEED_MED | PAD_CTL_DSE_48ohm | PAD_CTL_SRE_FAST),
MX6_PAD_JTAG_TDO__CCM_CLKO2 | MUX_PAD_CTRL(PAD_CTL_HYS | PAD_CTL_SPEED_MED | PAD_CTL_DSE_48ohm | PAD_CTL_SRE_FAST),
};
imx_iomux_v3_setup_multiple_pads(clkout_pads, ARRAY_SIZE(clkout_pads));