Kaynağa Gözat

[PARISC] Let PA-8900 processors boot

Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Kyle McMartin 18 yıl önce
ebeveyn
işleme
2cbd42dbf8

+ 3 - 1
arch/parisc/kernel/hardware.c

@@ -1296,6 +1296,7 @@ static struct hp_cpu_type_mask {
 	{ 0x05f0, 0x0ff0, pcxw2  },  /* 0x05f0 - 0x05ff */
 	{ 0x05f0, 0x0ff0, pcxw2  },  /* 0x05f0 - 0x05ff */
 	{ 0x0600, 0x0fe0, pcxl   },  /* 0x0600 - 0x061f */
 	{ 0x0600, 0x0fe0, pcxl   },  /* 0x0600 - 0x061f */
 	{ 0x0880, 0x0ff0, mako   },  /* 0x0880 - 0x088f */
 	{ 0x0880, 0x0ff0, mako   },  /* 0x0880 - 0x088f */
+	{ 0x0890, 0x0ff0, mako2  },  /* 0x0890 - 0x089f */
 	{ 0x0000, 0x0000, pcx    }	/* terminate table */
 	{ 0x0000, 0x0000, pcx    }	/* terminate table */
 };
 };
 
 
@@ -1311,7 +1312,8 @@ char *cpu_name_version[][2] = {
 	[pcxw]	= { "PA8500 (PCX-W)",	"2.0" },
 	[pcxw]	= { "PA8500 (PCX-W)",	"2.0" },
 	[pcxw_]	= { "PA8600 (PCX-W+)",	"2.0" },
 	[pcxw_]	= { "PA8600 (PCX-W+)",	"2.0" },
 	[pcxw2]	= { "PA8700 (PCX-W2)",	"2.0" },
 	[pcxw2]	= { "PA8700 (PCX-W2)",	"2.0" },
-	[mako]	= { "PA8800 (Mako)",	"2.0" }
+	[mako]	= { "PA8800 (Mako)",	"2.0" },
+	[mako2] = { "PA8900 (Shortfin)",	"2.0" }
 };
 };
 
 
 const char * __init
 const char * __init

+ 4 - 2
arch/parisc/kernel/perf.c

@@ -511,10 +511,12 @@ static int __init perf_init(void)
 	} else if (boot_cpu_data.cpu_type == pcxw ||
 	} else if (boot_cpu_data.cpu_type == pcxw ||
 		 boot_cpu_data.cpu_type == pcxw_ ||
 		 boot_cpu_data.cpu_type == pcxw_ ||
 		 boot_cpu_data.cpu_type == pcxw2 ||
 		 boot_cpu_data.cpu_type == pcxw2 ||
-		 boot_cpu_data.cpu_type == mako) {
+		 boot_cpu_data.cpu_type == mako ||
+		 boot_cpu_data.cpu_type == mako2) {
 		perf_processor_interface = CUDA_INTF;
 		perf_processor_interface = CUDA_INTF;
 		if (boot_cpu_data.cpu_type == pcxw2 ||
 		if (boot_cpu_data.cpu_type == pcxw2 ||
-		    boot_cpu_data.cpu_type == mako) 
+		    boot_cpu_data.cpu_type == mako ||
+		    boot_cpu_data.cpu_type == mako2)
 			bitmask_array = perf_bitmasks_piranha;
 			bitmask_array = perf_bitmasks_piranha;
 	} else {
 	} else {
 		perf_processor_interface = UNKNOWN_INTF;
 		perf_processor_interface = UNKNOWN_INTF;

+ 1 - 0
arch/parisc/kernel/setup.c

@@ -225,6 +225,7 @@ static void __init parisc_proc_mkdir(void)
                 }
                 }
                 break;
                 break;
 	case mako:
 	case mako:
+	case mako2:
                 if (NULL == proc_mckinley_root)
                 if (NULL == proc_mckinley_root)
                 {
                 {
                         proc_mckinley_root = proc_mkdir("bus/mckinley", NULL);
                         proc_mckinley_root = proc_mkdir("bus/mckinley", NULL);

+ 2 - 1
include/asm-parisc/hardware.h

@@ -31,7 +31,8 @@ enum cpu_type {
 	pcxw	= 8, /* pa8500		pa 2.0  */
 	pcxw	= 8, /* pa8500		pa 2.0  */
 	pcxw_	= 9, /* pa8600	(w+)	pa 2.0  */
 	pcxw_	= 9, /* pa8600	(w+)	pa 2.0  */
 	pcxw2	= 10, /* pa8700		pa 2.0  */
 	pcxw2	= 10, /* pa8700		pa 2.0  */
-	mako	= 11  /* pa8800		pa 2.0  */
+	mako	= 11, /* pa8800		pa 2.0  */
+	mako2	= 12  /* pa8900		pa 2.0  */
 };
 };
 
 
 extern char *cpu_name_version[][2]; /* mapping from enum cpu_type to strings */
 extern char *cpu_name_version[][2]; /* mapping from enum cpu_type to strings */

+ 2 - 2
include/asm-parisc/processor.h

@@ -334,8 +334,8 @@ extern unsigned long get_wchan(struct task_struct *p);
 static inline int parisc_requires_coherency(void)
 static inline int parisc_requires_coherency(void)
 {
 {
 #ifdef CONFIG_PA8X00
 #ifdef CONFIG_PA8X00
-	/* FIXME: also pa8900 - when we see one */
-	return boot_cpu_data.cpu_type == mako;
+	return (boot_cpu_data.cpu_type == mako) ||
+		(boot_cpu_data.cpu_type == mako2);
 #else
 #else
 	return 0;
 	return 0;
 #endif
 #endif