]> err.no Git - linux-2.6/blobdiff - include/asm-ppc64/firmware.h
[PATCH] Clean up struct flock definitions
[linux-2.6] / include / asm-ppc64 / firmware.h
index 5bb5bf46bb4acbafe17f74605aa351e7a53530a6..22bb85cf60af189a28ed9e3e2d1c6630a04de45f 100644 (file)
 #define FW_FEATURE_XDABR       (1UL<<18)
 #define FW_FEATURE_MULTITCE    (1UL<<19)
 #define FW_FEATURE_SPLPAR      (1UL<<20)
+#define FW_FEATURE_ISERIES     (1UL<<21)
+
+enum {
+       FW_FEATURE_PSERIES_POSSIBLE = FW_FEATURE_PFT | FW_FEATURE_TCE |
+               FW_FEATURE_SPRG0 | FW_FEATURE_DABR | FW_FEATURE_COPY |
+               FW_FEATURE_ASR | FW_FEATURE_DEBUG | FW_FEATURE_TERM |
+               FW_FEATURE_PERF | FW_FEATURE_DUMP | FW_FEATURE_INTERRUPT |
+               FW_FEATURE_MIGRATE | FW_FEATURE_PERFMON | FW_FEATURE_CRQ |
+               FW_FEATURE_VIO | FW_FEATURE_RDMA | FW_FEATURE_LLAN |
+               FW_FEATURE_BULK | FW_FEATURE_XDABR | FW_FEATURE_MULTITCE |
+               FW_FEATURE_SPLPAR,
+       FW_FEATURE_PSERIES_ALWAYS = 0,
+       FW_FEATURE_ISERIES_POSSIBLE = FW_FEATURE_ISERIES,
+       FW_FEATURE_ISERIES_ALWAYS = FW_FEATURE_ISERIES,
+       FW_FEATURE_POSSIBLE =
+#ifdef CONFIG_PPC_PSERIES
+               FW_FEATURE_PSERIES_POSSIBLE |
+#endif
+#ifdef CONFIG_PPC_ISERIES
+               FW_FEATURE_ISERIES_POSSIBLE |
+#endif
+               0,
+       FW_FEATURE_ALWAYS =
+#ifdef CONFIG_PPC_PSERIES
+               FW_FEATURE_PSERIES_ALWAYS &
+#endif
+#ifdef CONFIG_PPC_ISERIES
+               FW_FEATURE_ISERIES_ALWAYS &
+#endif
+               FW_FEATURE_POSSIBLE,
+};
 
 /* This is used to identify firmware features which are available
  * to the kernel.
@@ -52,15 +83,18 @@ extern unsigned long        ppc64_firmware_features;
 
 static inline unsigned long firmware_has_feature(unsigned long feature)
 {
-       return ppc64_firmware_features & feature;
+       return (FW_FEATURE_ALWAYS & feature) ||
+               (FW_FEATURE_POSSIBLE & ppc64_firmware_features & feature);
 }
 
+#ifdef CONFIG_PPC_PSERIES
 typedef struct {
     unsigned long val;
     char * name;
 } firmware_feature_t;
 
 extern firmware_feature_t firmware_features_table[];
+#endif
 
 #endif /* __ASSEMBLY__ */
 #endif /* __KERNEL__ */