summaryrefslogtreecommitdiffstats
path: root/sys/i4b/layer1/i4b_avm_fritz_pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/i4b/layer1/i4b_avm_fritz_pci.c')
-rw-r--r--sys/i4b/layer1/i4b_avm_fritz_pci.c24
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;
OpenPOWER on IntegriCloud