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.

OMAP Power Domain

I need to put my camera system in shutdown mode with few Timers, interrupts & I2C2 controller alone in ON state and rest all in OFF state. Can we can put the MPU, NEON, IVA2,SGX, DSS, CAM, USBHOST Power Domains in OFF state & PER,WKUP, CORE Power Domains in ON state [some modules in CORE,WKUP,PER will also be in OFF state] in OMAP 3525?

here is my firmware for this configuration, can you tell whether this method could be done or not?

BOOL PM_OM_Camera_ShutDwn ( void )
{
  
// DeActivated Modules  - Completely OFF state

   PM_PWSTCTRL_MPU   &=    0xFFFFFFFE;    // Power State Control - OFF state[bit1:0]
   PM_PWSTCTRL_NEON  &=    0xFFFFFFFE;    //
   PM_PWSTCTRL_IVA2  &=    0xFFFFFFFE;    //
   PM_PWSTCTRL_SGX   &=    0xFFFFFFFE;    //
   PM_PWSTCTRL_DSS   &=    0xFFFFFFFE;    //
   PM_PWSTCTRL_CAM   &=    0xFFFFFFFE;    //
   PM_PWSTCTRL_USBHOST  &= 0xFFFFFFFE;    // Power State Control - OFF state[bit1:0]

// DeActivated Modules - Interface Clock/Functional Clock Disabled

   CM_FCLKEN1_CORE  &=    0x00811800;     // MMC[1,2,3],McBSP[1,5],McSPI[1,2,3,4],UART[1,2],
                                                                                   // I2C[1,3],HDQ FCLK, except I2C2 - used for battery monitor
   CM_FCLKEN3_CORE  &=    0xFFFFFFFB;     // USB TLL FCLK disabled

   CM_ICLKEN1_CORE  &=    0xFFFFFF42;     // MailBox, HS OTG USB ICLK disabled
   CM_ICLKEN2_CORE  &=    0xFFFFFFFF;     // No bits requried disabled
   CM_ICLKEN3_CORE  &=    0xFFFFFFFF;     // No bits required disabled

   return (TRUE);

} // end of function

  • First I would like to note that the Linux software stack provided by TI does not entirely support powering down all of these peripherals cleanly, the power management driver does support suspend and resume though not all of the other drivers may support the sequence.

    If you were to develop this on your own as it seems you are doing with the function above there is also more to this than just the PWSTCTRL register, different peripherals can have different power down and power up sequences that would need to be followed to ensure the peripheral remains in a proper state. These state transition sequences are discussed in chapter 4 of the OMAP35x TRM, for example see section 1.12.6.1.3 and figure 1-89 of SPRUFA5a.

  • Hello,

    OMAP2/3 devices provide two ways of powering down (transitioning to a low power state) a power domain.

    1. Software supervised and 2. Hardware supervised

    Software supervised

    =================

    - Here , the firmware is expected to turn off all FCLKS and ICLKS of all Clock domains that a power domain may have.  Once this has been done, the desired low power state of the power domain is required to be configured in the PWSTCTRL. Once this is done, the clock domain may be transitioned to INACTIVE and power domain to RET or OFF by initiating a software supervised transition (See CLKSTCTRL)

    Hardware supervised

    =================

    - The firmware is required only to turn OFF the FCLKS. It may keep the ICLKS ON provided the AUTOIDLE bits for each of the clocks is set. CLKSTCTRL must be configured for hardware supervised transition. After all of the FCLKs have been turned OFF, the clock and power domains will transition to a low power state if they can.

    For MPU transitions, you must execute the CP15 WFI instruction from internal SRAM.

    Beware that you must save MCU context before the WFI, else the bootrom would never be able to jump to the wakeup sequence.

    I dont think you can power down the WKUP. It runs off VRIO and 32Khz and has a bunch of folks that can generate a wakeup event.

    To cut a long story short, there is a framework with sleep/power policies required.

    Best regards,

    SS