This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Bad adpllSigmaDeltaDivider in am335x_clock_data.c

 Hi,

  .adpllSigmaDeltaDivider = {4,4,4,4},

is wrong, it should be

  4 << CM_WKUP_CM_CLKSEL_DPLL_PERIPH_DPLL_SD_DIV_SHIFT

because this value is OR'ed unshifted into adpllConfigReg in setClkMultDiv (clock.c):

  HWREG(adpllPtr->adpllConfigReg) = 
    (HWREG(adpllPtr->adpllConfigReg) & (~adpllPtr->adpllSigmaDeltaDividerMask)) |
    adpllPtr->adpllSigmaDeltaDivider[OPPSupported];

 

With a dpllDivider of 23 (0x17) occupying bits 0:7 this doesn't destroy the divider value since 0x17 | 0x4 == 0x17, but it should mean that the sigma-delta divider is not configured correctly.

(We use a 19.2 MHz external clock instead of a 24 MHz clock, hence we were bitten by this.)

Thanks,

Orjan