mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
x86/acpi: Add functions to setup and access the wakeup mailbox
Systems that describe hardware using DeviceTree graphs may enumerate and implement the wakeup mailbox as defined in the ACPI specification but do not otherwise depend on ACPI. Expose functions to setup and access the location of the wakeup mailbox from outside ACPI code. The function acpi_setup_mp_wakeup_mailbox() stores the physical address of the mailbox and updates the wakeup_secondary_cpu_64() APIC callback. The function acpi_madt_multiproc_wakeup_mailbox() returns a pointer to the mailbox. Acked-by: Rafael J. Wysocki (Intel) <rafael@kernel.org> Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com> Signed-off-by: Dexuan Cui <dexuan@kernel.org>
This commit is contained in:
parent
bdf5eb306c
commit
a746607df2
|
|
@ -182,6 +182,9 @@ void __iomem *x86_acpi_os_ioremap(acpi_physical_address phys, acpi_size size);
|
|||
#define acpi_os_ioremap acpi_os_ioremap
|
||||
#endif
|
||||
|
||||
void acpi_setup_mp_wakeup_mailbox(u64 addr);
|
||||
struct acpi_madt_multiproc_wakeup_mailbox *acpi_get_mp_wakeup_mailbox(void);
|
||||
|
||||
#else /* !CONFIG_ACPI */
|
||||
|
||||
#define acpi_lapic 0
|
||||
|
|
@ -200,6 +203,13 @@ static inline u64 x86_default_get_root_pointer(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void acpi_setup_mp_wakeup_mailbox(u64 addr) { }
|
||||
|
||||
static inline struct acpi_madt_multiproc_wakeup_mailbox *acpi_get_mp_wakeup_mailbox(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif /* !CONFIG_ACPI */
|
||||
|
||||
#define ARCH_HAS_POWER_INIT 1
|
||||
|
|
|
|||
|
|
@ -247,3 +247,14 @@ int __init acpi_parse_mp_wake(union acpi_subtable_headers *header,
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __init acpi_setup_mp_wakeup_mailbox(u64 mailbox_paddr)
|
||||
{
|
||||
acpi_mp_wake_mailbox_paddr = mailbox_paddr;
|
||||
apic_update_callback(wakeup_secondary_cpu_64, acpi_wakeup_cpu);
|
||||
}
|
||||
|
||||
struct acpi_madt_multiproc_wakeup_mailbox *acpi_get_mp_wakeup_mailbox(void)
|
||||
{
|
||||
return acpi_mp_wake_mailbox;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user