Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / include / linux / acpi.h
index 041f660..d3bc25e 100644 (file)
 #ifndef _LINUX_ACPI_H
 #define _LINUX_ACPI_H
 
+#include <linux/config.h>
+
+#ifdef CONFIG_ACPI
+
 #ifndef _LINUX
 #define _LINUX
 #endif
@@ -37,7 +41,7 @@
 #include <asm/acpi.h>
 
 
-#ifdef CONFIG_ACPI_BOOT
+#ifdef CONFIG_ACPI
 
 enum acpi_irq_model_id {
        ACPI_IRQ_MODEL_PIC = 0,
@@ -202,7 +206,10 @@ struct acpi_table_plat_int_src {
        u8                      eid;
        u8                      iosapic_vector;
        u32                     global_irq;
-       u32                     reserved;
+       struct {
+               u32                     cpei_override_flag:1;
+               u32                     reserved:31;
+       }                       plint_flags;
 } __attribute__ ((packed));
 
 enum acpi_interrupt_id {
@@ -338,11 +345,19 @@ struct acpi_table_ecdt {
 
 /* PCI MMCONFIG */
 
+/* Defined in PCI Firmware Specification 3.0 */
+struct acpi_table_mcfg_config {
+       u32                             base_address;
+       u32                             base_reserved;
+       u16                             pci_segment_group_number;
+       u8                              start_bus_number;
+       u8                              end_bus_number;
+       u8                              reserved[4];
+} __attribute__ ((packed));
 struct acpi_table_mcfg {
        struct acpi_table_header        header;
        u8                              reserved[8];
-       u32                             base_address;
-       u32                             base_reserved;
+       struct acpi_table_mcfg_config   config[0];
 } __attribute__ ((packed));
 
 /* Table Handlers */
@@ -379,6 +394,7 @@ typedef int (*acpi_madt_entry_handler) (acpi_table_entry_header *header, const u
 char * __acpi_map_table (unsigned long phys_addr, unsigned long size);
 unsigned long acpi_find_rsdp (void);
 int acpi_boot_init (void);
+int acpi_boot_table_init (void);
 int acpi_numa_init (void);
 
 int acpi_table_init (void);
@@ -386,6 +402,7 @@ int acpi_table_parse (enum acpi_table_id id, acpi_table_handler handler);
 int acpi_get_table_header_early (enum acpi_table_id id, struct acpi_table_header **header);
 int acpi_table_parse_madt (enum acpi_madt_entry_id id, acpi_madt_entry_handler handler, unsigned int max_entries);
 int acpi_table_parse_srat (enum acpi_srat_entry_id id, acpi_madt_entry_handler handler, unsigned int max_entries);
+int acpi_parse_mcfg (unsigned long phys_addr, unsigned long size);
 void acpi_table_print (struct acpi_table_header *header, unsigned long phys_addr);
 void acpi_table_print_madt_entry (acpi_table_entry_header *madt);
 void acpi_table_print_srat_entry (acpi_table_entry_header *srat);
@@ -396,27 +413,40 @@ void acpi_numa_processor_affinity_init (struct acpi_table_processor_affinity *pa
 void acpi_numa_memory_affinity_init (struct acpi_table_memory_affinity *ma);
 void acpi_numa_arch_fixup(void);
 
+#ifdef CONFIG_ACPI_HOTPLUG_CPU
+/* Arch dependent functions for cpu hotplug support */
+int acpi_map_lsapic(acpi_handle handle, int *pcpu);
+int acpi_unmap_lsapic(int cpu);
+#endif /* CONFIG_ACPI_HOTPLUG_CPU */
+
+int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base);
+int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base);
+
 extern int acpi_mp_config;
 
-extern u32 pci_mmcfg_base_addr;
+extern struct acpi_table_mcfg_config *pci_mmcfg_config;
+extern int pci_mmcfg_config_num;
 
-extern int sbf_port ;
+extern int sbf_port;
+extern unsigned long acpi_video_flags;
 
-#else  /*!CONFIG_ACPI_BOOT*/
+#else  /* !CONFIG_ACPI */
 
 #define acpi_mp_config 0
 
-static inline int acpi_boot_init(void)
-{
-       return 0;
-}
-
-#endif         /*!CONFIG_ACPI_BOOT*/
+#endif         /* !CONFIG_ACPI */
 
-unsigned int acpi_register_gsi (u32 gsi, int edge_level, int active_high_low);
+int acpi_register_gsi (u32 gsi, int triggering, int polarity);
 int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
 
-#ifdef CONFIG_ACPI_PCI
+/*
+ * This function undoes the effect of one call to acpi_register_gsi().
+ * If this matches the last registration, any IRQ resources for gsi
+ * are freed.
+ */
+void acpi_unregister_gsi (u32 gsi);
+
+#ifdef CONFIG_ACPI
 
 struct acpi_prt_entry {
        struct list_head        node;
@@ -434,11 +464,12 @@ struct acpi_prt_list {
        struct list_head        entries;
 };
 
-extern struct acpi_prt_list    acpi_prt;
-
 struct pci_dev;
 
 int acpi_pci_irq_enable (struct pci_dev *dev);
+void acpi_penalize_isa_irq(int irq, int active);
+
+void acpi_pci_irq_disable (struct pci_dev *dev);
 
 struct acpi_pci_driver {
        struct acpi_pci_driver *next;
@@ -449,7 +480,7 @@ struct acpi_pci_driver {
 int acpi_pci_register_driver(struct acpi_pci_driver *driver);
 void acpi_pci_unregister_driver(struct acpi_pci_driver *driver);
 
-#endif /*CONFIG_ACPI_PCI*/
+#endif /* CONFIG_ACPI */
 
 #ifdef CONFIG_ACPI_EC
 
@@ -458,18 +489,57 @@ extern int ec_write(u8 addr, u8 val);
 
 #endif /*CONFIG_ACPI_EC*/
 
-#ifdef CONFIG_ACPI_INTERPRETER
-
 extern int acpi_blacklisted(void);
 extern void acpi_bios_year(char *s);
 
-#else /*!CONFIG_ACPI_INTERPRETER*/
+#define        ACPI_CSTATE_LIMIT_DEFINED       /* for driver builds */
+#ifdef CONFIG_ACPI
 
-static inline int acpi_blacklisted(void)
+/*
+ * Set highest legal C-state
+ * 0: C0 okay, but not C1
+ * 1: C1 okay, but not C2
+ * 2: C2 okay, but not C3 etc.
+ */
+
+extern unsigned int max_cstate;
+
+static inline unsigned int acpi_get_cstate_limit(void)
+{
+       return max_cstate;
+}
+static inline void acpi_set_cstate_limit(unsigned int new_limit)
+{
+       max_cstate = new_limit;
+       return;
+}
+#else
+static inline unsigned int acpi_get_cstate_limit(void) { return 0; }
+static inline void acpi_set_cstate_limit(unsigned int new_limit) { return; }
+#endif
+
+#ifdef CONFIG_ACPI_NUMA
+int acpi_get_pxm(acpi_handle handle);
+#else
+static inline int acpi_get_pxm(acpi_handle handle)
 {
        return 0;
 }
+#endif
 
-#endif /*!CONFIG_ACPI_INTERPRETER*/
+extern int pnpacpi_disabled;
+
+#else  /* CONFIG_ACPI */
+
+static inline int acpi_boot_init(void)
+{
+       return 0;
+}
+
+static inline int acpi_boot_table_init(void)
+{
+       return 0;
+}
 
-#endif /*_LINUX_ACPI_H*/
+#endif /* CONFIG_ACPI */
+#endif /*_LINUX_ACPI_H*/