Esempio n. 1
0
/*
 * This function resets the system. It is called by machine_restart().
 *
 * @param  mode         indicates different kinds of resets
 */
void arch_reset(char mode)
{
	/* Workaround to reset NFC_CONFIG3 register
	 * due to the chip warm reset does not reset it
	 */
	__raw_writel(0x20600, IO_ADDRESS(NFC_BASE_ADDR) + 0x28);

	/* Assert SRS signal */
	mxc_wd_reset();
	mxc_reboot();
}
Esempio n. 2
0
/*
 * This function resets the system. It is called by machine_restart().
 *
 * @param  mode         indicates different kinds of resets
 */
void arch_reset(char mode)
{
	unsigned long reg;
	unsigned long reg_1 = 0xffffffff;

	doze_disable();

	reg = __raw_readl(MXC_CCM_CGR0);
	reg |= (MXC_CCM_CGR0_ESDHC1_MASK | MXC_CCM_CGR0_ESDHC2_MASK |
		MXC_CCM_CGR0_ESDHC3_MASK | MXC_CCM_CGR0_CSPI1_MASK |
		MXC_CCM_CGR0_CSPI2_MASK);
	__raw_writel(reg, MXC_CCM_CGR0);

	reg = __raw_readl(MXC_CCM_CGR3);
	reg |= MXC_CCM_CGR3_IIM_MASK;
	__raw_writel(reg, MXC_CCM_CGR3);

	printk(KERN_INFO "MX35 arch_reset\n");

	if (in_interrupt() || kernel_oops_counter) {
		mxc_wd_reset();
		return;
	}

	local_irq_enable();
	/* Clear out bit #1 in MEMA */
	pmic_write_reg(REG_MEM_A, (0 << 1), (1 << 1));

	/* Turn on bit #1 */
	pmic_write_reg(REG_MEM_A, (1 << 1), (1 << 1));

	/* Turn off VSD */
	pmic_write_reg(REG_MODE_1, (0 << 18), (1 << 18));

	cpufreq_suspended = 1;
	set_cpu_freq(512000000);

	mdelay(100);

	peri_pll_enable();

        __raw_writel(reg_1, MXC_CCM_CGR0);
        __raw_writel(reg_1, MXC_CCM_CGR1);
        __raw_writel(reg_1, MXC_CCM_CGR2);
        __raw_writel(reg_1, MXC_CCM_CGR3);

	mdelay(100);

	/* Memory Hold Mode */
	mx35_power_off();
}
void mxc_system_off(void)
{
	afe_backlight_off();
	mxc_external_mute();

	/* NFC Configuration1 to 0 */
	__raw_writel(0, IO_ADDRESS(NFC_BASE_ADDR_AXI + 0x1E04));
	/* NANDF_RB to 0 */
	__raw_writel(0, IO_ADDRESS(IOMUXC_BASE_ADDR + 0x80));

	afe_system_off();
	mdelay(1000);

	printk("Shutdown failed\n");
	mxc_wd_reset();
	while (1);
}
/*
 * This function resets the system. It is called by machine_restart().
 *
 * @param  mode         indicates different kinds of resets
 */
void arch_reset(char mode)
{
	/* Assert SRS signal */
	mxc_wd_reset();
}