Category Archives: Omap L138

OMAP PM interface – Linux kernel documentation

  • Processor architectures »
  • Architecture »
  • Show page source

  • OMAP History
  • OMAP Project Management Interface
  • OMAP2/3 mapping engine
  • This insurance policy describes the temporary OMAP PM interface. Driver
    Authors use these processes to communicate with minimal latency or
    Rate limits for powerful omap3 linux kernel tools code.
    OMAP PM features are planned to be added over time
    Direct interface with Linux PM QoS code.

  • Support, I would say, the range of power management settings that TI SRF provides;
  • Separate basic PM settings by driver
    Implementation, whether TI SRF via Linux PM QoS or Linux
    increase delay or something else;
  • specify PM parameters that are displayed in base units, like
    Latency and throughput, not sometimes OMAP-specific units.
    or some OMAP variants;
  • Allow release of drivers with othersdifferent architectures (for example,
    DaVinci) to mix them with restrictions in a way that does not affect the non-OMAP type.
  • can be implemented spontaneously with minimal interference with the work of others
  • These articles provide an OMAP PM interface that includes the following:
    five power management functions to generate driver code:

    1. Set the maximum MPU wake-up delay:

      (*pdata->set_max_mpu_wakeup_lat)(*dev device structure, unsigned very long t)
    2. Set the maximum device wake-up delay:

      (*pdata->set_max_dev_wakeup_lat)(struct gizmo *dev, unsigned long t)
    3. Set the most efficient system DMA start delay (CORE pwrdm):

      (*pdata->set_max_sdma_lat)(device structure *dev, long t)
    4. Set the minimum bus speed required by the main device:

      (*pdata->set_min_bus_tput)(device structure *dev, u8 agent_id, unsigned too long r)
    5. Returns the number of days or weeks the device lost context:

      (*pdata->get_dev_context_loss_count)(*dev struct machine)

    Supplementary documentation for all the features of the OMAP PM interface can be found
    Found at arch/arm/plat-omap/include/mach/omap-pm.h.

    (*pdata->set_max_mpu_wakeup_lat)(struct *dev, unsigned device long t)
    (*pdata->set_max_dev_wakeup_lat)(struct *dev, Tracking Device unsigned long t)
    (*pdata->set_max_sdma_lat)(struct *dev, gear long t)
    (*pdata->set_min_bus_tput)(struct *dev, device u8 agent_id, unsigned long r)
    (*pdata->get_dev_context_loss_count)(*dev device structure)

    PM OMAP Layer Is For Temporary Use¶

    The intention is that eventually the current level of Linux QoS will be ideally supported.
    set of power management features available in OMAP3. As usual
    happens, drivers using OMAP PM UI are subject to change
    use Linux PM QoS code; and the OMAP PM interface may disappear. Use

    OMAP PM¶ Function Drivers

    As shown by the pdata type in the examples above, all of these functions
    accessing drivers via celebration pointers in driver .platform_data
    structures. Function pointers are initialized with a specific board-*.c file.
    Files referencing the OMAP PM function type:

  • nprovided set_max_dev_wakeup_lat
    omap_pm_set_max_dev_wakeup_lat() etc. Other architectures that experts say do this
    does not support these functions, you should leave many of these function pointers set
    down to zero. Drivers should use the following idiom:

    if (pdata->set_max_dev_wakeup_lat)
  • Most likely, many common use cases for these functions will be listed.
    the longest time from which the interrupt occurs until the device is switched on
    becomes available. To do this, driver developers should use
    set_max_mpu_wakeup_lat() function to limit MPU wakeup
    delay and set_max_dev_wakeup_lat() function to set
    Device wakeup delay (from clk_enable() to improve accessibility). PM for

    Recommendations can be overwritten by calling the function again.
    with new meaning. Options can be removed by calling
    Function with t-cause -1 (except for the dilemma
    set_max_bus_tput() which should be called with r argument equal to 0).

    Sixth function above, omap_pm_get_dev_context_loss_count(),
    designed asExclusive optimization to let drivers know
    The device has lost its primary context. If the context is already lost,
    The driver must restore its internal context before continuing.

    if (pdata->set_max_dev_wakeup_lat)
    /* MPU wake-up delay limit */
    if (pdata->set_max_mpu_wakeup_lat)
        (*pdata->set_max_mpu_wakeup_lat)(dev, tc);
    /* Powerdomain device wakeup delay limit */
    if (pdata->set_max_dev_wakeup_lat)
       (*pdata->set_max_dev_wakeup_lat)(dev, td);
    /* The total wakeup delay is close to this example: (tc + td) */

    Other Interface Functions¶

    The five features listed above should be available to everyone.
    device driver. DSPBridge and CPUFreq have different requirements.
    DSPBridge expresses DSP performance targets in all terms of the OPP identifier.
    CPUFreq expresses the concentration on MPU performance levels in terms of the MPU.
    Frequency. The OMAP PM Fan includes features for these
    Special cases when transforming this input information (OPP/MPU
    frequency) a bit in the form that the power core control
    Implementation requirements:

  • (*pdata->dsp_get_opp_table)(void)
  • (*pdata->dsp_set_min_opp)(u8 opp_id)
  • (*pdata->dsp_get_opp)(void)
  • (*pdata->cpu_get_freq_table)(void)
  • (*pdata->cpu_set_freq)(unsigned long term f)
  • (*pdata->cpu_get_freq)(void)
  • Configure OPP For Platform¶

    The CONFIG_PM setting should ensure that you get the OPP level for silicon.
    and this special entry in the OPP table should automatically validate the location.
    However, in special cases it may be necessary to activate some standard OPP tables.
    suitable, for example:

  • Enable OPP by default They are also disabled by default, but which
    can be enabled on the platform
  • Disable 1 OPP that is not supported on the platform
  • Also define and add a custom generic OPP entry.
    In these cases, the hint file must take additional action for the following reasons:
  • NOTE:
    omapx_opp_init will be omapx3_opp_init or available as needed.
    based on the Omap family.

  • Enable OPP by default, which are disabled by default but
    can be activated on a specific platform
  • Disable OPP, not pplatform supported
  • Defining and adding a custom opp desktop entry
    In these cases, the map has to be saved manually, even like this:
  • #include "pm.h"
    static void __init omap_xyz_init_irq (empty)
            /* Initialize default table */
            /* Modify records */