From 3455a353f99c7b73898b66376d6cb8ac26eca611 Mon Sep 17 00:00:00 2001 From: ragge Date: Tue, 21 Sep 1999 18:07:54 +0000 Subject: [PATCH] Fix minphys() on vax. While here, convert to bus.h. --- sys/arch/vax/vsa/ncr.c | 37 ++++++++++++++++++++----------------- sys/dev/ic/ncr5380var.h | 5 ++--- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/sys/arch/vax/vsa/ncr.c b/sys/arch/vax/vsa/ncr.c index 180a894b7275..b6e4ff2c2bf5 100644 --- a/sys/arch/vax/vsa/ncr.c +++ b/sys/arch/vax/vsa/ncr.c @@ -1,4 +1,4 @@ -/* $NetBSD: ncr.c,v 1.21 1999/08/27 17:49:42 ragge Exp $ */ +/* $NetBSD: ncr.c,v 1.22 1999/09/21 18:07:54 ragge Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -88,7 +88,6 @@ struct si_dma_handle { struct si_softc { struct ncr5380_softc ncr_sc; - caddr_t sca_regs; }; /* This is copied from julian's bt driver */ @@ -149,7 +148,6 @@ si_attach(parent, self, aux) struct ncr5380_softc *ncr_sc = &sc->ncr_sc; printf("\n"); - sc->sca_regs = (caddr_t)vax_map_physmem(va->va_paddr, 1); /* * MD function pointers used by the MI code. */ @@ -190,14 +188,18 @@ si_attach(parent, self, aux) /* * Initialize fields used by the MI code. */ - ncr_sc->sci_r0 = sc->sca_regs; /* CUR_DATA/OUT_DATA (rw) */ - ncr_sc->sci_r1 = sc->sca_regs + 4; /* INI_CMD (rw) */ - ncr_sc->sci_r2 = sc->sca_regs + 8; /* MODE (rw) */ - ncr_sc->sci_r3 = sc->sca_regs + 12; /* TAR_CMD (rw) */ - ncr_sc->sci_r4 = sc->sca_regs + 16; /* CUR_STAT/SEL_ENA (rw) */ - ncr_sc->sci_r5 = sc->sca_regs + 20; /* STATUS/DMA_SEND (rw) */ - ncr_sc->sci_r6 = sc->sca_regs + 24; /* IN_DATA/DMA_TRCV (rw) */ - ncr_sc->sci_r7 = sc->sca_regs + 28; /* RESET/DMA_IRCV (rw) */ +/* ncr_sc->sc_regt = Unused on VAX */ + ncr_sc->sc_regh = vax_map_physmem(va->va_paddr, 1); + + /* Register offsets */ + ncr_sc->sci_r0 = 0; + ncr_sc->sci_r1 = 4; + ncr_sc->sci_r2 = 8; + ncr_sc->sci_r3 = 12; + ncr_sc->sci_r4 = 16; + ncr_sc->sci_r5 = 20; + ncr_sc->sci_r6 = 24; + ncr_sc->sci_r7 = 28; ncr_sc->sc_no_disconnect = 0xff; /* @@ -209,14 +211,16 @@ si_attach(parent, self, aux) config_found(&(ncr_sc->sc_dev), &(ncr_sc->sc_link), scsiprint); } +/* + * Adjust the max transfer size. The DMA buffer is only 16k on VS2000. + */ static void si_minphys(struct buf *bp) { -#if 0 - printf("minphys: blkno=%d, bcount=%d, data=0x%x, flags=%x\n", - bp->b_blkno, (int) bp->b_bcount, - (unsigned) bp->b_data, (unsigned) bp->b_flags); -#endif + if ((vax_boardtype == VAX_BTYP_410) && (bp->b_bcount > (16*1024))) + bp->b_bcount = (16*1024); + else if (bp->b_bcount > MAXPHYS) + bp->b_bcount = MAXPHYS; } static void @@ -224,4 +228,3 @@ si_intr(int arg) { ncr5380_intr(ncr_cd.cd_devs[arg]); } - diff --git a/sys/dev/ic/ncr5380var.h b/sys/dev/ic/ncr5380var.h index 4aa4b91f8a71..32606444d00b 100644 --- a/sys/dev/ic/ncr5380var.h +++ b/sys/dev/ic/ncr5380var.h @@ -1,4 +1,4 @@ -/* $NetBSD: ncr5380var.h,v 1.13 1998/11/19 21:53:00 thorpej Exp $ */ +/* $NetBSD: ncr5380var.h,v 1.14 1999/09/21 18:07:54 ragge Exp $ */ /* * Copyright (c) 1995 David Jones, Gordon W. Ross @@ -44,9 +44,8 @@ * pc532: ncr driver; need bus.h first * sparc: si and sw drivers; easy to convert * sun3: si driver; need bus.h first - * vax: ncr driver; need bus.h first */ -#ifdef __i386__ +#if defined(__i386__) || defined(__vax__) # define NCR5380_USE_BUS_SPACE #endif