static void dspwake(void) { unsigned *resetvect = (unsigned *)DAVINCI_L3CBARAM_BASE; /* if the device is ARM only, return */ if ((REG(CHIP_REV_ID_REG) & 0x3f) == 0x10) return; if (!strcmp(getenv("dspwake"), "no")) return; *resetvect++ = 0x1E000; /* DSP Idle */ /* clear out the next 10 words as NOP */ memset(resetvect, 0, sizeof(unsigned) * 10); /* setup the DSP reset vector */ REG(HOST1CFG) = DAVINCI_L3CBARAM_BASE; dsp_lpsc_on(1, DAVINCI_LPSC_GEM); REG(PSC0_MDCTL + (15 * 4)) |= 0x100; }
static void dspwake(void) { unsigned *resetvect = (unsigned *)DAVINCI_L3CBARAM_BASE; u32 val; /* if the device is ARM only, return */ if ((readl(CHIP_REV_ID_REG) & 0x3f) == 0x10) return; if (hwconfig_subarg_cmp_f("dsp", "wake", "no", NULL)) return; *resetvect++ = 0x1E000; /* DSP Idle */ /* clear out the next 10 words as NOP */ memset(resetvect, 0, sizeof(unsigned) *10); /* setup the DSP reset vector */ writel(DAVINCI_L3CBARAM_BASE, HOST1CFG); dsp_lpsc_on(1, DAVINCI_LPSC_GEM); val = readl(PSC0_MDCTL + (15 * 4)); val |= 0x100; writel(val, (PSC0_MDCTL + (15 * 4))); }