/* Register bitfields in the CON register */ #define MSDI_CON_POW_MASK BIT(11) #define MSDI_CON_CLKD_MASK (0x3f << 0) #define MSDI_CON_CLKD_SHIFT 0
/* MSDI_TARGET_RESET_CLKD: clock divisor to use throughout the reset */ #define MSDI_TARGET_RESET_CLKD 0x3ff
/** *omap_msdi_reset-resettheMSDIIPblock *@oh:structomap_hwmod* * *TheMSDIIPblockonOMAP2420hastohaveboththePOWandCLKD *fieldssetinsideitsCONregisterforaresettocomplete *successfully.ThisisnotdocumentedintheTRM.ForCLKD,weuse *thevaluethatresultsinthelowestpossibleclockrate,toattempt *toavoiddisturbinganycards.
*/ int omap_msdi_reset(struct omap_hwmod *oh)
{
u16 v = 0; int c = 0;
/* Write to the SOFTRESET bit */
omap_hwmod_softreset(oh);
/* Enable the MSDI core and internal clock */
v |= MSDI_CON_POW_MASK;
v |= MSDI_TARGET_RESET_CLKD << MSDI_CON_CLKD_SHIFT;
omap_hwmod_write(v, oh, MSDI_CON_OFFSET);
/* Poll on RESETDONE bit */
omap_test_timeout((omap_hwmod_read(oh, oh->class->sysc->syss_offs)
& SYSS_RESETDONE_MASK),
MAX_MODULE_SOFTRESET_WAIT, c);
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.