static void intel_mid_reboot(void)
{
	if (intel_scu_ipc_fw_update()) {
		pr_debug("intel_scu_fw_update: IFWI upgrade failed...\n");
	}

	if (!reboot_force) {
		/* system_state is SYSTEM_RESTART now,
		 * polling to wait for SCU not busy.
		 */
		while (intel_scu_ipc_check_status())
			udelay(10);
	}

	if (force_cold_boot)
#ifdef CONFIG_X86_MDFLD
		rpmsg_send_generic_simple_command(IPCMSG_COLD_BOOT, 0);
#else
		outb(RSTC_COLD_BOOT, RSTC_IO_PORT_ADDR);
#endif
	else {
		switch (reboot_force) {
示例#2
0
static void intel_mid_reboot(void)
{
	if (intel_scu_ipc_fw_update()) {
		pr_debug("intel_scu_fw_update: IFWI upgrade failed...\n");
	}

	if (!reboot_force) {
		/* system_state is SYSTEM_RESTART now,
		 * polling to wait for SCU not busy.
		 */
		while (intel_scu_ipc_check_status())
			udelay(10);
	}

	if (force_cold_boot)
		outb(RSTC_COLD_BOOT, RSTC_IO_PORT_ADDR);
	else {
		switch (reboot_force) {
		case REBOOT_FORCE_OFF:
			/*  this will cause context execution error when rebooting */
			/*  in panic, but this is the very last action we take     */
			rpmsg_send_generic_simple_command(RP_COLD_OFF, 0);
			break;
		case REBOOT_FORCE_ON:
			pr_info("***** INFO: reboot requested but forced to keep system on *****\n");
			while(1); /* halt */
			break;
		case REBOOT_FORCE_COLD_RESET:
			outb(RSTC_COLD_RESET, RSTC_IO_PORT_ADDR);
			break;
		case REBOOT_FORCE_COLD_BOOT:
			outb(RSTC_COLD_BOOT, RSTC_IO_PORT_ADDR);
			break;
		default:
			outb(RSTC_COLD_RESET, RSTC_IO_PORT_ADDR);
		}
	}
}