proper defaults according TI are (MPU/DSP) 500/360 for OMAP3 and 600/520 for DM3730.
hmm, I was not aware that a stock "Ghz" Pandora already used overclocking, good to know. On the other hand, the overclocking probably only becomes an issue when the system is under constant load (
vs. spending most of the time in deep sleep) ? Or is it already the increased voltage that shortens the life span ?
I still don't know how to implement this opp/clock control thing.. Currently OPP and ARM clock is controlled by cpufreq driver, and /proc/pandora/cpu_*_max files are hacks to constrain how low or high cpufreq can go with OPP and CPU clock. Perhaps I should use the user selected DSP clock to further constrain how low cpufreq can go with OPPs, but then I need to know when DSP is turned on/off to not apply the constrain needlessly.
From what I understand, the problem is very similar to what is already done with the GPP.
E.g. it is probably not safe to run the GPP at 1Ghz with the OPP1 voltage levels, either. Neither does it make sense to use OPP5 voltage to run it at e.g. 100Mhz.
You mentioned that you automatically change the OPP when the (GPP) clock is changed, probably by looking at the table you posted above, then picking the best matching OPP/voltage level.
(and vice versa, when the OPP is changed directly (if that is possible), you inc- or decrease the GPP clock rate so it fits..?)
I would suggest that you do the same with the DSP clock -- determine the minimum OPP required for the desired GPP and DSP clocks and set that one.
You do not have to know whether the DSP is currently powered on/running, you can write to
CM_CLKSEL1_PLL_IVA at any time.
I guess the current kernel OPP code needs to be made DSP aware and something like /proc/pandora/dsp_mhz_max needs to be added
Yes, it's the logical thing to do.
I tried to find out about the low power bypass mode today. For one thing, it exists for the GPP as well (
you may have noticed that CM_CLKEN_PLL_MPU and CM_CLKEN_PLL_IVA2 look _very_ similar). I found a message in the TI E2E forum but unfortunately it was one of those where someone asks sth. interesting and nobody bothers to answer :/
The question already contained some info, though, e.g. it mentioned that in LPBM, the DPLLs (
which exactly..?) are somehow bypassed, saving 3ma per DPLL (
does not seem much..how many DPLLs are there anyway..), and that it is meant for low-power usecases like MP3 replay.
I still have no idea how that DPLL bypass is done, respectively where the GPP/DSP clocks are derived from in that case.
Last night I did some power measurement tests and did not find any measurable difference between LPBM and "lock mode". We can do some more tests later on to see if it's worth the effort to care for LPBM (
e.g. for decoding an MP3 while the CPU is in deep sleep).
For now, just make sure to initialize the DSP frequency during boot (
right next to the code that sets up the GPP freq.), and I'll simply set the DSP DPLL to "locked mode" before the DSP is booted so it uses the previously programmed frequency.
I can PM you the patch but it's really just a single line: in "
kmod/dsp_c64.c:dsp_poweron_and_reset()" you have to add the line
reg32_write(IVA2_CM_CLKEN_PLL, (1u << 4) | 7u); /* Allow over/underclocking */
after the RSTCTRL reg. write (around line 79).
@crow_riot: thanks for the info. Are you sure you did not increase the system bus speed as well, or disabled screen clears ? I would not have expected GPP overclocking to make any difference in this testcase.