diff --git a/sys/arch/hpcmips/vr/vrgiu.c b/sys/arch/hpcmips/vr/vrgiu.c index 9ce37a29d920..07d37595d5b2 100644 --- a/sys/arch/hpcmips/vr/vrgiu.c +++ b/sys/arch/hpcmips/vr/vrgiu.c @@ -1,4 +1,4 @@ -/* $NetBSD: vrgiu.c,v 1.32 2002/02/02 10:50:09 takemura Exp $ */ +/* $NetBSD: vrgiu.c,v 1.33 2002/02/09 15:00:40 sato Exp $ */ /*- * Copyright (c) 1999-2001 * Shin Takemura and PocketBSD Project. All rights reserved. @@ -98,11 +98,6 @@ int vrgiu_intr_led = 1; #define LEGAL_INTR_PORT(x) ((x) >= 0 && (x) < MAX_GPIO_INOUT) #define LEGAL_OUT_PORT(x) ((x) >= 0 && (x) < MAX_GPIO_OUT) -/* flags for variant chips */ -#if !defined(VR4122) && !defined(VR4131) -#define VRGIU_HAVE_PULLUPDNREGS -#endif - /* * type declarations */ @@ -292,12 +287,15 @@ vrgiu_dump_iosetting(struct vrgiu_softc *sc) edge = vrgiu_regread_4(sc, GIUINTTYP_REG); hold = vrgiu_regread_4(sc, GIUINTHTSEL_REG); level = vrgiu_regread_4(sc, GIUINTALSEL_REG); -#ifndef VRGIU_HAVE_PULLUPDNREGS - useupdn = termupdn = 0; -#else - useupdn = vrgiu_regread(sc, GIUUSEUPDN_REG_W); - termupdn = vrgiu_regread(sc, GIUTERMUPDN_REG_W); -#endif + + if (GIUUSEUPDN_REG_W == GIU_NO_REG_W) + useupdn = 0; + else + useupdn = vrgiu_regread(sc, GIUUSEUPDN_REG_W); + if (GIUTERMUPDN_REG_W == GIU_NO_REG_W) + termupdn = 0; + else + termupdn = vrgiu_regread(sc, GIUTERMUPDN_REG_W); for (m = 0x80000000; m; m >>=1) printf ("%c", syms[ ((useupdn&m) ? 32 : 0) + @@ -318,12 +316,14 @@ vrgiu_diff_iosetting() iosel= vrgiu_regread_4(sc, GIUIOSEL_REG); inten= vrgiu_regread_4(sc, GIUINTEN_REG); -#ifndef VRGIU_HAVE_PULLUPDNREGS - useupdn = termupdn = 0; -#else - useupdn = vrgiu_regread(sc, GIUUSEUPDN_REG_W); - termupdn = vrgiu_regread(sc, GIUTERMUPDN_REG_W); -#endif + if (GIUUSEUPDN_REG_W == GIU_NO_REG_W) + useupdn = 0; + else + useupdn = vrgiu_regread(sc, GIUUSEUPDN_REG_W); + if (GIUTERMUPDN_REG_W == GIU_NO_REG_W) + termupdn = 0; + else + termupdn = vrgiu_regread(sc, GIUTERMUPDN_REG_W); if (oiosel != iosel || ointen != inten || ouseupdn != useupdn || otermupdn != termupdn) { for (m = 0x80000000; m; m >>=1) diff --git a/sys/arch/hpcmips/vr/vrgiureg.h b/sys/arch/hpcmips/vr/vrgiureg.h index 3339c83822f8..b51eb6a26b85 100644 --- a/sys/arch/hpcmips/vr/vrgiureg.h +++ b/sys/arch/hpcmips/vr/vrgiureg.h @@ -1,4 +1,4 @@ -/* $NetBSD: vrgiureg.h,v 1.1.1.1 1999/09/16 12:23:32 takemura Exp $ */ +/* $NetBSD: vrgiureg.h,v 1.2 2002/02/09 15:00:40 sato Exp $ */ /*- * Copyright (c) 1999 @@ -37,6 +37,7 @@ /* * VR GIU (General Purpose I/O Unit) Registers. */ +#define GIU_NO_REG_W 0xffffffff /* no register */ #define GIUIOSEL_REG 0x00 #define GIUIOSEL_L_REG_W 0x00 @@ -62,8 +63,23 @@ #define GIUPODAT_REG 0x1c #define GIUPODAT_L_REG_W 0x1c #define GIUPODAT_H_REG_W 0x1e -#define GIUUSEUPDN_REG_W 0x1e0 -#define GIUTERMUPDN_REG_W 0x1e2 + +#define VR4102_GIUUSEUPDN_REG_W 0x1e0 +#define VR4102_GIUTERMUPDN_REG_W 0x1e2 + +#define VR4122_GIUUSEUPDN_REG_W GIU_NO_REG_W +#define VR4122_GIUTERMUPDN_REG_W GIU_NO_REG_W + +#if defined SINGLE_VRIP_BASE +#if defined VRGROUP_4102_4121 +#define GIUUSEUPDN_REG_W VR4102_GIUUSEUPDN_REG_W +#define GIUTERMUPDN_REG_W VR4102_GIUTERMUPDN_REG_W +#endif /* defined VRGROUP_4102_4121 */ +#if defined VRGROUP_4122_4131 +#define GIUUSEUPDN_REG_W VR4122_GIUUSEUPDN_REG_W +#define GIUTERMUPDN_REG_W VR4122_GIUTERMUPDN_REG_W +#endif /* defined VRGROUP_4122_4131 */ +#endif /* defined SINGLE_VRIP_BASE */ #define GIUINTTYP_EDGE 1 #define GIUINTTYP_LEVEL 0