* [Linux-ia64] [PATCH] random ia64 acpi fixes
@ 2002-06-12 16:19 Matthew Wilcox
0 siblings, 0 replies; only message in thread
From: Matthew Wilcox @ 2002-06-12 16:19 UTC (permalink / raw)
To: linux-ia64
Several changes in this message, pay attention ;-)
This change is required on systems which don't support both legacy &
acpi modes.
diff -urNX ../dontdiff linux-2418/drivers/acpi/hardware/hwacpi.c linux-acpi/drivers/acpi/hardware/hwacpi.c
--- linux-2418/drivers/acpi/hardware/hwacpi.c Wed Jun 12 09:08:54 2002
+++ linux-acpi/drivers/acpi/hardware/hwacpi.c Wed Jun 12 09:49:25 2002
@@ -96,6 +96,14 @@
ACPI_FUNCTION_TRACE ("Hw_set_mode");
+
+ if (mode = acpi_hw_get_mode())
+ return_ACPI_STATUS (AE_OK);
+
+ /* If no SMI_CMD, system does not support SMI */
+ if (!acpi_gbl_FADT->smi_cmd)
+ return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE);
+
switch (mode) {
case ACPI_SYS_MODE_ACPI:
@@ -108,6 +116,10 @@
case ACPI_SYS_MODE_LEGACY:
+ /* If both enable/disable are zero, legacy mode is not supported */
+ if (!acpi_gbl_FADT->acpi_enable && !acpi_gbl_FADT->acpi_disable)
+ return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE);
+
/*
* BIOS should clear all fixed status bits and restore fixed event
* enable bits to default
Four changes in this file. First, we don't define _IA64, only
CONFIG_IA64. Second, we should check the writeback bit, not the
uncacheable bit. Third, these aren't ISA irqs, they're GSIs, so they're
actually in a different number space from the ISA irqs. And fourth,
skipping the braces in this kind of construct always leads to trouble.
diff -urNX ../dontdiff linux-2418/drivers/acpi/osl.c linux-acpi/drivers/acpi/osl.c
--- linux-2418/drivers/acpi/osl.c Wed Jun 12 09:08:54 2002
+++ linux-acpi/drivers/acpi/osl.c Wed Jun 12 07:20:26 2002
@@ -41,7 +41,7 @@
u64 efi_mem_attributes (u64 phys_addr);
#endif
-#ifdef _IA64
+#ifdef CONFIG_IA64
#include <asm/hw_irq.h>
#include <asm/delay.h>
#endif
@@ -176,7 +176,7 @@
acpi_os_map_memory(ACPI_PHYSICAL_ADDRESS phys, ACPI_SIZE size, void **virt)
{
#ifdef CONFIG_ACPI_EFI
- if (EFI_MEMORY_UC & efi_mem_attributes(phys)) {
+ if (!(EFI_MEMORY_WB & efi_mem_attributes(phys))) {
*virt = ioremap(phys, size);
} else {
*virt = phys_to_virt(phys);
@@ -234,9 +234,9 @@
acpi_status
acpi_os_install_interrupt_handler(u32 irq, OSD_HANDLER handler, void *context)
{
-#ifdef _IA64
- irq = isa_irq_to_vector(irq);
-#endif /*_IA64*/
+#ifdef CONFIG_IA64
+ irq = gsi_to_vector(irq);
+#endif /* CONFIG_IA64 */
acpi_irq_irq = irq;
acpi_irq_handler = handler;
acpi_irq_context = context;
@@ -252,9 +252,9 @@
acpi_os_remove_interrupt_handler(u32 irq, OSD_HANDLER handler)
{
if (acpi_irq_handler) {
-#ifdef _IA64
- irq = isa_irq_to_vector(irq);
-#endif /*_IA64*/
+#ifdef CONFIG_IA64
+ irq = gsi_to_vector(irq);
+#endif /* CONFIG_IA64 */
free_irq(irq, acpi_irq);
acpi_irq_handler = NULL;
}
@@ -352,9 +352,9 @@
if (EFI_MEMORY_UC & efi_mem_attributes(phys_addr)) {
iomem = 1;
virt_addr = ioremap(phys_addr, width);
- }
- else
+ } else {
virt_addr = phys_to_virt(phys_addr);
+ }
#else
virt_addr = phys_to_virt(phys_addr);
#endif
@@ -397,9 +397,9 @@
if (EFI_MEMORY_UC & efi_mem_attributes(phys_addr)) {
iomem = 1;
virt_addr = ioremap(phys_addr,width);
- }
- else
+ } else {
virt_addr = phys_to_virt(phys_addr);
+ }
#else
virt_addr = phys_to_virt(phys_addr);
#endif
Won't build on ia64 without this change.
diff -urNX ../dontdiff linux-2418/drivers/acpi/system.c linux-acpi/drivers/acpi/system.c
--- linux-2418/drivers/acpi/system.c Wed Jun 12 09:08:54 2002
+++ linux-acpi/drivers/acpi/system.c Wed Jun 12 07:20:26 2002
@@ -37,7 +37,9 @@
#include <linux/proc_fs.h>
#include <asm/uaccess.h>
#include <asm/acpi.h>
+#ifdef __i386__
#include <asm/save_state.h>
+#endif
#include "acpi_bus.h"
#include "acpi_drivers.h"
--
It's always legal to use Linux (TM) systems
http://www.gnu.org/philosophy/why-free.html
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2002-06-12 16:19 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-06-12 16:19 [Linux-ia64] [PATCH] random ia64 acpi fixes Matthew Wilcox
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.