I am using the IMX6ull on a bare metal application. I would like to run the AHB_CLK_ROOT and the IPG_CLK_ROOT with a divder of 1. But if I set the divider to one it never comes out of the handshake while loop. The reference manual says the divider can be set to 1. Currently I have both set to a divider of 2.
Here is my code:
// Config AXI divide by 2, AHB divide by 2, IPG divide by 2, MMDC divide by 1
CCM_Type* base = CCM;
~(CCM_CBCDR_AXI_PODF_MASK | CCM_CBCDR_AHB_PODF_MASK | CCM_CBCDR_IPG_PODF_MASK |
(CCM_CBCDR_AXI_PODF(1) | CCM_CBCDR_AHB_PODF(1) | CCM_CBCDR_IPG_PODF(1) | CCM_CBCDR_FABRIC_MMDC_PODF(0));
// Wait for handshake process
while (CCM->CDHIPR &
(CCM_CDHIPR_PERIPH2_CLK_SEL_BUSY_MASK | CCM_CDHIPR_PERIPH_CLK_SEL_BUSY_MASK | CCM_CDHIPR_AXI_PODF_BUSY_MASK |
CCM_CDHIPR_AHB_PODF_BUSY_MASK | CCM_CDHIPR_MMDC_PODF_BUSY_MASK))
If I set CCM_CBCDR_AHB_PODF(0) | CCM_CBCDR_IPG_PODF(0) it will sit in the handshake while loop forever. Shouldn't I be able to set these to a diver of 1?