Proceedings of the PM SW Workshop Jun 2010

From OMAPpedia

Revision as of 10:45, 11 June 2010 by Anand sawant (Talk | contribs)
Jump to: navigation, search

This wikipage contains proceedings of the PM SW Workshop held in Bangalore on 7-11 Jun, 2010


HWMOD Framework Enhancements

Reset Management Support in HWMOD

More Granular HWMOD Structures

Multi-level omap_device_idle

Placeholder for patches from Vibhore to support device latency contraint

Access to HWMOD Internal Data

Miscellaneous Issues

Minutes & Action Items

Power Domain And Clock Domain Cleanup

Aligned on the following two phase approach

SRF Replacement - Constraints Part

Types of Latency Constraints

Details of Interrupt Latency

Details of Device Latency

Proposed Implementation

void omap_pm_set_max_dev_wakeup_lat(struct device *dev, long t)
	/*  existing code */	
	1. Look for devices’ power domain (might be multiple step if starting  with general device)
	2. Use device name as identifier for constraint request

	if (t == -1)
		pwrdm_release_wakeup_lat_constraint (pwrdm, lat_dev_name);
		 pwrdm_set_wakeup_lat_constraint (pwrdm, lat_dev_name, t);
struct powerdomain {
/* existing entries*/
const u32 wakeup_lat[PWRDM_MAX_PWRSTS-1];
static LIST_HEAD(wakeup_lat_constraint_list);
static struct powerdomain core_44xx_pwrdm = {
.wakeup_lat = {
50,   /* off */
20,   /* ret */ -1 for not supported power state
0,     /* inactive */ Do we have to worry about OSWR?
pwrdm_set_wakeup_lat_constraint (struct powerdomain *pwrdm, char *lat_dev_name, long lat_us){
	1. If new constraint, add a new entry to wakeup_lat_constraint_list
	2. If already existing, update entries’ latency value
	3. pwrdm_check_for_state_change (pwrdm)
pwrdm_release_wakeup_lat_constraint (struct powerdomain *pwrdm, char   *lat_dev_name){
	1. Remove this devices’ constraint from wakeup_lat_constraint_list
	2. pwrdm_check_for_state_change (pwrdm)
pwrdm_check_for_state_change (struct powerdomain *pwrdm){
	1. min_latency = find_min_wakeup_latency_constraint (pwrdm) 
		 //go through the list for minimum latency value
	2. find power state that has latency lower than minimum constraint
		 for (new_state = 0x0; new_state < PWRDM_MAX_PWRSTS; new_state++){
		    if (pwrdm->wakeup_lat[i] < min_latency) break;
	3.  if (pwrdm->state != new_state)
 		    pwrdm_set_next_pwrst (pwrdm, new_state); // existing function to program next state

Minutes & Action Items

.wakeuplat = {
    [FUNC-PWRST-OFF] = 50,
   [FUNC-PWRST-OSWR] = 30,
  [FUNC-PWRST-ON] = 0,

SRF Replacement - OPP Part

Minutes & Action Items

• Need to ensure that the implementation doesn’t result into race conditions • This is needed for OMAP4 VDD Core DVFS implementation; Thara can work on the rest of the VDD Core implementation • But this is needed more for accuracy, especially if a driver doesn’t want to allow functional or optional clock change. Today’s SRF doesn’t support this and we are OK with it. • So, we can continue with the VDD Core DVFS. Once VDD Core OPP changes, the changing of scalable functional clocks (for affected IPs as per the Excel sheet) will be done by HWMOD function implementations. • SmartReflex should be targeted for the Aug end merge window. • VDD MPU, VDD IVA & VDD Core DVFS basic functionality o Shift in approach from voltage domain based OPP to device based OPP o Kevin is targeting it for the next merge window. – Should be doable by month end but needs Thara’s full bandwidth  Kevin will do the data structural changes and get them working with existing SRF – Kevin by Tuesday 15-Jun  Then Thara can take it and remove the SRF o Implement the new APIs for DVFS & omap device layer  Omap_device_set_min_rate(), omap_device_get_curr_rate(), o Extend the voltage layer to take care of constraints and cross VDD dependencies (they are there in OMAP3 code but needs to be transformed to the new format)  We need to discuss this in more details  Kevin suggested to use plist (priority assigned doubly linked lists) for this purpose

General Minutes and Action Items

Personal tools