Beispiel #1
0
void suspend_resume(void)
{
	void *wake_vec;

	/* If we happen to be resuming find wakeup vector and jump to OS. */
	wake_vec = acpi_find_wakeup_vector();
	if (wake_vec) {
#if CONFIG_HAVE_SMI_HANDLER
		u32 *gnvs_address = cbmem_find(CBMEM_ID_ACPI_GNVS);

		/* Restore GNVS pointer in SMM if found */
		if (gnvs_address && *gnvs_address) {
			printk(BIOS_DEBUG, "Restore GNVS pointer to 0x%08x\n",
			       *gnvs_address);
			smm_setup_structures((void *)*gnvs_address, NULL, NULL);
		}
#endif

		/* Call mainboard resume handler first, if defined. */
		if (mainboard_suspend_resume)
			mainboard_suspend_resume();
#if CONFIG_COVERAGE
		coverage_exit();
#endif
		post_code(POST_OS_RESUME);
		acpi_jump_to_wakeup(wake_vec);
	}
}
Beispiel #2
0
void suspend_resume(void)
{
	void *wake_vec;

	/* If we happen to be resuming find wakeup vector and jump to OS. */
	wake_vec = acpi_find_wakeup_vector();
	if (wake_vec)
		acpi_jump_to_wakeup(wake_vec);
}
Beispiel #3
0
void acpi_resume(struct acpi_fadt *fadt)
{
	void *wake_vec;

	/* Turn on ACPI mode for S3 */
	enter_acpi_mode(fadt->pm1a_cnt_blk);

	wake_vec = acpi_find_wakeup_vector(fadt);

	/*
	 * Restore the memory content starting from address 0x1000 which is
	 * used for the real mode interrupt handler stubs.
	 */
	memcpy((void *)0x1000, (const void *)gd->arch.backup_mem,
	       S3_RESERVE_SIZE);

	post_code(POST_OS_RESUME);
	acpi_jump_to_wakeup(wake_vec);
}
Beispiel #4
0
void acpi_resume(void *wake_vec)
{
	if (CONFIG(HAVE_SMI_HANDLER)) {
		void *gnvs_address = cbmem_find(CBMEM_ID_ACPI_GNVS);

		/* Restore GNVS pointer in SMM if found */
		if (gnvs_address) {
			printk(BIOS_DEBUG, "Restore GNVS pointer to %p\n",
			       gnvs_address);
			smm_setup_structures(gnvs_address, NULL, NULL);
		}
	}

	/* Call mainboard resume handler first, if defined. */
	mainboard_suspend_resume();

	post_code(POST_OS_RESUME);
	acpi_jump_to_wakeup(wake_vec);
}
Beispiel #5
0
void acpi_resume(void *wake_vec)
{
#if CONFIG_HAVE_SMI_HANDLER
	u32 *gnvs_address = cbmem_find(CBMEM_ID_ACPI_GNVS_PTR);

	/* Restore GNVS pointer in SMM if found */
	if (gnvs_address && *gnvs_address) {
		printk(BIOS_DEBUG, "Restore GNVS pointer to 0x%08x\n",
		       *gnvs_address);
		smm_setup_structures((void *)*gnvs_address, NULL, NULL);
	}
#endif

	/* Call mainboard resume handler first, if defined. */
	mainboard_suspend_resume();

	post_code(POST_OS_RESUME);
	acpi_jump_to_wakeup(wake_vec);
}