in mach-omap2/omap_hwmod.c [3244:3310]
static int omap_hwmod_init_sysc_flags(struct device *dev,
const struct ti_sysc_module_data *data,
u32 *sysc_flags)
{
*sysc_flags = 0;
switch (data->cap->type) {
case TI_SYSC_OMAP2:
case TI_SYSC_OMAP2_TIMER:
/* See SYSC_OMAP2_* in include/dt-bindings/bus/ti-sysc.h */
if (data->cfg->sysc_val & SYSC_OMAP2_CLOCKACTIVITY)
*sysc_flags |= SYSC_HAS_CLOCKACTIVITY;
if (data->cfg->sysc_val & SYSC_OMAP2_EMUFREE)
*sysc_flags |= SYSC_HAS_EMUFREE;
if (data->cfg->sysc_val & SYSC_OMAP2_ENAWAKEUP)
*sysc_flags |= SYSC_HAS_ENAWAKEUP;
if (data->cfg->sysc_val & SYSC_OMAP2_SOFTRESET)
*sysc_flags |= SYSC_HAS_SOFTRESET;
if (data->cfg->sysc_val & SYSC_OMAP2_AUTOIDLE)
*sysc_flags |= SYSC_HAS_AUTOIDLE;
break;
case TI_SYSC_OMAP4:
case TI_SYSC_OMAP4_TIMER:
/* See SYSC_OMAP4_* in include/dt-bindings/bus/ti-sysc.h */
if (data->cfg->sysc_val & SYSC_OMAP4_DMADISABLE)
*sysc_flags |= SYSC_HAS_DMADISABLE;
if (data->cfg->sysc_val & SYSC_OMAP4_FREEEMU)
*sysc_flags |= SYSC_HAS_EMUFREE;
if (data->cfg->sysc_val & SYSC_OMAP4_SOFTRESET)
*sysc_flags |= SYSC_HAS_SOFTRESET;
break;
case TI_SYSC_OMAP34XX_SR:
case TI_SYSC_OMAP36XX_SR:
/* See SYSC_OMAP3_SR_* in include/dt-bindings/bus/ti-sysc.h */
if (data->cfg->sysc_val & SYSC_OMAP3_SR_ENAWAKEUP)
*sysc_flags |= SYSC_HAS_ENAWAKEUP;
break;
default:
if (data->cap->regbits->emufree_shift >= 0)
*sysc_flags |= SYSC_HAS_EMUFREE;
if (data->cap->regbits->enwkup_shift >= 0)
*sysc_flags |= SYSC_HAS_ENAWAKEUP;
if (data->cap->regbits->srst_shift >= 0)
*sysc_flags |= SYSC_HAS_SOFTRESET;
if (data->cap->regbits->autoidle_shift >= 0)
*sysc_flags |= SYSC_HAS_AUTOIDLE;
break;
}
if (data->cap->regbits->midle_shift >= 0 &&
data->cfg->midlemodes)
*sysc_flags |= SYSC_HAS_MIDLEMODE;
if (data->cap->regbits->sidle_shift >= 0 &&
data->cfg->sidlemodes)
*sysc_flags |= SYSC_HAS_SIDLEMODE;
if (data->cfg->quirks & SYSC_QUIRK_UNCACHED)
*sysc_flags |= SYSC_NO_CACHE;
if (data->cfg->quirks & SYSC_QUIRK_RESET_STATUS)
*sysc_flags |= SYSC_HAS_RESET_STATUS;
if (data->cfg->syss_mask & 1)
*sysc_flags |= SYSS_HAS_RESET_STATUS;
return 0;
}