Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/hpcmips/vr - show bus clock freq setting and memory...



details:   https://anonhg.NetBSD.org/src/rev/8adaceead675
branches:  trunk
changeset: 481366:8adaceead675
user:      sato <sato%NetBSD.org@localhost>
date:      Thu Jan 27 06:25:54 2000 +0000

description:
- show bus clock freq setting and memory clock freq setting in boot time.

diffstat:

 sys/arch/hpcmips/vr/bcu_vrip.c |  82 +++++++++++++++++++++++++++++++++++++++++-
 sys/arch/hpcmips/vr/bcureg.h   |  28 +++++++++++--
 2 files changed, 104 insertions(+), 6 deletions(-)

diffs (146 lines):

diff -r 03a47d6fec19 -r 8adaceead675 sys/arch/hpcmips/vr/bcu_vrip.c
--- a/sys/arch/hpcmips/vr/bcu_vrip.c    Thu Jan 27 06:23:05 2000 +0000
+++ b/sys/arch/hpcmips/vr/bcu_vrip.c    Thu Jan 27 06:25:54 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: bcu_vrip.c,v 1.4 1999/12/16 12:10:02 shin Exp $        */
+/*     $NetBSD: bcu_vrip.c,v 1.5 2000/01/27 06:25:54 sato Exp $        */
 
 /*-
  * Copyright (c) 1999 SATO Kazumi. All rights reserved.
@@ -55,6 +55,8 @@
 static void vrbcu_write __P((struct vrbcu_softc *, int, unsigned short));
 static unsigned short vrbcu_read __P((struct vrbcu_softc *, int));
 
+static void vrbcu_dump_regs __P((void));
+
 char   *vr_cpuname=NULL;
 int    vr_major=-1;
 int    vr_minor=-1;
@@ -108,6 +110,84 @@
 
        printf("\n");
        the_bcu_sc = sc;
+       vrbcu_dump_regs();
+}
+
+static void
+vrbcu_dump_regs()
+{
+       struct vrbcu_softc *sc = the_bcu_sc;
+       int reg;
+       int cpuclock, tclock, vtclock, cpuid, vt;
+
+#ifdef VRBCUDEBUG
+       reg = vrbcu_read(sc, BCUCNT1_REG_W);
+       printf("vrbcu: CNT1 %x: ",  reg);
+       bitdisp16(reg);
+       reg = vrbcu_read(sc, BCUCNT2_REG_W);
+       printf("vrbcu: CNT2 %x: ",  reg);
+       bitdisp16(reg);
+       reg = vrbcu_read(sc, BCUSPEED_REG_W);
+       printf("vrbcu: SPEED %x: ",  reg);
+       bitdisp16(reg);
+       reg = vrbcu_read(sc, BCUERRST_REG_W);
+       printf("vrbcu: ERRST %x: ",  reg);
+       bitdisp16(reg);
+       reg = vrbcu_read(sc, BCURFCNT_REG_W);
+       printf("vrbcu: RFCNT %x\n",  reg);
+       reg = vrbcu_read(sc, BCUREFCOUNT_REG_W);
+       printf("vrbcu: RFCOUNT %x\n",  reg);
+#endif /* VRBCUDEBUG */        
+       reg = vrbcu_read(sc, BCUCLKSPEED_REG_W);
+#ifdef VRBCUDEBUG
+       printf("vrbcu: CLKSPEED %x: \n",  reg);
+#endif /* VRBCUDEBUG */        
+       cpuclock = vrbcu_vrip_getcpuclock();
+       cpuid = vrbcu_vrip_getcpuid();
+
+       switch (cpuid) {
+       case BCUREVID_RID_4101:
+               /* assume 33MHz */
+               vtclock = tclock = cpuclock/2;  /* XXX */
+               break;
+       case BCUREVID_RID_4102:
+               vtclock = tclock = cpuclock/2;
+               break;
+       case BCUREVID_RID_4111:
+               if ((reg&BCUCLKSPEED_DIVT2B) == 0) 
+                       vtclock = tclock = cpuclock/2;
+               else if ((reg&BCUCLKSPEED_DIVT3B) == 0) 
+                       vtclock = tclock = cpuclock/3;
+               else if ((reg&BCUCLKSPEED_DIVT4B) == 0) 
+                       vtclock = tclock = cpuclock/4;
+               else
+                       vtclock = tclock = 0; /* XXX */
+               break;
+       case BCUREVID_RID_4121:
+                       tclock = cpuclock / ((reg&BCUCLKSPEED_DIVTMASK)>>BCUCLKSPEED_DIVTSHFT);
+                       vt = ((reg&BCUCLKSPEED_DIVVTMASK)>>BCUCLKSPEED_DIVVTSHFT);
+                       if (vt == 0)
+                               vtclock = 0; /* XXX */
+                       else if (vt < 0x9)
+                               vtclock = cpuclock / vt;
+                       else
+                               vtclock = cpuclock / ((vt - 8)*2+1) * 2;
+               break;
+       default:
+               break;
+       }
+       printf("vrbcu: cpu %d.%03dMHz, bus %d.%03dMHz, ram %d.%03dMHz\n",
+               cpuclock/1000000, (cpuclock%1000000)/1000,
+               tclock/1000000, (tclock%1000000)/1000,
+               vtclock/1000000, (vtclock%1000000)/1000);
+#ifdef VRBCUDEBUG
+       if (cpuid >= BCUREVID_RID_4111) {
+               reg = vrbcu_read(sc, BCUCNT3_REG_W);
+               printf("vrbcu: CNT3 %x: ",  reg);
+               bitdisp16(reg);
+       }
+#endif /* VRBCUDEBUG */
+
 }
 
 static char *cpuname[] = {
diff -r 03a47d6fec19 -r 8adaceead675 sys/arch/hpcmips/vr/bcureg.h
--- a/sys/arch/hpcmips/vr/bcureg.h      Thu Jan 27 06:23:05 2000 +0000
+++ b/sys/arch/hpcmips/vr/bcureg.h      Thu Jan 27 06:25:54 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: bcureg.h,v 1.2 1999/12/13 03:11:36 sato Exp $  */
+/*     $NetBSD: bcureg.h,v 1.3 2000/01/27 06:25:54 sato Exp $  */
 
 /*-
  * Copyright (c) 1999 SATO Kazumi. All rights reserved.
@@ -173,11 +173,29 @@
 
 #define        BCUCLKSPEED_REG_W       0x014   /* Clock Speed Register */
 
-#define                BCUCLKSPEED_DIV2B       (1<<15)
-#define                BCUCLKSPEED_DIV3B       (1<<14)
-#define                BCUCLKSPEED_DIV4B       (1<<13)
+#define                BCUCLKSPEED_DIVT2B      (1<<15)         /* (= vr4102, vr4111) */
+#define                BCUCLKSPEED_DIVT3B      (1<<14)         /* (= vr4111) */
+#define                BCUCLKSPEED_DIVT4B      (1<<13)         /* (= vr4111) */
+
+#define                BCUCLKSPEED_DIVTMASK    (0xf<<12)       /* (= vr4121) */
+#define                        BCUCLKSPEED_DIVT3       0x3
+#define                        BCUCLKSPEED_DIVT4       0x4
+#define                        BCUCLKSPEED_DIVT5       0x5
+#define                        BCUCLKSPEED_DIVT6       0x6
+#define                BCUCLKSPEED_DIVTSHFT    (12)            
 
-#define                BCUCLKSPEED_CLKSPMASK   (0xf)           /* calculate for Clock */
+#define                BCUCLKSPEED_DIVVTMASK   (0xf<<8)        /* (= vr4121) */
+#define                        BCUCLKSPEED_DIVVT1      0x1
+#define                        BCUCLKSPEED_DIVVT2      0x2
+#define                        BCUCLKSPEED_DIVVT3      0x3
+#define                        BCUCLKSPEED_DIVVT4      0x4
+#define                        BCUCLKSPEED_DIVVT5      0x5
+#define                        BCUCLKSPEED_DIVVT6      0x6
+#define                        BCUCLKSPEED_DIVVT1_5    0x9
+#define                        BCUCLKSPEED_DIVVT2_5    0xa
+#define                BCUCLKSPEED_DIVVTSHFT   (8)             
+
+#define                BCUCLKSPEED_CLKSPMASK   (0x1f)          /* calculate for Clock */
 #define                BCUCLKSPEED_CLKSPSHFT   (0)             
 
 #define        BCUCNT3_REG_W           0x016   /* BCU Control Register 3 (>= vr4111) */



Home | Main Index | Thread Index | Old Index