diff options
Diffstat (limited to 'arch/powerpc/include/asm/firmware.h')
-rw-r--r-- | arch/powerpc/include/asm/firmware.h | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/firmware.h b/arch/powerpc/include/asm/firmware.h new file mode 100644 index 000000000000..3a179827528d --- /dev/null +++ b/arch/powerpc/include/asm/firmware.h | |||
@@ -0,0 +1,132 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Ben. Herrenschmidt (benh@kernel.crashing.org) | ||
3 | * | ||
4 | * Modifications for ppc64: | ||
5 | * Copyright (C) 2003 Dave Engebretsen <engebret@us.ibm.com> | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or | ||
8 | * modify it under the terms of the GNU General Public License | ||
9 | * as published by the Free Software Foundation; either version | ||
10 | * 2 of the License, or (at your option) any later version. | ||
11 | */ | ||
12 | #ifndef __ASM_POWERPC_FIRMWARE_H | ||
13 | #define __ASM_POWERPC_FIRMWARE_H | ||
14 | |||
15 | #ifdef __KERNEL__ | ||
16 | |||
17 | #include <asm/asm-compat.h> | ||
18 | #include <asm/feature-fixups.h> | ||
19 | |||
20 | /* firmware feature bitmask values */ | ||
21 | #define FIRMWARE_MAX_FEATURES 63 | ||
22 | |||
23 | #define FW_FEATURE_PFT ASM_CONST(0x0000000000000001) | ||
24 | #define FW_FEATURE_TCE ASM_CONST(0x0000000000000002) | ||
25 | #define FW_FEATURE_SPRG0 ASM_CONST(0x0000000000000004) | ||
26 | #define FW_FEATURE_DABR ASM_CONST(0x0000000000000008) | ||
27 | #define FW_FEATURE_COPY ASM_CONST(0x0000000000000010) | ||
28 | #define FW_FEATURE_ASR ASM_CONST(0x0000000000000020) | ||
29 | #define FW_FEATURE_DEBUG ASM_CONST(0x0000000000000040) | ||
30 | #define FW_FEATURE_TERM ASM_CONST(0x0000000000000080) | ||
31 | #define FW_FEATURE_PERF ASM_CONST(0x0000000000000100) | ||
32 | #define FW_FEATURE_DUMP ASM_CONST(0x0000000000000200) | ||
33 | #define FW_FEATURE_INTERRUPT ASM_CONST(0x0000000000000400) | ||
34 | #define FW_FEATURE_MIGRATE ASM_CONST(0x0000000000000800) | ||
35 | #define FW_FEATURE_PERFMON ASM_CONST(0x0000000000001000) | ||
36 | #define FW_FEATURE_CRQ ASM_CONST(0x0000000000002000) | ||
37 | #define FW_FEATURE_VIO ASM_CONST(0x0000000000004000) | ||
38 | #define FW_FEATURE_RDMA ASM_CONST(0x0000000000008000) | ||
39 | #define FW_FEATURE_LLAN ASM_CONST(0x0000000000010000) | ||
40 | #define FW_FEATURE_BULK ASM_CONST(0x0000000000020000) | ||
41 | #define FW_FEATURE_XDABR ASM_CONST(0x0000000000040000) | ||
42 | #define FW_FEATURE_MULTITCE ASM_CONST(0x0000000000080000) | ||
43 | #define FW_FEATURE_SPLPAR ASM_CONST(0x0000000000100000) | ||
44 | #define FW_FEATURE_ISERIES ASM_CONST(0x0000000000200000) | ||
45 | #define FW_FEATURE_LPAR ASM_CONST(0x0000000000400000) | ||
46 | #define FW_FEATURE_PS3_LV1 ASM_CONST(0x0000000000800000) | ||
47 | #define FW_FEATURE_BEAT ASM_CONST(0x0000000001000000) | ||
48 | #define FW_FEATURE_BULK_REMOVE ASM_CONST(0x0000000002000000) | ||
49 | #define FW_FEATURE_CMO ASM_CONST(0x0000000004000000) | ||
50 | |||
51 | #ifndef __ASSEMBLY__ | ||
52 | |||
53 | enum { | ||
54 | #ifdef CONFIG_PPC64 | ||
55 | FW_FEATURE_PSERIES_POSSIBLE = FW_FEATURE_PFT | FW_FEATURE_TCE | | ||
56 | FW_FEATURE_SPRG0 | FW_FEATURE_DABR | FW_FEATURE_COPY | | ||
57 | FW_FEATURE_ASR | FW_FEATURE_DEBUG | FW_FEATURE_TERM | | ||
58 | FW_FEATURE_PERF | FW_FEATURE_DUMP | FW_FEATURE_INTERRUPT | | ||
59 | FW_FEATURE_MIGRATE | FW_FEATURE_PERFMON | FW_FEATURE_CRQ | | ||
60 | FW_FEATURE_VIO | FW_FEATURE_RDMA | FW_FEATURE_LLAN | | ||
61 | FW_FEATURE_BULK | FW_FEATURE_XDABR | FW_FEATURE_MULTITCE | | ||
62 | FW_FEATURE_SPLPAR | FW_FEATURE_LPAR | FW_FEATURE_CMO, | ||
63 | FW_FEATURE_PSERIES_ALWAYS = 0, | ||
64 | FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, | ||
65 | FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES | FW_FEATURE_LPAR, | ||
66 | FW_FEATURE_PS3_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1, | ||
67 | FW_FEATURE_PS3_ALWAYS = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1, | ||
68 | FW_FEATURE_CELLEB_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_BEAT, | ||
69 | FW_FEATURE_CELLEB_ALWAYS = 0, | ||
70 | FW_FEATURE_NATIVE_POSSIBLE = 0, | ||
71 | FW_FEATURE_NATIVE_ALWAYS = 0, | ||
72 | FW_FEATURE_POSSIBLE = | ||
73 | #ifdef CONFIG_PPC_PSERIES | ||
74 | FW_FEATURE_PSERIES_POSSIBLE | | ||
75 | #endif | ||
76 | #ifdef CONFIG_PPC_ISERIES | ||
77 | FW_FEATURE_ISERIES_POSSIBLE | | ||
78 | #endif | ||
79 | #ifdef CONFIG_PPC_PS3 | ||
80 | FW_FEATURE_PS3_POSSIBLE | | ||
81 | #endif | ||
82 | #ifdef CONFIG_PPC_CELLEB | ||
83 | FW_FEATURE_CELLEB_POSSIBLE | | ||
84 | #endif | ||
85 | #ifdef CONFIG_PPC_NATIVE | ||
86 | FW_FEATURE_NATIVE_ALWAYS | | ||
87 | #endif | ||
88 | 0, | ||
89 | FW_FEATURE_ALWAYS = | ||
90 | #ifdef CONFIG_PPC_PSERIES | ||
91 | FW_FEATURE_PSERIES_ALWAYS & | ||
92 | #endif | ||
93 | #ifdef CONFIG_PPC_ISERIES | ||
94 | FW_FEATURE_ISERIES_ALWAYS & | ||
95 | #endif | ||
96 | #ifdef CONFIG_PPC_PS3 | ||
97 | FW_FEATURE_PS3_ALWAYS & | ||
98 | #endif | ||
99 | #ifdef CONFIG_PPC_CELLEB | ||
100 | FW_FEATURE_CELLEB_ALWAYS & | ||
101 | #endif | ||
102 | #ifdef CONFIG_PPC_NATIVE | ||
103 | FW_FEATURE_NATIVE_ALWAYS & | ||
104 | #endif | ||
105 | FW_FEATURE_POSSIBLE, | ||
106 | |||
107 | #else /* CONFIG_PPC64 */ | ||
108 | FW_FEATURE_POSSIBLE = 0, | ||
109 | FW_FEATURE_ALWAYS = 0, | ||
110 | #endif | ||
111 | }; | ||
112 | |||
113 | /* This is used to identify firmware features which are available | ||
114 | * to the kernel. | ||
115 | */ | ||
116 | extern unsigned long powerpc_firmware_features; | ||
117 | |||
118 | #define firmware_has_feature(feature) \ | ||
119 | ((FW_FEATURE_ALWAYS & (feature)) || \ | ||
120 | (FW_FEATURE_POSSIBLE & powerpc_firmware_features & (feature))) | ||
121 | |||
122 | extern void system_reset_fwnmi(void); | ||
123 | extern void machine_check_fwnmi(void); | ||
124 | |||
125 | /* This is true if we are using the firmware NMI handler (typically LPAR) */ | ||
126 | extern int fwnmi_active; | ||
127 | |||
128 | extern unsigned int __start___fw_ftr_fixup, __stop___fw_ftr_fixup; | ||
129 | |||
130 | #endif /* __ASSEMBLY__ */ | ||
131 | #endif /* __KERNEL__ */ | ||
132 | #endif /* __ASM_POWERPC_FIRMWARE_H */ | ||