/** *structpwrdm_ops-Archspecificfunctionimplementations *@pwrdm_set_next_pwrst:Setthetargetpowerstateforapd *@pwrdm_read_next_pwrst:Readthetargetpowerstatesetforapd *@pwrdm_read_pwrst:Readthecurrentpowerstateofapd *@pwrdm_read_prev_pwrst:Readtheprevpowerstateenteredbythepd *@pwrdm_set_logic_retst:SetthelogicstateinRETforapd *@pwrdm_set_mem_onst:SettheMemorystateinONforapd *@pwrdm_set_mem_retst:SettheMemorystateinRETforapd *@pwrdm_read_logic_pwrst:Readthecurrentlogicstateofapd *@pwrdm_read_prev_logic_pwrst:Readthepreviouslogicstateenteredbyapd *@pwrdm_read_logic_retst:ReadthelogicstateinRETforapd *@pwrdm_read_mem_pwrst:Readthecurrentmemorystateofapd *@pwrdm_read_prev_mem_pwrst:Readthepreviousmemorystateenteredbyapd *@pwrdm_read_mem_retst:ReadthememorystateinRETforapd *@pwrdm_clear_all_prev_pwrst:Clearallpreviouspowerstatesloggedforapd *@pwrdm_enable_hdwr_sar:EnableHardwareSave-Restorefeatureforthepd *@pwrdm_disable_hdwr_sar:DisableHardwareSave-Restorefeatureforapd *@pwrdm_set_lowpwrstchange:Enablepdtransitionsfromashallowtodeepsleep *@pwrdm_wait_transition:Waitforapdstatetransitiontocomplete *@pwrdm_has_voltdm:Checkifavoltdmassociationisneeded * *Regarding@pwrdm_set_lowpwrstchange:OntheOMAP2and3-family *chips,apowerdomain'spowerstateisnotallowedtodirectly *transitionfromonelow-powerstate(e.g.,CSWR)toanother *low-powerstate(e.g.,OFF)withoutfirstwakingupthe *powerdomain.Thiswastesenergy.SoOMAP4chipssupportthe *abilitytotransitionapowerdomainpowerstatedirectlyfromone *low-powerstatetoanother.Thefunctionpointedtoby *@pwrdm_set_lowpwrstchangeisintendedtoconfiguretheOMAP4 *hardwarepowerdomainstatemachinetoenablethisfeature.
*/ struct pwrdm_ops { int (*pwrdm_set_next_pwrst)(struct powerdomain *pwrdm, u8 pwrst); int (*pwrdm_read_next_pwrst)(struct powerdomain *pwrdm); int (*pwrdm_read_pwrst)(struct powerdomain *pwrdm); int (*pwrdm_read_prev_pwrst)(struct powerdomain *pwrdm); int (*pwrdm_set_logic_retst)(struct powerdomain *pwrdm, u8 pwrst); int (*pwrdm_set_mem_onst)(struct powerdomain *pwrdm, u8 bank, u8 pwrst); int (*pwrdm_set_mem_retst)(struct powerdomain *pwrdm, u8 bank, u8 pwrst); int (*pwrdm_read_logic_pwrst)(struct powerdomain *pwrdm); int (*pwrdm_read_prev_logic_pwrst)(struct powerdomain *pwrdm); int (*pwrdm_read_logic_retst)(struct powerdomain *pwrdm); int (*pwrdm_read_mem_pwrst)(struct powerdomain *pwrdm, u8 bank); int (*pwrdm_read_prev_mem_pwrst)(struct powerdomain *pwrdm, u8 bank); int (*pwrdm_read_mem_retst)(struct powerdomain *pwrdm, u8 bank); int (*pwrdm_clear_all_prev_pwrst)(struct powerdomain *pwrdm); int (*pwrdm_enable_hdwr_sar)(struct powerdomain *pwrdm); int (*pwrdm_disable_hdwr_sar)(struct powerdomain *pwrdm); int (*pwrdm_set_lowpwrstchange)(struct powerdomain *pwrdm); int (*pwrdm_wait_transition)(struct powerdomain *pwrdm); int (*pwrdm_has_voltdm)(void); void (*pwrdm_save_context)(struct powerdomain *pwrdm); void (*pwrdm_restore_context)(struct powerdomain *pwrdm);
};
int pwrdm_register_platform_funcs(struct pwrdm_ops *custom_funcs); int pwrdm_register_pwrdms(struct powerdomain **pwrdm_list); int pwrdm_complete_init(void);
int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst); int pwrdm_read_next_pwrst(struct powerdomain *pwrdm); int pwrdm_read_pwrst(struct powerdomain *pwrdm); int pwrdm_read_prev_pwrst(struct powerdomain *pwrdm); int pwrdm_clear_all_prev_pwrst(struct powerdomain *pwrdm);
int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst); int pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, u8 pwrst); int pwrdm_set_mem_retst(struct powerdomain *pwrdm, u8 bank, u8 pwrst);
int pwrdm_read_logic_pwrst(struct powerdomain *pwrdm); int pwrdm_read_prev_logic_pwrst(struct powerdomain *pwrdm); int pwrdm_read_logic_retst(struct powerdomain *pwrdm); int pwrdm_read_mem_pwrst(struct powerdomain *pwrdm, u8 bank); int pwrdm_read_prev_mem_pwrst(struct powerdomain *pwrdm, u8 bank); int pwrdm_read_mem_retst(struct powerdomain *pwrdm, u8 bank);
int pwrdm_enable_hdwr_sar(struct powerdomain *pwrdm); int pwrdm_disable_hdwr_sar(struct powerdomain *pwrdm); bool pwrdm_has_hdwr_sar(struct powerdomain *pwrdm);
int pwrdm_state_switch_nolock(struct powerdomain *pwrdm); int pwrdm_state_switch(struct powerdomain *pwrdm); int pwrdm_pre_transition(struct powerdomain *pwrdm); int pwrdm_post_transition(struct powerdomain *pwrdm);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.