forked from Minki/linux
[PATCH] ppc64: introduce FW_FEATURE_ISERIES
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
8d15a3e55f
commit
aed3135194
@ -39,6 +39,7 @@
|
||||
#include <asm/cputable.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm/iommu.h>
|
||||
#include <asm/firmware.h>
|
||||
|
||||
#include <asm/time.h>
|
||||
#include "iSeries_setup.h"
|
||||
@ -314,6 +315,8 @@ static void __init iSeries_init_early(void)
|
||||
|
||||
DBG(" -> iSeries_init_early()\n");
|
||||
|
||||
ppc64_firmware_features = FW_FEATURE_ISERIES;
|
||||
|
||||
ppcdbg_initialize();
|
||||
|
||||
#if defined(CONFIG_BLK_DEV_INITRD)
|
||||
|
@ -52,7 +52,6 @@ EXPORT_SYMBOL(plpar_hcall_4out);
|
||||
EXPORT_SYMBOL(plpar_hcall_norets);
|
||||
EXPORT_SYMBOL(plpar_hcall_8arg_2ret);
|
||||
|
||||
extern void fw_feature_init(void);
|
||||
extern void pSeries_find_serial_port(void);
|
||||
|
||||
|
||||
|
@ -262,7 +262,7 @@ arch_initcall(pSeries_init_panel);
|
||||
* using contents of device-tree/ibm,hypertas-functions.
|
||||
* Ultimately this functionality may be moved into prom.c prom_init().
|
||||
*/
|
||||
void __init fw_feature_init(void)
|
||||
static void __init fw_feature_init(void)
|
||||
{
|
||||
struct device_node * dn;
|
||||
char * hypertas;
|
||||
|
@ -44,9 +44,10 @@
|
||||
#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 = FW_FEATURE_PFT | FW_FEATURE_TCE |
|
||||
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 |
|
||||
@ -54,11 +55,25 @@ enum {
|
||||
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 |
|
||||
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
|
||||
@ -68,7 +83,8 @@ extern unsigned long ppc64_firmware_features;
|
||||
|
||||
static inline unsigned long firmware_has_feature(unsigned long feature)
|
||||
{
|
||||
return ppc64_firmware_features & feature & FW_FEATURE_POSSIBLE;
|
||||
return (FW_FEATURE_ALWAYS & feature) ||
|
||||
(FW_FEATURE_POSSIBLE & ppc64_firmware_features & feature);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PPC_PSERIES
|
||||
|
Loading…
Reference in New Issue
Block a user