Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * File pci-acpi.h | |
3 | * | |
4 | * Copyright (C) 2004 Intel | |
5 | * Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) | |
6 | */ | |
7 | ||
8 | #ifndef _PCI_ACPI_H_ | |
9 | #define _PCI_ACPI_H_ | |
10 | ||
8b62091e AP |
11 | #include <linux/acpi.h> |
12 | ||
1da177e4 LT |
13 | #define OSC_QUERY_TYPE 0 |
14 | #define OSC_SUPPORT_TYPE 1 | |
15 | #define OSC_CONTROL_TYPE 2 | |
16 | #define OSC_SUPPORT_MASKS 0x1f | |
17 | ||
18 | /* | |
19 | * _OSC DW0 Definition | |
20 | */ | |
21 | #define OSC_QUERY_ENABLE 1 | |
22 | #define OSC_REQUEST_ERROR 2 | |
23 | #define OSC_INVALID_UUID_ERROR 4 | |
24 | #define OSC_INVALID_REVISION_ERROR 8 | |
25 | #define OSC_CAPABILITIES_MASK_ERROR 16 | |
26 | ||
27 | /* | |
28 | * _OSC DW1 Definition (OS Support Fields) | |
29 | */ | |
30 | #define OSC_EXT_PCI_CONFIG_SUPPORT 1 | |
31 | #define OSC_ACTIVE_STATE_PWR_SUPPORT 2 | |
32 | #define OSC_CLOCK_PWR_CAPABILITY_SUPPORT 4 | |
33 | #define OSC_PCI_SEGMENT_GROUPS_SUPPORT 8 | |
34 | #define OSC_MSI_SUPPORT 16 | |
35 | ||
36 | /* | |
37 | * _OSC DW1 Definition (OS Control Fields) | |
38 | */ | |
39 | #define OSC_PCI_EXPRESS_NATIVE_HP_CONTROL 1 | |
40 | #define OSC_SHPC_NATIVE_HP_CONTROL 2 | |
41 | #define OSC_PCI_EXPRESS_PME_CONTROL 4 | |
42 | #define OSC_PCI_EXPRESS_AER_CONTROL 8 | |
43 | #define OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL 16 | |
44 | ||
45 | #define OSC_CONTROL_MASKS (OSC_PCI_EXPRESS_NATIVE_HP_CONTROL | \ | |
46 | OSC_SHPC_NATIVE_HP_CONTROL | \ | |
47 | OSC_PCI_EXPRESS_PME_CONTROL | \ | |
48 | OSC_PCI_EXPRESS_AER_CONTROL | \ | |
49 | OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL) | |
50 | ||
51 | #ifdef CONFIG_ACPI | |
427bf532 | 52 | extern acpi_status pci_osc_control_set(acpi_handle handle, u32 flags); |
990a7ac5 | 53 | int pci_acpi_osc_support(acpi_handle handle, u32 flags); |
056c58e8 JS |
54 | static inline acpi_handle acpi_find_root_bridge_handle(struct pci_dev *pdev) |
55 | { | |
56 | /* Find root host bridge */ | |
57 | while (pdev->bus->self) | |
58 | pdev = pdev->bus->self; | |
59 | ||
60 | return acpi_get_pci_rootbridge_handle(pci_domain_nr(pdev->bus), | |
61 | pdev->bus->number); | |
62 | } | |
e8c331e9 KK |
63 | |
64 | static inline acpi_handle acpi_pci_get_bridge_handle(struct pci_bus *pbus) | |
65 | { | |
66 | int seg = pci_domain_nr(pbus), busnr = pbus->number; | |
67 | struct pci_dev *bridge = pbus->self; | |
68 | if (bridge) | |
69 | return DEVICE_ACPI_HANDLE(&(bridge->dev)); | |
70 | return acpi_get_pci_rootbridge_handle(seg, busnr); | |
71 | } | |
1da177e4 | 72 | #else |
0ce03039 | 73 | #if !defined(AE_ERROR) |
1da177e4 LT |
74 | typedef u32 acpi_status; |
75 | #define AE_ERROR (acpi_status) (0x0001) | |
76 | #endif | |
427bf532 | 77 | static inline acpi_status pci_osc_control_set(acpi_handle handle, u32 flags) |
78 | {return AE_ERROR;} | |
056c58e8 JS |
79 | static inline acpi_handle acpi_find_root_bridge_handle(struct pci_dev *pdev) |
80 | { return NULL; } | |
1da177e4 LT |
81 | #endif |
82 | ||
83 | #endif /* _PCI_ACPI_H_ */ |