Ejemplo n.º 1
0
static void ux500_restart(char mode, const char *cmd)
{
	unsigned short reset_code;
	unsigned short preset_code;

	local_irq_disable();
	local_fiq_disable();

	preset_code = reboot_reason_get_preset();

	if (preset_code != SW_RESET_CRASH)
		prcmu_system_reset(preset_code);
	else {
		reset_code = reboot_reason_code(cmd);
		prcmu_system_reset(reset_code);
	}

	mdelay(1000);

	/*
	 * On 5500, the PRCMU firmware waits for up to 2 seconds for the modem
	 * to respond.
	 */
	if (cpu_is_u5500())
		mdelay(2000);

	printk(KERN_ERR "Reboot via PRCMU failed -- System halted\n");
	while (1)
		;
}
Ejemplo n.º 2
0
void ux500_restart(enum reboot_mode mode, const char *cmd)
{
	local_irq_disable();
	local_fiq_disable();

	prcmu_system_reset(0);
}
Ejemplo n.º 3
0
void ux500_restart(char mode, const char *cmd)
{
#ifdef CONFIG_UX500_SOC_DB8500
	unsigned short reason;

#endif
	printk("ux500_restart: Call arch_reset(), mode: %c, cmd: %s\n", mode, cmd );


#ifdef CONFIG_UX500_SOC_DB8500
	reason = sec_common_update_reboot_reason(mode, cmd);

	if (mode == 'L' || mode == 'U' || 'K' == mode || 'F' == mode)
	/* Call the PRCMU reset API (w/o reset reason code) */
	prcmu_system_reset(reason);
	else
		ab8500_restart( reason );
#endif

	mdelay(1000);

	printk(KERN_ERR "Reboot via PRCMU failed -- System halted\n");

	while (1);
}
Ejemplo n.º 4
0
void kexec_hardboot_hook(void)
{
	prcmu_system_reset(0x5501);
	mdelay(1000);

	while (1)
		;
}
static void shrm_modem_reset_callback(unsigned long irq)
{
	dev_err(shm_dev->dev, "Received mod_reset_req interrupt\n");

	log_stop();

#ifdef CONFIG_U8500_SHRM_MODEM_SILENT_RESET
	{
		int err;
		dev_info(shm_dev->dev, "Initiating Modem silent reset\n");

		err = shrm_modem_reset_sequence();
		if (err)
			dev_err(shm_dev->dev,
				"Failed multicast of modem reset\n");
	}
#else
	dev_info(shm_dev->dev, "Modem in reset loop, doing System reset\n");

	/* Call the PRCMU reset API */
	prcmu_system_reset(SW_RESET_NO_ARGUMENT);
#endif
}