patch-2.4.25 linux-2.4.25/drivers/acpi/tables.c
Next file: linux-2.4.25/drivers/acpi/thermal.c
Previous file: linux-2.4.25/drivers/acpi/tables/tbxfroot.c
Back to the patch index
Back to the overall index
- Lines: 86
- Date:
2004-02-18 05:36:31.000000000 -0800
- Orig file:
linux-2.4.24/drivers/acpi/tables.c
- Orig date:
2003-11-28 10:26:19.000000000 -0800
diff -urN linux-2.4.24/drivers/acpi/tables.c linux-2.4.25/drivers/acpi/tables.c
@@ -60,6 +60,9 @@
[ACPI_HPET] = "HPET",
};
+static char *mps_inti_flags_polarity[] = { "dfl", "high", "res", "low" };
+static char *mps_inti_flags_trigger[] = { "dfl", "edge", "res", "level" };
+
/* System Description Table (RSDT/XSDT) */
struct acpi_table_sdt {
unsigned long pa;
@@ -136,8 +139,14 @@
{
struct acpi_table_int_src_ovr *p =
(struct acpi_table_int_src_ovr*) header;
- printk(KERN_INFO PREFIX "INT_SRC_OVR (bus[%d] irq[0x%x] global_irq[0x%x] polarity[0x%x] trigger[0x%x])\n",
- p->bus, p->bus_irq, p->global_irq, p->flags.polarity, p->flags.trigger);
+ printk(KERN_INFO PREFIX "INT_SRC_OVR (bus %d bus_irq %d global_irq %d %s %s)\n",
+ p->bus, p->bus_irq, p->global_irq,
+ mps_inti_flags_polarity[p->flags.polarity],
+ mps_inti_flags_trigger[p->flags.trigger]);
+ if(p->flags.reserved)
+ printk(KERN_INFO PREFIX "INT_SRC_OVR unexpected reserved flags: 0x%x\n",
+ p->flags.reserved);
+
}
break;
@@ -145,8 +154,9 @@
{
struct acpi_table_nmi_src *p =
(struct acpi_table_nmi_src*) header;
- printk(KERN_INFO PREFIX "NMI_SRC (polarity[0x%x] trigger[0x%x] global_irq[0x%x])\n",
- p->flags.polarity, p->flags.trigger, p->global_irq);
+ printk(KERN_INFO PREFIX "NMI_SRC (%s %s global_irq %d)\n",
+ mps_inti_flags_polarity[p->flags.polarity],
+ mps_inti_flags_trigger[p->flags.trigger], p->global_irq);
}
break;
@@ -154,8 +164,10 @@
{
struct acpi_table_lapic_nmi *p =
(struct acpi_table_lapic_nmi*) header;
- printk(KERN_INFO PREFIX "LAPIC_NMI (acpi_id[0x%02x] polarity[0x%x] trigger[0x%x] lint[0x%x])\n",
- p->acpi_id, p->flags.polarity, p->flags.trigger, p->lint);
+ printk(KERN_INFO PREFIX "LAPIC_NMI (acpi_id[0x%02x] %s %s lint[0x%x])\n",
+ p->acpi_id,
+ mps_inti_flags_polarity[p->flags.polarity],
+ mps_inti_flags_trigger[p->flags.trigger], p->lint);
}
break;
@@ -190,8 +202,10 @@
{
struct acpi_table_plat_int_src *p =
(struct acpi_table_plat_int_src*) header;
- printk(KERN_INFO PREFIX "PLAT_INT_SRC (polarity[0x%x] trigger[0x%x] type[0x%x] id[0x%04x] eid[0x%x] iosapic_vector[0x%x] global_irq[0x%x]\n",
- p->flags.polarity, p->flags.trigger, p->type, p->id, p->eid, p->iosapic_vector, p->global_irq);
+ printk(KERN_INFO PREFIX "PLAT_INT_SRC (%s %s type[0x%x] id[0x%04x] eid[0x%x] iosapic_vector[0x%x] global_irq[0x%x]\n",
+ mps_inti_flags_polarity[p->flags.polarity],
+ mps_inti_flags_trigger[p->flags.trigger],
+ p->type, p->id, p->eid, p->iosapic_vector, p->global_irq);
}
break;
@@ -262,10 +276,17 @@
/* Map the DSDT header via the pointer in the FADT */
if (id == ACPI_DSDT) {
- struct acpi_table_fadt *fadt = (struct acpi_table_fadt *) *header;
+ struct fadt_descriptor_rev2 *fadt = (struct fadt_descriptor_rev2 *) *header;
+
+ if (fadt->revision == 3 && fadt->Xdsdt) {
+ *header = (void *) __acpi_map_table(fadt->Xdsdt,
+ sizeof(struct acpi_table_header));
+ } else if (fadt->V1_dsdt) {
+ *header = (void *) __acpi_map_table(fadt->V1_dsdt,
+ sizeof(struct acpi_table_header));
+ } else
+ *header = 0;
- *header = (void *) __acpi_map_table(fadt->dsdt_addr,
- sizeof(struct acpi_table_header));
if (!*header) {
printk(KERN_WARNING PREFIX "Unable to map DSDT\n");
return -ENODEV;
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)