NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: port-hp700/41379: PA7150 CPU on 735/125 is not probed properly
On Thursday 07 May 2009 13:15:01 tsutsui%ceres.dti.ne.jp@localhost wrote:
> >Number: 41379
> >Category: port-hp700
> >Synopsis: PA7150 CPU on 735/125 is not probed properly
Please test this patch.
Thanks,
Nick
Index: arch/hp700/hp700/machdep.c
===================================================================
RCS file: /cvsroot/src/sys/arch/hp700/hp700/machdep.c,v
retrieving revision 1.62
diff -u -p -u -r1.62 machdep.c
--- arch/hp700/hp700/machdep.c 9 May 2009 11:39:30 -0000 1.62
+++ arch/hp700/hp700/machdep.c 13 May 2009 09:13:05 -0000
@@ -270,6 +270,7 @@ void delay_init(void);
static inline void fall(int, int, int, int, int);
void dumpsys(void);
void cpuid(void);
+enum hppa_cpu_type cpu_model_cpuid(int);
/*
* wide used hardware params
@@ -622,6 +623,7 @@ cpuid(void)
extern int kpsw;
/* may the scientific guessing begin */
+ cpu_type = hpc_unknown;
cpu_features = 0;
cpu_version = 0;
@@ -648,8 +650,10 @@ cpuid(void)
if ((error = pdc_call((iodcio_t)pdc, 0, PDC_MODEL, PDC_MODEL_CPUID,
&pdc_cpuid, 0, 0, 0, 0)) < 0) {
#ifdef DEBUG
- printf("WARNING: PDC_MODEL_CPUID error %d\n", error);
+ printf("WARNING: PDC_MODEL_CPUID error %d."
+ "Using cpu_hvers based cpu_type.\n", error);
#endif
+ cpu_type = cpu_model_cpuid(cpu_hvers);
} else {
#ifdef DEBUG
printf("%s: cpuid.version = %x\n", __func__,
@@ -752,7 +756,12 @@ cpuid(void)
if (cpu_version)
for (p = cpu_types; p->hci_chip_name; p++) {
- if (p->hci_cpuid == cpu_version)
+ if (p->hci_cpuversion == cpu_version)
+ break;
+ }
+ else if (cpu_type != hpc_unknown)
+ for (p = cpu_types; p->hci_chip_name; p++) {
+ if (p->hci_cputype == cpu_type)
break;
}
else
@@ -802,6 +811,38 @@ cpuid(void)
hppa_fpu_bootstrap(pdc_coproc.ccr_enable);
}
+enum hppa_cpu_type
+cpu_model_cpuid(int hvers)
+{
+ switch (hvers) {
+ /* no supported HP8xx/9xx models with pcx */
+ case HPPA_BOARD_HP720:
+ case HPPA_BOARD_HP750_66:
+ case HPPA_BOARD_HP730_66:
+ case HPPA_BOARD_HP710:
+ case HPPA_BOARD_HP705:
+ return hpcxs;
+
+ case HPPA_BOARD_HP735_99:
+ case HPPA_BOARD_HP755_99:
+ case HPPA_BOARD_HP755_125:
+ case HPPA_BOARD_HP735_130:
+ case HPPA_BOARD_HP715_50:
+ case HPPA_BOARD_HP715_33:
+ case HPPA_BOARD_HP715S_50:
+ case HPPA_BOARD_HP715S_33:
+ case HPPA_BOARD_HP715T_50:
+ case HPPA_BOARD_HP715T_33:
+ case HPPA_BOARD_HP715_75:
+ case HPPA_BOARD_HP715_99:
+ case HPPA_BOARD_HP725_50:
+ case HPPA_BOARD_HP725_75:
+ case HPPA_BOARD_HP725_99:
+ return hpcxt;
+ }
+ return hpc_unknown;
+}
+
void
cpu_startup(void)
{
Index: arch/hp700/include/cpu.h
===================================================================
RCS file: /cvsroot/src/sys/arch/hp700/include/cpu.h,v
retrieving revision 1.32
diff -u -p -u -r1.32 cpu.h
--- arch/hp700/include/cpu.h 9 May 2009 11:39:31 -0000 1.32
+++ arch/hp700/include/cpu.h 13 May 2009 09:13:06 -0000
@@ -62,6 +62,7 @@
/* types */
enum hppa_cpu_type {
+ hpc_unknown,
hpcx, /* PA7000 (x) PA 1.0 */
hpcxs, /* PA7000 (s) PA 1.1a */
hpcxt, /* PA7100 (t) PA 1.1b */
@@ -89,7 +90,7 @@ struct hppa_cpu_info {
/* The type and PA-RISC specification of the chip. */
const char hci_chip_type[8];
enum hppa_cpu_type hci_cputype;
- int hci_cpuid;
+ int hci_cpuversion;
int hci_features; /* CPU types and features */
#define HPPA_FTRS_TLBU 0x00000001
#define HPPA_FTRS_BTLBU 0x00000002
Home |
Main Index |
Thread Index |
Old Index