diff options
Diffstat (limited to 'sys/i4b/layer1/i4b_avm_fritz_pci.c')
-rw-r--r-- | sys/i4b/layer1/i4b_avm_fritz_pci.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/sys/i4b/layer1/i4b_avm_fritz_pci.c b/sys/i4b/layer1/i4b_avm_fritz_pci.c index 2da4f89..c5f2d8a 100644 --- a/sys/i4b/layer1/i4b_avm_fritz_pci.c +++ b/sys/i4b/layer1/i4b_avm_fritz_pci.c @@ -35,9 +35,9 @@ * Fritz!Card PCI specific routines for isic driver * ------------------------------------------------ * - * $Id: i4b_avm_fritz_pci.c,v 1.5 1999/05/05 11:50:21 hm Exp $ + * $Id: i4b_avm_fritz_pci.c,v 1.6 1999/06/01 12:10:25 hm Exp $ * - * last edit-date: [Tue Mar 16 16:18:35 1999] + * last edit-date: [Tue Jun 1 14:08:01 1999] * *---------------------------------------------------------------------------*/ @@ -390,30 +390,31 @@ avma1pp_write_fifo(void *base, const void *buf, size_t len) } /* tell the board to use the ISAC fifo */ outb(sc->sc_port + ADDR_REG_OFFSET, ISAC_FIFO); - outsb(sc->sc_port + ISAC_REG_OFFSET, (u_char *)buf, len); + outsb(sc->sc_port + ISAC_REG_OFFSET, (const u_char *)buf, len); } static void hscx_write_fifo(int chan, const void *buf, size_t len, struct isic_softc *sc) { - register u_int *ip; + register const u_int *ip; register size_t cnt; isic_Bchan_t *Bchan = &sc->sc_chan[chan]; sc->avma1pp_cmd &= ~HSCX_CMD_XME; sc->avma1pp_txl = 0; - if (len != sc->sc_bfifolen) + if (Bchan->out_mbuf_cur == NULL) { if (Bchan->bprot != BPROT_NONE) sc->avma1pp_cmd |= HSCX_CMD_XME; - sc->avma1pp_txl = len; } - + if (len != sc->sc_bfifolen) + sc->avma1pp_txl = len; + cnt = 0; /* borrow cnt */ AVMA1PPSETCMDLONG(cnt); hscx_write_reg(chan, HSCX_STAT, cnt, sc); - ip = (u_int *)buf; + ip = (const u_int *)buf; cnt = 0; while (cnt < len) { @@ -450,12 +451,13 @@ hscx_write_fifo(int chan, const void *buf, size_t len, struct isic_softc *sc) sc->avma1pp_cmd &= ~HSCX_CMD_XME; sc->avma1pp_txl = 0; - if (len != sc->sc_bfifolen) + if (Bchan->out_mbuf_cur == NULL) { if (Bchan->bprot != BPROT_NONE) sc->avma1pp_cmd |= HSCX_CMD_XME; - sc->avma1pp_txl = len; } + if (len != sc->sc_bfifolen) + sc->avma1pp_txl = len; cnt = 0; /* borrow cnt */ AVMA1PPSETCMDLONG(cnt); @@ -492,7 +494,7 @@ avma1pp_write_reg(u_char *base, u_int offset, u_int v) hscx_write_reg(0, offset, v, sc); return; } - if (((int)base & IS_HSCX_MASK) == HSCX0FAKE) + if (((int)base & IS_HSCX_MASK) == HSCX1FAKE) { hscx_write_reg(1, offset, v, sc); return; |