예제 #1
0
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;
}
예제 #2
0
파일: da850evm.c 프로젝트: frawang/u-boot
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)));
}