I wanted to sleep the DSP between encoding video frames. I have send in an input video frame that the DSP returns encoded. Between each arriving video frame I want to the DSP to sleep until the next video frame is ready, at which I would wakeup the DSP and resume encoding the next frame.
I am following the guidelines from /local_power_manager_1_23_01/packages/ti/bios/power/src/doc/overview.txt and integrated the LPM code into my own, however when I run the LPM_resume(), the function fails and I cannot get the DSP to resume operations. LPM_setPowerState(hLPM, LPM_HIBERNATE) does work and I can view the power comsumption on the drop accordingly. Once in the Hibernation state I cannot resume operations.
I'm am running the OMAP3530 based on the modified 2.6.22-omap kernel.
Following the example in /dvsdk_3_00_00_36/codec_engine_2_23_01/examples/ti/sdo/ce/examples/apps/image1_copy
Following the example in /dvsdk_3_00_00_36/local_power_manager_1_23_01/packages/ti/bios/power/src/doc/overview.txt
/* setup LPM */
LPM_init();
/* acquire an LPM handle */
lpmStat = LPM_open("/dev/lpm0", &hLPM);
/* open a Codec Engine */
Engine_open();
/* process loop */
while (work to be done) {
/* do some work */
...
/* now we can rest for a while */
/* hibernate the DSP */
lpmStat = LPM_setPowerState(hLPM, LPM_HIBERNATE); <--- Returns Success
/* DSP is now OFF (with context saved) */
/* time passes ... */
/* wake (resume) the DSP */
lpmStat = LPM_resume(hLPM); <--- Returns Failure
}
/* close the Codec Engine */
Engine_close();
/* finalize LPM module */
lpmStat = LPM_close(hLPM);
LPM_exit();