Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aed31351 authored by Stephen Rothwell's avatar Stephen Rothwell Committed by Paul Mackerras
Browse files

[PATCH] ppc64: introduce FW_FEATURE_ISERIES

parent 8d15a3e5
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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)
+0 −1
Original line number Diff line number Diff line
@@ -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);


+1 −1
Original line number Diff line number Diff line
@@ -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;
+19 −3
Original line number Diff line number Diff line
@@ -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