summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authormaxv <maxv@NetBSD.org>2018-09-22 16:22:22 +0000
committermaxv <maxv@NetBSD.org>2018-09-22 16:22:22 +0000
commitd61bc29f01e46e18c9d563fe266eac697d214719 (patch)
tree9ad38a0d1b8679462320a4d09c4761207191416e /sys/dev
parentfe5080333796cfe779161fa64f61313743d7ccef (diff)
Remove isic(4). It is part of ISDN, which we are now retiring.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/DEVNAMES5
-rw-r--r--sys/dev/ic/hscx.c673
-rw-r--r--sys/dev/ic/hscx.h301
-rw-r--r--sys/dev/ic/ipac.h204
-rw-r--r--sys/dev/ic/isac.c726
-rw-r--r--sys/dev/ic/isac.h391
-rw-r--r--sys/dev/ic/isacsx.c675
-rw-r--r--sys/dev/ic/isacsx.h595
-rw-r--r--sys/dev/ic/isic.c251
-rw-r--r--sys/dev/ic/isic_bchan.c424
-rw-r--r--sys/dev/ic/isic_l1.c294
-rw-r--r--sys/dev/ic/isic_l1.h371
-rw-r--r--sys/dev/ic/isic_l1fsm.c545
-rw-r--r--sys/dev/isa/files.isa16
-rw-r--r--sys/dev/isa/isic_isa.c1268
-rw-r--r--sys/dev/isa/isic_isa_avm_a1.c508
-rw-r--r--sys/dev/isa/isic_isa_itk_ix1.c494
-rw-r--r--sys/dev/isa/isic_isa_tel_s016.c459
-rw-r--r--sys/dev/isa/isic_isa_tel_s0163.c607
-rw-r--r--sys/dev/isa/isic_isa_tel_s08.c393
-rw-r--r--sys/dev/isa/isic_isa_usr_sti.c445
-rw-r--r--sys/dev/isapnp/files.isapnp20
-rw-r--r--sys/dev/isapnp/isic_isapnp.c393
-rw-r--r--sys/dev/isapnp/isic_isapnp_ctx_s0P.c362
-rw-r--r--sys/dev/isapnp/isic_isapnp_drn_ngo.c539
-rw-r--r--sys/dev/isapnp/isic_isapnp_dynalink.c574
-rw-r--r--sys/dev/isapnp/isic_isapnp_elsa_qs1i.c609
-rw-r--r--sys/dev/isapnp/isic_isapnp_itkix.c76
-rw-r--r--sys/dev/isapnp/isic_isapnp_siemens_isurf.c481
-rw-r--r--sys/dev/isapnp/isic_isapnp_sws.c390
-rw-r--r--sys/dev/isapnp/isic_isapnp_tel_s0P.c377
-rw-r--r--sys/dev/pci/files.pci8
-rw-r--r--sys/dev/pci/isic_pci.c334
-rw-r--r--sys/dev/pci/isic_pci.h50
-rw-r--r--sys/dev/pci/isic_pci_elsa_qs1p.c365
-rw-r--r--sys/dev/pcmcia/files.pcmcia14
-rw-r--r--sys/dev/pcmcia/isic_pcmcia.c413
-rw-r--r--sys/dev/pcmcia/isic_pcmcia.h50
-rw-r--r--sys/dev/pcmcia/isic_pcmcia_avm_fritz.c494
-rw-r--r--sys/dev/pcmcia/isic_pcmcia_elsa_isdnmc.c304
-rw-r--r--sys/dev/pcmcia/isic_pcmcia_elsa_mcall.c234
-rw-r--r--sys/dev/pcmcia/isic_pcmcia_sbspeedstar2.c247
42 files changed, 5 insertions, 15974 deletions
diff --git a/sys/dev/DEVNAMES b/sys/dev/DEVNAMES
index 6896866d32a..549fabd917b 100644
--- a/sys/dev/DEVNAMES
+++ b/sys/dev/DEVNAMES
@@ -1,4 +1,4 @@
-# $NetBSD: DEVNAMES,v 1.316 2018/09/22 12:41:00 maxv Exp $
+# $NetBSD: DEVNAMES,v 1.317 2018/09/22 16:22:23 maxv Exp $
#
# This file contains all used device names and defined attributes in
# alphabetical order. New devices added to the system somewhere should first
@@ -105,8 +105,6 @@ asc vax
asiop amiga Attribute
asiop amigappc Attribute
ast MI
-aster amiga
-aster amigappc
ata MI Attribute
ata_dma MI Attribute
ata_hl MI Attribute
@@ -686,7 +684,6 @@ isdnbchan MI
isdnctl MI
isdntel MI
isdntrc MI
-isic MI
ismt amd64
ismt i386
isp MI
diff --git a/sys/dev/ic/hscx.c b/sys/dev/ic/hscx.c
deleted file mode 100644
index 2cc90183bf9..00000000000
--- a/sys/dev/ic/hscx.c
+++ /dev/null
@@ -1,673 +0,0 @@
-/*
- * Copyright (c) 1997, 2000 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * i4b - Siemens HSCX chip (B-channel) handling
- * --------------------------------------------
- *
- * $Id: hscx.c,v 1.16 2012/10/27 17:18:20 chs Exp $
- *
- * last edit-date: [Fri Jan 5 11:36:10 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hscx.c,v 1.16 2012/10/27 17:18:20 chs Exp $");
-
-#include <sys/param.h>
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 300001
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#ifndef __bsdi__
-#include <sys/bus.h>
-#endif
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#include <machine/i4b_trace.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_trace.h>
-#endif
-
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_mbuf.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-/*---------------------------------------------------------------------------*
- * HSCX IRQ Handler
- *---------------------------------------------------------------------------*/
-void
-isic_hscx_irq(register struct isic_softc *sc, u_char ista, int h_chan, u_char ex_irq)
-{
- register l1_bchan_state_t *chan = &sc->sc_chan[h_chan];
- u_char exir = 0;
- int activity = -1;
- u_char cmd = 0;
-
- NDBGL1(L1_H_IRQ, "%#x", ista);
-
- if(ex_irq)
- {
- /* get channel extended irq reg */
-
- exir = HSCX_READ(h_chan, H_EXIR);
-
- if(exir & HSCX_EXIR_RFO)
- {
- chan->stat_RFO++;
- NDBGL1(L1_H_XFRERR, "ex_irq: receive data overflow");
- }
-
- if((exir & HSCX_EXIR_XDU) && (chan->bprot != BPROT_NONE))/* xmit data underrun */
- {
- chan->stat_XDU++;
- NDBGL1(L1_H_XFRERR, "ex_irq: xmit data underrun");
- isic_hscx_cmd(sc, h_chan, HSCX_CMDR_XRES);
-
- if (chan->out_mbuf_head != NULL) /* don't continue to transmit this buffer */
- {
- i4b_Bfreembuf(chan->out_mbuf_head);
- chan->out_mbuf_cur = chan->out_mbuf_head = NULL;
- }
- }
-
- }
-
- /* rx message end, end of frame */
-
- if(ista & HSCX_ISTA_RME)
- {
- register int fifo_data_len;
- u_char rsta;
- int error = 0;
-
- rsta = HSCX_READ(h_chan, H_RSTA);
-
- if((rsta & 0xf0) != 0xa0)
- {
- if((rsta & HSCX_RSTA_VFR) == 0)
- {
- chan->stat_VFR++;
- cmd |= (HSCX_CMDR_RHR);
- NDBGL1(L1_H_XFRERR, "received invalid Frame");
- error++;
- }
-
- if(rsta & HSCX_RSTA_RDO)
- {
- chan->stat_RDO++;
- NDBGL1(L1_H_XFRERR, "receive data overflow");
- error++;
- }
-
- if((rsta & HSCX_RSTA_CRC) == 0)
- {
- chan->stat_CRC++;
- cmd |= (HSCX_CMDR_RHR);
- NDBGL1(L1_H_XFRERR, "CRC check failed");
- error++;
- }
-
- if(rsta & HSCX_RSTA_RAB)
- {
- chan->stat_RAB++;
- NDBGL1(L1_H_XFRERR, "Receive message aborted");
- error++;
- }
- }
-
- fifo_data_len = ((HSCX_READ(h_chan, H_RBCL)) &
- ((sc->sc_bfifolen)-1));
-
- if(fifo_data_len == 0)
- fifo_data_len = sc->sc_bfifolen;
-
- /* all error conditions checked, now decide and take action */
-
- if(error == 0)
- {
- if(chan->in_mbuf == NULL)
- {
- if((chan->in_mbuf = i4b_Bgetmbuf(BCH_MAX_DATALEN)) == NULL)
- panic("L1 isic_hscx_irq: RME, cannot allocate mbuf!");
- chan->in_cbptr = chan->in_mbuf->m_data;
- chan->in_len = 0;
- }
-
- fifo_data_len -= 1; /* last byte in fifo is RSTA ! */
-
- if((chan->in_len + fifo_data_len) <= BCH_MAX_DATALEN)
- {
- /* read data from HSCX fifo */
-
- HSCX_RDFIFO(h_chan, chan->in_cbptr, fifo_data_len);
-
- cmd |= (HSCX_CMDR_RMC);
- isic_hscx_cmd(sc, h_chan, cmd);
- cmd = 0;
-
- chan->in_len += fifo_data_len;
- chan->rxcount += fifo_data_len;
-
- /* setup mbuf data length */
-
- chan->in_mbuf->m_len = chan->in_len;
- chan->in_mbuf->m_pkthdr.len = chan->in_len;
-
- if(sc->sc_trace & TRACE_B_RX)
- {
- i4b_trace_hdr hdr;
- hdr.type = (h_chan == HSCX_CH_A ? TRC_CH_B1 : TRC_CH_B2);
- hdr.dir = FROM_NT;
- hdr.count = ++sc->sc_trace_bcount;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, chan->in_mbuf->m_len, chan->in_mbuf->m_data);
- }
-
- (*chan->l4_driver->bch_rx_data_ready)(chan->l4_driver_softc);
-
- activity = ACT_RX;
-
- /* mark buffer ptr as unused */
-
- chan->in_mbuf = NULL;
- chan->in_cbptr = NULL;
- chan->in_len = 0;
- }
- else
- {
- NDBGL1(L1_H_XFRERR, "RAWHDLC rx buffer overflow in RME, in_len=%d, fifolen=%d", chan->in_len, fifo_data_len);
- chan->in_cbptr = chan->in_mbuf->m_data;
- chan->in_len = 0;
- cmd |= (HSCX_CMDR_RHR | HSCX_CMDR_RMC);
- }
- }
- else
- {
- if (chan->in_mbuf != NULL)
- {
- i4b_Bfreembuf(chan->in_mbuf);
- chan->in_mbuf = NULL;
- chan->in_cbptr = NULL;
- chan->in_len = 0;
- }
- cmd |= (HSCX_CMDR_RMC);
- }
- }
-
- /* rx fifo full */
-
- if(ista & HSCX_ISTA_RPF)
- {
- if(chan->in_mbuf == NULL)
- {
- if((chan->in_mbuf = i4b_Bgetmbuf(BCH_MAX_DATALEN)) == NULL)
- panic("L1 isic_hscx_irq: RPF, cannot allocate mbuf!");
- chan->in_cbptr = chan->in_mbuf->m_data;
- chan->in_len = 0;
- }
-
- chan->rxcount += sc->sc_bfifolen;
-
- if((chan->in_len + sc->sc_bfifolen) <= BCH_MAX_DATALEN)
- {
- /* read data from HSCX fifo */
-
- HSCX_RDFIFO(h_chan, chan->in_cbptr, sc->sc_bfifolen);
-
- chan->in_cbptr += sc->sc_bfifolen;
- chan->in_len += sc->sc_bfifolen;
- }
- else
- {
- if(chan->bprot == BPROT_NONE)
- {
- /* setup mbuf data length */
-
- chan->in_mbuf->m_len = chan->in_len;
- chan->in_mbuf->m_pkthdr.len = chan->in_len;
-
- if(sc->sc_trace & TRACE_B_RX)
- {
- i4b_trace_hdr hdr;
- hdr.type = (h_chan == HSCX_CH_A ? TRC_CH_B1 : TRC_CH_B2);
- hdr.dir = FROM_NT;
- hdr.count = ++sc->sc_trace_bcount;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr,chan->in_mbuf->m_len, chan->in_mbuf->m_data);
- }
-
- /* silence detection */
-
- if(!(isdn_bchan_silence(chan->in_mbuf->m_data, chan->in_mbuf->m_len)))
- activity = ACT_RX;
-
- if(!(IF_QFULL(&chan->rx_queue)))
- {
- IF_ENQUEUE(&chan->rx_queue, chan->in_mbuf);
- }
- else
- {
- i4b_Bfreembuf(chan->in_mbuf);
- }
-
- /* signal upper driver that data is available */
-
- (*chan->l4_driver->bch_rx_data_ready)(chan->l4_driver_softc);
-
- /* alloc new buffer */
-
- if((chan->in_mbuf = i4b_Bgetmbuf(BCH_MAX_DATALEN)) == NULL)
- panic("L1 isic_hscx_irq: RPF, cannot allocate new mbuf!");
-
- /* setup new data ptr */
-
- chan->in_cbptr = chan->in_mbuf->m_data;
-
- /* read data from HSCX fifo */
-
- HSCX_RDFIFO(h_chan, chan->in_cbptr, sc->sc_bfifolen);
-
- chan->in_cbptr += sc->sc_bfifolen;
- chan->in_len = sc->sc_bfifolen;
-
- chan->rxcount += sc->sc_bfifolen;
- }
- else
- {
- NDBGL1(L1_H_XFRERR, "RAWHDLC rx buffer overflow in RPF, in_len=%d", chan->in_len);
- chan->in_cbptr = chan->in_mbuf->m_data;
- chan->in_len = 0;
- cmd |= (HSCX_CMDR_RHR);
- }
- }
-
- /* command to release fifo space */
-
- cmd |= HSCX_CMDR_RMC;
- }
-
- /* transmit fifo empty, new data can be written to fifo */
-
- if(ista & HSCX_ISTA_XPR)
- {
- /*
- * for a description what is going on here, please have
- * a look at isic_bchannel_start() in i4b_bchan.c !
- */
-
- int len;
- int nextlen;
-
- NDBGL1(L1_H_IRQ, "%s, chan %d - XPR, Tx Fifo Empty!", device_xname(sc->sc_dev), h_chan);
-
- if(chan->out_mbuf_cur == NULL) /* last frame is transmitted */
- {
- IF_DEQUEUE(&chan->tx_queue, chan->out_mbuf_head);
-
- if(chan->out_mbuf_head == NULL)
- {
- chan->state &= ~HSCX_TX_ACTIVE;
- (*chan->l4_driver->bch_tx_queue_empty)(chan->l4_driver_softc);
- }
- else
- {
- chan->state |= HSCX_TX_ACTIVE;
- chan->out_mbuf_cur = chan->out_mbuf_head;
- chan->out_mbuf_cur_ptr = chan->out_mbuf_cur->m_data;
- chan->out_mbuf_cur_len = chan->out_mbuf_cur->m_len;
-
- if(sc->sc_trace & TRACE_B_TX)
- {
- i4b_trace_hdr hdr;
- hdr.type = (h_chan == HSCX_CH_A ? TRC_CH_B1 : TRC_CH_B2);
- hdr.dir = FROM_TE;
- hdr.count = ++sc->sc_trace_bcount;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, chan->out_mbuf_cur->m_len, chan->out_mbuf_cur->m_data);
- }
-
- if(chan->bprot == BPROT_NONE)
- {
- if(!(isdn_bchan_silence(chan->out_mbuf_cur->m_data, chan->out_mbuf_cur->m_len)))
- activity = ACT_TX;
- }
- else
- {
- activity = ACT_TX;
- }
- }
- }
-
- len = 0;
-
- while(chan->out_mbuf_cur && len != sc->sc_bfifolen)
- {
- nextlen = min(chan->out_mbuf_cur_len, sc->sc_bfifolen - len);
-
-#ifdef NOTDEF
- printf("i:mh=%x, mc=%x, mcp=%x, mcl=%d l=%d nl=%d # ",
- chan->out_mbuf_head,
- chan->out_mbuf_cur,
- chan->out_mbuf_cur_ptr,
- chan->out_mbuf_cur_len,
- len,
- next_len);
-#endif
-
- isic_hscx_waitxfw(sc, h_chan); /* necessary !!! */
-
- HSCX_WRFIFO(h_chan, chan->out_mbuf_cur_ptr, nextlen);
- cmd |= HSCX_CMDR_XTF;
-
- len += nextlen;
- chan->txcount += nextlen;
-
- chan->out_mbuf_cur_ptr += nextlen;
- chan->out_mbuf_cur_len -= nextlen;
-
- if(chan->out_mbuf_cur_len == 0)
- {
- if((chan->out_mbuf_cur = chan->out_mbuf_cur->m_next) != NULL)
- {
- chan->out_mbuf_cur_ptr = chan->out_mbuf_cur->m_data;
- chan->out_mbuf_cur_len = chan->out_mbuf_cur->m_len;
-
- if(sc->sc_trace & TRACE_B_TX)
- {
- i4b_trace_hdr hdr;
- hdr.type = (h_chan == HSCX_CH_A ? TRC_CH_B1 : TRC_CH_B2);
- hdr.dir = FROM_TE;
- hdr.count = ++sc->sc_trace_bcount;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, chan->out_mbuf_cur->m_len, chan->out_mbuf_cur->m_data);
- }
- }
- else
- {
- if (chan->bprot != BPROT_NONE)
- cmd |= HSCX_CMDR_XME;
- i4b_Bfreembuf(chan->out_mbuf_head);
- chan->out_mbuf_head = NULL;
- }
-
- }
- }
- }
-
- if(cmd) /* is there a command for the HSCX ? */
- {
- isic_hscx_cmd(sc, h_chan, cmd); /* yes, to HSCX */
- }
-
- /* call timeout handling routine */
-
- if(activity == ACT_RX || activity == ACT_TX)
- (*chan->l4_driver->bch_activity)(chan->l4_driver_softc, activity);
-}
-
-/*---------------------------------------------------------------------------*
- * HSCX initialization
- *
- * for telephony: extended transparent mode 1
- * for raw hdlc: transparent mode 0
- *---------------------------------------------------------------------------*/
-void
-isic_hscx_init(struct isic_softc *sc, int h_chan, int activate)
-{
- l1_bchan_state_t *chan = &sc->sc_chan[h_chan];
-
- HSCX_WRITE(h_chan, H_MASK, 0xff); /* mask irq's */
-
- if(sc->sc_ipac)
- {
- /* CCR1: Power Up, Clock Mode 5 */
- HSCX_WRITE(h_chan, H_CCR1, HSCX_CCR1_PU | /* power up */
- HSCX_CCR1_CM1); /* IPAC clock mode 5 */
- }
- else
- {
- /* CCR1: Power Up, Clock Mode 5 */
- HSCX_WRITE(h_chan, H_CCR1, HSCX_CCR1_PU | /* power up */
- HSCX_CCR1_CM2 | /* HSCX clock mode 5 */
- HSCX_CCR1_CM0);
- }
-
- /* XAD1: Transmit Address Byte 1 */
- HSCX_WRITE(h_chan, H_XAD1, 0xff);
-
- /* XAD2: Transmit Address Byte 2 */
- HSCX_WRITE(h_chan, H_XAD2, 0xff);
-
- /* RAH2: Receive Address Byte High Reg. 2 */
- HSCX_WRITE(h_chan, H_RAH2, 0xff);
-
- /* XBCH: reset Transmit Byte Count High */
- HSCX_WRITE(h_chan, H_XBCH, 0x00);
-
- /* RLCR: reset Receive Length Check Register */
- HSCX_WRITE(h_chan, H_RLCR, 0x00);
-
- /* CCR2: set tx/rx clock shift bit 0 */
- /* disable CTS irq, disable RIE irq*/
- HSCX_WRITE(h_chan, H_CCR2, HSCX_CCR2_XCS0|HSCX_CCR2_RCS0);
-
- /* XCCR: tx bit count per time slot */
- HSCX_WRITE(h_chan, H_XCCR, 0x07);
-
- /* RCCR: rx bit count per time slot */
- HSCX_WRITE(h_chan, H_RCCR, 0x07);
-
- if(sc->sc_bustyp == BUS_TYPE_IOM2)
- {
- switch(h_chan)
- {
- case HSCX_CH_A: /* Prepare HSCX channel A */
- /* TSAX: tx clock shift bits 1 & 2 */
- /* tx time slot number */
- HSCX_WRITE(h_chan, H_TSAX, 0x2f);
-
- /* TSAR: rx clock shift bits 1 & 2 */
- /* rx time slot number */
- HSCX_WRITE(h_chan, H_TSAR, 0x2f);
- break;
-
- case HSCX_CH_B: /* Prepare HSCX channel B */
- /* TSAX: tx clock shift bits 1 & 2 */
- /* tx time slot number */
- HSCX_WRITE(h_chan, H_TSAX, 0x03);
-
- /* TSAR: rx clock shift bits 1 & 2 */
- /* rx time slot number */
- HSCX_WRITE(h_chan, H_TSAR, 0x03);
- break;
- }
- }
- else /* IOM 1 setup */
- {
- /* TSAX: tx clock shift bits 1 & 2 */
- /* tx time slot number */
- HSCX_WRITE(h_chan, H_TSAX, 0x07);
-
- /* TSAR: rx clock shift bits 1 & 2 */
- /* rx time slot number */
- HSCX_WRITE(h_chan, H_TSAR, 0x07);
- }
-
- if(activate)
- {
- if(chan->bprot == BPROT_RHDLC)
- {
- /* HDLC Frames, transparent mode 0 */
- HSCX_WRITE(h_chan, H_MODE,
- HSCX_MODE_MDS1|HSCX_MODE_RAC|HSCX_MODE_RTS);
- }
- else
- {
- /* Raw Telephony, extended transparent mode 1 */
- HSCX_WRITE(h_chan, H_MODE,
- HSCX_MODE_MDS1|HSCX_MODE_MDS0|HSCX_MODE_ADM|HSCX_MODE_RTS);
- }
-
- isic_hscx_cmd(sc, h_chan, HSCX_CMDR_RHR|HSCX_CMDR_XRES);
- }
- else
- {
- /* TSAX: tx time slot */
- HSCX_WRITE(h_chan, H_TSAX, 0xff);
-
- /* TSAR: rx time slot */
- HSCX_WRITE(h_chan, H_TSAR, 0xff);
-
- /* Raw Telephony, extended transparent mode 1 */
- HSCX_WRITE(h_chan, H_MODE,
- HSCX_MODE_MDS1|HSCX_MODE_MDS0|HSCX_MODE_ADM|HSCX_MODE_RTS);
- }
-
- /* don't touch ICA, EXA and EXB bits, this could be HSCX_CH_B */
- /* always disable RSC and TIN */
-
- chan->hscx_mask |= HSCX_MASK_RSC | HSCX_MASK_TIN;
-
- if(activate)
- {
- /* enable */
- chan->hscx_mask &= ~(HSCX_MASK_RME | HSCX_MASK_RPF | HSCX_MASK_XPR);
- }
- else
- {
- /* disable */
- chan->hscx_mask |= HSCX_MASK_RME | HSCX_MASK_RPF | HSCX_MASK_XPR;
- }
-
- /* handle ICA, EXA, and EXB via interrupt mask of channel b */
-
- if (h_chan == HSCX_CH_A)
- {
- if (activate)
- HSCX_B_IMASK &= ~(HSCX_MASK_EXA | HSCX_MASK_ICA);
- else
- HSCX_B_IMASK |= HSCX_MASK_EXA | HSCX_MASK_ICA;
- HSCX_WRITE(HSCX_CH_A, H_MASK, HSCX_A_IMASK);
- HSCX_WRITE(HSCX_CH_B, H_MASK, HSCX_B_IMASK);
- }
- else
- {
- if (activate)
- HSCX_B_IMASK &= ~HSCX_MASK_EXB;
- else
- HSCX_B_IMASK |= HSCX_MASK_EXB;
- HSCX_WRITE(HSCX_CH_B, H_MASK, HSCX_B_IMASK);
- }
-
- /* clear spurious interrupts left over */
-
- if(h_chan == HSCX_CH_A)
- {
- HSCX_READ(h_chan, H_EXIR);
- HSCX_READ(h_chan, H_ISTA);
- }
- else /* mask ICA, because it must not be cleared by reading ISTA */
- {
- HSCX_WRITE(HSCX_CH_B, H_MASK, HSCX_B_IMASK | HSCX_MASK_ICA);
- HSCX_READ(h_chan, H_EXIR);
- HSCX_READ(h_chan, H_ISTA);
- HSCX_WRITE(HSCX_CH_B, H_MASK, HSCX_B_IMASK);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * write command to HSCX command register
- *---------------------------------------------------------------------------*/
-void
-isic_hscx_cmd(struct isic_softc *sc, int h_chan, unsigned char cmd)
-{
- int timeout = 20;
-
- while(((HSCX_READ(h_chan, H_STAR)) & HSCX_STAR_CEC) && timeout)
- {
- DELAY(10);
- timeout--;
- }
-
- if(timeout == 0)
- {
- NDBGL1(L1_H_ERR, "HSCX wait for CEC timeout!");
- }
-
- HSCX_WRITE(h_chan, H_CMDR, cmd);
-}
-
-/*---------------------------------------------------------------------------*
- * wait for HSCX transmit FIFO write enable
- *---------------------------------------------------------------------------*/
-void
-isic_hscx_waitxfw(struct isic_softc *sc, int h_chan)
-{
-#define WAITVAL 50
-#define WAITTO 200
-
- int timeout = WAITTO;
-
- while((!(((HSCX_READ(h_chan, H_STAR)) &
- (HSCX_STAR_CEC | HSCX_STAR_XFW)) == HSCX_STAR_XFW)) && timeout)
- {
- DELAY(WAITVAL);
- timeout--;
- }
-
- if(timeout == 0)
- {
- NDBGL1(L1_H_ERR, "HSCX wait for XFW timeout!");
- }
- else if (timeout != WAITTO)
- {
- NDBGL1(L1_H_XFRERR, "HSCX wait for XFW time: %d uS", (WAITTO-timeout)*50);
- }
-}
-
diff --git a/sys/dev/ic/hscx.h b/sys/dev/ic/hscx.h
deleted file mode 100644
index dc2a46b30cb..00000000000
--- a/sys/dev/ic/hscx.h
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright (c) 1996, 1998 Gary Jennejohn. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * $Id: hscx.h,v 1.4 2011/08/07 20:05:08 jakllsch Exp $
- *
- * last edit-date: [Sun Feb 14 10:26:56 1999]
- *
- * -hm added AVM config register defs
- * -hm split up for rewrite of Siemens chipset driver
- *
- *---------------------------------------------------------------------------
- */
-
-#ifndef I4B_HSCX_H_
-#define I4B_HSCX_H_
-
-enum HSCX_VERSIONS {
- HSCX_VA1, /* 82525 A1 */
- HSCX_UNKN1, /* unknown 1 */
- HSCX_VA2, /* 82525 A2 */
- HSCX_UNKN3, /* unknown 3 */
- HSCX_VA3, /* 82525 A3 */
- HSCX_V21, /* 82525 2.1 */
- HSCX_UNKN /* unknown version */
-};
-
-#define HSCX_CH_A 0 /* channel A */
-#define HSCX_CH_B 1 /* channel B */
-
-#define HSCX_FIFO_LEN 32 /* 32 bytes FIFO on chip */
-
-/*
- * definitions of registers and bits for the HSCX ISDN chip.
- */
-
-typedef struct hscx_reg {
-
- /* 32 byte deep FIFO always first */
-
- unsigned char hscx_fifo [HSCX_FIFO_LEN];
-
- /* most registers can be read/written, but have different names */
- /* so define a union with read/write names to make that clear */
-
- union {
- struct {
- unsigned char hscx_ista;
- unsigned char hscx_star;
- unsigned char hscx_mode;
- unsigned char hscx_timr;
- unsigned char hscx_exir;
- unsigned char hscx_rbcl;
- unsigned char dummy_26;
- unsigned char hscx_rsta;
- unsigned char hscx_ral1;
- unsigned char hscx_rhcr;
- unsigned char dummy_2a;
- unsigned char dummy_2b;
- unsigned char hscx_ccr2;
- unsigned char hscx_rbch;
- unsigned char hscx_vstr;
- unsigned char hscx_ccr;
- unsigned char dummy_30;
- unsigned char dummy_31;
- unsigned char dummy_32;
- unsigned char dummy_33;
- } hscx_r;
- struct {
- unsigned char hscx_mask;
- unsigned char hscx_cmdr;
- unsigned char hscx_mode;
- unsigned char hscx_timr;
- unsigned char hscx_xad1;
- unsigned char hscx_xad2;
- unsigned char hscx_rah1;
- unsigned char hscx_rah2;
- unsigned char hscx_ral1;
- unsigned char hscx_ral2;
- unsigned char hscx_xbcl;
- unsigned char hscx_bgr;
- unsigned char hscx_ccr2;
- unsigned char hscx_xbch;
- unsigned char hscx_rlcr;
- unsigned char hscx_ccr1;
- unsigned char hscx_tsax;
- unsigned char hscx_tsar;
- unsigned char hscx_xccr;
- unsigned char hscx_rccr;
- } hscx_w;
- } hscx_rw;
-} hscx_reg_t;
-
-#define REG_OFFSET(type, field) (uintptr_t)(&(((type *)0)->field))
-
-/* HSCX read registers */
-
-#define h_ista hscx_rw.hscx_r.hscx_ista
-#define H_ISTA REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_ista)
-#define h_star hscx_rw.hscx_r.hscx_star
-#define H_STAR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_star)
-#define h_mode hscx_rw.hscx_r.hscx_mode
-#define H_MODE REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_mode)
-#define h_timr hscx_rw.hscx_r.hscx_timr
-#define H_TIMR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_timr)
-#define h_exir hscx_rw.hscx_r.hscx_exir
-#define H_EXIR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_exir)
-#define h_rbcl hscx_rw.hscx_r.hscx_rbcl
-#define H_RBCL REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_rbcl)
-#define h_rsta hscx_rw.hscx_r.hscx_rsta
-#define H_RSTA REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_rsta)
-#define h_ral1 hscx_rw.hscx_r.hscx_ral1
-#define H_RAL1 REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_ral1)
-#define h_rhcr hscx_rw.hscx_r.hscx_rhcr
-#define H_RHCR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_rhcr)
-#define h_ccr2 hscx_rw.hscx_r.hscx_ccr2
-#define H_CCR2 REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_ccr2)
-#define h_rbch hscx_rw.hscx_r.hscx_rbch
-#define H_RBCH REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_rbch)
-#define h_vstr hscx_rw.hscx_r.hscx_vstr
-#define H_VSTR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_vstr)
-#define h_ccr hscx_rw.hscx_r.hscx_ccr
-#define H_CCR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_r.hscx_ccr)
-
-/* HSCX write registers - for hscx_mode, hscx_timr, hscx_ral1, hscx_ccr2 */
-/* see read registers */
-
-#define h_mask hscx_rw.hscx_w.hscx_mask
-#define H_MASK REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_mask)
-#define h_cmdr hscx_rw.hscx_w.hscx_cmdr
-#define H_CMDR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_cmdr)
-#define h_xad1 hscx_rw.hscx_w.hscx_xad1
-#define H_XAD1 REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_xad1)
-#define h_xad2 hscx_rw.hscx_w.hscx_xad2
-#define H_XAD2 REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_xad2)
-#define h_rah1 hscx_rw.hscx_w.hscx_rah1
-#define H_RAH1 REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_rah1)
-#define h_rah2 hscx_rw.hscx_w.hscx_rah2
-#define H_RAH2 REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_rah2)
-#define h_ral2 hscx_rw.hscx_w.hscx_ral2
-#define H_RAL2 REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_ral2)
-#define h_xbcl hscx_rw.hscx_w.hscx_xbcl
-#define H_XBCL REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_xbcl)
-#define h_bgr hscx_rw.hscx_w.hscx_bgr
-#define H_BGR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_bgr)
-#define h_xbch hscx_rw.hscx_w.hscx_xbch
-#define H_XBCH REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_xbch)
-#define h_rlcr hscx_rw.hscx_w.hscx_rlcr
-#define H_RLCR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_rlcr)
-#define h_ccr1 hscx_rw.hscx_w.hscx_ccr1
-#define H_CCR1 REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_ccr1)
-#define h_tsax hscx_rw.hscx_w.hscx_tsax
-#define H_TSAX REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_tsax)
-#define h_tsar hscx_rw.hscx_w.hscx_tsar
-#define H_TSAR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_tsar)
-#define h_xccr hscx_rw.hscx_w.hscx_xccr
-#define H_XCCR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_xccr)
-#define h_rccr hscx_rw.hscx_w.hscx_rccr
-#define H_RCCR REG_OFFSET(hscx_reg_t, hscx_rw.hscx_w.hscx_rccr)
-
-#define HSCX_ISTA_RME 0x80
-#define HSCX_ISTA_RPF 0x40
-#define HSCX_ISTA_RSC 0x20
-#define HSCX_ISTA_XPR 0x10
-#define HSCX_ISTA_TIN 0x08
-#define HSCX_ISTA_ICA 0x04
-#define HSCX_ISTA_EXA 0x02
-#define HSCX_ISTA_EXB 0x01
-
-#define HSCX_MASK_RME 0x80
-#define HSCX_MASK_RPF 0x40
-#define HSCX_MASK_RSC 0x20
-#define HSCX_MASK_XPR 0x10
-#define HSCX_MASK_TIN 0x08
-#define HSCX_MASK_ICA 0x04
-#define HSCX_MASK_EXA 0x02
-#define HSCX_MASK_EXB 0x01
-
-#define HSCX_EXIR_XMR 0x80
-#define HSCX_EXIR_XDU 0x40
-#define HSCX_EXIR_PCE 0x20
-#define HSCX_EXIR_RFO 0x10
-#define HSCX_EXIR_CSC 0x08
-#define HSCX_EXIR_RFS 0x04
-
-/* the other bits are always 0 */
-
-#define HSCX_STAR_XDOV 0x80
-#define HSCX_STAR_XFW 0x40
-#define HSCX_STAR_XRNR 0x20
-#define HSCX_STAR_RRNR 0x10
-#define HSCX_STAR_RLI 0x08
-#define HSCX_STAR_CEC 0x04
-#define HSCX_STAR_CTS 0x02
-#define HSCX_STAR_WFA 0x01
-
-#define HSCX_CMDR_RMC 0x80
-#define HSCX_CMDR_RHR 0x40
-/* also known as XREP in transparent mode */
-#define HSCX_CMDR_RNR 0x20
-#define HSCX_CMDR_STI 0x10
-#define HSCX_CMDR_XTF 0x08
-#define HSCX_CMDR_XIF 0x04
-#define HSCX_CMDR_XME 0x02
-#define HSCX_CMDR_XRES 0x01
-
-#define HSCX_MODE_MDS1 0x80
-#define HSCX_MODE_MDS0 0x40
-#define HSCX_MODE_ADM 0x20
-#define HSCX_MODE_TMD 0x10
-#define HSCX_MODE_RAC 0x08
-#define HSCX_MODE_RTS 0x04
-#define HSCX_MODE_TRS 0x02
-#define HSCX_MODE_TLP 0x01
-
-#define HSCX_RSTA_VFR 0x80
-#define HSCX_RSTA_RDO 0x40
-#define HSCX_RSTA_CRC 0x20
-#define HSCX_RSTA_RAB 0x10
-#define HSCX_RSTA_HA1 0x08
-#define HSCX_RSTA_HA0 0x04
-#define HSCX_RSTA_CR 0x02
-#define HSCX_RSTA_LA 0x01
-
-#define HSCX_RSTA_MASK 0xf0 /* the interesting ones */
-
-/* only used in DMA mode */
-#define HSCX_XBCH_DMA 0x80
-#define HSCX_XBCH_NRM 0x40
-#define HSCX_XBCH_CAS 0x20
-#define HSCX_XBCH_XC 0x10
-/* the rest are bits 11 thru 8 of the byte count */
-
-#define HSCX_RBCH_DMA 0x80
-#define HSCX_RBCH_NRM 0x40
-#define HSCX_RBCH_CAS 0x20
-#define HSCX_RBCH_OV 0x10
-/* the rest are bits 11 thru 8 of the byte count */
-
-#define HSCX_VSTR_CD 0x80
-/* bits 6 thru 4 are 0 */
-/* bits 3 thru 0 are the version number */
-
-#define HSCX_RLCR_RC 0x80
-/* the rest of the bits are used to set the received length */
-
-#define HSCX_CCR1_PU 0x80
-/* bits 6 and 5 are SC1 SC0 */
-#define HSCX_CCR1_ODS 0x10
-#define HSCX_CCR1_ITF 0x08
-#define HSCX_CCR1_CM2 0x04
-#define HSCX_CCR1_CM1 0x02
-#define HSCX_CCR1_CM0 0x01
-
-/* for clock mode 5 */
-#define HSCX_CCR2_SOC2 0x80
-#define HSCX_CCR2_SOC1 0x40
-#define HSCX_CCR2_XCS0 0x20
-#define HSCX_CCR2_RCS0 0x10
-#define HSCX_CCR2_TIO 0x08
-#define HSCX_CCR2_CIE 0x04
-#define HSCX_CCR2_RIE 0x02
-#define HSCX_CCR2_DIV 0x01
-
-/* bits 7 thru 2 are TSNX */
-#define HSCX_TSAX_XCS2 0x02
-#define HSCX_TSAX_XCS1 0x01
-
-/* bits 7 thru 2 are TSNR */
-#define HSCX_TSAR_RCS2 0x02
-#define HSCX_TSAR_RCS1 0x01
-
-#endif /* I4B_HSCX_H_ */
diff --git a/sys/dev/ic/ipac.h b/sys/dev/ic/ipac.h
deleted file mode 100644
index 64a9d789037..00000000000
--- a/sys/dev/ic/ipac.h
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (c) 1997, 2000 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * i4b_ipac.h - definitions for the Siemens IPAC PSB2115 chip
- * ==========================================================
- *
- * $Id: ipac.h,v 1.4 2011/08/07 20:05:08 jakllsch Exp $
- *
- * last edit-date: [Thu Jan 6 14:54:19 2000]
- *
- *---------------------------------------------------------------------------
- */
-
-#ifndef _I4B_IPAC_H_
-#define _I4B_IPAC_H_
-
-#define IPAC_BFIFO_LEN 64 /* 64 bytes B-channel FIFO on chip */
-
-#define IPAC_HSCXA_OFF 0x00
-#define IPAC_HSCXB_OFF 0x40
-#define IPAC_ISAC_OFF 0x80
-#define IPAC_IPAC_OFF 0xc0
-
-/* chip version */
-
-#define IPAC_V11 0x01 /* IPAC Version 1.1 */
-#define IPAC_V12 0x02 /* IPAC Version 1.2 */
-
-/*
- * definitions of registers and bits for the IPAC ISDN chip.
- */
-
-typedef struct ipac_reg {
-
- /* most registers can be read/written, but have different names */
- /* so define a union with read/write names to make that clear */
-
- union {
- struct {
- unsigned char ipac_conf;
- unsigned char ipac_ista;
- unsigned char ipac_id;
- unsigned char ipac_acfg;
- unsigned char ipac_aoe;
- unsigned char ipac_arx;
- unsigned char ipac_pita1;
- unsigned char ipac_pita2;
- unsigned char ipac_pota1;
- unsigned char ipac_pota2;
- unsigned char ipac_pcfg;
- unsigned char ipac_scfg;
- unsigned char ipac_timr2;
- } ipac_r;
- struct {
- unsigned char ipac_conf;
- unsigned char ipac_mask;
- unsigned char ipac_dummy;
- unsigned char ipac_acfg;
- unsigned char ipac_aoe;
- unsigned char ipac_atx;
- unsigned char ipac_pita1;
- unsigned char ipac_pita2;
- unsigned char ipac_pota1;
- unsigned char ipac_pota2;
- unsigned char ipac_pcfg;
- unsigned char ipac_scfg;
- unsigned char ipac_timr2;
- } ipac_w;
- } ipac_rw;
-} ipac_reg_t;
-
-#define REG_OFFSET(type, field) (uintptr_t)(&(((type *)0)->field))
-
-/* IPAC read registers */
-
-#define IPAC_CONF REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_conf)
-#define IPAC_ISTA REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_ista)
-#define IPAC_ID REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_id)
-#define IPAC_ACFG REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_acfg)
-#define IPAC_AOE REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_aoe)
-#define IPAC_ARX REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_arx)
-#define IPAC_PITA1 REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_pita1)
-#define IPAC_PITA2 REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_pita2)
-#define IPAC_POTA1 REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_pota1)
-#define IPAC_POTA2 REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_pota2)
-#define IPAC_PCFG REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_pcfg)
-#define IPAC_SCFG REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_scfg)
-#define IPAC_TIMR2 REG_OFFSET(ipac_reg_t, ipac_rw.ipac_r.ipac_timr2)
-
-/* IPAC write registers */
-
-#define IPAC_MASK REG_OFFSET(ipac_reg_t, ipac_rw.ipac_w.ipac_mask)
-#define IPAC_ATX REG_OFFSET(ipac_reg_t, ipac_rw.ipac_w.ipac_atx)
-
-/* register bits */
-
-#define IPAC_CONF_AMP 0x80
-#define IPAC_CONF_CFS 0x40
-#define IPAC_CONF_TEM 0x20
-#define IPAC_CONF_PDS 0x10
-#define IPAC_CONF_IDH 0x08
-#define IPAC_CONF_SGO 0x04
-#define IPAC_CONF_ODS 0x02
-#define IPAC_CONF_IOF 0x01
-
-#define IPAC_ISTA_INT1 0x80
-#define IPAC_ISTA_INT0 0x40
-#define IPAC_ISTA_ICD 0x20
-#define IPAC_ISTA_EXD 0x10
-#define IPAC_ISTA_ICA 0x08
-#define IPAC_ISTA_EXA 0x04
-#define IPAC_ISTA_ICB 0x02
-#define IPAC_ISTA_EXB 0x01
-
-#define IPAC_MASK_INT1 0x80
-#define IPAC_MASK_INT0 0x40
-#define IPAC_MASK_ICD 0x20
-#define IPAC_MASK_EXD 0x10
-#define IPAC_MASK_ICA 0x08
-#define IPAC_MASK_EXA 0x04
-#define IPAC_MASK_ICB 0x02
-#define IPAC_MASK_EXB 0x01
-
-#define IPAC_ACFG_OD7 0x80
-#define IPAC_ACFG_OD6 0x40
-#define IPAC_ACFG_OD5 0x20
-#define IPAC_ACFG_OD4 0x10
-#define IPAC_ACFG_OD3 0x08
-#define IPAC_ACFG_OD2 0x04
-#define IPAC_ACFG_EL1 0x02
-#define IPAC_ACFG_EL2 0x01
-
-#define IPAC_AOE_OE7 0x80
-#define IPAC_AOE_OE6 0x40
-#define IPAC_AOE_OE5 0x20
-#define IPAC_AOE_OE4 0x10
-#define IPAC_AOE_OE3 0x08
-#define IPAC_AOE_OE2 0x04
-
-#define IPAC_ARX_AR7 0x80
-#define IPAC_ARX_AR6 0x40
-#define IPAC_ARX_AR5 0x20
-#define IPAC_ARX_AR4 0x10
-#define IPAC_ARX_AR3 0x08
-#define IPAC_ARX_AR2 0x04
-
-#define IPAC_ATX_AT7 0x80
-#define IPAC_ATX_AT6 0x40
-#define IPAC_ATX_AT5 0x20
-#define IPAC_ATX_AT4 0x10
-#define IPAC_ATX_AT3 0x08
-#define IPAC_ATX_AT2 0x04
-
-#define IPAC_PITA1_ENA 0x80
-#define IPAC_PITA1_DUDD 0x40
-
-#define IPAC_PITA2_ENA 0x80
-#define IPAC_PITA2_DUDD 0x40
-
-#define IPAC_POTA1_ENA 0x80
-#define IPAC_POTA1_DUDD 0x40
-
-#define IPAC_POTA2_ENA 0x80
-#define IPAC_POTA2_DUDD 0x40
-
-#define IPAC_PCFG_DPS 0x80
-#define IPAC_PCFG_ACL 0x40
-#define IPAC_PCFG_LED 0x20
-#define IPAC_PCFG_PLD 0x10
-#define IPAC_PCFG_FBS 0x08
-#define IPAC_PCFG_CSL2 0x04
-#define IPAC_PCFG_CSL1 0x02
-#define IPAC_PCFG_CSL0 0x01
-
-#define IPAC_SCFG_PRI 0x80
-#define IPAC_SCFG_TXD 0x40
-#define IPAC_SCFG_TLEN 0x20
-
-#define IPAC_TIMR2_TMD 0x80
-
-#endif /* _I4B_IPAC_H_ */
diff --git a/sys/dev/ic/isac.c b/sys/dev/ic/isac.c
deleted file mode 100644
index b563df19907..00000000000
--- a/sys/dev/ic/isac.c
+++ /dev/null
@@ -1,726 +0,0 @@
-/*
- * Copyright (c) 1997, 2000 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * i4b_isac.c - i4b siemens isdn chipset driver ISAC handler
- * ---------------------------------------------------------
- *
- * $Id: isac.c,v 1.24 2012/10/27 17:18:21 chs Exp $
- *
- * last edit-date: [Fri Jan 5 11:36:10 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isac.c,v 1.24 2012/10/27 17:18:21 chs Exp $");
-
-#ifdef __FreeBSD__
-#include "opt_i4b.h"
-#endif
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#ifndef __bsdi__
-#include <sys/bus.h>
-#endif
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#include <machine/i4b_trace.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_trace.h>
-#endif
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/ipac.h>
-#include <dev/ic/hscx.h>
-
-static u_char isic_isac_exir_hdlr(register struct isic_softc *sc, u_char exir);
-static void isic_isac_ind_hdlr(register struct isic_softc *sc, int ind);
-
-/*---------------------------------------------------------------------------*
- * ISAC interrupt service routine
- *---------------------------------------------------------------------------*/
-void
-isic_isac_irq(struct isic_softc *sc, int ista)
-{
- register u_char c = 0;
- NDBGL1(L1_F_MSG, "%s: ista = 0x%02x", device_xname(sc->sc_dev), ista);
-
- if(ista & ISAC_ISTA_EXI) /* extended interrupt */
- {
- u_int8_t exirstat = ISAC_READ(I_EXIR);
- if (sc->sc_intr_valid == ISIC_INTR_VALID)
- c |= isic_isac_exir_hdlr(sc, exirstat);
- }
-
- if(ista & ISAC_ISTA_RME) /* receive message end */
- {
- register int rest;
- u_char rsta;
-
- /* get rx status register */
-
- rsta = ISAC_READ(I_RSTA);
-
- if((rsta & ISAC_RSTA_MASK) != 0x20)
- {
- int error = 0;
-
- if(!(rsta & ISAC_RSTA_CRC)) /* CRC error */
- {
- error++;
- NDBGL1(L1_I_ERR, "%s: CRC error", device_xname(sc->sc_dev));
- }
-
- if(rsta & ISAC_RSTA_RDO) /* ReceiveDataOverflow */
- {
- error++;
- NDBGL1(L1_I_ERR, "%s: Data Overrun error", device_xname(sc->sc_dev));
- }
-
- if(rsta & ISAC_RSTA_RAB) /* ReceiveABorted */
- {
- error++;
- NDBGL1(L1_I_ERR, "%s: Receive Aborted error", device_xname(sc->sc_dev));
- }
-
- if(error == 0)
- {
- NDBGL1(L1_I_ERR, "%s: RME unknown error, RSTA = 0x%02x!", device_xname(sc->sc_dev), rsta);
- }
-
- i4b_Dfreembuf(sc->sc_ibuf);
-
- c |= ISAC_CMDR_RMC|ISAC_CMDR_RRES;
-
- sc->sc_ibuf = NULL;
- sc->sc_ib = NULL;
- sc->sc_ilen = 0;
-
- ISAC_WRITE(I_CMDR, ISAC_CMDR_RMC|ISAC_CMDR_RRES);
- ISACCMDRWRDELAY();
-
- return;
- }
-
- rest = (ISAC_READ(I_RBCL) & (ISAC_FIFO_LEN-1));
-
- if(rest == 0)
- rest = ISAC_FIFO_LEN;
-
- if(sc->sc_ibuf == NULL)
- {
- if((sc->sc_ibuf = i4b_Dgetmbuf(rest)) != NULL)
- sc->sc_ib = sc->sc_ibuf->m_data;
- else
- panic("isic_isac_irq: RME, i4b_Dgetmbuf returns NULL!");
- sc->sc_ilen = 0;
- }
-
- if(sc->sc_ilen <= (MAX_DFRAME_LEN - rest))
- {
- ISAC_RDFIFO(sc->sc_ib, rest);
- sc->sc_ilen += rest;
-
- sc->sc_ibuf->m_pkthdr.len =
- sc->sc_ibuf->m_len = sc->sc_ilen;
-
- if(sc->sc_trace & TRACE_D_RX)
- {
- i4b_trace_hdr hdr;
- memset(&hdr, 0, sizeof hdr);
- hdr.type = TRC_CH_D;
- hdr.dir = FROM_NT;
- hdr.count = ++sc->sc_trace_dcount;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, sc->sc_ibuf->m_len, sc->sc_ibuf->m_data);
- }
-
- c |= ISAC_CMDR_RMC;
-
- if(sc->sc_intr_valid == ISIC_INTR_VALID &&
- (((struct isdn_l3_driver*)sc->sc_l3token)->protocol != PROTOCOL_D64S))
- {
- isdn_layer2_data_ind(&sc->sc_l2, sc->sc_l3token, sc->sc_ibuf);
- }
- else
- {
- i4b_Dfreembuf(sc->sc_ibuf);
- }
- }
- else
- {
- NDBGL1(L1_I_ERR, "RME, input buffer overflow!");
- i4b_Dfreembuf(sc->sc_ibuf);
- c |= ISAC_CMDR_RMC|ISAC_CMDR_RRES;
- }
-
- sc->sc_ibuf = NULL;
- sc->sc_ib = NULL;
- sc->sc_ilen = 0;
- }
-
- if(ista & ISAC_ISTA_RPF) /* receive fifo full */
- {
- if(sc->sc_ibuf == NULL)
- {
- if((sc->sc_ibuf = i4b_Dgetmbuf(MAX_DFRAME_LEN)) != NULL)
- sc->sc_ib= sc->sc_ibuf->m_data;
- else
- panic("isic_isac_irq: RPF, i4b_Dgetmbuf returns NULL!");
- sc->sc_ilen = 0;
- }
-
- if(sc->sc_ilen <= (MAX_DFRAME_LEN - ISAC_FIFO_LEN))
- {
- ISAC_RDFIFO(sc->sc_ib, ISAC_FIFO_LEN);
- sc->sc_ilen += ISAC_FIFO_LEN;
- sc->sc_ib += ISAC_FIFO_LEN;
- c |= ISAC_CMDR_RMC;
- }
- else
- {
- NDBGL1(L1_I_ERR, "RPF, input buffer overflow!");
- i4b_Dfreembuf(sc->sc_ibuf);
- sc->sc_ibuf = NULL;
- sc->sc_ib = NULL;
- sc->sc_ilen = 0;
- c |= ISAC_CMDR_RMC|ISAC_CMDR_RRES;
- }
- }
-
- if(ista & ISAC_ISTA_XPR) /* transmit fifo empty (XPR bit set) */
- {
- if((sc->sc_obuf2 != NULL) && (sc->sc_obuf == NULL))
- {
- sc->sc_freeflag = sc->sc_freeflag2;
- sc->sc_obuf = sc->sc_obuf2;
- sc->sc_op = sc->sc_obuf->m_data;
- sc->sc_ol = sc->sc_obuf->m_len;
- sc->sc_obuf2 = NULL;
-#ifdef NOTDEF
- printf("ob2=%x, op=%x, ol=%d, f=%d #",
- sc->sc_obuf,
- sc->sc_op,
- sc->sc_ol,
- sc->sc_state);
-#endif
- }
- else
- {
-#ifdef NOTDEF
- printf("ob=%x, op=%x, ol=%d, f=%d #",
- sc->sc_obuf,
- sc->sc_op,
- sc->sc_ol,
- sc->sc_state);
-#endif
- }
-
- if(sc->sc_obuf)
- {
- ISAC_WRFIFO(sc->sc_op, min(sc->sc_ol, ISAC_FIFO_LEN));
-
- if(sc->sc_ol > ISAC_FIFO_LEN) /* length > 32 ? */
- {
- sc->sc_op += ISAC_FIFO_LEN; /* bufferptr+32 */
- sc->sc_ol -= ISAC_FIFO_LEN; /* length - 32 */
- c |= ISAC_CMDR_XTF; /* set XTF bit */
- }
- else
- {
- if(sc->sc_freeflag)
- {
- i4b_Dfreembuf(sc->sc_obuf);
- sc->sc_freeflag = 0;
- }
- sc->sc_obuf = NULL;
- sc->sc_op = NULL;
- sc->sc_ol = 0;
-
- c |= ISAC_CMDR_XTF | ISAC_CMDR_XME;
- }
- }
- else
- {
- sc->sc_state &= ~ISAC_TX_ACTIVE;
- }
- }
-
- if(ista & ISAC_ISTA_CISQ) /* channel status change CISQ */
- {
- register u_char ci;
-
- /* get command/indication rx register*/
-
- ci = ISAC_READ(I_CIRR);
-
- /* if S/Q IRQ, read SQC reg to clr SQC IRQ */
-
- if(ci & ISAC_CIRR_SQC)
- (void) ISAC_READ(I_SQRR);
-
- /* C/I code change IRQ (flag already cleared by CIRR read) */
-
- if(ci & ISAC_CIRR_CIC0)
- isic_isac_ind_hdlr(sc, (ci >> 2) & 0xf);
- }
-
- if(c)
- {
- ISAC_WRITE(I_CMDR, c);
- ISACCMDRWRDELAY();
- }
-}
-
-/*---------------------------------------------------------------------------*
- * ISAC L1 Extended IRQ handler
- *---------------------------------------------------------------------------*/
-static u_char
-isic_isac_exir_hdlr(register struct isic_softc *sc, u_char exir)
-{
- u_char c = 0;
-
- if(exir & ISAC_EXIR_XMR)
- {
- NDBGL1(L1_I_ERR, "EXIRQ Tx Message Repeat");
-
- c |= ISAC_CMDR_XRES;
- }
-
- if(exir & ISAC_EXIR_XDU)
- {
- NDBGL1(L1_I_ERR, "EXIRQ Tx Data Underrun");
-
- c |= ISAC_CMDR_XRES;
- }
-
- if(exir & ISAC_EXIR_PCE)
- {
- NDBGL1(L1_I_ERR, "EXIRQ Protocol Error");
- }
-
- if(exir & ISAC_EXIR_RFO)
- {
- NDBGL1(L1_I_ERR, "EXIRQ Rx Frame Overflow");
-
- c |= ISAC_CMDR_RMC|ISAC_CMDR_RRES;
- }
-
- if(exir & ISAC_EXIR_SOV)
- {
- NDBGL1(L1_I_ERR, "EXIRQ Sync Xfer Overflow");
- }
-
- if(exir & ISAC_EXIR_MOS)
- {
- NDBGL1(L1_I_ERR, "EXIRQ Monitor Status");
- }
-
- if(exir & ISAC_EXIR_SAW)
- {
- /* cannot happen, STCR:TSF is set to 0 */
-
- NDBGL1(L1_I_ERR, "EXIRQ Subscriber Awake");
- }
-
- if(exir & ISAC_EXIR_WOV)
- {
- /* cannot happen, STCR:TSF is set to 0 */
-
- NDBGL1(L1_I_ERR, "EXIRQ Watchdog Timer Overflow");
- }
-
- return(c);
-}
-
-/*---------------------------------------------------------------------------*
- * ISAC L1 Indication handler
- *---------------------------------------------------------------------------*/
-static void
-isic_isac_ind_hdlr(register struct isic_softc *sc, int ind)
-{
- register int event;
-
- switch(ind)
- {
- case ISAC_CIRR_IAI8:
- NDBGL1(L1_I_CICO, "rx AI8 in state %s", isic_printstate(sc));
- if(sc->sc_bustyp == BUS_TYPE_IOM2)
- isic_isac_l1_cmd(sc, CMD_AR8);
- event = EV_INFO48;
- isdn_layer2_status_ind(&sc->sc_l2, sc->sc_l3token, STI_L1STAT, LAYER_ACTIVE);
- break;
-
- case ISAC_CIRR_IAI10:
- NDBGL1(L1_I_CICO, "rx AI10 in state %s", isic_printstate(sc));
- if(sc->sc_bustyp == BUS_TYPE_IOM2)
- isic_isac_l1_cmd(sc, CMD_AR10);
- event = EV_INFO410;
- isdn_layer2_status_ind(&sc->sc_l2, sc->sc_l3token, STI_L1STAT, LAYER_ACTIVE);
- break;
-
- case ISAC_CIRR_IRSY:
- NDBGL1(L1_I_CICO, "rx RSY in state %s", isic_printstate(sc));
- event = EV_RSY;
- break;
-
- case ISAC_CIRR_IPU:
- NDBGL1(L1_I_CICO, "rx PU in state %s", isic_printstate(sc));
- event = EV_PU;
- break;
-
- case ISAC_CIRR_IDR:
- NDBGL1(L1_I_CICO, "rx DR in state %s", isic_printstate(sc));
- isic_isac_l1_cmd(sc, CMD_DIU);
- event = EV_DR;
- break;
-
- case ISAC_CIRR_IDID:
- NDBGL1(L1_I_CICO, "rx DID in state %s", isic_printstate(sc));
- event = EV_INFO0;
- isdn_layer2_status_ind(&sc->sc_l2, sc->sc_l3token, STI_L1STAT, LAYER_IDLE);
- break;
-
- case ISAC_CIRR_IDIS:
- NDBGL1(L1_I_CICO, "rx DIS in state %s", isic_printstate(sc));
- event = EV_DIS;
- break;
-
- case ISAC_CIRR_IEI:
- NDBGL1(L1_I_CICO, "rx EI in state %s", isic_printstate(sc));
- isic_isac_l1_cmd(sc, CMD_DIU);
- event = EV_EI;
- break;
-
- case ISAC_CIRR_IARD:
- NDBGL1(L1_I_CICO, "rx ARD in state %s", isic_printstate(sc));
- event = EV_INFO2;
- break;
-
- case ISAC_CIRR_ITI:
- NDBGL1(L1_I_CICO, "rx TI in state %s", isic_printstate(sc));
- event = EV_INFO0;
- break;
-
- case ISAC_CIRR_IATI:
- NDBGL1(L1_I_CICO, "rx ATI in state %s", isic_printstate(sc));
- event = EV_INFO0;
- break;
-
- case ISAC_CIRR_ISD:
- NDBGL1(L1_I_CICO, "rx SD in state %s", isic_printstate(sc));
- event = EV_INFO0;
- break;
-
- default:
- NDBGL1(L1_I_ERR, "UNKNOWN Indication 0x%x in state %s", ind, isic_printstate(sc));
- event = EV_INFO0;
- break;
- }
- isic_next_state(sc, event);
-}
-
-/*---------------------------------------------------------------------------*
- * execute a layer 1 command
- *---------------------------------------------------------------------------*/
-void
-isic_isac_l1_cmd(struct isic_softc *sc, int command)
-{
- u_char cmd;
-
-#ifdef I4B_SMP_WORKAROUND
-
- /* XXXXXXXXXXXXXXXXXXX */
-
- /*
- * patch from Wolfgang Helbig:
- *
- * Here is a patch that makes i4b work on an SMP:
- * The card (TELES 16.3) didn't interrupt on an SMP machine.
- * This is a gross workaround, but anyway it works *and* provides
- * some information as how to finally fix this problem.
- */
-
- HSCX_WRITE(0, H_MASK, 0xff);
- HSCX_WRITE(1, H_MASK, 0xff);
- ISAC_WRITE(I_MASK, 0xff);
- DELAY(100);
- HSCX_WRITE(0, H_MASK, HSCX_A_IMASK);
- HSCX_WRITE(1, H_MASK, HSCX_B_IMASK);
- ISAC_WRITE(I_MASK, ISAC_IMASK);
-
- /* XXXXXXXXXXXXXXXXXXX */
-
-#endif /* I4B_SMP_WORKAROUND */
-
- if(command < 0 || command > CMD_ILL)
- {
- NDBGL1(L1_I_ERR, "illegal cmd 0x%x in state %s", command, isic_printstate(sc));
- return;
- }
-
- if(sc->sc_bustyp == BUS_TYPE_IOM2)
- cmd = ISAC_CIX0_LOW;
- else
- cmd = 0;
-
- switch(command)
- {
- case CMD_TIM:
- NDBGL1(L1_I_CICO, "tx TIM in state %s", isic_printstate(sc));
- cmd |= (ISAC_CIXR_CTIM << 2);
- break;
-
- case CMD_RS:
- NDBGL1(L1_I_CICO, "tx RS in state %s", isic_printstate(sc));
- cmd |= (ISAC_CIXR_CRS << 2);
- break;
-
- case CMD_AR8:
- NDBGL1(L1_I_CICO, "tx AR8 in state %s", isic_printstate(sc));
- cmd |= (ISAC_CIXR_CAR8 << 2);
- break;
-
- case CMD_AR10:
- NDBGL1(L1_I_CICO, "tx AR10 in state %s", isic_printstate(sc));
- cmd |= (ISAC_CIXR_CAR10 << 2);
- break;
-
- case CMD_DIU:
- NDBGL1(L1_I_CICO, "tx DIU in state %s", isic_printstate(sc));
- cmd |= (ISAC_CIXR_CDIU << 2);
- break;
- }
- ISAC_WRITE(I_CIXR, cmd);
-}
-
-/*---------------------------------------------------------------------------*
- * L1 ISAC initialization
- *---------------------------------------------------------------------------*/
-int
-isic_isac_init(struct isic_softc *sc)
-{
- ISAC_IMASK = 0xff; /* disable all irqs */
-
- ISAC_WRITE(I_MASK, ISAC_IMASK);
-
- if(sc->sc_bustyp != BUS_TYPE_IOM2)
- {
- NDBGL1(L1_I_SETUP, "configuring for IOM-1 mode");
-
- /* ADF2: Select mode IOM-1 */
- ISAC_WRITE(I_ADF2, 0x00);
-
- /* SPCR: serial port control register:
- * SPU - software power up = 0
- * SAC - SIP port high Z
- * SPM - timing mode 0
- * TLP - test loop = 0
- * C1C, C2C - B1 and B2 switched to/from SPa
- */
- ISAC_WRITE(I_SPCR, ISAC_SPCR_C1C1|ISAC_SPCR_C2C1);
-
- /* SQXR: S/Q channel xmit register:
- * SQIE - S/Q IRQ enable = 0
- * SQX1-4 - Fa bits = 1
- */
- ISAC_WRITE(I_SQXR, ISAC_SQXR_SQX1|ISAC_SQXR_SQX2|ISAC_SQXR_SQX3|ISAC_SQXR_SQX4);
-
- /* ADF1: additional feature reg 1:
- * WTC - watchdog = 0
- * TEM - test mode = 0
- * PFS - pre-filter = 0
- * CFS - IOM clock/frame always active
- * FSC1/2 - polarity of 8kHz strobe
- * ITF - interframe fill = idle
- */
- ISAC_WRITE(I_ADF1, ISAC_ADF1_FC2); /* ADF1 */
-
- /* STCR: sync transfer control reg:
- * TSF - terminal secific functions = 0
- * TBA - TIC bus address = 7
- * STx/SCx = 0
- */
- ISAC_WRITE(I_STCR, ISAC_STCR_TBA2|ISAC_STCR_TBA1|ISAC_STCR_TBA0);
- }
- else
- {
- NDBGL1(L1_I_SETUP, "configuring for IOM-2 mode");
-
- /* ADF2: Select mode IOM-2 */
- ISAC_WRITE(I_ADF2, ISAC_ADF2_IMS);
-
- /* SPCR: serial port control register:
- * SPU - software power up = 0
- * SPM - timing mode 0
- * TLP - test loop = 0
- * C1C, C2C - B1 + C1 and B2 + IC2 monitoring
- */
- ISAC_WRITE(I_SPCR, 0x00);
-
- /* SQXR: S/Q channel xmit register:
- * IDC - IOM direction = 0 (master)
- * CFS - Config Select = 0 (clock always active)
- * CI1E - C/I channel 1 IRQ enable = 0
- * SQIE - S/Q IRQ enable = 0
- * SQX1-4 - Fa bits = 1
- */
- ISAC_WRITE(I_SQXR, ISAC_SQXR_SQX1|ISAC_SQXR_SQX2|ISAC_SQXR_SQX3|ISAC_SQXR_SQX4);
-
- /* ADF1: additional feature reg 1:
- * WTC - watchdog = 0
- * TEM - test mode = 0
- * PFS - pre-filter = 0
- * IOF - IOM i/f off = 0
- * ITF - interframe fill = idle
- */
- ISAC_WRITE(I_ADF1, 0x00);
-
- /* STCR: sync transfer control reg:
- * TSF - terminal secific functions = 0
- * TBA - TIC bus address = 7
- * STx/SCx = 0
- */
- ISAC_WRITE(I_STCR, ISAC_STCR_TBA2|ISAC_STCR_TBA1|ISAC_STCR_TBA0);
- }
-
-
- /* MODE: Mode Register:
- * MDSx - transparent mode 2
- * TMD - timer mode = external
- * RAC - Receiver enabled
- * DIMx - digital i/f mode
- */
- ISAC_WRITE(I_MODE, ISAC_MODE_MDS2|ISAC_MODE_MDS1|ISAC_MODE_RAC|ISAC_MODE_DIM0);
-
- /* enabled interrupts:
- * ===================
- * RME - receive message end
- * RPF - receive pool full
- * XPR - transmit pool ready
- * CISQ - CI or S/Q channel change
- * EXI - extended interrupt
- */
-
- ISAC_IMASK = ISAC_MASK_RSC | /* auto mode only */
- ISAC_MASK_TIN | /* timer irq */
- ISAC_MASK_SIN; /* sync xfer irq */
-
- ISAC_WRITE(I_MASK, ISAC_IMASK);
-
- ISAC_WRITE(I_CMDR, ISAC_CMDR_RRES|ISAC_CMDR_XRES);
- ISACCMDRWRDELAY();
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------*
- * isic_recovery - try to recover from irq lockup
- *---------------------------------------------------------------------------*/
-void
-isic_recover(struct isic_softc *sc)
-{
- u_char byte;
-
- /* get hscx irq status from hscx b ista */
-
- byte = HSCX_READ(HSCX_CH_B, H_ISTA);
-
- NDBGL1(L1_ERROR, "HSCX B: ISTA = 0x%x", byte);
-
- if(byte & HSCX_ISTA_ICA)
- NDBGL1(L1_ERROR, "HSCX A: ISTA = 0x%x", (u_char)HSCX_READ(HSCX_CH_A, H_ISTA));
-
- if(byte & HSCX_ISTA_EXB)
- NDBGL1(L1_ERROR, "HSCX B: EXIR = 0x%x", (u_char)HSCX_READ(HSCX_CH_B, H_EXIR));
-
- if(byte & HSCX_ISTA_EXA)
- NDBGL1(L1_ERROR, "HSCX A: EXIR = 0x%x", (u_char)HSCX_READ(HSCX_CH_A, H_EXIR));
-
- /* get isac irq status */
-
- byte = ISAC_READ(I_ISTA);
-
- NDBGL1(L1_ERROR, " ISAC: ISTA = 0x%x", byte);
-
- if(byte & ISAC_ISTA_EXI)
- NDBGL1(L1_ERROR, " ISAC: EXIR = 0x%x", (u_char)ISAC_READ(I_EXIR));
-
- if(byte & ISAC_ISTA_CISQ)
- {
- byte = ISAC_READ(I_CIRR);
-
- NDBGL1(L1_ERROR, " ISAC: CISQ = 0x%x", byte);
-
- if(byte & ISAC_CIRR_SQC)
- NDBGL1(L1_ERROR, " ISAC: SQRR = 0x%x", (u_char)ISAC_READ(I_SQRR));
- }
-
- NDBGL1(L1_ERROR, "HSCX B: IMASK = 0x%x", HSCX_B_IMASK);
- NDBGL1(L1_ERROR, "HSCX A: IMASK = 0x%x", HSCX_A_IMASK);
-
- HSCX_WRITE(0, H_MASK, 0xff);
- HSCX_WRITE(1, H_MASK, 0xff);
- DELAY(100);
- HSCX_WRITE(0, H_MASK, HSCX_A_IMASK);
- HSCX_WRITE(1, H_MASK, HSCX_B_IMASK);
- DELAY(100);
-
- NDBGL1(L1_ERROR, " ISAC: IMASK = 0x%x", ISAC_IMASK);
-
- ISAC_WRITE(I_MASK, 0xff);
- DELAY(100);
- ISAC_WRITE(I_MASK, ISAC_IMASK);
-}
diff --git a/sys/dev/ic/isac.h b/sys/dev/ic/isac.h
deleted file mode 100644
index a264e5ef179..00000000000
--- a/sys/dev/ic/isac.h
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- * Copyright (c) 1996, 1998 Gary Jennejohn. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * $Id: isac.h,v 1.4 2011/08/07 20:05:08 jakllsch Exp $
- *
- * last edit-date: [Sun Feb 14 10:27:13 1999]
- *
- * -hm split up for rewrite of Siemens chipset driver
- *
- *---------------------------------------------------------------------------
- */
-
-#ifndef I4B_ISAC_H_
-#define I4B_ISAC_H_
-
-/*
- * The ISAC databook specifies a delay of 2.5 DCL clock cycles between
- * writes to the ISAC command register CMDR. This is the delay used to
- * satisfy this requirement.
- */
-
-#define I4B_ISAC_CMDRWRDELAY 30
-
-#if (I4B_ISAC_CMDRWRDELAY > 0)
-#define ISACCMDRWRDELAY() DELAY(I4B_ISAC_CMDRWRDELAY)
-#else
-#warning "I4B_ISAC_CMDRWRDELAY set to 0!"
-#define ISACCMDRWRDELAY()
-#endif
-
-enum ISAC_VERSIONS {
- ISAC_VA, /* 2085 A1 or A2, 2086/2186 V1.1 */
- ISAC_VB1, /* 2085 B1 */
- ISAC_VB2, /* 2085 B2 */
- ISAC_VB3, /* 2085 B3/V2.3 */
- ISAC_UNKN /* unknown version */
-};
-
-#define ISAC_FIFO_LEN 32 /* 32 bytes FIFO on chip */
-
-/*
- * definitions of registers and bits for the ISAC ISDN chip.
- */
-
-typedef struct isac_reg {
-
- /* 32 byte deep FIFO always first */
-
- unsigned char isac_fifo [ISAC_FIFO_LEN];
-
- /* most registers can be read/written, but have different names */
- /* so define a union with read/write names to make that clear */
-
- union {
- struct {
- unsigned char isac_ista;
- unsigned char isac_star;
- unsigned char isac_mode;
- unsigned char isac_timr;
- unsigned char isac_exir;
- unsigned char isac_rbcl;
- unsigned char isac_sapr;
- unsigned char isac_rsta;
- unsigned char dummy_28;
- unsigned char isac_rhcr;
- unsigned char isac_rbch;
- unsigned char isac_star2;
- unsigned char dummy_2c;
- unsigned char dummy_2d;
- unsigned char dummy_2e;
- unsigned char dummt_2f;
- unsigned char isac_spcr;
- unsigned char isac_cirr;
- unsigned char isac_mor;
- unsigned char isac_sscr;
- unsigned char isac_sfcr;
- unsigned char isac_c1r;
- unsigned char isac_c2r;
- unsigned char isac_b1cr;
- unsigned char isac_b2cr;
- unsigned char isac_adf2;
- unsigned char isac_mosr;
- unsigned char isac_sqrr;
- } isac_r;
- struct {
- unsigned char isac_mask;
- unsigned char isac_cmdr;
- unsigned char isac_mode;
- unsigned char isac_timr;
- unsigned char isac_xad1;
- unsigned char isac_xad2;
- unsigned char isac_sap1;
- unsigned char isac_sap2;
- unsigned char isac_tei1;
- unsigned char isac_tei2;
- unsigned char dummy_2a;
- unsigned char isac_star2;
- unsigned char dummy_2c;
- unsigned char dummy_2d;
- unsigned char dummy_2e;
- unsigned char dummt_2f;
- unsigned char isac_spcr;
- unsigned char isac_cixr;
- unsigned char isac_mox;
- unsigned char isac_sscx;
- unsigned char isac_sfcw;
- unsigned char isac_c1r;
- unsigned char isac_c2r;
- unsigned char isac_stcr;
- unsigned char isac_adf1;
- unsigned char isac_adf2;
- unsigned char isac_mocr;
- unsigned char isac_sqxr;
- } isac_w;
- } isac_rw;
-} isac_reg_t;
-
-#define REG_OFFSET(type, field) (uintptr_t)(&(((type *)0)->field))
-
-/* ISAC read registers */
-
-#define i_ista isac_rw.isac_r.isac_ista
-#define I_ISTA REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_ista)
-#define i_star isac_rw.isac_r.isac_star
-#define I_STAR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_star)
-#define i_mode isac_rw.isac_r.isac_mode
-#define I_MODE REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_mode)
-#define i_timr isac_rw.isac_r.isac_timr
-#define I_TIMR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_timr)
-#define i_exir isac_rw.isac_r.isac_exir
-#define I_EXIR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_exir)
-#define i_rbcl isac_rw.isac_r.isac_rbcl
-#define I_RBCL REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_rbcl)
-#define i_sapr isac_rw.isac_r.isac_sapr
-#define I_SAPR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_sapr)
-#define i_rsta isac_rw.isac_r.isac_rsta
-#define I_RSTA REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_rsta)
-#define i_rhcr isac_rw.isac_r.isac_rhcr
-#define I_RHCR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_rhcr)
-#define i_rbch isac_rw.isac_r.isac_rbch
-#define I_RBCH REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_rbch)
-#define i_star2 isac_rw.isac_r.isac_star2
-#define I_STAR2 REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_star2)
-#define i_spcr isac_rw.isac_r.isac_spcr
-#define I_SPCR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_spcr)
-#define i_cirr isac_rw.isac_r.isac_cirr
-#define I_CIRR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_cirr)
-#define i_mor isac_rw.isac_r.isac_mor
-#define I_MOR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_mor)
-#define i_sscr isac_rw.isac_r.isac_sscr
-#define I_SSCR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_sscr)
-#define i_sfcr isac_rw.isac_r.isac_sfcr
-#define I_SFCR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_sfcr)
-#define i_c1r isac_rw.isac_r.isac_c1r
-#define I_C1R REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_c1r)
-#define i_c2r isac_rw.isac_r.isac_c2r
-#define I_C2R REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_c2r)
-#define i_b1cr isac_rw.isac_r.isac_b1cr
-#define I_B1CR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_b1cr)
-#define i_b2cr isac_rw.isac_r.isac_b2cr
-#define I_B2CR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_b2cr)
-#define i_adf2 isac_rw.isac_r.isac_adf2
-#define I_ADF2 REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_adf2)
-#define i_mosr isac_rw.isac_r.isac_mosr
-#define I_MOSR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_mosr)
-#define i_sqrr isac_rw.isac_r.isac_sqrr
-#define I_SQRR REG_OFFSET(isac_reg_t, isac_rw.isac_r.isac_sqrr)
-
-/* ISAC write registers - isac_mode, isac_timr, isac_star2, isac_spcr, */
-/* isac_c1r, isac_c2r, isac_adf2 see read registers */
-
-#define i_mask isac_rw.isac_w.isac_mask
-#define I_MASK REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_mask)
-#define i_cmdr isac_rw.isac_w.isac_cmdr
-#define I_CMDR REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_cmdr)
-#define i_xad1 isac_rw.isac_w.isac_xad1
-#define I_XAD1 REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_xad1)
-#define i_xad2 isac_rw.isac_w.isac_xad2
-#define I_XAD2 REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_xad2)
-#define i_sap1 isac_rw.isac_w.isac_sap1
-#define I_SAP1 REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_sap1)
-#define i_sap2 isac_rw.isac_w.isac_sap2
-#define I_SAP2 REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_sap2)
-#define i_tei1 isac_rw.isac_w.isac_tei1
-#define i_tei2 isac_rw.isac_w.isac_tei2
-#define i_cixr isac_rw.isac_w.isac_cixr
-#define I_CIXR REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_cixr)
-#define I_CIX0 I_CIXR
-#define i_mox isac_rw.isac_w.isac_mox
-#define I_MOX REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_mox)
-#define i_sscx isac_rw.isac_w.isac_sscx
-#define I_SSCX REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_sscx)
-#define i_sfcw isac_rw.isac_w.isac_sfcw
-#define I_SFCW REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_sfcw)
-#define i_stcr isac_rw.isac_w.isac_stcr
-#define I_STCR REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_stcr)
-#define i_adf1 isac_rw.isac_w.isac_adf1
-#define I_ADF1 REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_adf1)
-#define i_mocr isac_rw.isac_w.isac_mocr
-#define I_MOCR REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_mocr)
-#define i_sqxr isac_rw.isac_w.isac_sqxr
-#define I_SQXR REG_OFFSET(isac_reg_t, isac_rw.isac_w.isac_sqxr)
-
-#define ISAC_ISTA_RME 0x80
-#define ISAC_ISTA_RPF 0x40
-#define ISAC_ISTA_RSC 0x20
-#define ISAC_ISTA_XPR 0x10
-#define ISAC_ISTA_TIN 0x08
-#define ISAC_ISTA_CISQ 0x04
-#define ISAC_ISTA_SIN 0x02
-#define ISAC_ISTA_EXI 0x01
-
-#define ISAC_MASK_RME 0x80
-#define ISAC_MASL_RPF 0x40
-#define ISAC_MASK_RSC 0x20
-#define ISAC_MASK_XPR 0x10
-#define ISAC_MASK_TIN 0x08
-#define ISAC_MASK_CISQ 0x04
-#define ISAC_MASK_SIN 0x02
-#define ISAC_MASK_EXI 0x01
-#define ISAC_MASK_ALL 0xff
-
-#define ISAC_STAR_XDOV 0x80
-#define ISAC_STAR_XFW 0x40
-#define ISAC_STAR_XRNR 0x20
-#define ISAC_STAR_RRNR 0x10
-#define ISAC_STAR_MBR 0x08
-#define ISAC_STAR_MAC1 0x04
-#define ISAC_STAR_BVS 0x02
-#define ISAC_STAR_MAC0 0x01
-
-#define ISAC_CMDR_RMC 0x80
-#define ISAC_CMDR_RRES 0x40
-#define ISAC_CMDR_RNR 0x20
-#define ISAC_CMDR_STI 0x10
-#define ISAC_CMDR_XTF 0x08
-#define ISAC_CMDR_XIF 0x04
-#define ISAC_CMDR_XME 0x02
-#define ISAC_CMDR_XRES 0x01
-
-#define ISAC_MODE_MDS2 0x80
-#define ISAC_MODE_MDS1 0x40
-#define ISAC_MODE_MDS0 0x20
-#define ISAC_MODE_TMD 0x10
-#define ISAC_MODE_RAC 0x08
-#define ISAC_MODE_DIM2 0x04
-#define ISAC_MODE_DIM1 0x02
-#define ISAC_MODE_DIM0 0x01
-
-#define ISAC_EXIR_XMR 0x80
-#define ISAC_EXIR_XDU 0x40
-#define ISAC_EXIR_PCE 0x20
-#define ISAC_EXIR_RFO 0x10
-#define ISAC_EXIR_SOV 0x08
-#define ISAC_EXIR_MOS 0x04
-#define ISAC_EXIR_SAW 0x02
-#define ISAC_EXIR_WOV 0x01
-
-#define ISAC_RSTA_RDA 0x80
-#define ISAC_RSTA_RDO 0x40
-#define ISAC_RSTA_CRC 0x20
-#define ISAC_RSTA_RAB 0x10
-#define ISAC_RSTA_SA1 0x08
-#define ISAC_RSTA_SA0 0x04
-#define ISAC_RSTA_CR 0x02
-#define ISAC_RSTA_TA 0x01
-
-#define ISAC_RSTA_MASK 0x70 /* the interesting bits */
-
-#define ISAC_RBCH_XAC 0x80
-#define ISAC_RBCH_VN1 0x40
-#define ISAC_RBCH_VN0 0x20
-#define ISAC_RBCH_OV 0x10
-/* the other 4 bits are the high bits of the receive byte count */
-
-#define ISAC_SPCR_SPU 0x80
-#define ISAC_SPCR_SAC 0x40
-#define ISAC_SPCR_SPM 0x20
-#define ISAC_SPCR_TLP 0x10
-#define ISAC_SPCR_C1C1 0x08
-#define ISAC_SPCR_C1C0 0x04
-#define ISAC_SPCR_C2C1 0x02
-#define ISAC_SPCR_C2C0 0x01
-
-#define ISAC_CIRR_SQC 0x80
-#define ISAC_CIRR_BAS 0x40
-/* bits 5-2 CODR */
-#define ISAC_CIRR_CIC0 0x02
-/* bit 0 is always 0 */
-/* C/I codes from bits 5-2 (>> 2 & 0xf) */
-/* the indications */
-#define ISAC_CIRR_IPU 0x07
-#define ISAC_CIRR_IDR 0x00
-#define ISAC_CIRR_ISD 0x02
-#define ISAC_CIRR_IDIS 0x03
-#define ISAC_CIRR_IEI 0x06
-#define ISAC_CIRR_IRSY 0x04
-#define ISAC_CIRR_IARD 0x08
-#define ISAC_CIRR_ITI 0x0a
-#define ISAC_CIRR_IATI 0x0b
-#define ISAC_CIRR_IAI8 0x0c
-#define ISAC_CIRR_IAI10 0x0d
-#define ISAC_CIRR_IDID 0x0f
-
-#define ISAC_CI_MASK 0x0f
-
-#define ISAC_CIXR_RSS 0x80
-#define ISAC_CIXR_BAC 0x40
-/* bits 5-2 CODX */
-#define ISAC_CIXR_TCX 0x02
-#define ISAC_CIXR_ECX 0x01
-/* in IOM-2 mode the low bits are always 1 */
-#define ISAC_CIX0_LOW 0x03
-/* C/I codes from bits 5-2 (>> 2 & 0xf) */
-/* the commands */
-#define ISAC_CIXR_CTIM 0
-#define ISAC_CIXR_CRS 0x01
-#define ISAC_CIXR_CSCZ 0x04
-#define ISAC_CIXR_CSSZ 0x02
-#define ISAC_CIXR_CAR8 0x08
-#define ISAC_CIXR_CAR10 0x09
-#define ISAC_CIXR_CARL 0x0a
-#define ISAC_CIXR_CDIU 0x0f
-
-#define ISAC_STCR_TSF 0x80
-#define ISAC_STCR_TBA2 0x40
-#define ISAC_STCR_TBA1 0x20
-#define ISAC_STCR_TBA0 0x10
-#define ISAC_STCR_ST1 0x08
-#define ISAC_STCR_ST0 0x04
-#define ISAC_STCR_SC1 0x02
-#define ISAC_STCR_SC0 0x01
-
-#define ISAC_ADF1_WTC1 0x80
-#define ISAC_ADF1_WTC2 0x40
-#define ISAC_ADF1_TEM 0x20
-#define ISAC_ADF1_PFS 0x10
-#define ISAC_ADF1_CFS 0x08
-#define ISAC_ADF1_FC2 0x04
-#define ISAC_ADF1_FC1 0x02
-#define ISAC_ADF1_ITF 0x01
-
-#define ISAC_ADF2_IMS 0x80
-/* all other bits are 0 */
-
-/* bits 7-5 are always 0 */
-#define ISAC_SQRR_SYN 0x10
-#define ISAC_SQRR_SQR1 0x08
-#define ISAC_SQRR_SQR2 0x04
-#define ISAC_SQRR_SQR3 0x02
-#define ISAC_SQRR_SQR4 0x01
-
-#define ISAC_SQXR_IDC 0x80
-#define ISAC_SQXR_CFS 0x40
-#define ISAC_SQXR_CI1E 0x20
-#define ISAC_SQXR_SQIE 0x10
-#define ISAC_SQXR_SQX1 0x08
-#define ISAC_SQXR_SQX2 0x04
-#define ISAC_SQXR_SQX3 0x02
-#define ISAC_SQXR_SQX4 0x01
-
-#endif /* I4B_ISAC_H_ */
diff --git a/sys/dev/ic/isacsx.c b/sys/dev/ic/isacsx.c
deleted file mode 100644
index a97c9f01540..00000000000
--- a/sys/dev/ic/isacsx.c
+++ /dev/null
@@ -1,675 +0,0 @@
-/* $NetBSD: isacsx.c,v 1.7 2012/10/27 17:18:21 chs Exp $ */
-/*
- * Copyright (c) 1997, 2000 Hellmuth Michaelis. All rights reserved.
- * Copyright (c) 2001 Gary Jennejohn. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * i4b_ifpi2_isac.c - i4b Fritz PCI Version 2 ISACSX handler
- * --------------------------------------------
- *
- * $Id: isacsx.c,v 1.7 2012/10/27 17:18:21 chs Exp $
- *
- * $FreeBSD: src/sys/i4b/layer1/ifpi2/i4b_ifpi2_isacsx.c,v 1.3 2002/09/02 00:52:07 brooks Exp $
- *
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isacsx.c,v 1.7 2012/10/27 17:18:21 chs Exp $");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <sys/device.h>
-
-#include <net/if.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#include <machine/i4b_trace.h>
-
-#include <i4b/layer1/i4b_l1.h>
-
-#include <i4b/layer1/isic/i4b_isic.h>
-#include <i4b/layer1/isic/i4b_hscx.h>
-
-#include <i4b/layer1/ifpi2/i4b_ifpi2_ext.h>
-#include <i4b/layer1/ifpi2/i4b_ifpi2_isacsx.h>
-
-#include <i4b/include/i4b_global.h>
-#include <i4b/include/i4b_mbuf.h>
-#else
-#include <sys/bus.h>
-
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_trace.h>
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#include <dev/ic/isacsx.h>
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/hscx.h>
-
-#endif
-
-static u_char isic_isacsx_exir_hdlr(register struct isic_softc *sc, u_char exir);
-static void isic_isacsx_ind_hdlr(register struct isic_softc *sc, int ind);
-
-/* the ISACSX has 2 mask registers of interest - cannot use ISAC_IMASK */
-unsigned char isacsx_imaskd;
-unsigned char isacsx_imask;
-
-/*---------------------------------------------------------------------------*
- * ISACSX interrupt service routine
- *---------------------------------------------------------------------------*/
-void
-isic_isacsx_irq(struct isic_softc *sc, int ista)
-{
- register u_char c = 0;
- register u_char istad = 0;
-
- NDBGL1(L1_F_MSG, "%s: ista = 0x%02x", device_xname(sc->sc_dev), ista);
-
- /* was it an HDLC interrupt ? */
- if (ista & ISACSX_ISTA_ICD)
- {
- istad = ISAC_READ(I_ISTAD);
- NDBGL1(L1_F_MSG, "%s: istad = 0x%02x", device_xname(sc->sc_dev), istad);
-
- if(istad & (ISACSX_ISTAD_RFO|ISACSX_ISTAD_XMR|ISACSX_ISTAD_XDU))
- {
- /* not really EXIR, but very similar */
- c |= isic_isacsx_exir_hdlr(sc, istad);
- }
- }
-
- if(istad & ISACSX_ISTAD_RME) /* receive message end */
- {
- register int rest;
- u_char rsta;
-
- /* get rx status register */
-
- rsta = ISAC_READ(I_RSTAD);
-
- /* Check for Frame and CRC valid */
- if((rsta & ISACSX_RSTAD_MASK) != (ISACSX_RSTAD_VFR|ISACSX_RSTAD_CRC))
- {
- int error = 0;
-
- if(!(rsta & ISACSX_RSTAD_VFR)) /* VFR error */
- {
- error++;
- NDBGL1(L1_I_ERR, "%s: Frame not valid error", device_xname(sc->sc_dev));
- }
-
- if(!(rsta & ISACSX_RSTAD_CRC)) /* CRC error */
- {
- error++;
- NDBGL1(L1_I_ERR, "%s: CRC error", device_xname(sc->sc_dev));
- }
-
- if(rsta & ISACSX_RSTAD_RDO) /* ReceiveDataOverflow */
- {
- error++;
- NDBGL1(L1_I_ERR, "%s: Data Overrun error", device_xname(sc->sc_dev));
- }
-
- if(rsta & ISACSX_RSTAD_RAB) /* ReceiveABorted */
- {
- error++;
- NDBGL1(L1_I_ERR, "%s: Receive Aborted error", device_xname(sc->sc_dev));
- }
-
- if(error == 0)
- NDBGL1(L1_I_ERR, "%s: RME unknown error, RSTAD = 0x%02x!", device_xname(sc->sc_dev), rsta);
-
- i4b_Dfreembuf(sc->sc_ibuf);
-
- c |= ISACSX_CMDRD_RMC|ISACSX_CMDRD_RRES;
-
- sc->sc_ibuf = NULL;
- sc->sc_ib = NULL;
- sc->sc_ilen = 0;
-
- ISAC_WRITE(I_CMDRD, ISACSX_CMDRD_RMC|ISACSX_CMDRD_RRES);
-
- return;
- }
-
- rest = (ISAC_READ(I_RBCLD) & (ISACSX_FIFO_LEN-1));
-
- if(rest == 0)
- rest = ISACSX_FIFO_LEN;
-
- if(sc->sc_ibuf == NULL)
- {
- if((sc->sc_ibuf = i4b_Dgetmbuf(rest)) != NULL)
- sc->sc_ib = sc->sc_ibuf->m_data;
- else
- panic("isic_isacsx_irq: RME, i4b_Dgetmbuf returns NULL!\n");
- sc->sc_ilen = 0;
- }
-
- if(sc->sc_ilen <= (MAX_DFRAME_LEN - rest))
- {
- ISAC_RDFIFO(sc->sc_ib, rest);
- /* the last byte contains status, strip it */
- sc->sc_ilen += rest - 1;
-
- sc->sc_ibuf->m_pkthdr.len =
- sc->sc_ibuf->m_len = sc->sc_ilen;
-
- if(sc->sc_trace & TRACE_D_RX)
- {
- i4b_trace_hdr hdr;
-
- memset(&hdr, 0, sizeof hdr);
- hdr.type = TRC_CH_D;
- hdr.dir = FROM_NT;
- hdr.count = ++sc->sc_trace_dcount;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, sc->sc_ibuf->m_len, sc->sc_ibuf->m_data);
- }
-
- c |= ISACSX_CMDRD_RMC;
-
- if(sc->sc_intr_valid == ISIC_INTR_VALID &&
- (((struct isdn_l3_driver*)sc->sc_l3token)->protocol != PROTOCOL_D64S))
- {
- isdn_layer2_data_ind(&sc->sc_l2, sc->sc_l3token, sc->sc_ibuf);
- }
- else
- {
- i4b_Dfreembuf(sc->sc_ibuf);
- }
- }
- else
- {
- NDBGL1(L1_I_ERR, "RME, input buffer overflow!");
- i4b_Dfreembuf(sc->sc_ibuf);
- c |= ISACSX_CMDRD_RMC|ISACSX_CMDRD_RRES;
- }
-
- sc->sc_ibuf = NULL;
- sc->sc_ib = NULL;
- sc->sc_ilen = 0;
- }
-
- if(istad & ISACSX_ISTAD_RPF) /* receive fifo full */
- {
- if(sc->sc_ibuf == NULL)
- {
- if((sc->sc_ibuf = i4b_Dgetmbuf(MAX_DFRAME_LEN)) != NULL)
- sc->sc_ib= sc->sc_ibuf->m_data;
- else
- panic("isic_isacsx_irq: RPF, i4b_Dgetmbuf returns NULL!\n");
- sc->sc_ilen = 0;
- }
-
- if(sc->sc_ilen <= (MAX_DFRAME_LEN - ISACSX_FIFO_LEN))
- {
- ISAC_RDFIFO(sc->sc_ib, ISACSX_FIFO_LEN);
- sc->sc_ilen += ISACSX_FIFO_LEN;
- sc->sc_ib += ISACSX_FIFO_LEN;
- c |= ISACSX_CMDRD_RMC;
- }
- else
- {
- NDBGL1(L1_I_ERR, "RPF, input buffer overflow!");
- i4b_Dfreembuf(sc->sc_ibuf);
- sc->sc_ibuf = NULL;
- sc->sc_ib = NULL;
- sc->sc_ilen = 0;
- c |= ISACSX_CMDRD_RMC|ISACSX_CMDRD_RRES;
- }
- }
-
- if(istad & ISACSX_ISTAD_XPR) /* transmit fifo empty (XPR bit set) */
- {
- if((sc->sc_obuf2 != NULL) && (sc->sc_obuf == NULL))
- {
- sc->sc_freeflag = sc->sc_freeflag2;
- sc->sc_obuf = sc->sc_obuf2;
- sc->sc_op = sc->sc_obuf->m_data;
- sc->sc_ol = sc->sc_obuf->m_len;
- sc->sc_obuf2 = NULL;
-#ifdef NOTDEF
- printf("ob2=%x, op=%x, ol=%d, f=%d #",
- sc->sc_obuf,
- sc->sc_op,
- sc->sc_ol,
- sc->sc_state);
-#endif
- }
- else
- {
-#ifdef NOTDEF
- printf("ob=%x, op=%x, ol=%d, f=%d #",
- sc->sc_obuf,
- sc->sc_op,
- sc->sc_ol,
- sc->sc_state);
-#endif
- }
-
- if(sc->sc_obuf)
- {
- ISAC_WRFIFO(sc->sc_op, min(sc->sc_ol, ISACSX_FIFO_LEN));
-
- if(sc->sc_ol > ISACSX_FIFO_LEN) /* length > 32 ? */
- {
- sc->sc_op += ISACSX_FIFO_LEN; /* bufferptr+32 */
- sc->sc_ol -= ISACSX_FIFO_LEN; /* length - 32 */
- c |= ISACSX_CMDRD_XTF; /* set XTF bit */
- }
- else
- {
- if(sc->sc_freeflag)
- {
- i4b_Dfreembuf(sc->sc_obuf);
- sc->sc_freeflag = 0;
- }
- sc->sc_obuf = NULL;
- sc->sc_op = NULL;
- sc->sc_ol = 0;
-
- c |= ISACSX_CMDRD_XTF | ISACSX_CMDRD_XME;
- }
- }
- else
- {
- sc->sc_state &= ~ISAC_TX_ACTIVE;
- }
- }
-
- if(ista & ISACSX_ISTA_CIC) /* channel status change CISQ */
- {
- register u_char ci;
-
- /* get command/indication rx register*/
-
- ci = ISAC_READ(I_CIR0);
-
- /* C/I code change IRQ (flag already cleared by CIR0 read) */
-
- if(ci & ISACSX_CIR0_CIC0)
- isic_isacsx_ind_hdlr(sc, (ci >> 4) & 0xf);
- }
-
- if(c)
- {
- ISAC_WRITE(I_CMDRD, c);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * ISACSX L1 Extended IRQ handler
- *---------------------------------------------------------------------------*/
-static u_char
-isic_isacsx_exir_hdlr(register struct isic_softc *sc, u_char exir)
-{
- u_char c = 0;
-
- if(exir & ISACSX_ISTAD_XMR)
- {
- NDBGL1(L1_I_ERR, "EXIRQ Tx Message Repeat");
-
- c |= ISACSX_CMDRD_XRES;
- }
-
- if(exir & ISACSX_ISTAD_XDU)
- {
- NDBGL1(L1_I_ERR, "EXIRQ Tx Data Underrun");
-
- c |= ISACSX_CMDRD_XRES;
- }
-
- if(exir & ISACSX_ISTAD_RFO)
- {
- NDBGL1(L1_I_ERR, "EXIRQ Rx Frame Overflow");
-
- c |= ISACSX_CMDRD_RMC;
- }
-
-#if 0 /* all blocked per default */
- if(exir & ISACSX_EXIR_SOV)
- {
- NDBGL1(L1_I_ERR, "EXIRQ Sync Xfer Overflow");
- }
-
- if(exir & ISACSX_EXIR_MOS)
- {
- NDBGL1(L1_I_ERR, "EXIRQ Monitor Status");
- }
-
- if(exir & ISACSX_EXIR_SAW)
- {
- /* cannot happen, STCR:TSF is set to 0 */
-
- NDBGL1(L1_I_ERR, "EXIRQ Subscriber Awake");
- }
-
- if(exir & ISACSX_EXIR_WOV)
- {
- /* cannot happen, STCR:TSF is set to 0 */
-
- NDBGL1(L1_I_ERR, "EXIRQ Watchdog Timer Overflow");
- }
-#endif
-
- return(c);
-}
-
-/*---------------------------------------------------------------------------*
- * ISACSX L1 Indication handler
- *---------------------------------------------------------------------------*/
-static void
-isic_isacsx_ind_hdlr(register struct isic_softc *sc, int ind)
-{
- register int event;
-
- switch(ind)
- {
- case ISACSX_CIR0_IAI8:
- NDBGL1(L1_I_CICO, "rx AI8 in state %s", isic_printstate(sc));
- if(sc->sc_bustyp == BUS_TYPE_IOM2)
- isic_isacsx_l1_cmd(sc, CMD_AR8);
- event = EV_INFO48;
- isdn_layer2_status_ind(&sc->sc_l2, sc->sc_l3token, STI_L1STAT, LAYER_ACTIVE);
- break;
-
- case ISACSX_CIR0_IAI10:
- NDBGL1(L1_I_CICO, "rx AI10 in state %s", isic_printstate(sc));
- if(sc->sc_bustyp == BUS_TYPE_IOM2)
- isic_isacsx_l1_cmd(sc, CMD_AR10);
- event = EV_INFO410;
- isdn_layer2_status_ind(&sc->sc_l2, sc->sc_l3token, STI_L1STAT, LAYER_ACTIVE);
- break;
-
- case ISACSX_CIR0_IRSY:
- NDBGL1(L1_I_CICO, "rx RSY in state %s", isic_printstate(sc));
- event = EV_RSY;
- break;
-
- case ISACSX_CIR0_IPU:
- NDBGL1(L1_I_CICO, "rx PU in state %s", isic_printstate(sc));
- event = EV_PU;
- break;
-
- case ISACSX_CIR0_IDR:
- NDBGL1(L1_I_CICO, "rx DR in state %s", isic_printstate(sc));
- isic_isacsx_l1_cmd(sc, CMD_DIU);
- event = EV_DR;
- break;
-
- case ISACSX_CIR0_IDID:
- NDBGL1(L1_I_CICO, "rx DID in state %s", isic_printstate(sc));
- event = EV_INFO0;
- isdn_layer2_status_ind(&sc->sc_l2, sc->sc_l3token, STI_L1STAT, LAYER_IDLE);
- break;
-
- case ISACSX_CIR0_IDIS:
- NDBGL1(L1_I_CICO, "rx DIS in state %s", isic_printstate(sc));
- event = EV_DIS;
- break;
-
- case ISACSX_CIR0_IEI:
- NDBGL1(L1_I_CICO, "rx EI in state %s", isic_printstate(sc));
- isic_isacsx_l1_cmd(sc, CMD_DIU);
- event = EV_EI;
- break;
-
- case ISACSX_CIR0_IARD:
- NDBGL1(L1_I_CICO, "rx ARD in state %s", isic_printstate(sc));
- event = EV_INFO2;
- break;
-
- case ISACSX_CIR0_ITI:
- NDBGL1(L1_I_CICO, "rx TI in state %s", isic_printstate(sc));
- event = EV_INFO0;
- break;
-
- case ISACSX_CIR0_IATI:
- NDBGL1(L1_I_CICO, "rx ATI in state %s", isic_printstate(sc));
- event = EV_INFO0;
- break;
-
- case ISACSX_CIR0_ISD:
- NDBGL1(L1_I_CICO, "rx SD in state %s", isic_printstate(sc));
- event = EV_INFO0;
- break;
-
- default:
- NDBGL1(L1_I_ERR, "UNKNOWN Indication 0x%x in state %s", ind, isic_printstate(sc));
- event = EV_INFO0;
- break;
- }
- isic_next_state(sc, event);
-}
-
-/*---------------------------------------------------------------------------*
- * execute a layer 1 command
- *---------------------------------------------------------------------------*/
-void
-isic_isacsx_l1_cmd(struct isic_softc *sc, int command)
-{
- u_char cmd;
-
-#ifdef I4B_SMP_WORKAROUND
-
- /* XXXXXXXXXXXXXXXXXXX */
-
- /*
- * patch from Wolfgang Helbig:
- *
- * Here is a patch that makes i4b work on an SMP:
- * The card (TELES 16.3) didn't interrupt on an SMP machine.
- * This is a gross workaround, but anyway it works *and* provides
- * some information as how to finally fix this problem.
- */
-
- HSCX_WRITE(0, H_MASK, 0xff);
- HSCX_WRITE(1, H_MASK, 0xff);
- ISAC_WRITE(I_MASKD, 0xff);
- ISAC_WRITE(I_MASK, 0xff);
- DELAY(100);
- HSCX_WRITE(0, H_MASK, HSCX_A_IMASK);
- HSCX_WRITE(1, H_MASK, HSCX_B_IMASK);
- ISAC_WRITE(I_MASKD, isacsx_imaskd);
- ISAC_WRITE(I_MASK, isacsx_imask);
-
- /* XXXXXXXXXXXXXXXXXXX */
-
-#endif /* I4B_SMP_WORKAROUND */
-
- if(command < 0 || command > CMD_ILL)
- {
- NDBGL1(L1_I_ERR, "illegal cmd 0x%x in state %s", command, isic_printstate(sc));
- return;
- }
-
- cmd = ISACSX_CIX0_LOW;
-
- switch(command)
- {
- case CMD_TIM:
- NDBGL1(L1_I_CICO, "tx TIM in state %s", isic_printstate(sc));
- cmd |= (ISACSX_CIX0_CTIM << 4);
- break;
-
- case CMD_RS:
- NDBGL1(L1_I_CICO, "tx RS in state %s", isic_printstate(sc));
- cmd |= (ISACSX_CIX0_CRS << 4);
- break;
-
- case CMD_AR8:
- NDBGL1(L1_I_CICO, "tx AR8 in state %s", isic_printstate(sc));
- cmd |= (ISACSX_CIX0_CAR8 << 4);
- break;
-
- case CMD_AR10:
- NDBGL1(L1_I_CICO, "tx AR10 in state %s", isic_printstate(sc));
- cmd |= (ISACSX_CIX0_CAR10 << 4);
- break;
-
- case CMD_DIU:
- NDBGL1(L1_I_CICO, "tx DIU in state %s", isic_printstate(sc));
- cmd |= (ISACSX_CIX0_CDIU << 4);
- break;
- }
- ISAC_WRITE(I_CIX0, cmd);
-}
-
-/*---------------------------------------------------------------------------*
- * L1 ISACSX initialization
- *---------------------------------------------------------------------------*/
-int
-isic_isacsx_init(struct isic_softc *sc)
-{
- isacsx_imaskd = 0xff; /* disable all irqs */
- isacsx_imask = 0xff; /* disable all irqs */
-
- ISAC_WRITE(I_MASKD, isacsx_imaskd);
- ISAC_WRITE(I_MASK, isacsx_imask);
-
- /* the ISACSX only runs in IOM-2 mode */
- NDBGL1(L1_I_SETUP, "configuring for IOM-2 mode");
-
- /* TR_CONF0: Transceiver Configuration Register 0:
- * DIS_TR - transceiver enabled
- * EN_ICV - normal operation
- * EXLP - no external loop
- * LDD - automatic clock generation
- */
- ISAC_WRITE(I_WTR_CONF0, 0);
-
- /* TR_CONF2: Transceiver Configuration Register 1:
- * DIS_TX - transmitter enabled
- * PDS - phase deviation 2 S-bits
- * RLP - remote line loop open
- */
- ISAC_WRITE(I_WTR_CONF2, 0);
-
- /* MODED: Mode Register:
- * MDSx - transparent mode 0
- * TMD - timer mode = external
- * RAC - Receiver enabled
- * DIMx - digital i/f mode
- */
- ISAC_WRITE(I_WMODED, ISACSX_MODED_MDS2|ISACSX_MODED_MDS1|ISACSX_MODED_RAC|ISACSX_MODED_DIM0);
-
- /* enabled interrupts:
- * ===================
- * RME - receive message end
- * RPF - receive pool full
- * RPO - receive pool overflow
- * XPR - transmit pool ready
- * XMR - transmit message repeat
- * XDU - transmit data underrun
- */
-
- isacsx_imaskd = ISACSX_MASKD_LOW;
- ISAC_WRITE(I_MASKD, isacsx_imaskd);
-
- /* enabled interrupts:
- * ===================
- * ICD - HDLC interrupt from D-channel
- * CIC - C/I channel change
- */
-
- isacsx_imask = ~(ISACSX_MASK_ICD | ISACSX_MASK_CIC);
-
- ISAC_WRITE(I_MASK, isacsx_imask);
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------*
- * L1 ISACSX disable interrupts
- *---------------------------------------------------------------------------*/
-void
-isic_isacsx_disable_intr(struct isic_softc *sc)
-{
- ISAC_WRITE(I_WMODED, ISACSX_MODED_MDS2|ISACSX_MODED_MDS1|ISACSX_MODED_DIM0);
- isacsx_imaskd = 0xff; /* disable all irqs */
- isacsx_imask = 0xff; /* disable all irqs */
-
- ISAC_WRITE(I_MASKD, isacsx_imaskd);
- ISAC_WRITE(I_MASK, isacsx_imask);
-}
-
-/*---------------------------------------------------------------------------*
- * ISACSX recover - try to recover from irq lockup
- *---------------------------------------------------------------------------*/
-void
-isic_isacsx_recover(struct isic_softc *sc)
-{
- u_char byte, istad;
-
-
- /*
- * XXX
- * Leo: Unknown if this function does anything good... At least it
- * prints some stuff that might be helpful.
- */
-
- printf("%s: isic_isacsx_recover\n", device_xname(sc->sc_dev));
- /* get isac irq status */
-
- byte = ISAC_READ(I_ISTAD);
-
- NDBGL1(L1_ERROR, " ISAC: ISTAD = 0x%x", byte);
-
- if(byte & ISACSX_ISTA_ICD) {
- istad = ISAC_READ(I_ISTAD);
- NDBGL1(L1_ERROR, " ISACSX: istad = 0x%02x", istad);
- }
-
- if(byte & ISACSX_ISTA_CIC)
- {
- byte = ISAC_READ(I_CIR0);
-
- NDBGL1(L1_ERROR, " ISACSX: CIR0 = 0x%x", byte);
- }
-
- NDBGL1(L1_ERROR, " ISACSX: IMASKD/IMASK = 0x%02x/%02x", isacsx_imaskd,
- isacsx_imask);
-
- ISAC_WRITE(I_MASKD, 0xff);
- ISAC_WRITE(I_MASK, 0xff);
- DELAY(100);
- ISAC_WRITE(I_MASKD, isacsx_imaskd);
- ISAC_WRITE(I_MASK, isacsx_imask);
-}
diff --git a/sys/dev/ic/isacsx.h b/sys/dev/ic/isacsx.h
deleted file mode 100644
index f42d80581ef..00000000000
--- a/sys/dev/ic/isacsx.h
+++ /dev/null
@@ -1,595 +0,0 @@
-/* $NetBSD: isacsx.h,v 1.5 2011/08/07 20:14:42 jakllsch Exp $ */
-/*
- * Copyright (c) 2001 Gary Jennejohn. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * $FreeBSD: src/sys/i4b/layer1/ifpi2/i4b_ifpi2_isacsx.h,v 1.1.2.1 2002/04/25 20:26:50 gj Exp $
- *
- * last edit-date: [Wed Jan 24 09:10:42 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#ifndef I4B_ISACSX_H_
-#define I4B_ISACSX_H_
-
-/*
- * XXX: Leo: It is unclear to me if this is a necessity for the isacsx too...
- *
- * The ISAC databook specifies a delay of 2.5 DCL clock cycles between
- * writes to the ISAC command register CMDR. This is the delay used to
- * satisfy this requirement.
- */
-#define I4B_ISAC_CMDRWRDELAY 30
-
-#if (I4B_ISAC_CMDRWRDELAY > 0)
-#define ISACCMDRWRDELAY() DELAY(I4B_ISAC_CMDRWRDELAY)
-#else
-#warning "I4B_ISAC_CMDRWRDELAY set to 0!"
-#define ISACCMDRWRDELAY()
-#endif
-
-#define ISACSX_FIFO_LEN 32 /* 32 bytes FIFO on chip */
-
-#define ISACSX_V13 0x01
-
-/*
- * definitions of registers and bits for the ISAC-SX ISDN chip.
- */
-
-typedef struct isacsx_reg {
-
- /* 32 byte deep FIFO always first */
-
- unsigned char isacsx_fifo [ISACSX_FIFO_LEN];
-
- /* most registers can be read/written, but have different names */
- /* so define a union with read/write names to make that clear */
-
- union {
- struct {
- unsigned char isacsx_istad;
- unsigned char isacsx_stard;
- unsigned char isacsx_moded;
- unsigned char isacsx_exmd1;
- unsigned char isacsx_timr1;
- unsigned char dummy_25;
- unsigned char isacsx_rbcld;
- unsigned char isacsx_rbchd;
- unsigned char isacsx_rstad;
- unsigned char isacsx_tmd;
- unsigned char dummy_2a;
- unsigned char dummy_2b;
- unsigned char dummy_2c;
- unsigned char dummy_2d;
- unsigned char isacsx_cir0;
- unsigned char isacsx_codr1;
- unsigned char isacsx_tr_conf0;
- unsigned char isacsx_tr_conf1;
- unsigned char isacsx_tr_conf2;
- unsigned char isacsx_tr_sta;
- unsigned char dummy_34;
- unsigned char isacsx_sqrr1;
- unsigned char isacsx_sqrr2;
- unsigned char isacsx_sqrr3;
- unsigned char isacsx_istatr;
- unsigned char isacsx_masktr;
- unsigned char dummy_3a;
- unsigned char dummy_3b;
- unsigned char isacsx_acgf2;
- unsigned char dummy_3d;
- unsigned char dummy_3e;
- unsigned char dummy_3f;
- unsigned char isacsx_cda10;
- unsigned char isacsx_cda11;
- unsigned char isacsx_cda20;
- unsigned char isacsx_cda21;
- unsigned char isacsx_cda_tsdp10;
- unsigned char isacsx_cda_tsdp11;
- unsigned char isacsx_cda_tsdp20;
- unsigned char isacsx_cda_tsdp21;
- unsigned char dummy_48;
- unsigned char dummy_49;
- unsigned char dummy_4a;
- unsigned char dummy_4b;
- unsigned char isacsx_tr_tsdp_bc1;
- unsigned char isacsx_tr_tsdp_bc2;
- unsigned char isacsx_cda1_cr;
- unsigned char isacsx_cda2_cr;
- unsigned char isacsx_tr_cr;
- unsigned char dummy_51;
- unsigned char dummy_52;
- unsigned char isacsx_dci_cr;
- unsigned char isacsx_mon_cr;
- unsigned char isacsx_sds_cr;
- unsigned char dummy_56;
- unsigned char isacsx_iom_cr;
- unsigned char isacsx_sti;
- unsigned char isacsx_msti;
- unsigned char isacsx_sds_conf;
- unsigned char isacsx_mcda;
- unsigned char isacsx_mor;
- unsigned char isacsx_mosr;
- unsigned char isacsx_mocr;
- unsigned char isacsx_msta;
- unsigned char isacsx_ista;
- unsigned char isacsx_auxi;
- unsigned char isacsx_mode1;
- unsigned char isacsx_mode2;
- unsigned char isacsx_id;
- unsigned char isacsx_timr2;
- unsigned char dummy_66;
- unsigned char dummy_67;
- unsigned char dummy_68;
- unsigned char dummy_69;
- unsigned char dummy_6a;
- unsigned char dummy_6b;
- unsigned char dummy_6c;
- unsigned char dummy_6d;
- unsigned char dummy_6e;
- unsigned char dummy_6f;
- } isacsx_r;
- struct {
- unsigned char isacsx_maskd;
- unsigned char isacsx_cmdrd;
- unsigned char isacsx_moded;
- unsigned char isacsx_exmd1;
- unsigned char isacsx_timr1;
- unsigned char isacsx_sap1;
- unsigned char isacsx_sap2;
- unsigned char isacsx_tei1;
- unsigned char isacsx_tei2;
- unsigned char isacsx_tmd;
- unsigned char dummy_2a;
- unsigned char dummy_2b;
- unsigned char dummy_2c;
- unsigned char dummy_2d;
- unsigned char isacsx_cix0;
- unsigned char isacsx_codx1;
- unsigned char isacsx_tr_conf0;
- unsigned char isacsx_tr_conf1;
- unsigned char isacsx_tr_conf2;
- unsigned char dummy_33;
- unsigned char dummy_34;
- unsigned char isacsx_sqrx1;
- unsigned char dummy_36;
- unsigned char dummy_37;
- unsigned char dummy_38;
- unsigned char isacsx_masktr;
- unsigned char dummy_3a;
- unsigned char dummy_3b;
- unsigned char isacsx_acgf2;
- unsigned char dummy_3d;
- unsigned char dummy_3e;
- unsigned char dummy_3f;
- unsigned char isacsx_cda10;
- unsigned char isacsx_cda11;
- unsigned char isacsx_cda20;
- unsigned char isacsx_cda21;
- unsigned char isacsx_cda_tsdp10;
- unsigned char isacsx_cda_tsdp11;
- unsigned char isacsx_cda_tsdp20;
- unsigned char isacsx_cda_tsdp21;
- unsigned char dummy_48;
- unsigned char dummy_49;
- unsigned char dummy_4a;
- unsigned char dummy_4b;
- unsigned char isacsx_tr_tsdp_bc1;
- unsigned char isacsx_tr_tsdp_bc2;
- unsigned char isacsx_cda1_cr;
- unsigned char isacsx_cda2_cr;
- unsigned char isacsx_tr_cr;
- unsigned char dummy_51;
- unsigned char dummy_52;
- unsigned char isacsx_dci_cr;
- unsigned char isacsx_mon_cr;
- unsigned char isacsx_sds_cr;
- unsigned char dummy_56;
- unsigned char isacsx_iom_cr;
- unsigned char isacsx_asti;
- unsigned char isacsx_msti;
- unsigned char isacsx_sds_conf;
- unsigned char dummy_5b;
- unsigned char isacsx_mox;
- unsigned char dummy_5d;
- unsigned char isacsx_mocr;
- unsigned char isacsx_mconf;
- unsigned char isacsx_mask;
- unsigned char isacsx_auxm;
- unsigned char isacsx_mode1;
- unsigned char isacsx_mode2;
- unsigned char isacsx_sres;
- unsigned char isacsx_timr2;
- unsigned char dummy_66;
- unsigned char dummy_67;
- unsigned char dummy_68;
- unsigned char dummy_69;
- unsigned char dummy_6a;
- unsigned char dummy_6b;
- unsigned char dummy_6c;
- unsigned char dummy_6d;
- unsigned char dummy_6e;
- unsigned char dummy_6f;
- } isacsx_w;
- } isacsx_rw;
-} __packed isacsx_reg_t;
-
-#define REG_OFFSET(type, field) (uintptr_t)(&(((type *)0)->field))
-
-/* ISACSX read registers */
-
-#define i_istad isacsx_rw.isacsx_r.isacsx_istad
-#define I_ISTAD REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_istad)
-#define i_stard isacsx_rw.isacsx_r.isacsx_stard
-#define I_STARD REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_stard)
-#define i_rmoded isacsx_rw.isacsx_r.isacsx_moded
-#define I_RMODED REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_moded)
-#define i_rexmd1 isacsx_rw.isacsx_r.isacsx_exmd1
-#define I_REXMD1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_exmd1)
-#define i_rtimr1 isacsx_rw.isacsx_r.isacsx_timr1
-#define I_RTIMR1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_timr1)
-#define i_rbcld isacsx_rw.isacsx_r.isacsx_rbcld
-#define I_RBCLD REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_rbcld)
-#define i_rbchd isacsx_rw.isacsx_r.isacsx_rbchd
-#define I_RBCHD REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_rbchd)
-#define i_rstad isacsx_rw.isacsx_r.isacsx_rstad
-#define I_RSTAD REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_rstad)
-#define i_rtmd isacsx_rw.isacsx_r.isacsx_tmd
-#define I_RTMD REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_tmd)
-#define i_cir0 isacsx_rw.isacsx_r.isacsx_cir0
-#define I_CIR0 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cir0)
-#define i_codr1 isacsx_rw.isacsx_r.isacsx_codr1
-#define I_CODR1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_codr1)
-#define i_rtr_conf0 isacsx_rw.isacsx_r.isacsx_tr_conf0
-#define I_RTR_CONF0 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_tr_conf0)
-#define i_rtr_conf1 isacsx_rw.isacsx_r.isacsx_tr_conf1
-#define I_RTR_CONF1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_tr_conf1)
-#define i_rtr_conf2 isacsx_rw.isacsx_r.isacsx_tr_conf2
-#define I_RTR_CONF2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_tr_conf2)
-#define i_sta isacsx_rw.isacsx_r.isacsx_sta
-#define I_STA REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_sta)
-#define i_sqrr1 isacsx_rw.isacsx_r.isacsx_sqrr1
-#define I_SQRR1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_sqrr1)
-#define i_sqrr2 isacsx_rw.isacsx_r.isacsx_sqrr2
-#define I_SQRR2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_sqrr2)
-#define i_sqrr3 isacsx_rw.isacsx_r.isacsx_sqrr3
-#define I_SQRR3 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_sqrr3)
-#define i_istatr isacsx_rw.isacsx_r.isacsx_istatr
-#define I_ISTATR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_istatr)
-#define i_rmasktr isacsx_rw.isacsx_r.isacsx_masktr
-#define I_RMASKTR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_masktr)
-#define i_racgf2 isacsx_rw.isacsx_r.isacsx_acgf2
-#define I_RACGF2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_acgf2)
-#define i_rcda10 isacsx_rw.isacsx_r.isacsx_cda10
-#define I_RCDA10 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda10)
-#define i_rcda11 isacsx_rw.isacsx_r.isacsx_cda11
-#define I_RCDA11 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda11)
-#define i_rcda20 isacsx_rw.isacsx_r.isacsx_cda20
-#define I_RCDA20 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda20)
-#define i_rcda21 isacsx_rw.isacsx_r.isacsx_cda21
-#define I_RCDA21 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda21)
-#define i_cda_tsdp10 isacsx_rw.isacsx_r.isacsx_cda_tsdp10
-#define I_CDA_TSDP10 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda_tsdp10)
-#define i_cda_tsdp11 isacsx_rw.isacsx_r.isacsx_cda_tsdp11
-#define I_CDA_TSDP11 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda_tsdp11)
-#define i_cda_tsdp20 isacsx_rw.isacsx_r.isacsx_cda_tsdp20
-#define I_CDA_TSDP20 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda_tsdp20)
-#define i_cda_tsdp21 isacsx_rw.isacsx_r.isacsx_cda_tsdp21
-#define I_CDA_TSDP21 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda_tsdp21)
-#define i_tr_tsdp_bc1 isacsx_rw.isacsx_r.isacsx_tr_tsdp_bc1
-#define I_TR_TSDP_BC1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_tr_tsdp_bc1)
-#define i_tr_tsdp_bc2 isacsx_rw.isacsx_r.isacsx_tr_tsdp_bc2
-#define I_TR_TSDP_BC2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_tr_tsdp_bc2)
-#define i_cda1_cr isacsx_rw.isacsx_r.isacsx_cda1_cr
-#define I_CDA1_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda1_cr)
-#define i_cda2_cr isacsx_rw.isacsx_r.isacsx_cda2_cr
-#define I_CDA2_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda2_cr)
-#define i_tr_cr isacsx_rw.isacsx_r.isacsx_tr_cr
-#define I_TR_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_tr_cr)
-#define i_dci_cr isacsx_rw.isacsx_r.isacsx_dci_cr
-#define I_DCI_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_dci_cr)
-#define i_mon_cr isacsx_rw.isacsx_r.isacsx_mon_cr
-#define I_MON_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_mon_cr)
-#define i_sds_cr isacsx_rw.isacsx_r.isacsx_sds_cr
-#define I_SDS_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_sds_cr)
-#define i_iom_cr isacsx_rw.isacsx_r.isacsx_iom_cr
-#define I_IOM_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_iom_cr)
-#define i_sti isacsx_rw.isacsx_r.isacsx_sti
-#define I_STI REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_sti)
-#define i_msti isacsx_rw.isacsx_r.isacsx_msti
-#define I_MSTI REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_msti)
-#define i_sds_conf isacsx_rw.isacsx_r.isacsx_sds_conf
-#define I_SDS_CONF REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_sds_conf)
-#define i_mcda isacsx_rw.isacsx_r.isacsx_mcda
-#define I_MCDA REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_mcda)
-#define i_mor isacsx_rw.isacsx_r.isacsx_mor
-#define I_MOR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_mor)
-#define i_mosr isacsx_rw.isacsx_r.isacsx_mosr
-#define I_MOSR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_mosr)
-#define i_rmocr isacsx_rw.isacsx_r.isacsx_mocr
-#define I_RMOCR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_mocr)
-#define i_msta isacsx_rw.isacsx_r.isacsx_msta
-#define I_MSTA REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_msta)
-#define i_ista isacsx_rw.isacsx_r.isacsx_ista
-#define I_ISTA REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_ista)
-#define i_auxi isacsx_rw.isacsx_r.isacsx_auxi
-#define I_AUXI REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_auxi)
-#define i_rmode1 isacsx_rw.isacsx_r.isacsx_mode1
-#define I_RMODE1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_mode1)
-#define i_rmode2 isacsx_rw.isacsx_r.isacsx_mode2
-#define I_RMODE2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_mode2)
-#define i_id isacsx_rw.isacsx_r.isacsx_id
-#define I_ID REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_id)
-#define i_rtimr2 isacsx_rw.isacsx_r.isacsx_timr2
-#define I_RTIMR2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_timr2)
-
-/* ISAC write registers - isacsx_mode, isacsx_timr, isacsx_star2, isacsx_spcr, */
-/* isacsx_c1r, isacsx_c2r, isacsx_adf2 see read registers */
-
-#define i_maskd isacsx_rw.isacsx_w.isacsx_maskd
-#define I_MASKD REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_maskd)
-#define i_cmdrd isacsx_rw.isacsx_w.isacsx_cmdrd
-#define I_CMDRD REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_cmdrd)
-#define i_wmoded isacsx_rw.isacsx_w.isacsx_moded
-#define I_WMODED REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_moded)
-#define i_wexmd1 isacsx_rw.isacsx_w.isacsx_exmd1
-#define I_WEXMD1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_exmd1)
-#define i_wtimr1 isacsx_rw.isacsx_w.isacsx_timr1
-#define I_WTIMR1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_timr1)
-#define i_sap1 isacsx_rw.isacsx_w.isacsx_sap1
-#define I_SAP1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_sap1)
-#define i_sap2 isacsx_rw.isacsx_w.isacsx_sap2
-#define I_SAP2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_sap2)
-#define i_tei1 isacsx_rw.isacsx_w.isacsx_tei1
-#define i_tei2 isacsx_rw.isacsx_w.isacsx_tei2
-#define i_wtmd isacsx_rw.isacsx_w.isacsx_tmd
-#define I_WTMD REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_tmd)
-#define i_cix0 isacsx_rw.isacsx_w.isacsx_cix0
-#define I_CIX0 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_cix0)
-#define i_codx1 isacsx_rw.isacsx_w.isacsx_codx1
-#define I_CODX1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_codx1)
-#define i_wtr_conf0 isacsx_rw.isacsx_w.isacsx_tr_conf0
-#define I_WTR_CONF0 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_tr_conf0)
-#define i_wtr_conf1 isacsx_rw.isacsx_w.isacsx_tr_conf1
-#define I_WTR_CONF1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_tr_conf1)
-#define i_wtr_conf2 isacsx_rw.isacsx_w.isacsx_tr_conf2
-#define I_WTR_CONF2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_tr_conf2)
-#define i_sqrx1 isacsx_rw.isacsx_w.isacsx_sqrx1
-#define I_SQRX1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_sqrx1)
-#define i_wmasktr isacsx_rw.isacsx_w.isacsx_masktr
-#define I_WMASKTR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_masktr)
-#define i_wacgf2 isacsx_rw.isacsx_w.isacsx_acgf2
-#define I_WACGF2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_acgf2)
-#define i_wcda10 isacsx_rw.isacsx_w.isacsx_cda10
-#define I_WCDA10 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_cda10)
-#define i_wcda11 isacsx_rw.isacsx_r.isacsx_cda11
-#define I_WCDA11 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda11)
-#define i_wcda20 isacsx_rw.isacsx_r.isacsx_cda20
-#define I_WCDA20 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda20)
-#define i_wcda21 isacsx_rw.isacsx_r.isacsx_cda21
-#define I_WCDA21 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda21)
-#define i_cda_tsdp10 isacsx_rw.isacsx_r.isacsx_cda_tsdp10
-#define I_CDA_TSDP10 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda_tsdp10)
-#define i_cda_tsdp11 isacsx_rw.isacsx_r.isacsx_cda_tsdp11
-#define I_CDA_TSDP11 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda_tsdp11)
-#define i_cda_tsdp20 isacsx_rw.isacsx_r.isacsx_cda_tsdp20
-#define I_CDA_TSDP20 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda_tsdp20)
-#define i_cda_tsdp21 isacsx_rw.isacsx_r.isacsx_cda_tsdp21
-#define I_CDA_TSDP21 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda_tsdp21)
-#define i_tr_tsdp_bc1 isacsx_rw.isacsx_r.isacsx_tr_tsdp_bc1
-#define I_TR_TSDP_BC1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_tr_tsdp_bc1)
-#define i_tr_tsdp_bc2 isacsx_rw.isacsx_r.isacsx_tr_tsdp_bc2
-#define I_TR_TSDP_BC2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_tr_tsdp_bc2)
-#define i_cda1_cr isacsx_rw.isacsx_r.isacsx_cda1_cr
-#define I_CDA1_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda1_cr)
-#define i_cda2_cr isacsx_rw.isacsx_r.isacsx_cda2_cr
-#define I_CDA2_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_cda2_cr)
-#define i_tr_cr isacsx_rw.isacsx_r.isacsx_tr_cr
-#define I_TR_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_tr_cr)
-#define i_dci_cr isacsx_rw.isacsx_r.isacsx_dci_cr
-#define I_DCI_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_dci_cr)
-#define i_mon_cr isacsx_rw.isacsx_r.isacsx_mon_cr
-#define I_MON_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_mon_cr)
-#define i_sds_cr isacsx_rw.isacsx_r.isacsx_sds_cr
-#define I_SDS_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_sds_cr)
-#define i_iom_cr isacsx_rw.isacsx_r.isacsx_iom_cr
-#define I_IOM_CR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_iom_cr)
-#define i_asti isacsx_rw.isacsx_r.isacsx_asti
-#define I_ASTI REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_asti)
-#define i_msti isacsx_rw.isacsx_r.isacsx_msti
-#define I_MSTI REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_msti)
-#define i_sds_conf isacsx_rw.isacsx_r.isacsx_sds_conf
-#define I_SDS_CONF REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_r.isacsx_sds_conf)
-#define i_mox isacsx_rw.isacsx_w.isacsx_mox
-#define I_MOX REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_mox)
-#define i_wmocr isacsx_rw.isacsx_w.isacsx_mocr
-#define I_WMOCR REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_mocr)
-#define i_mconf isacsx_rw.isacsx_w.isacsx_mconf
-#define I_MCONF REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_mconf)
-#define i_mask isacsx_rw.isacsx_w.isacsx_mask
-#define I_MASK REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_mask)
-#define i_auxm isacsx_rw.isacsx_w.isacsx_auxm
-#define I_AUXM REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_auxm)
-#define i_wmode1 isacsx_rw.isacsx_w.isacsx_mode1
-#define I_WMODE1 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_mode1)
-#define i_wmode2 isacsx_rw.isacsx_w.isacsx_mode2
-#define I_WMODE2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_mode2)
-#define i_sres isacsx_rw.isacsx_w.isacsx_sres
-#define I_SRES REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_sres)
-#define i_wtimr2 isacsx_rw.isacsx_w.isacsx_timr2
-#define I_WTIMR2 REG_OFFSET(isacsx_reg_t, isacsx_rw.isacsx_w.isacsx_timr2)
-
-#define ISACSX_ISTAD_RME 0x80
-#define ISACSX_ISTAD_RPF 0x40
-#define ISACSX_ISTAD_RFO 0x20
-#define ISACSX_ISTAD_XPR 0x10
-#define ISACSX_ISTAD_XMR 0x08
-#define ISACSX_ISTAD_XDU 0x04
-
-#define ISACSX_MASKD_RME 0x80
-#define ISACSX_MASKD_RPF 0x40
-#define ISACSX_MASKD_RFO 0x20
-#define ISACSX_MASKD_XPR 0x10
-#define ISACSX_MASKD_XMR 0x08
-#define ISACSX_MASKD_XDU 0x04
-/* these must always be set */
-#define ISACSX_MASKD_LOW 0x03
-#define ISACSX_MASKD_ALL 0xff
-
-#define ISACSX_STARD_XDOV 0x80
-#define ISACSX_STARD_XFW 0x40
-#define ISACSX_STARD_RAC1 0x08
-#define ISACSX_STARD_XAC1 0x02
-
-#define ISACSX_CMDRD_RMC 0x80
-#define ISACSX_CMDRD_RRES 0x40
-#define ISACSX_CMDRD_STI 0x10
-#define ISACSX_CMDRD_XTF 0x08
-#define ISACSX_CMDRD_XME 0x02
-#define ISACSX_CMDRD_XRES 0x01
-
-#define ISACSX_MODED_MDS2 0x80
-#define ISACSX_MODED_MDS1 0x40
-#define ISACSX_MODED_MDS0 0x20
-#define ISACSX_MODED_RAC 0x08
-#define ISACSX_MODED_DIM2 0x04
-#define ISACSX_MODED_DIM1 0x02
-#define ISACSX_MODED_DIM0 0x01
-
-/* default */
-#define ISACSX_EXMD1_XFBS_32 0x00 /* XFIFO is 32 bytes */
-#define ISACSX_EXMD1_XFBS_16 0x80 /* XFIFO is 16 bytes */
-/* default */
-#define ISACSX_EXMD1_RFBS_32 0x00 /* XFIFO is 32 bytes */
-#define ISACSX_EXMD1_RFBS_16 0x20 /* XFIFO is 16 bytes */
-#define ISACSX_EXMD1_RFBS_08 0x40 /* XFIFO is 8 bytes */
-#define ISACSX_EXMD1_RFBS_04 0x60 /* XFIFO is 4 bytes */
-#define ISACSX_EXMD1_SRA 0x10
-#define ISACSX_EXMD1_XCRC 0x08
-#define ISACSX_EXMD1_RCRC 0x04
-#define ISACSX_EXMD1_ITF 0x01
-
-#define ISACSX_RSTAD_VFR 0x80
-#define ISACSX_RSTAD_RDO 0x40
-#define ISACSX_RSTAD_CRC 0x20
-#define ISACSX_RSTAD_RAB 0x10
-#define ISACSX_RSTAD_SA1 0x08
-#define ISACSX_RSTAD_SA0 0x04
-#define ISACSX_RSTAD_CR 0x02
-#define ISACSX_RSTAD_TA 0x01
-
-#define ISACSX_RSTAD_MASK 0xf0 /* the interesting bits */
-
-#define ISACSX_RBCHD_OV 0x10
-/* the other 4 bits are the high bits of the receive byte count */
-
-#define ISACSX_CIR0_CIC0 0x08
-/* CODR0 >> 4 */
-#define ISACSX_CIR0_IPU 0x07
-#define ISACSX_CIR0_IDR 0x00
-#define ISACSX_CIR0_ISD 0x02
-#define ISACSX_CIR0_IDIS 0x03
-#define ISACSX_CIR0_IEI 0x06
-#define ISACSX_CIR0_IRSY 0x04
-#define ISACSX_CIR0_IARD 0x08
-#define ISACSX_CIR0_ITI 0x0a
-#define ISACSX_CIR0_IATI 0x0b
-#define ISACSX_CIR0_IAI8 0x0c
-#define ISACSX_CIR0_IAI10 0x0d
-#define ISACSX_CIR0_IDID 0x0f
-
-#define ISACSX_IOM_CR_SPU 0x80
-#define ISACSX_IOM_CR_CI_CS 0x20
-#define ISACSX_IOM_CR_TIC_DIS 0x10
-#define ISACSX_IOM_CR_EN_BCL 0x08
-#define ISACSX_IOM_CR_CLKM 0x04
-#define ISACSX_IOM_CR_DIS_OD 0x02
-#define ISACSX_IOM_CR_DIS_IOM 0x01
-
-#define ISACSX_CI_MASK 0x0f
-
-#define ISACSX_CIX0_BAC 0x01
-/* in IOM-2 mode the low bits are always 1 */
-#define ISACSX_CIX0_LOW 0x0e
-/* C/I codes from bits 7-4 (>> 4 & 0xf) */
-/* the commands */
-#define ISACSX_CIX0_CTIM 0
-#define ISACSX_CIX0_CRS 0x01
-/* test mode only */
-#define ISACSX_CIX0_CSSSP 0x02
-/* test mode only */
-#define ISACSX_CIX0_CSSCP 0x03
-#define ISACSX_CIX0_CAR8 0x08
-#define ISACSX_CIX0_CAR10 0x09
-#define ISACSX_CIX0_CARL 0x0a
-#define ISACSX_CIX0_CDIU 0x0f
-
-/* Interrupt, General Configuration Registers */
-
-#define ISACSX_ISTA_ST 0x20
-#define ISACSX_ISTA_CIC 0x10
-#define ISACSX_ISTA_AUX 0x08
-#define ISACSX_ISTA_TRAN 0x04
-#define ISACSX_ISTA_MOS 0x02
-#define ISACSX_ISTA_ICD 0x01
-
-#define ISACSX_MASK_ST 0x20
-#define ISACSX_MASK_CIC 0x10
-#define ISACSX_MASK_AUX 0x08
-#define ISACSX_MASK_TRAN 0x04
-#define ISACSX_MASK_MOS 0x02
-#define ISACSX_MASK_ICD 0x01
-
-#define ISACSX_AUXI_EAW 0x20
-#define ISACSX_AUXI_WOV 0x10
-#define ISACSX_AUXI_TIN2 0x08
-#define ISACSX_AUXI_TIN1 0x04
-
-#define ISACSX_AUXM_EAW 0x20
-#define ISACSX_AUXM_WOV 0x10
-#define ISACSX_AUXM_TIN2 0x08
-#define ISACSX_AUXM_TIN1 0x04
-
-#define ISACSX_MODE1_WTC1 0x10
-#define ISACSX_MODE1_WTC2 0x08
-#define ISACSX_MODE1_CFS 0x04
-#define ISACSX_MODE1_RSS2 0x02
-#define ISACSX_MODE1_RSS1 0x01
-
-#define ISACSX_MODE2_INT_POL 0x08
-#define ISACSX_MODE2_PPSDX 0x01
-
-#define ISACSX_ID_MASK 0x2F /* 0x01 = Version 1.3 */
-
-
-extern unsigned char isacsx_imaskd;
-extern unsigned char isacsx_imask;
-
-#endif /* I4B_ISACSX_H_ */
diff --git a/sys/dev/ic/isic.c b/sys/dev/ic/isic.c
deleted file mode 100644
index 4ec59cd2100..00000000000
--- a/sys/dev/ic/isic.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Copyright (c) 1997, 2000 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * i4b_isic.c - global isic stuff
- * ==============================
- *
- * $Id: isic.c,v 1.25 2012/10/27 17:18:21 chs Exp $
- *
- * last edit-date: [Fri Jan 5 11:36:10 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic.c,v 1.25 2012/10/27 17:18:21 chs Exp $");
-
-#include <sys/param.h>
-#include <sys/ioccom.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <sys/callout.h>
-#include <sys/device.h>
-#include <sys/bus.h>
-
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_trace.h>
-
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-#include <netisdn/i4b_global.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/ipac.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-isdn_link_t *isic_ret_linktab(void*, int channel);
-void isic_set_link(void*, int channel, const struct isdn_l4_driver_functions *l4_driver, void *l4_driver_softc);
-void n_connect_request(struct call_desc *cd);
-void n_connect_response(struct call_desc *cd, int response, int cause);
-void n_disconnect_request(struct call_desc *cd, int cause);
-void n_alert_request(struct call_desc *cd);
-void n_mgmt_command(struct isdn_l3_driver *drv, int cmd, void *parm);
-
-const struct isdn_l3_driver_functions
-isic_l3_driver = {
- isic_ret_linktab,
- isic_set_link,
- n_connect_request,
- n_connect_response,
- n_disconnect_request,
- n_alert_request,
- NULL,
- NULL,
- n_mgmt_command
-};
-
-/*---------------------------------------------------------------------------*
- * isic - device driver interrupt routine
- *---------------------------------------------------------------------------*/
-int
-isicintr(void *arg)
-{
- struct isic_softc *sc = arg;
-
- /* could this be an interrupt for us? */
- if (sc->sc_intr_valid == ISIC_INTR_DYING)
- return 0; /* do not touch removed hardware */
-
- if(sc->sc_ipac == 0) /* HSCX/ISAC interrupt routine */
- {
- u_char was_hscx_irq = 0;
- u_char was_isac_irq = 0;
-
- register u_char hscx_irq_stat;
- register u_char isac_irq_stat;
-
- for(;;)
- {
- /* get hscx irq status from hscx b ista */
- hscx_irq_stat =
- HSCX_READ(HSCX_CH_B, H_ISTA) & ~HSCX_B_IMASK;
-
- /* get isac irq status */
- isac_irq_stat = ISAC_READ(I_ISTA);
-
- /* do as long as there are pending irqs in the chips */
- if(!hscx_irq_stat && !isac_irq_stat)
- break;
-
- if(hscx_irq_stat & (HSCX_ISTA_RME | HSCX_ISTA_RPF |
- HSCX_ISTA_RSC | HSCX_ISTA_XPR |
- HSCX_ISTA_TIN | HSCX_ISTA_EXB))
- {
- isic_hscx_irq(sc, hscx_irq_stat,
- HSCX_CH_B,
- hscx_irq_stat & HSCX_ISTA_EXB);
- was_hscx_irq = 1;
- }
-
- if(hscx_irq_stat & (HSCX_ISTA_ICA | HSCX_ISTA_EXA))
- {
- isic_hscx_irq(sc,
- HSCX_READ(HSCX_CH_A, H_ISTA) & ~HSCX_A_IMASK,
- HSCX_CH_A,
- hscx_irq_stat & HSCX_ISTA_EXA);
- was_hscx_irq = 1;
- }
-
- if(isac_irq_stat)
- {
- /* isac handler */
- isic_isac_irq(sc, isac_irq_stat);
- was_isac_irq = 1;
- }
- }
-
- HSCX_WRITE(0, H_MASK, 0xff);
- ISAC_WRITE(I_MASK, 0xff);
- HSCX_WRITE(1, H_MASK, 0xff);
-
- if (sc->clearirq)
- {
- DELAY(80);
- sc->clearirq(sc);
- } else
- DELAY(100);
-
- HSCX_WRITE(0, H_MASK, HSCX_A_IMASK);
- ISAC_WRITE(I_MASK, ISAC_IMASK);
- HSCX_WRITE(1, H_MASK, HSCX_B_IMASK);
-
- return(was_hscx_irq || was_isac_irq);
- }
- else /* IPAC interrupt routine */
- {
- register u_char ipac_irq_stat;
- register u_char was_ipac_irq = 0;
-
- for(;;)
- {
- /* get global irq status */
-
- ipac_irq_stat = (IPAC_READ(IPAC_ISTA)) & 0x3f;
-
- /* check hscx a */
-
- if(ipac_irq_stat & (IPAC_ISTA_ICA | IPAC_ISTA_EXA))
- {
- /* HSCX A interrupt */
- isic_hscx_irq(sc, HSCX_READ(HSCX_CH_A, H_ISTA),
- HSCX_CH_A,
- ipac_irq_stat & IPAC_ISTA_EXA);
- was_ipac_irq = 1;
- }
- if(ipac_irq_stat & (IPAC_ISTA_ICB | IPAC_ISTA_EXB))
- {
- /* HSCX B interrupt */
- isic_hscx_irq(sc, HSCX_READ(HSCX_CH_B, H_ISTA),
- HSCX_CH_B,
- ipac_irq_stat & IPAC_ISTA_EXB);
- was_ipac_irq = 1;
- }
- if(ipac_irq_stat & IPAC_ISTA_ICD)
- {
- /* ISAC interrupt, Obey ISAC-IPAC differences */
- u_int8_t isac_ista = ISAC_READ(I_ISTA);
- if (isac_ista & 0xfe)
- isic_isac_irq(sc, isac_ista & 0xfe);
- if (isac_ista & 0x01) /* unexpected */
- aprint_error_dev(sc->sc_dev, "unexpected ipac timer2 irq\n");
- was_ipac_irq = 1;
- }
- if(ipac_irq_stat & IPAC_ISTA_EXD)
- {
- /* ISAC EXI interrupt */
- isic_isac_irq(sc, ISAC_ISTA_EXI);
- was_ipac_irq = 1;
- }
-
- /* do as long as there are pending irqs in the chip */
- if(!ipac_irq_stat)
- break;
- }
-
-#if 0
- /*
- * This seems not to be necessary on IPACs - no idea why
- * it is here - but due to limit range of test cards, leave
- * it in for now, in case we have to resurrect it.
- */
- IPAC_WRITE(IPAC_MASK, 0xff);
- DELAY(50);
- IPAC_WRITE(IPAC_MASK, 0xc0);
-#endif
-
- return(was_ipac_irq);
- }
-}
-
-int
-isic_attach_bri(struct isic_softc *sc, const char *cardname, const struct isdn_layer1_isdnif_driver *dchan_driver)
-{
- struct isdn_l3_driver * drv;
-
- drv = isdn_attach_isdnif(device_xname(sc->sc_dev), cardname,
- &sc->sc_l2, &isic_l3_driver, NBCH_BRI);
- sc->sc_l3token = drv;
- sc->sc_l2.driver = dchan_driver;
- sc->sc_l2.l1_token = sc;
- sc->sc_l2.drv = drv;
- isdn_layer2_status_ind(&sc->sc_l2, drv, STI_ATTACH, 1);
- isdn_isdnif_ready(drv->isdnif);
- return 1;
-}
-
-int
-isic_detach_bri(struct isic_softc *sc)
-{
- isdn_layer2_status_ind(&sc->sc_l2, sc->sc_l3token, STI_ATTACH, 0);
- isdn_detach_isdnif(sc->sc_l3token);
- sc->sc_l3token = NULL;
- return 1;
-}
diff --git a/sys/dev/ic/isic_bchan.c b/sys/dev/ic/isic_bchan.c
deleted file mode 100644
index b9c90fbe6a6..00000000000
--- a/sys/dev/ic/isic_bchan.c
+++ /dev/null
@@ -1,424 +0,0 @@
-/*
- * Copyright (c) 1997, 2000 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * i4b_bchan.c - B channel handling L1 procedures
- * ----------------------------------------------
- *
- * $Id: isic_bchan.c,v 1.15 2012/10/27 17:18:21 chs Exp $
- *
- * last edit-date: [Fri Jan 5 11:36:11 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_bchan.c,v 1.15 2012/10/27 17:18:21 chs Exp $");
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#ifndef __bsdi__
-#include <sys/bus.h>
-#endif
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_trace.h>
-
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-#include <netisdn/i4b_global.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-static void isic_bchannel_start(isdn_layer1token, int h_chan);
-static void isic_bchannel_stat(isdn_layer1token, int h_chan, bchan_statistics_t *bsp);
-
-void isic_set_link(void*, int channel, const struct isdn_l4_driver_functions *l4_driver, void *l4_driver_softc);
-isdn_link_t *isic_ret_linktab(void*, int channel);
-
-/*---------------------------------------------------------------------------*
- * initialize one B channels rx/tx data structures and init/deinit HSCX
- *---------------------------------------------------------------------------*/
-void
-isic_bchannel_setup(isdn_layer1token t, int h_chan, int bprot, int activate)
-{
- struct isic_softc *sc = (struct isic_softc*)t;
- l1_bchan_state_t *chan = &sc->sc_chan[h_chan];
-
- int s = splnet();
-
- if(activate == 0)
- {
- /* deactivation */
- isic_hscx_init(sc, h_chan, activate);
- }
-
- NDBGL1(L1_BCHAN, "%s, channel=%d, %s",
- device_xname(sc->sc_dev), h_chan, activate ? "activate" : "deactivate");
-
- /* general part */
-
- chan->channel = h_chan; /* B channel */
- chan->bprot = bprot; /* B channel protocol */
- chan->state = HSCX_IDLE; /* B channel state */
-
- /* receiver part */
-
- i4b_Bcleanifq(&chan->rx_queue); /* clean rx queue */
-
- chan->rx_queue.ifq_maxlen = IFQ_MAXLEN;
-
- chan->rxcount = 0; /* reset rx counter */
-
- i4b_Bfreembuf(chan->in_mbuf); /* clean rx mbuf */
-
- chan->in_mbuf = NULL; /* reset mbuf ptr */
- chan->in_cbptr = NULL; /* reset mbuf curr ptr */
- chan->in_len = 0; /* reset mbuf data len */
-
- /* transmitter part */
-
- i4b_Bcleanifq(&chan->tx_queue); /* clean tx queue */
-
- chan->tx_queue.ifq_maxlen = IFQ_MAXLEN;
-
- chan->txcount = 0; /* reset tx counter */
-
- i4b_Bfreembuf(chan->out_mbuf_head); /* clean tx mbuf */
-
- chan->out_mbuf_head = NULL; /* reset head mbuf ptr */
- chan->out_mbuf_cur = NULL; /* reset current mbuf ptr */
- chan->out_mbuf_cur_ptr = NULL; /* reset current mbuf data ptr */
- chan->out_mbuf_cur_len = 0; /* reset current mbuf data cnt */
-
- if(activate != 0)
- {
- /* activation */
- isic_hscx_init(sc, h_chan, activate);
- }
-
- splx(s);
-}
-
-/*---------------------------------------------------------------------------*
- * start transmission on a b channel
- *---------------------------------------------------------------------------*/
-static void
-isic_bchannel_start(isdn_layer1token t, int h_chan)
-{
- struct isic_softc *sc = (struct isic_softc*)t;
-
- register l1_bchan_state_t *chan = &sc->sc_chan[h_chan];
- register int next_len;
- register int len;
-
- int s;
- int activity = -1;
- int cmd = 0;
-
- s = splnet(); /* enter critical section */
- if(chan->state & HSCX_TX_ACTIVE) /* already running ? */
- {
- splx(s);
- return; /* yes, leave */
- }
-
- /* get next mbuf from queue */
-
- IF_DEQUEUE(&chan->tx_queue, chan->out_mbuf_head);
-
- if(chan->out_mbuf_head == NULL) /* queue empty ? */
- {
- splx(s); /* leave critical section */
- return; /* yes, exit */
- }
-
- /* init current mbuf values */
-
- chan->out_mbuf_cur = chan->out_mbuf_head;
- chan->out_mbuf_cur_len = chan->out_mbuf_cur->m_len;
- chan->out_mbuf_cur_ptr = chan->out_mbuf_cur->m_data;
-
- /* activity indicator for timeout handling */
-
- if(chan->bprot == BPROT_NONE)
- {
- if(!(isdn_bchan_silence(chan->out_mbuf_cur->m_data,
- chan->out_mbuf_cur->m_len)))
- activity = ACT_TX;
- }
- else
- {
- activity = ACT_TX;
- }
-
- chan->state |= HSCX_TX_ACTIVE; /* we start transmitting */
-
- if(sc->sc_trace & TRACE_B_TX) /* if trace, send mbuf to trace dev */
- {
- i4b_trace_hdr hdr;
- hdr.type = (h_chan == HSCX_CH_A ? TRC_CH_B1 : TRC_CH_B2);
- hdr.dir = FROM_TE;
- hdr.count = ++sc->sc_trace_bcount;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr,
- chan->out_mbuf_cur->m_len, chan->out_mbuf_cur->m_data);
- }
-
- len = 0; /* # of chars put into HSCX tx fifo this time */
-
- /*
- * fill the HSCX tx fifo with data from the current mbuf. if
- * current mbuf holds less data than HSCX fifo length, try to
- * get the next mbuf from (a possible) mbuf chain. if there is
- * not enough data in a single mbuf or in a chain, then this
- * is the last mbuf and we tell the HSCX that it has to send
- * CRC and closing flag
- */
-
- while((len < sc->sc_bfifolen) && chan->out_mbuf_cur)
- {
- /*
- * put as much data into the HSCX fifo as is
- * available from the current mbuf
- */
-
- if((len + chan->out_mbuf_cur_len) >= sc->sc_bfifolen)
- next_len = sc->sc_bfifolen - len;
- else
- next_len = chan->out_mbuf_cur_len;
-
-#ifdef NOTDEF
- printf("b:mh=%x, mc=%x, mcp=%x, mcl=%d l=%d nl=%d # ",
- chan->out_mbuf_head,
- chan->out_mbuf_cur,
- chan->out_mbuf_cur_ptr,
- chan->out_mbuf_cur_len,
- len,
- next_len);
-#endif
-
- /* wait for tx fifo write enabled */
-
- isic_hscx_waitxfw(sc, h_chan);
-
- /* write what we have from current mbuf to HSCX fifo */
-
- HSCX_WRFIFO(h_chan, chan->out_mbuf_cur_ptr, next_len);
-
- len += next_len; /* update # of bytes written */
- chan->txcount += next_len; /* statistics */
- chan->out_mbuf_cur_ptr += next_len; /* data ptr */
- chan->out_mbuf_cur_len -= next_len; /* data len */
-
- /*
- * in case the current mbuf (of a possible chain) data
- * has been put into the fifo, check if there is a next
- * mbuf in the chain. If there is one, get ptr to it
- * and update the data ptr and the length
- */
-
- if((chan->out_mbuf_cur_len <= 0) &&
- ((chan->out_mbuf_cur = chan->out_mbuf_cur->m_next) != NULL))
- {
- chan->out_mbuf_cur_ptr = chan->out_mbuf_cur->m_data;
- chan->out_mbuf_cur_len = chan->out_mbuf_cur->m_len;
-
- if(sc->sc_trace & TRACE_B_TX)
- {
- i4b_trace_hdr hdr;
- hdr.type = (h_chan == HSCX_CH_A ?
- TRC_CH_B1 : TRC_CH_B2);
- hdr.dir = FROM_TE;
- hdr.count = ++sc->sc_trace_bcount;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token,
- &hdr,
- chan->out_mbuf_cur->m_len,
- chan->out_mbuf_cur->m_data);
- }
- }
- }
-
- /*
- * if there is either still data in the current mbuf and/or
- * there is a successor on the chain available issue just
- * a XTF (transmit) command to HSCX. if ther is no more
- * data available from the current mbuf (-chain), issue
- * an XTF and an XME (message end) command which will then
- * send the CRC and the closing HDLC flag sequence
- */
-
- if(chan->out_mbuf_cur && (chan->out_mbuf_cur_len > 0))
- {
- /*
- * more data available, send current fifo out.
- * next xfer to HSCX tx fifo is done in the
- * HSCX interrupt routine.
- */
-
- cmd |= HSCX_CMDR_XTF;
- }
- else
- {
- /* end of mbuf chain */
-
- if(chan->bprot == BPROT_NONE)
- cmd |= HSCX_CMDR_XTF;
- else
- cmd |= HSCX_CMDR_XTF | HSCX_CMDR_XME;
-
- i4b_Bfreembuf(chan->out_mbuf_head); /* free mbuf chain */
-
- chan->out_mbuf_head = NULL;
- chan->out_mbuf_cur = NULL;
- chan->out_mbuf_cur_ptr = NULL;
- chan->out_mbuf_cur_len = 0;
- }
-
- /* call timeout handling routine */
-
- if(activity == ACT_RX || activity == ACT_TX)
- (*chan->l4_driver->bch_activity)(
- chan->l4_driver_softc, activity);
-
- if(cmd)
- isic_hscx_cmd(sc, h_chan, cmd);
-
- splx(s);
-}
-
-/*---------------------------------------------------------------------------*
- * fill statistics struct
- *---------------------------------------------------------------------------*/
-static void
-isic_bchannel_stat(isdn_layer1token t, int h_chan, bchan_statistics_t *bsp)
-{
- struct isic_softc *sc = (struct isic_softc*)t;
- l1_bchan_state_t *chan = &sc->sc_chan[h_chan];
- int s;
-
- s = splnet();
-
- bsp->outbytes = chan->txcount;
- bsp->inbytes = chan->rxcount;
-
- chan->txcount = 0;
- chan->rxcount = 0;
-
- splx(s);
-}
-
-/*---------------------------------------------------------------------------*
- * return the address of isic drivers linktab
- *---------------------------------------------------------------------------*/
-isdn_link_t *
-isic_ret_linktab(void *token, int channel)
-{
- struct l2_softc *l2sc = token;
- struct isic_softc *sc = l2sc->l1_token;
- l1_bchan_state_t *chan = &sc->sc_chan[channel];
-
- return(&chan->isdn_linktab);
-}
-
-/*---------------------------------------------------------------------------*
- * set the driver linktab in the b channel softc
- *---------------------------------------------------------------------------*/
-void
-isic_set_link(void *token, int channel, const struct isdn_l4_driver_functions *l4_driver, void *l4_driver_softc)
-{
- struct l2_softc *l2sc = token;
- struct isic_softc *sc = l2sc->l1_token;
- l1_bchan_state_t *chan = &sc->sc_chan[channel];
-
- chan->l4_driver = l4_driver;
- chan->l4_driver_softc = l4_driver_softc;
-}
-
-static const struct isdn_l4_bchannel_functions
-isic_l4_bchannel_functions = {
- isic_bchannel_setup,
- isic_bchannel_start,
- isic_bchannel_stat
-};
-
-/*---------------------------------------------------------------------------*
- * initialize our local linktab
- *---------------------------------------------------------------------------*/
-void
-isic_init_linktab(struct isic_softc *sc)
-{
- l1_bchan_state_t *chan = &sc->sc_chan[HSCX_CH_A];
- isdn_link_t *lt = &chan->isdn_linktab;
-
- /* local setup */
- lt->l1token = sc;
- lt->channel = HSCX_CH_A;
- lt->bchannel_driver = &isic_l4_bchannel_functions;
- lt->tx_queue = &chan->tx_queue;
-
- /* used by non-HDLC data transfers, i.e. telephony drivers */
- lt->rx_queue = &chan->rx_queue;
-
- /* used by HDLC data transfers, i.e. ipr and isp drivers */
- lt->rx_mbuf = &chan->in_mbuf;
-
- chan = &sc->sc_chan[HSCX_CH_B];
- lt = &chan->isdn_linktab;
-
- lt->l1token = sc;
- lt->channel = HSCX_CH_B;
- lt->bchannel_driver = &isic_l4_bchannel_functions;
- lt->tx_queue = &chan->tx_queue;
-
- /* used by non-HDLC data transfers, i.e. telephony drivers */
- lt->rx_queue = &chan->rx_queue;
-
- /* used by HDLC data transfers, i.e. ipr and isp drivers */
- lt->rx_mbuf = &chan->in_mbuf;
-}
diff --git a/sys/dev/ic/isic_l1.c b/sys/dev/ic/isic_l1.c
deleted file mode 100644
index 0168324a993..00000000000
--- a/sys/dev/ic/isic_l1.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/* $NetBSD: isic_l1.c,v 1.19 2012/10/27 17:18:21 chs Exp $ */
-
-/*
- * Copyright (c) 1997, 2000 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_l1.c,v 1.19 2012/10/27 17:18:21 chs Exp $");
-
-#include <sys/param.h>
-#include <sys/ioctl.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#include <sys/bus.h>
-#include <sys/device.h>
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#include <sys/callout.h>
-
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_trace.h>
-
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-#include <netisdn/i4b_global.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/ipac.h>
-#include <dev/ic/hscx.h>
-
-#include "nisac.h"
-#include "nisacsx.h"
-
-unsigned int i4b_l1_debug = L1_DEBUG_DEFAULT;
-
-static int isic_std_ph_data_req(isdn_layer1token, struct mbuf *, int);
-static int isic_std_ph_activate_req(isdn_layer1token);
-static int isic_std_mph_command_req(isdn_layer1token, int, void*);
-static void isic_enable_intr(struct isic_softc *sc, int enable);
-
-const struct isdn_layer1_isdnif_driver isic_std_driver = {
- isic_std_ph_data_req,
- isic_std_ph_activate_req,
- isic_std_mph_command_req
-};
-
-/* from i4btrc driver i4b_trace.c */
-extern int get_trace_data_from_l1(int unit, int what, int len, char *buf);
-
-/*---------------------------------------------------------------------------*
- *
- * L2 -> L1: PH-DATA-REQUEST
- * =========================
- *
- * parms:
- * token softc of physical driver
- * m mbuf containing L2 frame to be sent out
- * freeflag MBUF_FREE: free mbuf here after having sent
- * it out
- * MBUF_DONTFREE: mbuf is freed by Layer 2
- * returns:
- * ==0 fail, nothing sent out
- * !=0 ok, frame sent out
- *
- *---------------------------------------------------------------------------*/
-static int
-isic_std_ph_data_req(isdn_layer1token token, struct mbuf *m, int freeflag)
-{
- struct isic_softc *sc = (struct isic_softc*)token;
- u_char cmd;
- int s;
-
- if (m == NULL) /* failsafe */
- return (0);
-
- s = splnet();
-
- if(sc->sc_I430state == ST_F3) /* layer 1 not running ? */
- {
- NDBGL1(L1_I_ERR, "still in state F3!");
- isic_std_ph_activate_req(token);
- }
-
- if(sc->sc_state & ISAC_TX_ACTIVE)
- {
- if(sc->sc_obuf2 == NULL)
- {
- sc->sc_obuf2 = m; /* save mbuf ptr */
-
- if(freeflag)
- sc->sc_freeflag2 = 1; /* IRQ must mfree */
- else
- sc->sc_freeflag2 = 0; /* IRQ must not mfree */
-
- NDBGL1(L1_I_MSG, "using 2nd ISAC TX buffer, state = %s", isic_printstate(sc));
-
- if(sc->sc_trace & TRACE_D_TX)
- {
- i4b_trace_hdr hdr;
- hdr.type = TRC_CH_D;
- hdr.dir = FROM_TE;
- hdr.count = ++sc->sc_trace_dcount;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, m->m_len, m->m_data);
- }
- splx(s);
- return(1);
- }
-
- NDBGL1(L1_I_ERR, "No Space in TX FIFO, state = %s", isic_printstate(sc));
-
- if(freeflag == MBUF_FREE)
- i4b_Dfreembuf(m);
-
- splx(s);
- return (0);
- }
-
- if(sc->sc_trace & TRACE_D_TX)
- {
- i4b_trace_hdr hdr;
- hdr.type = TRC_CH_D;
- hdr.dir = FROM_TE;
- hdr.count = ++sc->sc_trace_dcount;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, m->m_len, m->m_data);
- }
-
- sc->sc_state |= ISAC_TX_ACTIVE; /* set transmitter busy flag */
-
- NDBGL1(L1_I_MSG, "ISAC_TX_ACTIVE set");
-
- sc->sc_freeflag = 0; /* IRQ must NOT mfree */
-
- ISAC_WRFIFO(m->m_data, min(m->m_len, ISAC_FIFO_LEN)); /* output to TX fifo */
-
- if(m->m_len > ISAC_FIFO_LEN) /* message > 32 bytes ? */
- {
- sc->sc_obuf = m; /* save mbuf ptr */
- sc->sc_op = m->m_data + ISAC_FIFO_LEN; /* ptr for irq hdl */
- sc->sc_ol = m->m_len - ISAC_FIFO_LEN; /* length for irq hdl */
-
- if(freeflag)
- sc->sc_freeflag = 1; /* IRQ must mfree */
-
- cmd = ISAC_CMDR_XTF;
- }
- else
- {
- sc->sc_obuf = NULL;
- sc->sc_op = NULL;
- sc->sc_ol = 0;
-
- if(freeflag)
- i4b_Dfreembuf(m);
-
- cmd = ISAC_CMDR_XTF | ISAC_CMDR_XME;
- }
-
- ISAC_WRITE(I_CMDR, cmd);
- ISACCMDRWRDELAY();
-
- splx(s);
-
- return(1);
-}
-
-/*---------------------------------------------------------------------------*
- *
- * L2 -> L1: PH-ACTIVATE-REQUEST
- * =============================
- *
- * parms:
- * token softc of physical interface
- *
- * returns:
- * ==0
- * !=0
- *
- *---------------------------------------------------------------------------*/
-static int
-isic_std_ph_activate_req(isdn_layer1token token)
-{
- struct isic_softc *sc = (struct isic_softc*)token;
-
- NDBGL1(L1_PRIM, " %s ", device_xname(sc->sc_dev));
- isic_next_state(sc, EV_PHAR);
- return(0);
-}
-
-/*---------------------------------------------------------------------------*
- * command from the upper layers
- *---------------------------------------------------------------------------*/
-static int
-isic_std_mph_command_req(isdn_layer1token token, int command, void *parm)
-{
- struct isic_softc *sc = (struct isic_softc*)token;
- int s, pass_down = 0;
-
- s = splnet();
- switch(command)
- {
- case CMR_DOPEN: /* daemon running */
- NDBGL1(L1_PRIM, "%s, command = CMR_DOPEN", device_xname(sc->sc_dev));
- sc->sc_intr_valid = ISIC_INTR_VALID;
- pass_down = 1;
- break;
-
- case CMR_DCLOSE: /* daemon not running */
- NDBGL1(L1_PRIM, "%s, command = CMR_DCLOSE", device_xname(sc->sc_dev));
- sc->sc_intr_valid = ISIC_INTR_DISABLED;
- isic_enable_intr(sc, 0);
- pass_down = 1;
- break;
-
- case CMR_SETLEDS:
- pass_down = 1;
- break;
-
- case CMR_SETTRACE:
- NDBGL1(L1_PRIM, "%s, command = CMR_SETTRACE, parm = %p", device_xname(sc->sc_dev), parm);
- sc->sc_trace = (int)(unsigned long)parm;
- break;
-
- default:
- NDBGL1(L1_ERROR, "ERROR, unknown command = %d, %s, parm = %p", command, device_xname(sc->sc_dev), parm);
- break;
- }
-
- if (pass_down && sc->drv_command != NULL)
- sc->drv_command(sc, command, parm);
-
- if (command == CMR_DOPEN)
- isic_enable_intr(sc, 1);
-
- splx(s);
-
- return(0);
-}
-
-static void
-isic_enable_intr(struct isic_softc *sc, int enable)
-{
-#if NNISACSX > 0
- if (sc->sc_cardtyp == CARD_TYPEP_AVMA1PCIV2) {
- if (enable)
- isic_isacsx_init(sc);
- else isic_isacsx_disable_intr(sc);
- return;
- }
-#endif /* NNISACSX > 0 */
-
-#if NNISAC > 0
- if (enable) {
- isic_isac_init(sc);
- } else {
- /* disable receiver */
- ISAC_WRITE(I_MODE, ISAC_MODE_MDS2|ISAC_MODE_MDS1|ISAC_MODE_DIM0);
- /* mask interrupts */
- if (sc->sc_ipac) {
- IPAC_WRITE(IPAC_MASK, 0xff);
- } else {
- ISAC_WRITE(I_MASK, 0xff);
- }
- }
-#endif /* NNISAC > 0 */
-}
diff --git a/sys/dev/ic/isic_l1.h b/sys/dev/ic/isic_l1.h
deleted file mode 100644
index 84238a50f46..00000000000
--- a/sys/dev/ic/isic_l1.h
+++ /dev/null
@@ -1,371 +0,0 @@
-/* $NetBSD: isic_l1.h,v 1.21 2012/10/27 17:18:21 chs Exp $ */
-
-/*
- * Copyright (c) 1997, 2000 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- */
-
-#ifndef _ISIC_L1_H
-#define _ISIC_L1_H
-
-#include <netisdn/i4b_l3l4.h>
-
-/*---------------------------------------------------------------------------
- * kernel config file flags definition
- *---------------------------------------------------------------------------*/
-#define FLAG_TELES_S0_8 1
-#define FLAG_TELES_S0_16 2
-#define FLAG_TELES_S0_163 3
-#define FLAG_AVM_A1 4
-#define FLAG_TELES_S0_163_PnP 5
-#define FLAG_CREATIX_S0_PnP 6
-#define FLAG_USR_ISDN_TA_INT 7
-#define FLAG_DRN_NGO 8
-#define FLAG_SWS 9
-#define FLAG_AVM_A1_PCMCIA 10
-#define FLAG_DYNALINK 11
-#define FLAG_BLMASTER 12
-#define FLAG_ELSA_QS1P_ISA 13
-#define FLAG_ELSA_QS1P_PCI 14
-#define FLAG_SIEMENS_ITALK 15
-#define FLAG_ELSA_MLIMC 16
-#define FLAG_ELSA_MLMCALL 17
-#define FLAG_ITK_IX1 18
-#define FLAG_AVMA1PCI 19
-#define FLAG_ELSA_PCC16 20
-#define FLAG_AVM_PNP 21
-#define FLAG_SIEMENS_ISURF2 22
-#define FLAG_ASUSCOM_IPAC 23
-
-#define SEC_DELAY 1000000 /* one second DELAY for DELAY*/
-
-#define MAX_DFRAME_LEN 264 /* max length of a D frame */
-
-#ifndef __bsdi__
-#define min(a,b) ((a)<(b)?(a):(b))
-#endif
-
-/* We try to map as few as possible as small as possible io and/or
- memory regions. Each card defines its own interpretation of this
- mapping array. At probe time we have a fixed size array, later
- (when the card type is known) we allocate a minimal array
- dynamically. */
-
-#define ISIC_MAX_IO_MAPS 49 /* no cardtype needs more yet */
-
-/* one entry in mapping array */
-struct isic_io_map {
- bus_space_tag_t t; /* which bus-space is this? */
- bus_space_handle_t h; /* handle of mapped bus space region */
- bus_size_t offset; /* offset into region */
- bus_size_t size; /* size of region, zero if not ours
- (i.e.: don't ever unmap it!) */
-};
-
-/* this is passed around at probe time (no struct isic_softc yet) */
-struct isic_attach_args {
- int ia_flags; /* flags from config file */
- int ia_num_mappings; /* number of io mappings provided */
- struct isic_io_map ia_maps[ISIC_MAX_IO_MAPS];
-};
-
-/*---------------------------------------------------------------------------*
- * isic_Bchan: the state of one B channel
- *---------------------------------------------------------------------------*/
-typedef struct
-{
- int channel; /* which channel is this*/
-
- u_char hscx_mask; /* HSCX interrupt mask */
-
- int bprot; /* B channel protocol */
-
- int state; /* this channels state */
-#define HSCX_IDLE 0x00 /* channel idle */
-#define HSCX_TX_ACTIVE 0x01 /* tx running */
-
- /* receive data from ISDN */
-
- struct ifqueue rx_queue; /* receiver queue */
-
- int rxcount; /* rx statistics counter*/
-
- struct mbuf *in_mbuf; /* rx input buffer */
- u_char *in_cbptr; /* curr buffer pointer */
- int in_len; /* rx input buffer len */
-
- /* transmit data to ISDN */
-
- struct ifqueue tx_queue; /* transmitter queue */
-
- int txcount; /* tx statistics counter*/
-
- struct mbuf *out_mbuf_head; /* first mbuf in possible chain */
- struct mbuf *out_mbuf_cur; /* current mbuf in possbl chain */
- unsigned char *out_mbuf_cur_ptr; /* data pointer into mbuf */
- int out_mbuf_cur_len; /* remaining bytes in mbuf */
-
- /* link between b channel and driver */
-
- isdn_link_t isdn_linktab; /* b channel driver data */
- const struct isdn_l4_driver_functions
- *l4_driver; /* layer 4 driver */
- void *l4_driver_softc; /* layer 4 driver instance */
-
- /* statistics */
-
- /* RSTA */
-
- int stat_VFR; /* HSCX RSTA Valid FRame */
- int stat_RDO; /* HSCX RSTA Rx Data Overflow */
- int stat_CRC; /* HSCX RSTA CRC */
- int stat_RAB; /* HSCX RSTA Rx message ABorted */
-
- /* EXIR */
-
- int stat_XDU; /* HSCX EXIR tx data underrun */
- int stat_RFO; /* HSCX EXIR rx frame overflow */
-
-} l1_bchan_state_t;
-
-/*---------------------------------------------------------------------------*
- * isic_softc: the state of the layer 1 of the D channel
- *---------------------------------------------------------------------------*/
-struct isic_softc
-{
- device_t sc_dev;
- void *sc_l3token; /* pointer to registered L3 instance */
- struct l2_softc sc_l2; /* D-channel variables */
-
- int sc_irq; /* interrupt vector */
- int sc_intr_valid; /* set when card is detached or disable */
-#define ISIC_INTR_VALID 0 /* normal operation */
-#define ISIC_INTR_DISABLED 1 /* ISDN subsystem not opened */
-#define ISIC_INTR_DYING 2 /* card is detaching */
-
- int sc_num_mappings; /* number of io mappings provided */
- struct isic_io_map *sc_maps;
-
-#define MALLOC_MAPS(sc) \
- (sc)->sc_maps = (struct isic_io_map*)malloc(sizeof((sc)->sc_maps[0])*(sc)->sc_num_mappings, M_DEVBUF, 0)
-
- int sc_cardtyp; /* only needed for some cards */
-#define CARD_TYPEP_UNK 0 /* unknown */
-#define CARD_TYPEP_8 1 /* Teles, S0/8 */
-#define CARD_TYPEP_16 2 /* Teles, S0/16 */
-#define CARD_TYPEP_16_3 3 /* Teles, S0/16.3 */
-#define CARD_TYPEP_AVMA1 4 /* AVM A1 or AVM Fritz!Card */
-#define CARD_TYPEP_163P 5 /* Teles, S0/16.3 PnP */
-#define CARD_TYPEP_CS0P 6 /* Creatix, S0 PnP */
-#define CARD_TYPEP_USRTA 7 /* US Robotics ISDN TA internal */
-#define CARD_TYPEP_DRNNGO 8 /* Dr. Neuhaus Niccy GO@ */
-#define CARD_TYPEP_SWS 9 /* Sedlbauer Win Speed */
-#define CARD_TYPEP_DYNALINK 10 /* Dynalink IS64PH */
-#define CARD_TYPEP_BLMASTER 11 /* ISDN Blaster / ISDN Master */
-#define CARD_TYPEP_PCFRITZ 12 /* AVM PCMCIA Fritz!Card */
-#define CARD_TYPEP_ELSAQS1ISA 13 /* ELSA QuickStep 1000pro ISA */
-#define CARD_TYPEP_ELSAQS1PCI 14 /* ELSA QuickStep 1000pro PCI */
-#define CARD_TYPEP_SIEMENSITALK 15 /* Siemens I-Talk */
-#define CARD_TYPEP_ELSAMLIMC 16 /* ELSA MicroLink ISDN/MC */
-#define CARD_TYPEP_ELSAMLMCALL 17 /* ELSA MicroLink MCall */
-#define CARD_TYPEP_ITKIX1 18 /* ITK ix1 micro */
-#define CARD_TYPEP_AVMA1PCI 19 /* AVM FRITZ!CARD PCI */
-#define CARD_TYPEP_PCC16 20 /* ELSA PCC-16 */
-#define CARD_TYPEP_AVM_PNP 21 /* AVM FRITZ!CARD PnP */
-#define CARD_TYPEP_SIE_ISURF2 22 /* Siemens I-Surf 2 PnP */
-#define CARD_TYPEP_ASUSCOMIPAC 23 /* Asuscom ISDNlink 128 K PnP */
-#define CARD_TYPEP_AVMA1PCIV2 24 /* AVM FRITZ!CARD V2 PCI */
-
- int sc_bustyp; /* IOM1 or IOM2 */
-#define BUS_TYPE_IOM1 0x01
-#define BUS_TYPE_IOM2 0x02
-
- int sc_trace; /* output protocol data for tracing */
- unsigned int sc_trace_dcount;/* d channel trace frame counter */
- unsigned int sc_trace_bcount;/* b channel trace frame counter */
-
- int sc_state; /* ISAC state flag */
-#define ISAC_IDLE 0x00 /* state = idle */
-#define ISAC_TX_ACTIVE 0x01 /* state = transmitter active */
-
- int sc_init_tries; /* no of out tries to access S0 */
- int sc_maddr; /* some stupid ISA cards need this */
-
- u_char sc_isac_mask; /* ISAC IRQ mask */
-#define ISAC_IMASK (sc->sc_isac_mask)
-
- l1_bchan_state_t sc_chan[2]; /* B-channel state */
-#define HSCX_A_BASE (sc->sc_chan[0].hscx)
-#define HSCX_A_IMASK (sc->sc_chan[0].hscx_mask)
-#define HSCX_B_BASE (sc->sc_chan[1].hscx)
-#define HSCX_B_IMASK (sc->sc_chan[1].hscx_mask)
-
- struct mbuf *sc_ibuf; /* input buffer mgmt */
- u_short sc_ilen;
- u_char *sc_ib;
- /* this is for the irq TX routine */
- struct mbuf *sc_obuf; /* pointer to an mbuf with TX frame */
- u_char *sc_op; /* ptr to next chunk of frame to tx */
- int sc_ol; /* length of remaining frame to tx */
- int sc_freeflag; /* m_freem mbuf if set */
-
- struct mbuf *sc_obuf2; /* pointer to an mbuf with TX frame */
- int sc_freeflag2; /* m_freem mbuf if set */
-
- int sc_isac_version; /* version number of ISAC */
- int sc_hscx_version; /* version number of HSCX */
- int sc_ipac_version; /* version number of IPAC */
-
- int sc_I430state; /* I.430 state F3 .... F8 */
-
- int sc_I430T3; /* I.430 Timer T3 running */
- struct callout sc_T3_callout;
-
- int sc_I430T4; /* Timer T4 running */
- struct callout sc_T4_callout;
-
- int sc_driver_specific; /* used for LED values */
- struct callout sc_driver_callout; /* used for LED timer */
-
- /*
- * byte fields for the AVM Fritz!Card PCI. These are packed into
- * a u_int in the driver.
- */
- u_char avma1pp_cmd;
- u_char avma1pp_txl;
- u_char avma1pp_prot;
-
- int sc_ipac; /* flag, running on ipac */
- int sc_bfifolen; /* length of b channel fifos */
-
-#define ISIC_WHAT_ISAC 0
-#define ISIC_WHAT_HSCXA 1
-#define ISIC_WHAT_HSCXB 2
-#define ISIC_WHAT_IPAC 3
-
- u_int8_t (*readreg)(struct isic_softc *, int, bus_size_t);
- void (*writereg)(struct isic_softc *, int, bus_size_t, u_int8_t);
- void (*readfifo)(struct isic_softc *, int, void *, size_t);
- void (*writefifo)(struct isic_softc *, int what,
- const void *, size_t);
- void (*clearirq)(struct isic_softc *);
-
- void (*drv_command)(struct isic_softc *, int, void *);
-
-#define ISAC_READ(r) (*sc->readreg)(sc, ISIC_WHAT_ISAC, (r))
-#define ISAC_WRITE(r,v) (*sc->writereg)(sc, ISIC_WHAT_ISAC, (r), (v))
-#define ISAC_RDFIFO(b,s) (*sc->readfifo)(sc, ISIC_WHAT_ISAC, (b), (s))
-#define ISAC_WRFIFO(b,s) (*sc->writefifo)(sc, ISIC_WHAT_ISAC, (b), (s))
-
-#define HSCX_READ(n,r) (*sc->readreg)(sc, ISIC_WHAT_HSCXA+(n), (r))
-#define HSCX_WRITE(n,r,v) (*sc->writereg)(sc, ISIC_WHAT_HSCXA+(n), (r), (v))
-#define HSCX_RDFIFO(n,b,s) (*sc->readfifo)(sc, ISIC_WHAT_HSCXA+(n), (b), (s))
-#define HSCX_WRFIFO(n,b,s) (*sc->writefifo)(sc, ISIC_WHAT_HSCXA+(n), (b), (s))
-
-#define IPAC_READ(r) (*sc->readreg)(sc, ISIC_WHAT_IPAC, (r))
-#define IPAC_WRITE(r, v) (*sc->writereg)(sc, ISIC_WHAT_IPAC, (r), (v))
-
-};
-
-/*---------------------------------------------------------------------------*
- * possible I.430/ISAC states
- *---------------------------------------------------------------------------*/
-enum I430states {
- ST_F3, /* F3 Deactivated */
- ST_F4, /* F4 Awaiting Signal */
- ST_F5, /* F5 Identifying Input */
- ST_F6, /* F6 Synchronized */
- ST_F7, /* F7 Activated */
- ST_F8, /* F8 Lost Framing */
- ST_ILL, /* Illegal State */
- N_STATES
-};
-
-/*---------------------------------------------------------------------------*
- * possible I.430/ISAC events
- *---------------------------------------------------------------------------*/
-enum I430events {
- EV_PHAR, /* PH ACTIVATE REQUEST */
- EV_T3, /* Timer 3 expired */
- EV_INFO0, /* receiving INFO0 */
- EV_RSY, /* receiving any signal */
- EV_INFO2, /* receiving INFO2 */
- EV_INFO48, /* receiving INFO4 pri 8/9 */
- EV_INFO410, /* receiving INFO4 pri 10/11 */
- EV_DR, /* Deactivate Request */
- EV_PU, /* Power UP */
- EV_DIS, /* Disconnected (only 2085) */
- EV_EI, /* Error Indication */
- EV_ILL, /* Illegal Event */
- N_EVENTS
-};
-
-enum I430commands {
- CMD_TIM, /* Timing */
- CMD_RS, /* Reset */
- CMD_AR8, /* Activation request pri 8 */
- CMD_AR10, /* Activation request pri 10 */
- CMD_DIU, /* Deactivate Indication Upstream */
- CMD_ILL /* Illegal command */
-};
-
-#define N_COMMANDS CMD_ILL
-
-extern void isic_recover(struct isic_softc *);
-extern int isicintr(void *);
-extern int isicprobe(struct isic_attach_args *);
-extern int isic_attach_avma1(struct isic_softc *);
-extern int isic_attach_s016(struct isic_softc *);
-extern int isic_attach_s0163(struct isic_softc *);
-extern int isic_attach_s08(struct isic_softc *);
-extern int isic_attach_usrtai(struct isic_softc *);
-extern int isic_attach_itkix1(struct isic_softc *);
-extern void isic_bchannel_setup(void *, int, int, int);
-extern void isic_hscx_init(struct isic_softc *, int, int);
-extern void isic_hscx_irq(struct isic_softc *, u_char ista, int, u_char);
-extern void isic_hscx_cmd( struct isic_softc *, int, unsigned char);
-extern void isic_hscx_waitxfw( struct isic_softc *, int);
-extern void isic_init_linktab(struct isic_softc *);
-extern int isic_isac_init(struct isic_softc *);
-extern void isic_isac_irq(struct isic_softc *, int);
-extern void isic_isac_l1_cmd(struct isic_softc *, int);
-extern void isic_next_state(struct isic_softc *, int);
-extern const char * isic_printstate(struct isic_softc *);
-extern int isic_probe_avma1(struct isic_attach_args *);
-extern int isic_probe_s016(struct isic_attach_args *);
-extern int isic_probe_s0163(struct isic_attach_args *);
-extern int isic_probe_s08(struct isic_attach_args *ia);
-extern int isic_probe_usrtai(struct isic_attach_args *ia);
-extern int isic_probe_itkix1(struct isic_attach_args *ia);
-extern int isic_attach_bri(struct isic_softc *sc, const char *cardname, const struct isdn_layer1_isdnif_driver *dchan_driver);
-extern int isic_detach_bri(struct isic_softc *sc);
-
-extern void isic_isacsx_disable_intr(struct isic_softc *sc);
-extern void isic_isacsx_recover(struct isic_softc *sc);
-extern void isic_isacsx_irq(struct isic_softc *sc, int r);
-extern void isic_isacsx_l1_cmd(struct isic_softc *sc, int command);
-extern int isic_isacsx_init(struct isic_softc *sc);
-
-#endif /* !_ISIC_L1_H */
-
diff --git a/sys/dev/ic/isic_l1fsm.c b/sys/dev/ic/isic_l1fsm.c
deleted file mode 100644
index 063742d57f8..00000000000
--- a/sys/dev/ic/isic_l1fsm.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/*
- * Copyright (c) 1997, 2000 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * i4b_l1fsm.c - isdn4bsd layer 1 I.430 state machine
- * --------------------------------------------------
- *
- * $Id: isic_l1fsm.c,v 1.14 2011/07/17 20:54:51 joerg Exp $
- *
- * last edit-date: [Fri Jan 5 11:36:11 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_l1fsm.c,v 1.14 2011/07/17 20:54:51 joerg Exp $");
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#ifndef __bsdi__
-#include <sys/bus.h>
-#endif
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#endif
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_trace.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#include "nisac.h"
-#include "nisacsx.h"
-
-#if DO_I4B_DEBUG
-static const char *state_text[N_STATES] = {
- "F3 Deactivated",
- "F4 Awaiting Signal",
- "F5 Identifying Input",
- "F6 Synchronized",
- "F7 Activated",
- "F8 Lost Framing",
- "Illegal State"
-};
-
-static const char *event_text[N_EVENTS] = {
- "EV_PHAR PH_ACT_REQ",
- "EV_T3 Timer 3 expired",
- "EV_INFO0 INFO0 received",
- "EV_RSY Level Detected",
- "EV_INFO2 INFO2 received",
- "EV_INFO48 INFO4 received",
- "EV_INFO410 INFO4 received",
- "EV_DR Deactivate Req",
- "EV_PU Power UP",
- "EV_DIS Disconnected",
- "EV_EI Error Ind",
- "Illegal Event"
-};
-#endif
-
-/* Function prototypes */
-
-static void timer3_expired (struct isic_softc *sc);
-static void T3_start (struct isic_softc *sc);
-static void T3_stop (struct isic_softc *sc);
-static void F_T3ex (struct isic_softc *sc);
-static void timer4_expired (struct isic_softc *sc);
-static void T4_start (struct isic_softc *sc);
-static void T4_stop (struct isic_softc *sc);
-static void F_AI8 (struct isic_softc *sc);
-static void F_AI10 (struct isic_softc *sc);
-static void F_I01 (struct isic_softc *sc);
-static void F_I02 (struct isic_softc *sc);
-static void F_I03 (struct isic_softc *sc);
-static void F_I2 (struct isic_softc *sc);
-static void F_ill (struct isic_softc *sc);
-static void F_NULL (struct isic_softc *sc);
-
-/*---------------------------------------------------------------------------*
- * I.430 Timer T3 expire function
- *---------------------------------------------------------------------------*/
-static void
-timer3_expired(struct isic_softc *sc)
-{
- if(sc->sc_I430T3)
- {
- NDBGL1(L1_T_ERR, "state = %s", isic_printstate(sc));
- sc->sc_I430T3 = 0;
-
- /* XXX try some recovery here XXX */
- switch(sc->sc_cardtyp) {
-#if NNISACSX > 0
- case CARD_TYPEP_AVMA1PCIV2:
- isic_isacsx_recover(sc);
- break;
-#endif /* NNISACSX > 0 */
- default:
-#if NNISAC > 0
- isic_recover(sc);
-#endif /* NNISAC > 0 */
- break;
- }
-
- sc->sc_init_tries++; /* increment retry count */
-
-/*XXX*/ if(sc->sc_init_tries > 4)
- {
- int s = splnet();
-
- sc->sc_init_tries = 0;
-
- if(sc->sc_obuf2 != NULL)
- {
- i4b_Dfreembuf(sc->sc_obuf2);
- sc->sc_obuf2 = NULL;
- }
- if(sc->sc_obuf != NULL)
- {
- i4b_Dfreembuf(sc->sc_obuf);
- sc->sc_obuf = NULL;
- sc->sc_freeflag = 0;
- sc->sc_op = NULL;
- sc->sc_ol = 0;
- }
-
- splx(s);
-
- isdn_layer2_status_ind(&sc->sc_l2, sc->sc_l3token, STI_NOL1ACC, 0);
- }
-
- isic_next_state(sc, EV_T3);
- }
- else
- {
- NDBGL1(L1_T_ERR, "expired without starting it ....");
- }
-}
-
-/*---------------------------------------------------------------------------*
- * I.430 Timer T3 start
- *---------------------------------------------------------------------------*/
-static void
-T3_start(struct isic_softc *sc)
-{
- NDBGL1(L1_T_MSG, "state = %s", isic_printstate(sc));
- sc->sc_I430T3 = 1;
-
- START_TIMER(sc->sc_T3_callout, timer3_expired, sc, 2*hz);
-}
-
-/*---------------------------------------------------------------------------*
- * I.430 Timer T3 stop
- *---------------------------------------------------------------------------*/
-static void
-T3_stop(struct isic_softc *sc)
-{
- NDBGL1(L1_T_MSG, "state = %s", isic_printstate(sc));
-
- sc->sc_init_tries = 0; /* init connect retry count */
-
- if(sc->sc_I430T3)
- {
- sc->sc_I430T3 = 0;
- STOP_TIMER(sc->sc_T3_callout, timer3_expired, sc);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * I.430 Timer T3 expiry
- *---------------------------------------------------------------------------*/
-static void
-F_T3ex(struct isic_softc *sc)
-{
- NDBGL1(L1_F_MSG, "FSM function F_T3ex executing");
- if(((struct isdn_l3_driver*)sc->sc_l3token)->protocol != PROTOCOL_D64S)
- isdn_layer2_activate_ind(&sc->sc_l2, sc->sc_l3token, 0);
-}
-
-/*---------------------------------------------------------------------------*
- * Timer T4 expire function
- *---------------------------------------------------------------------------*/
-static void
-timer4_expired(struct isic_softc *sc)
-{
- if(sc->sc_I430T4)
- {
- NDBGL1(L1_T_MSG, "state = %s", isic_printstate(sc));
- sc->sc_I430T4 = 0;
- isdn_layer2_status_ind(&sc->sc_l2, sc->sc_l3token, STI_PDEACT, 0);
- }
- else
- {
- NDBGL1(L1_T_ERR, "expired without starting it ....");
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Timer T4 start
- *---------------------------------------------------------------------------*/
-static void
-T4_start(struct isic_softc *sc)
-{
- NDBGL1(L1_T_MSG, "state = %s", isic_printstate(sc));
- sc->sc_I430T4 = 1;
-
- START_TIMER(sc->sc_T4_callout, timer4_expired, sc, hz);
-}
-
-/*---------------------------------------------------------------------------*
- * Timer T4 stop
- *---------------------------------------------------------------------------*/
-static void
-T4_stop(struct isic_softc *sc)
-{
- NDBGL1(L1_T_MSG, "state = %s", isic_printstate(sc));
-
- if(sc->sc_I430T4)
- {
- sc->sc_I430T4 = 0;
- STOP_TIMER(sc->sc_T4_callout, timer4_expired, sc);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * FSM function: received AI8
- *---------------------------------------------------------------------------*/
-static void
-F_AI8(struct isic_softc *sc)
-{
- T4_stop(sc);
-
- NDBGL1(L1_F_MSG, "FSM function F_AI8 executing");
-
- if(((struct isdn_l3_driver*)sc->sc_l3token)->protocol != PROTOCOL_D64S)
- isdn_layer2_activate_ind(&sc->sc_l2, sc->sc_l3token, 1);
-
- T3_stop(sc);
-
- if(sc->sc_trace & TRACE_I)
- {
- i4b_trace_hdr hdr;
- char info = INFO4_8;
-
- hdr.type = TRC_CH_I;
- hdr.dir = FROM_NT;
- hdr.count = 0;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, 1, &info);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * FSM function: received AI10
- *---------------------------------------------------------------------------*/
-static void
-F_AI10(struct isic_softc *sc)
-{
- T4_stop(sc);
-
- NDBGL1(L1_F_MSG, "FSM function F_AI10 executing");
-
- if(((struct isdn_l3_driver*)sc->sc_l3token)->protocol != PROTOCOL_D64S)
- isdn_layer2_activate_ind(&sc->sc_l2, sc->sc_l3token, 1);
-
- T3_stop(sc);
-
- if(sc->sc_trace & TRACE_I)
- {
- i4b_trace_hdr hdr;
- char info = INFO4_10;
-
- hdr.type = TRC_CH_I;
- hdr.dir = FROM_NT;
- hdr.count = 0;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, 1, &info);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * FSM function: received INFO 0 in states F3 .. F5
- *---------------------------------------------------------------------------*/
-static void
-F_I01(struct isic_softc *sc)
-{
- NDBGL1(L1_F_MSG, "FSM function F_I01 executing");
-
- if(sc->sc_trace & TRACE_I)
- {
- i4b_trace_hdr hdr;
- char info = INFO0;
-
- hdr.type = TRC_CH_I;
- hdr.dir = FROM_NT;
- hdr.count = 0;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, 1, &info);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * FSM function: received INFO 0 in state F6
- *---------------------------------------------------------------------------*/
-static void
-F_I02(struct isic_softc *sc)
-{
- NDBGL1(L1_F_MSG, "FSM function F_I02 executing");
-
- if(((struct isdn_l3_driver*)sc->sc_l3token)->protocol != PROTOCOL_D64S)
- isdn_layer2_activate_ind(&sc->sc_l2, sc->sc_l3token, 0);
-
- if(sc->sc_trace & TRACE_I)
- {
- i4b_trace_hdr hdr;
- char info = INFO0;
-
- hdr.type = TRC_CH_I;
- hdr.dir = FROM_NT;
- hdr.count = 0;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, 1, &info);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * FSM function: received INFO 0 in state F7 or F8
- *---------------------------------------------------------------------------*/
-static void
-F_I03(struct isic_softc *sc)
-{
- NDBGL1(L1_F_MSG, "FSM function F_I03 executing");
-
- if(((struct isdn_l3_driver*)sc->sc_l3token)->protocol != PROTOCOL_D64S)
- isdn_layer2_activate_ind(&sc->sc_l2, sc->sc_l3token, 0);
-
- T4_start(sc);
-
- if(sc->sc_trace & TRACE_I)
- {
- i4b_trace_hdr hdr;
- char info = INFO0;
-
- hdr.type = TRC_CH_I;
- hdr.dir = FROM_NT;
- hdr.count = 0;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, 1, &info);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * FSM function: activate request
- *---------------------------------------------------------------------------*/
-static void
-F_AR(struct isic_softc *sc)
-{
- NDBGL1(L1_F_MSG, "FSM function F_AR executing");
-
- if(sc->sc_trace & TRACE_I)
- {
- i4b_trace_hdr hdr;
- char info = INFO1_8;
-
- hdr.type = TRC_CH_I;
- hdr.dir = FROM_TE;
- hdr.count = 0;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, 1, &info);
- }
-
- switch(sc->sc_cardtyp) {
-#if NNISACSX > 0
- case CARD_TYPEP_AVMA1PCIV2:
- isic_isacsx_l1_cmd(sc, CMD_AR8);
- break;
-#endif /* NNISACSX > 0 */
- default:
-#if NNISAC > 0
- isic_isac_l1_cmd(sc, CMD_AR8);
-#endif /* NNISAC > 0 */
- break;
- }
-
- T3_start(sc);
-}
-
-/*---------------------------------------------------------------------------*
- * FSM function: received INFO2
- *---------------------------------------------------------------------------*/
-static void
-F_I2(struct isic_softc *sc)
-{
- NDBGL1(L1_F_MSG, "FSM function F_I2 executing");
-
- if(sc->sc_trace & TRACE_I)
- {
- i4b_trace_hdr hdr;
- char info = INFO2;
-
- hdr.type = TRC_CH_I;
- hdr.dir = FROM_NT;
- hdr.count = 0;
- isdn_layer2_trace_ind(&sc->sc_l2, sc->sc_l3token, &hdr, 1, &info);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * illegal state default action
- *---------------------------------------------------------------------------*/
-static void
-F_ill(struct isic_softc *sc)
-{
- NDBGL1(L1_F_ERR, "FSM function F_ill executing");
-}
-
-/*---------------------------------------------------------------------------*
- * No action
- *---------------------------------------------------------------------------*/
-static void
-F_NULL(struct isic_softc *sc)
-{
- NDBGL1(L1_F_MSG, "FSM function F_NULL executing");
-}
-
-
-/*---------------------------------------------------------------------------*
- * layer 1 state transition table
- *---------------------------------------------------------------------------*/
-struct isic_state_tab {
- void (*func) (struct isic_softc *sc); /* function to execute */
- int newstate; /* next state */
-} isic_state_tab[N_EVENTS][N_STATES] = {
-
-/* STATE: F3 F4 F5 F6 F7 F8 ILLEGAL STATE */
-/* -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
-/* EV_PHAR x*/ {{F_AR, ST_F4}, {F_NULL, ST_F4}, {F_NULL, ST_F5}, {F_NULL, ST_F6}, {F_ill, ST_ILL}, {F_NULL, ST_F8}, {F_ill, ST_ILL}},
-/* EV_T3 x*/ {{F_NULL, ST_F3}, {F_T3ex, ST_F3}, {F_T3ex, ST_F3}, {F_T3ex, ST_F3}, {F_NULL, ST_F7}, {F_NULL, ST_F8}, {F_ill, ST_ILL}},
-/* EV_INFO0 */ {{F_I01, ST_F3}, {F_I01, ST_F4}, {F_I01, ST_F5}, {F_I02, ST_F3}, {F_I03, ST_F3}, {F_I03, ST_F3}, {F_ill, ST_ILL}},
-/* EV_RSY x*/ {{F_NULL, ST_F3}, {F_NULL, ST_F5}, {F_NULL, ST_F5}, {F_NULL, ST_F8}, {F_NULL, ST_F8}, {F_NULL, ST_F8}, {F_ill, ST_ILL}},
-/* EV_INFO2 */ {{F_I2, ST_F6}, {F_I2, ST_F6}, {F_I2, ST_F6}, {F_I2, ST_F6}, {F_I2, ST_F6}, {F_I2, ST_F6}, {F_ill, ST_ILL}},
-/* EV_INFO48*/ {{F_AI8, ST_F7}, {F_AI8, ST_F7}, {F_AI8, ST_F7}, {F_AI8, ST_F7}, {F_NULL, ST_F7}, {F_AI8, ST_F7}, {F_ill, ST_ILL}},
-/* EV_INFO41*/ {{F_AI10, ST_F7}, {F_AI10, ST_F7}, {F_AI10, ST_F7}, {F_AI10, ST_F7}, {F_NULL, ST_F7}, {F_AI10, ST_F7}, {F_ill, ST_ILL}},
-/* EV_DR */ {{F_NULL, ST_F3}, {F_NULL, ST_F4}, {F_NULL, ST_F5}, {F_NULL, ST_F6}, {F_NULL, ST_F7}, {F_NULL, ST_F8}, {F_ill, ST_ILL}},
-/* EV_PU */ {{F_NULL, ST_F3}, {F_NULL, ST_F4}, {F_NULL, ST_F5}, {F_NULL, ST_F6}, {F_NULL, ST_F7}, {F_NULL, ST_F8}, {F_ill, ST_ILL}},
-/* EV_DIS */ {{F_ill, ST_ILL}, {F_ill, ST_ILL}, {F_ill, ST_ILL}, {F_ill, ST_ILL}, {F_ill, ST_ILL}, {F_ill, ST_ILL}, {F_ill, ST_ILL}},
-/* EV_EI */ {{F_NULL, ST_F3}, {F_NULL, ST_F3}, {F_NULL, ST_F3}, {F_NULL, ST_F3}, {F_NULL, ST_F3}, {F_NULL, ST_F3}, {F_ill, ST_ILL}},
-/* EV_ILL */ {{F_ill, ST_ILL}, {F_ill, ST_ILL}, {F_ill, ST_ILL}, {F_ill, ST_ILL}, {F_ill, ST_ILL}, {F_ill, ST_ILL}, {F_ill, ST_ILL}}
-};
-
-/*---------------------------------------------------------------------------*
- * event handler
- *---------------------------------------------------------------------------*/
-void
-isic_next_state(struct isic_softc *sc, int event)
-{
- int currstate, newstate;
-
- if(event >= N_EVENTS)
- panic("i4b_l1fsm.c: event >= N_EVENTS");
-
- currstate = sc->sc_I430state;
-
- if(currstate >= N_STATES)
- panic("i4b_l1fsm.c: currstate >= N_STATES");
-
- newstate = isic_state_tab[event][currstate].newstate;
-
- if(newstate >= N_STATES)
- panic("i4b_l1fsm.c: newstate >= N_STATES");
-
- NDBGL1(L1_F_MSG, "FSM event [%s]: [%s => %s]", event_text[event],
- state_text[currstate],
- state_text[newstate]);
-
- (*isic_state_tab[event][currstate].func)(sc);
-
- if(newstate == ST_ILL)
- {
- newstate = ST_F3;
- NDBGL1(L1_F_ERR, "FSM Illegal State ERROR, oldstate = %s, newstate = %s, event = %s!",
- state_text[currstate],
- state_text[newstate],
- event_text[event]);
- }
-
- sc->sc_I430state = newstate;
-}
-
-#if DO_I4B_DEBUG
-/*---------------------------------------------------------------------------*
- * return pointer to current state description
- *---------------------------------------------------------------------------*/
-const char *
-isic_printstate(struct isic_softc *sc)
-{
- return(state_text[sc->sc_I430state]);
-}
-#endif
diff --git a/sys/dev/isa/files.isa b/sys/dev/isa/files.isa
index fd580232b36..bbe496264d6 100644
--- a/sys/dev/isa/files.isa
+++ b/sys/dev/isa/files.isa
@@ -1,4 +1,4 @@
-# $NetBSD: files.isa,v 1.170 2018/09/19 13:58:27 maxv Exp $
+# $NetBSD: files.isa,v 1.171 2018/09/22 16:22:23 maxv Exp $
#
# Config file and device description for machine-independent ISA code.
# Included by ports that need it. Requires that the SCSI files be
@@ -484,20 +484,6 @@ device aps: sysmon_envsys
attach aps at isa with aps
file dev/isa/aps.c aps
-# ISDN devices
-attach isic at isa with isic_isa
-file dev/isa/isic_isa.c isic_isa
-
-defflag opt_isicisa.h ISICISA_TEL_S0_8 ISICISA_TEL_S0_16 ISICISA_TEL_S0_16_3
- ISICISA_AVM_A1 ISICISA_USR_STI ISICISA_ITKIX1
-
-file dev/isa/isic_isa_tel_s08.c isic_isa
-file dev/isa/isic_isa_tel_s016.c isic_isa
-file dev/isa/isic_isa_tel_s0163.c isic_isa
-file dev/isa/isic_isa_avm_a1.c isic_isa
-file dev/isa/isic_isa_usr_sti.c isic_isa
-file dev/isa/isic_isa_itk_ix1.c isic_isa
-
# Game adapter (joystick)
attach joy at isa with joy_isa
file dev/isa/joy_isa.c joy_isa
diff --git a/sys/dev/isa/isic_isa.c b/sys/dev/isa/isic_isa.c
deleted file mode 100644
index caf95c0b623..00000000000
--- a/sys/dev/isa/isic_isa.c
+++ /dev/null
@@ -1,1268 +0,0 @@
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isa.c,v 1.38 2016/07/14 10:19:06 msaitoh Exp $");
-
-#include <sys/param.h>
-#include <sys/errno.h>
-#include <sys/syslog.h>
-#include <sys/device.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <sys/systm.h>
-#include <sys/malloc.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#include <sys/cpu.h>
-#include <sys/intr.h>
-#include <sys/bus.h>
-
-#include <dev/isa/isavar.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_ioctl.h>
-#endif
-
-#include "opt_isicisa.h"
-
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_trace.h>
-
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/ipac.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#include <netisdn/i4b_mbuf.h>
-#include <netisdn/i4b_global.h>
-
-extern const struct isdn_layer1_isdnif_driver isic_std_driver;
-
-/* local functions */
-static int isic_isa_probe(device_t, cfdata_t, void *);
-
-static void isic_isa_attach(device_t, device_t, void *);
-static int setup_io_map(int flags, bus_space_tag_t iot,
- bus_space_tag_t memt, bus_size_t iobase, bus_size_t maddr,
- int *num_mappings, struct isic_io_map *maps, int *iosize,
- int *msize);
-static void args_unmap(int *num_mappings, struct isic_io_map *maps);
-
-CFATTACH_DECL_NEW(isic_isa, sizeof(struct isic_softc),
- isic_isa_probe, isic_isa_attach, NULL, NULL);
-
-#define ISIC_FMT "%s: "
-#define ISIC_PARM device_xname(sc->sc_dev)
-#define TERMFMT "\n"
-
-/*
- * Probe card
- */
-static int
-isic_isa_probe(device_t parent, cfdata_t cf, void *aux)
-{
- struct isa_attach_args *ia = aux;
- bus_space_tag_t memt = ia->ia_memt, iot = ia->ia_iot;
- int flags = cf->cf_flags;
- struct isic_attach_args args;
- int ret = 0, iobase, iosize, maddr, msize;
-
-#if 0
- printf("isic%d: enter isic_isa_probe\n", cf->cf_unit);
-#endif
-
- if (ia->ia_nio < 1)
- return (0);
- if (ia->ia_niomem < 1)
- return (0);
- if (ia->ia_nirq < 1)
- return (0);
-
- if (ISA_DIRECT_CONFIG(ia))
- return (0);
-
- /* check irq */
- if (ia->ia_irq[0].ir_irq == ISA_UNKNOWN_IRQ) {
- printf("isic%d: config error: no IRQ specified\n", cf->cf_unit);
- return 0;
- }
-
- iobase = ia->ia_io[0].ir_addr;
- iosize = ia->ia_io[0].ir_size;
-
- maddr = ia->ia_iomem[0].ir_addr;
- msize = ia->ia_iomem[0].ir_size;
-
- /* setup MI attach args */
- memset(&args, 0, sizeof(args));
- args.ia_flags = flags;
-
- /* if card type specified setup io map for that card */
- switch(flags)
- {
- case FLAG_TELES_S0_8:
- case FLAG_TELES_S0_16:
- case FLAG_TELES_S0_163:
- case FLAG_AVM_A1:
- case FLAG_USR_ISDN_TA_INT:
- case FLAG_ITK_IX1:
- if (setup_io_map(flags, iot, memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0],
- &iosize, &msize)) {
- ret = 0;
- goto done;
- }
- break;
-
- default:
- /* no io map now, will figure card type later */
- break;
- }
-
- /* probe card */
- switch(flags)
- {
-#ifdef ISICISA_DYNALINK
-#ifdef __bsdi__
- case FLAG_DYNALINK:
- ret = isic_probe_Dyn(&args);
- break;
-#endif
-#endif
-
-#ifdef ISICISA_TEL_S0_8
- case FLAG_TELES_S0_8:
- ret = isic_probe_s08(&args);
- break;
-#endif
-
-#ifdef ISICISA_TEL_S0_16
- case FLAG_TELES_S0_16:
- ret = isic_probe_s016(&args);
- break;
-#endif
-
-#ifdef ISICISA_TEL_S0_16_3
- case FLAG_TELES_S0_163:
- ret = isic_probe_s0163(&args);
- break;
-#endif
-
-#ifdef ISICISA_AVM_A1
- case FLAG_AVM_A1:
- ret = isic_probe_avma1(&args);
- break;
-#endif
-
-#ifdef ISICISA_USR_STI
- case FLAG_USR_ISDN_TA_INT:
- ret = isic_probe_usrtai(&args);
- break;
-#endif
-
-#ifdef ISICISA_ITKIX1
- case FLAG_ITK_IX1:
- ret = isic_probe_itkix1(&args);
- break;
-#endif
-
- default:
- /* No card type given, try to figure ... */
- if (iobase == ISA_UNKNOWN_PORT) {
- ret = 0;
-#ifdef ISICISA_TEL_S0_8
- /* only Teles S0/8 will work without IO */
- args.ia_flags = FLAG_TELES_S0_8;
- if (setup_io_map(args.ia_flags, iot, memt,
- iobase, maddr, &args.ia_num_mappings,
- &args.ia_maps[0], &iosize, &msize) == 0)
- {
- ret = isic_probe_s08(&args);
- }
-#endif /* ISICISA_TEL_S0_8 */
- } else if (maddr == ISA_UNKNOWN_IOMEM) {
- ret = 0;
-#ifdef ISICISA_TEL_S0_16_3
- /* no shared memory, only a 16.3 based card,
- AVM A1, the usr sportster or an ITK would work */
- args.ia_flags = FLAG_TELES_S0_163;
- if (setup_io_map(args.ia_flags, iot, memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0],
- &iosize, &msize) == 0)
- {
- ret = isic_probe_s0163(&args);
- if (ret)
- break;
- }
-#endif /* ISICISA_TEL_S0_16_3 */
-#ifdef ISICISA_AVM_A1
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
- args.ia_flags = FLAG_AVM_A1;
- if (setup_io_map(args.ia_flags, iot, memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0],
- &iosize, &msize) == 0)
- {
- ret = isic_probe_avma1(&args);
- if (ret)
- break;
- }
-#endif /* ISICISA_AVM_A1 */
-#ifdef ISICISA_USR_STI
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
- args.ia_flags = FLAG_USR_ISDN_TA_INT;
- if (setup_io_map(args.ia_flags, iot, memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0],
- &iosize, &msize) == 0)
- {
- ret = isic_probe_usrtai(&args);
- if (ret)
- break;
- }
-#endif /* ISICISA_USR_STI */
-
-#ifdef ISICISA_ITKIX1
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
- args.ia_flags = FLAG_ITK_IX1;
- if (setup_io_map(args.ia_flags, iot, memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0],
- &iosize, &msize) == 0)
- {
- ret = isic_probe_itkix1(&args);
- if (ret)
- break;
- }
-#endif /* ISICISA_ITKIX1 */
-
- } else {
-#ifdef ISICISA_TEL_S0_16_3
- /* could be anything */
- args.ia_flags = FLAG_TELES_S0_163;
- if (setup_io_map(args.ia_flags, iot, memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0],
- &iosize, &msize) == 0)
- {
- ret = isic_probe_s0163(&args);
- if (ret)
- break;
- }
-#endif /* ISICISA_TEL_S0_16_3 */
-#ifdef ISICISA_TEL_S0_16
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
- args.ia_flags = FLAG_TELES_S0_16;
- if (setup_io_map(args.ia_flags, iot, memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0],
- &iosize, &msize) == 0)
- {
- ret = isic_probe_s016(&args);
- if (ret)
- break;
- }
-#endif /* ISICISA_TEL_S0_16 */
-#ifdef ISICISA_AVM_A1
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
- args.ia_flags = FLAG_AVM_A1;
- if (setup_io_map(args.ia_flags, iot, memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0],
- &iosize, &msize) == 0)
- {
- ret = isic_probe_avma1(&args);
- if (ret)
- break;
- }
-#endif /* ISICISA_AVM_A1 */
-#ifdef ISICISA_TEL_S0_8
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
- args.ia_flags = FLAG_TELES_S0_8;
- if (setup_io_map(args.ia_flags, iot, memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0],
- &iosize, &msize) == 0)
- {
- ret = isic_probe_s08(&args);
- }
-#endif /* ISICISA_TEL_S0_8 */
- }
- break;
- }
-
-done:
- /* unmap resources */
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
-
-#if 0
- printf("isic%d: exit isic_isa_probe, return = %d\n", cf->cf_unit, ret);
-#endif
-
- if (ret) {
- if (iosize != 0) {
- ia->ia_nio = 1;
- ia->ia_io[0].ir_addr = iobase;
- ia->ia_io[0].ir_size = iosize;
- } else
- ia->ia_nio = 0;
- if (msize != 0) {
- ia->ia_niomem = 1;
- ia->ia_iomem[0].ir_addr = maddr;
- ia->ia_iomem[0].ir_size = msize;
- } else
- ia->ia_niomem = 0;
- ia->ia_nirq = 1;
-
- ia->ia_ndrq = 0;
- }
-
- return ret;
-}
-
-static int
-isicattach(int flags, struct isic_softc *sc)
-{
- int ret = 0;
- const char *drvid;
-
-#ifdef __FreeBSD__
-
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-#define PARM dev
-#define PARM2 dev, iobase2
-#define FLAGS dev->id_flags
-
-#elif defined(__bsdi__)
-
- struct isic_softc *sc = device_private(self);
-#define PARM parent, self, ia
-#define PARM2 parent, self, ia
-#define FLAGS sc->sc_flags
-
-#else
-
-#define PARM sc
-#define PARM2 sc
-#define FLAGS flags
-
-#endif /* __FreeBSD__ */
-
- static const char *ISACversion[] = {
- "2085 Version A1/A2 or 2086/2186 Version 1.1",
- "2085 Version B1",
- "2085 Version B2",
- "2085 Version V2.3 (B3)",
- "Unknown Version"
- };
-
- static const char *HSCXversion[] = {
- "82525 Version A1",
- "Unknown (0x01)",
- "82525 Version A2",
- "Unknown (0x03)",
- "82525 Version A3",
- "82525 or 21525 Version 2.1",
- "Unknown Version"
- };
-
- /* card dependent setup */
- switch(FLAGS)
- {
-#ifdef ISICISA_DYNALINK
-#if defined(__bsdi__) || defined(__FreeBSD__)
- case FLAG_DYNALINK:
- ret = isic_attach_Dyn(PARM2);
- break;
-#endif
-#endif
-
-#ifdef ISICISA_TEL_S0_8
- case FLAG_TELES_S0_8:
- ret = isic_attach_s08(PARM);
- break;
-#endif
-
-#ifdef ISICISA_TEL_S0_16
- case FLAG_TELES_S0_16:
- ret = isic_attach_s016(PARM);
- break;
-#endif
-
-#ifdef ISICISA_TEL_S0_16_3
- case FLAG_TELES_S0_163:
- ret = isic_attach_s0163(PARM);
- break;
-#endif
-
-#ifdef ISICISA_AVM_A1
- case FLAG_AVM_A1:
- ret = isic_attach_avma1(PARM);
- break;
-#endif
-
-#ifdef ISICISA_USR_STI
- case FLAG_USR_ISDN_TA_INT:
- ret = isic_attach_usrtai(PARM);
- break;
-#endif
-
-#ifdef ISICISA_ITKIX1
- case FLAG_ITK_IX1:
- ret = isic_attach_itkix1(PARM);
- break;
-#endif
-
-#ifdef ISICISA_ELSA_PCC16
- case FLAG_ELSA_PCC16:
- ret = isic_attach_Eqs1pi(dev, 0);
- break;
-#endif
-
-#ifdef amiga
- case FLAG_BLMASTER:
- ret = 1; /* full detection was done in caller */
- break;
-#endif
-
-/* ======================================================================
- * Only P&P cards follow below!!!
- */
-
-#ifdef __FreeBSD__ /* we've already splitted all non-ISA stuff
- out of this ISA specific part for the other
- OS */
-
-#ifdef AVM_A1_PCMCIA
- case FLAG_AVM_A1_PCMCIA:
- ret = isic_attach_fritzpcmcia(PARM);
- break;
-#endif
-
-#ifdef TEL_S0_16_3_P
- case FLAG_TELES_S0_163_PnP:
- ret = isic_attach_s0163P(PARM2);
- break;
-#endif
-
-#ifdef CRTX_S0_P
- case FLAG_CREATIX_S0_PnP:
- ret = isic_attach_Cs0P(PARM2);
- break;
-#endif
-
-#ifdef DRN_NGO
- case FLAG_DRN_NGO:
- ret = isic_attach_drnngo(PARM2);
- break;
-#endif
-
-#ifdef SEDLBAUER
- case FLAG_SWS:
- ret = isic_attach_sws(PARM);
- break;
-#endif
-
-#ifdef ELSA_QS1ISA
- case FLAG_ELSA_QS1P_ISA:
- ret = isic_attach_Eqs1pi(PARM2);
- break;
-#endif
-
-#ifdef AVM_PNP
- case FLAG_AVM_PNP:
- ret = isic_attach_avm_pnp(PARM2);
- ret = 0;
- break;
-#endif
-
-#ifdef SIEMENS_ISURF2
- case FLAG_SIEMENS_ISURF2:
- ret = isic_attach_siemens_isurf(PARM2);
- break;
-#endif
-
-#ifdef ASUSCOM_IPAC
- case FLAG_ASUSCOM_IPAC:
- ret = isic_attach_asi(PARM2);
- break;
-#endif
-
-#endif /* __FreeBSD__ / P&P specific part */
-
- default:
- break;
- }
-
- if(ret == 0)
- return(0);
-
- if(sc->sc_ipac)
- {
- sc->sc_ipac_version = IPAC_READ(IPAC_ID);
-
- switch(sc->sc_ipac_version)
- {
- case IPAC_V11:
- case IPAC_V12:
- break;
-
- default:
- aprint_error_dev(sc->sc_dev, "Error, IPAC version %d unknown!\n", ret);
- return(0);
- break;
- }
- }
- else
- {
- sc->sc_isac_version = ((ISAC_READ(I_RBCH)) >> 5) & 0x03;
-
- switch(sc->sc_isac_version)
- {
- case ISAC_VA:
- case ISAC_VB1:
- case ISAC_VB2:
- case ISAC_VB3:
- break;
-
- default:
- printf(ISIC_FMT "Error, ISAC version %d unknown!\n",
- ISIC_PARM, sc->sc_isac_version);
- return(0);
- break;
- }
-
- sc->sc_hscx_version = HSCX_READ(0, H_VSTR) & 0xf;
-
- switch(sc->sc_hscx_version)
- {
- case HSCX_VA1:
- case HSCX_VA2:
- case HSCX_VA3:
- case HSCX_V21:
- break;
-
- default:
- printf(ISIC_FMT "Error, HSCX version %d unknown!\n",
- ISIC_PARM, sc->sc_hscx_version);
- return(0);
- break;
- }
- }
-
- sc->sc_intr_valid = ISIC_INTR_DISABLED;
-
- /* HSCX setup */
-
- isic_bchannel_setup(sc, HSCX_CH_A, BPROT_NONE, 0);
-
- isic_bchannel_setup(sc, HSCX_CH_B, BPROT_NONE, 0);
-
- /* setup linktab */
-
- isic_init_linktab(sc);
-
- /* set trace level */
-
- sc->sc_trace = TRACE_OFF;
-
- sc->sc_state = ISAC_IDLE;
-
- sc->sc_ibuf = NULL;
- sc->sc_ib = NULL;
- sc->sc_ilen = 0;
-
- sc->sc_obuf = NULL;
- sc->sc_op = NULL;
- sc->sc_ol = 0;
- sc->sc_freeflag = 0;
-
- sc->sc_obuf2 = NULL;
- sc->sc_freeflag2 = 0;
-
-#if defined(__FreeBSD__) && __FreeBSD__ >=3
- callout_handle_init(&sc->sc_T3_callout);
- callout_handle_init(&sc->sc_T4_callout);
-#endif
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
- callout_init(&sc->sc_T3_callout, 0);
- callout_init(&sc->sc_T4_callout, 0);
-#endif
-
- /* announce manufacturer and card type */
-
- switch(FLAGS)
- {
- case FLAG_TELES_S0_8:
- drvid = "Teles S0/8 or Niccy 1008";
- break;
-
- case FLAG_TELES_S0_16:
- drvid = "Teles S0/16, Creatix ISDN S0-16 or Niccy 1016";
- break;
-
- case FLAG_TELES_S0_163:
- drvid = "Teles S0/16.3";
- break;
-
- case FLAG_AVM_A1:
- drvid = "AVM A1 or AVM Fritz!Card";
- break;
-
- case FLAG_AVM_A1_PCMCIA:
- drvid = "AVM PCMCIA Fritz!Card";
- break;
-
- case FLAG_TELES_S0_163_PnP:
- drvid = "Teles S0/PnP";
- break;
-
- case FLAG_CREATIX_S0_PnP:
- drvid = "Creatix ISDN S0-16 P&P";
- break;
-
- case FLAG_USR_ISDN_TA_INT:
- drvid = "USRobotics Sportster ISDN TA intern";
- break;
-
- case FLAG_DRN_NGO:
- drvid = "Dr. Neuhaus NICCY Go@";
- break;
-
- case FLAG_DYNALINK:
- drvid = "Dynalink IS64PH";
- break;
-
- case FLAG_SWS:
- drvid = "Sedlbauer WinSpeed";
- break;
-
- case FLAG_BLMASTER:
- /* board announcement was done by caller */
- drvid = (char *)0;
- break;
-
- case FLAG_ELSA_QS1P_ISA:
- drvid = "ELSA QuickStep 1000pro (ISA)";
- break;
-
- case FLAG_ITK_IX1:
- drvid = "ITK ix1 micro";
- break;
-
- case FLAG_ELSA_PCC16:
- drvid = "ELSA PCC-16";
- break;
-
- case FLAG_ASUSCOM_IPAC:
- drvid = "Asuscom ISDNlink 128K PnP";
- break;
-
- case FLAG_SIEMENS_ISURF2:
- drvid = "Siemens I-Surf 2.0";
- break;
-
- default:
- drvid = "ERROR, unknown flag used";
- break;
- }
-#ifndef __FreeBSD__
- printf("\n");
-#endif
- if (drvid)
- printf(ISIC_FMT "%s\n", ISIC_PARM, drvid);
-
- /* announce chip versions */
-
- if(sc->sc_ipac)
- {
- if(sc->sc_ipac_version == IPAC_V11)
- printf(ISIC_FMT "IPAC PSB2115 Version 1.1\n", ISIC_PARM);
- else
- printf(ISIC_FMT "IPAC PSB2115 Version 1.2\n", ISIC_PARM);
- }
- else
- {
- if(sc->sc_isac_version >= ISAC_UNKN)
- {
- printf(ISIC_FMT "ISAC Version UNKNOWN (VN=0x%x)" TERMFMT,
- ISIC_PARM,
- sc->sc_isac_version);
- sc->sc_isac_version = ISAC_UNKN;
- }
- else
- {
- printf(ISIC_FMT "ISAC %s (IOM-%c)" TERMFMT,
- ISIC_PARM,
- ISACversion[sc->sc_isac_version],
- sc->sc_bustyp == BUS_TYPE_IOM1 ? '1' : '2');
- }
-
-#ifdef __FreeBSD__
- printf("(Addr=0x%lx)\n", (u_long)ISAC_BASE);
-#endif
-
- if(sc->sc_hscx_version >= HSCX_UNKN)
- {
- printf(ISIC_FMT "HSCX Version UNKNOWN (VN=0x%x)" TERMFMT,
- ISIC_PARM,
- sc->sc_hscx_version);
- sc->sc_hscx_version = HSCX_UNKN;
- }
- else
- {
- printf(ISIC_FMT "HSCX %s" TERMFMT,
- ISIC_PARM,
- HSCXversion[sc->sc_hscx_version]);
- }
-
-#ifdef __FreeBSD__
- printf("(AddrA=0x%lx, AddrB=0x%lx)\n", (u_long)HSCX_A_BASE, (u_long)HSCX_B_BASE);
-
-#endif /* __FreeBSD__ */
- }
-
-#ifdef __FreeBSD__
- next_isic_unit++;
-
-#if defined(__FreeBSD_version) && __FreeBSD_version >= 300003
-
- /* set the interrupt handler - no need to change isa_device.h */
- dev->id_intr = (inthand2_t *)isicintr;
-
-#endif
-
-#endif /* __FreeBSD__ */
-
- /* init higher protocol layers */
- isic_attach_bri(sc, drvid, &isic_std_driver);
-
- return(1);
-#undef PARM
-#undef FLAGS
-}
-
-/*
- * Attach the card
- */
-static void
-isic_isa_attach(device_t parent, device_t self, void *aux)
-{
- struct isic_softc *sc = device_private(self);
- struct isa_attach_args *ia = aux;
- int flags = device_cfdata(self)->cf_flags;
- int ret = 0, iobase, maddr;
- struct isic_attach_args args;
-
- iobase = ia->ia_nio > 0 ? ia->ia_io[0].ir_addr : ISA_UNKNOWN_PORT;
- maddr = ia->ia_niomem > 0 ? ia->ia_iomem[0].ir_addr : ISA_UNKNOWN_IOMEM;
-
- /* Setup parameters */
- sc->sc_dev = self;
- sc->sc_irq = ia->ia_irq[0].ir_irq;
- sc->sc_maddr = maddr;
- sc->sc_num_mappings = 0;
- sc->sc_maps = NULL;
- switch(flags)
- {
- case FLAG_TELES_S0_8:
- case FLAG_TELES_S0_16:
- case FLAG_TELES_S0_163:
- case FLAG_AVM_A1:
- case FLAG_USR_ISDN_TA_INT:
- setup_io_map(flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &(sc->sc_num_mappings), NULL, NULL, NULL);
- MALLOC_MAPS(sc);
- setup_io_map(flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &(sc->sc_num_mappings), &(sc->sc_maps[0]), NULL, NULL);
- break;
-
- default:
- /* No card type given, try to figure ... */
-
- /* setup MI attach args */
- memset(&args, 0, sizeof(args));
- args.ia_flags = flags;
-
- /* Probe cards */
- if (iobase == ISA_UNKNOWN_PORT) {
- ret = 0;
-#ifdef ISICISA_TEL_S0_8
- /* only Teles S0/8 will work without IO */
- args.ia_flags = FLAG_TELES_S0_8;
- setup_io_map(args.ia_flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0], NULL, NULL);
- ret = isic_probe_s08(&args);
- if (ret)
- goto found;
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
-#endif /* ISICISA_TEL_S0_8 */
- } else if (maddr == ISA_UNKNOWN_IOMEM) {
- /* no shared memory, only a 16.3 based card,
- AVM A1, the usr sportster or an ITK would work */
- ret = 0;
-#ifdef ISICISA_TEL_S0_16_3
- args.ia_flags = FLAG_TELES_S0_163;
- setup_io_map(args.ia_flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0], NULL, NULL);
- ret = isic_probe_s0163(&args);
- if (ret)
- goto found;
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
-#endif /* ISICISA_TEL_S0_16_3 */
-#ifdef ISICISA_AVM_A1
- args.ia_flags = FLAG_AVM_A1;
- setup_io_map(args.ia_flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0], NULL, NULL);
- ret = isic_probe_avma1(&args);
- if (ret)
- goto found;
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
-#endif /* ISICISA_AVM_A1 */
-#ifdef ISICISA_USR_STI
- args.ia_flags = FLAG_USR_ISDN_TA_INT;
- setup_io_map(args.ia_flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0], NULL, NULL);
- ret = isic_probe_usrtai(&args);
- if (ret)
- goto found;
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
-#endif /* ISICISA_USR_STI */
-#ifdef ISICISA_ITKIX1
- args.ia_flags = FLAG_ITK_IX1;
- setup_io_map(args.ia_flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0], NULL, NULL);
- ret = isic_probe_itkix1(&args);
- if (ret)
- goto found;
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
-#endif /* ISICISA_ITKIX1 */
- } else {
- /* could be anything */
- ret = 0;
-#ifdef ISICISA_TEL_S0_16_3
- args.ia_flags = FLAG_TELES_S0_163;
- setup_io_map(args.ia_flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0], NULL, NULL);
- ret = isic_probe_s0163(&args);
- if (ret)
- goto found;
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
-#endif /* ISICISA_TEL_S0_16_3 */
-#ifdef ISICISA_TEL_S0_16
- args.ia_flags = FLAG_TELES_S0_16;
- setup_io_map(args.ia_flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0], NULL, NULL);
- ret = isic_probe_s016(&args);
- if (ret)
- goto found;
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
-#endif /* ISICISA_TEL_S0_16 */
-#ifdef ISICISA_AVM_A1
- args.ia_flags = FLAG_AVM_A1;
- setup_io_map(args.ia_flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0], NULL, NULL);
- ret = isic_probe_avma1(&args);
- if (ret)
- goto found;
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
-#endif /* ISICISA_AVM_A1 */
-#ifdef ISICISA_TEL_S0_8
- args.ia_flags = FLAG_TELES_S0_8;
- setup_io_map(args.ia_flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &args.ia_num_mappings, &args.ia_maps[0], NULL, NULL);
- ret = isic_probe_s08(&args);
- if (ret)
- goto found;
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
-#endif /* ISICISA_TEL_S0_8 */
- }
- break;
-
- found:
- flags = args.ia_flags;
- sc->sc_num_mappings = args.ia_num_mappings;
- args_unmap(&args.ia_num_mappings, &args.ia_maps[0]);
- if (ret) {
- MALLOC_MAPS(sc);
- setup_io_map(flags, ia->ia_iot, ia->ia_memt, iobase, maddr,
- &(sc->sc_num_mappings), &(sc->sc_maps[0]), NULL, NULL);
- } else {
- aprint_error(": could not determine card type "
- "- not configured!\n");
- return;
- }
- break;
- }
-
- /* MI initialization of card */
- isicattach(flags, sc);
-
- /*
- * Try to get a level-triggered interrupt first. If that doesn't
- * work (like on NetBSD/Atari, try to establish an edge triggered
- * interrupt.
- */
- if (isa_intr_establish(ia->ia_ic, ia->ia_irq[0].ir_irq, IST_LEVEL,
- IPL_NET, isicintr, sc) == NULL) {
- if(isa_intr_establish(ia->ia_ic, ia->ia_irq[0].ir_irq, IST_EDGE,
- IPL_NET, isicintr, sc) == NULL) {
- args_unmap(&(sc->sc_num_mappings), &(sc->sc_maps[0]));
- free((sc)->sc_maps, M_DEVBUF);
- }
- else {
- /*
- * XXX: This is a hack that probably needs to be
- * solved by setting an interrupt type in the sc
- * structure. I don't feel familiar enough with the
- * code to do this currently. Feel free to contact
- * me about it (leo@NetBSD.org).
- */
- isicintr(sc);
- }
- }
-}
-
-/*
- * Setup card specific io mapping. Return 0 on success,
- * any other value on config error.
- * Be prepared to get NULL as maps array.
- * Make sure to keep *num_mappings in sync with the real
- * mappings already setup when returning!
- */
-static int
-setup_io_map(int flags, bus_space_tag_t iot, bus_space_tag_t memt, bus_size_t iobase, bus_size_t maddr, int *num_mappings, struct isic_io_map *maps, int *iosize, int *msize)
-{
- /* nothing mapped yet */
- *num_mappings = 0;
-
- /* which resources do we need? */
- switch(flags)
- {
- case FLAG_TELES_S0_8:
- if (maddr == ISA_UNKNOWN_IOMEM) {
- printf("isic: config error: no shared memory specified for Teles S0/8!\n");
- return 1;
- }
- if (iosize) *iosize = 0; /* no i/o ports */
- if (msize) *msize = 0x1000; /* shared memory size */
-
- /* this card uses a single memory mapping */
- if (maps == NULL) {
- *num_mappings = 1;
- return 0;
- }
- *num_mappings = 0;
- maps[0].t = memt;
- maps[0].offset = 0;
- maps[0].size = 0x1000;
- if (bus_space_map(maps[0].t, maddr,
- maps[0].size, 0, &maps[0].h)) {
- return 1;
- }
- (*num_mappings)++;
- break;
-
- case FLAG_TELES_S0_16:
- if (iobase == ISA_UNKNOWN_PORT) {
- printf("isic: config error: no i/o address specified for Teles S0/16!\n");
- return 1;
- }
- if (maddr == ISA_UNKNOWN_IOMEM) {
- printf("isic: config error: no shared memory specified for Teles S0/16!\n");
- return 1;
- }
- if (iosize) *iosize = 8; /* i/o ports */
- if (msize) *msize = 0x1000; /* shared memory size */
-
- /* one io and one memory mapping */
- if (maps == NULL) {
- *num_mappings = 2;
- return 0;
- }
- *num_mappings = 0;
- maps[0].t = iot;
- maps[0].offset = 0;
- maps[0].size = 8;
- if (bus_space_map(maps[0].t, iobase,
- maps[0].size, 0, &maps[0].h)) {
- return 1;
- }
- (*num_mappings)++;
- maps[1].t = memt;
- maps[1].offset = 0;
- maps[1].size = 0x1000;
- if (bus_space_map(maps[1].t, maddr,
- maps[1].size, 0, &maps[1].h)) {
- return 1;
- }
- (*num_mappings)++;
- break;
-
- case FLAG_TELES_S0_163:
- if (iobase == ISA_UNKNOWN_PORT) {
- printf("isic: config error: no i/o address specified for Teles S0/16!\n");
- return 1;
- }
- if (iosize) *iosize = 8; /* only some i/o ports shown */
- if (msize) *msize = 0; /* no shared memory */
-
- /* Four io mappings: config, isac, 2 * hscx */
- if (maps == NULL) {
- *num_mappings = 4;
- return 0;
- }
- *num_mappings = 0;
- maps[0].t = iot;
- maps[0].offset = 0;
- maps[0].size = 8;
- if (bus_space_map(maps[0].t, iobase,
- maps[0].size, 0, &maps[0].h)) {
- return 1;
- }
- (*num_mappings)++;
- maps[1].t = iot;
- maps[1].offset = 0;
- maps[1].size = 0x40; /* XXX - ??? */
- if ((iobase - 0xd80 + 0x980) > 0x0ffff)
- return 1;
- if (bus_space_map(maps[1].t, iobase - 0xd80 + 0x980,
- maps[1].size, 0, &maps[1].h)) {
- return 1;
- }
- (*num_mappings)++;
- maps[2].t = iot;
- maps[2].offset = 0;
- maps[2].size = 0x40; /* XXX - ??? */
- if ((iobase - 0xd80 + 0x180) > 0x0ffff)
- return 1;
- if (bus_space_map(maps[2].t, iobase - 0xd80 + 0x180,
- maps[2].size, 0, &maps[2].h)) {
- return 1;
- }
- (*num_mappings)++;
- maps[3].t = iot;
- maps[3].offset = 0;
- maps[3].size = 0x40; /* XXX - ??? */
- if ((iobase - 0xd80 + 0x580) > 0x0ffff)
- return 1;
- if (bus_space_map(maps[3].t, iobase - 0xd80 + 0x580,
- maps[3].size, 0, &maps[3].h)) {
- return 1;
- }
- (*num_mappings)++;
- break;
-
- case FLAG_AVM_A1:
- if (iobase == ISA_UNKNOWN_PORT) {
- printf("isic: config error: no i/o address specified for AVM A1/Fritz! card!\n");
- return 1;
- }
- if (iosize) *iosize = 8; /* only some i/o ports shown */
- if (msize) *msize = 0; /* no shared memory */
-
- /* Seven io mappings: config, isac, 2 * hscx,
- isac-fifo, 2 * hscx-fifo */
- if (maps == NULL) {
- *num_mappings = 7;
- return 0;
- }
- *num_mappings = 0;
- maps[0].t = iot; /* config */
- maps[0].offset = 0;
- maps[0].size = 8;
- if ((iobase + 0x1800) > 0x0ffff)
- return 1;
- if (bus_space_map(maps[0].t, iobase + 0x1800, maps[0].size, 0, &maps[0].h))
- return 1;
- (*num_mappings)++;
- maps[1].t = iot; /* isac */
- maps[1].offset = 0;
- maps[1].size = 0x80; /* XXX - ??? */
- if ((iobase + 0x1400 - 0x20) > 0x0ffff)
- return 1;
- if (bus_space_map(maps[1].t, iobase + 0x1400 - 0x20, maps[1].size, 0, &maps[1].h))
- return 1;
- (*num_mappings)++;
- maps[2].t = iot; /* hscx 0 */
- maps[2].offset = 0;
- maps[2].size = 0x40; /* XXX - ??? */
- if ((iobase + 0x400 - 0x20) > 0x0ffff)
- return 1;
- if (bus_space_map(maps[2].t, iobase + 0x400 - 0x20, maps[2].size, 0, &maps[2].h))
- return 1;
- (*num_mappings)++;
- maps[3].t = iot; /* hscx 1 */
- maps[3].offset = 0;
- maps[3].size = 0x40; /* XXX - ??? */
- if ((iobase + 0xc00 - 0x20) > 0x0ffff)
- return 1;
- if (bus_space_map(maps[3].t, iobase + 0xc00 - 0x20, maps[3].size, 0, &maps[3].h))
- return 1;
- (*num_mappings)++;
- maps[4].t = iot; /* isac-fifo */
- maps[4].offset = 0;
- maps[4].size = 1;
- if ((iobase + 0x1400 - 0x20 -0x3e0) > 0x0ffff)
- return 1;
- if (bus_space_map(maps[4].t, iobase + 0x1400 - 0x20 -0x3e0, maps[4].size, 0, &maps[4].h))
- return 1;
- (*num_mappings)++;
- maps[5].t = iot; /* hscx 0 fifo */
- maps[5].offset = 0;
- maps[5].size = 1;
- if ((iobase + 0x400 - 0x20 -0x3e0) > 0x0ffff)
- return 1;
- if (bus_space_map(maps[5].t, iobase + 0x400 - 0x20 -0x3e0, maps[5].size, 0, &maps[5].h))
- return 1;
- (*num_mappings)++;
- maps[6].t = iot; /* hscx 1 fifo */
- maps[6].offset = 0;
- maps[6].size = 1;
- if ((iobase + 0xc00 - 0x20 -0x3e0) > 0x0ffff)
- return 1;
- if (bus_space_map(maps[6].t, iobase + 0xc00 - 0x20 -0x3e0, maps[6].size, 0, &maps[6].h))
- return 1;
- (*num_mappings)++;
- break;
-
- case FLAG_USR_ISDN_TA_INT:
- if (iobase == ISA_UNKNOWN_PORT) {
- printf("isic: config error: no I/O base specified for USR Sportster TA intern!\n");
- return 1;
- }
- if (iosize) *iosize = 8; /* scattered ports, only some shown */
- if (msize) *msize = 0; /* no shared memory */
-
- /* 49 io mappings: 1 config and 48x8 registers */
- if (maps == NULL) {
- *num_mappings = 49;
- return 0;
- }
- *num_mappings = 0;
- {
- int i, num;
- bus_size_t base;
-
- /* config at offset 0x8000 */
- base = iobase + 0x8000;
- maps[0].size = 1;
- maps[0].t = iot;
- maps[0].offset = 0;
- if (base > 0x0ffff)
- return 1;
- if (bus_space_map(iot, base, 1, 0, &maps[0].h)) {
- return 1;
- }
- *num_mappings = num = 1;
-
- /* HSCX A at offset 0 */
- base = iobase;
- for (i = 0; i < 16; i++) {
- maps[num].size = 8;
- maps[num].offset = 0;
- maps[num].t = iot;
- if (base+i*1024+8 > 0x0ffff)
- return 1;
- if (bus_space_map(iot, base+i*1024, 8, 0, &maps[num].h)) {
- return 1;
- }
- *num_mappings = ++num;
- }
- /* HSCX B at offset 0x4000 */
- base = iobase + 0x4000;
- for (i = 0; i < 16; i++) {
- maps[num].size = 8;
- maps[num].offset = 0;
- maps[num].t = iot;
- if (base+i*1024+8 > 0x0ffff)
- return 1;
- if (bus_space_map(iot, base+i*1024, 8, 0, &maps[num].h)) {
- return 1;
- }
- *num_mappings = ++num;
- }
- /* ISAC at offset 0xc000 */
- base = iobase + 0xc000;
- for (i = 0; i < 16; i++) {
- maps[num].size = 8;
- maps[num].offset = 0;
- maps[num].t = iot;
- if (base+i*1024+8 > 0x0ffff)
- return 1;
- if (bus_space_map(iot, base+i*1024, 8, 0, &maps[num].h)) {
- return 1;
- }
- *num_mappings = ++num;
- }
- }
- break;
-
- case FLAG_ITK_IX1:
- if (iobase == ISA_UNKNOWN_PORT) {
- printf("isic: config error: no I/O base specified for ITK ix1 micro!\n");
- return 1;
- }
- if (iosize) *iosize = 4;
- if (msize) *msize = 0;
- if (maps == NULL) {
- *num_mappings = 1;
- return 0;
- }
- *num_mappings = 0;
- maps[0].size = 4;
- maps[0].t = iot;
- maps[0].offset = 0;
- if (bus_space_map(iot, iobase, 4, 0, &maps[0].h)) {
- return 1;
- }
- *num_mappings = 1;
- break;
-
- default:
- printf("isic: config error: flags do not specify any known card!\n");
- return 1;
- break;
- }
-
- return 0;
-}
-
-static void
-args_unmap(int *num_mappings, struct isic_io_map *maps)
-{
- int i, n;
- for (i = 0, n = *num_mappings; i < n; i++)
- if (maps[i].size)
- bus_space_unmap(maps[i].t, maps[i].h, maps[i].size);
- *num_mappings = 0;
-}
diff --git a/sys/dev/isa/isic_isa_avm_a1.c b/sys/dev/isa/isic_isa_avm_a1.c
deleted file mode 100644
index 401e91f384c..00000000000
--- a/sys/dev/isa/isic_isa_avm_a1.c
+++ /dev/null
@@ -1,508 +0,0 @@
-/*
- * Copyright (c) 1996 Andrew Gordon. All rights reserved.
- *
- * Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * i4b_avm_a1.c - AVM A1/Fritz passive card driver for isdn4bsd
- * ------------------------------------------------------------
- *
- * $Id: isic_isa_avm_a1.c,v 1.10 2007/10/19 12:00:19 ad Exp $
- *
- * last edit-date: [Fri Jan 5 11:37:22 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isa_avm_a1.c,v 1.10 2007/10/19 12:00:19 ad Exp $");
-
-#include "opt_isicisa.h"
-#ifdef ISICISA_AVM_A1
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#endif
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#ifndef __FreeBSD__
-static u_int8_t avma1_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-static void avma1_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static void avma1_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-static void avma1_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size);
-#endif
-
-/*---------------------------------------------------------------------------*
- * AVM A1 and AVM Fritz! Card special registers
- *---------------------------------------------------------------------------*/
-
-#define AVM_CONF_REG 0x1800 /* base offset for config register */
-#define AVM_CONF_IRQ 0x1801 /* base offset for IRQ register */
- /* config register write */
-#define AVM_CONF_WR_RESET 0x01 /* 1 = RESET ISAC and HSCX */
-#define AVM_CONF_WR_CCL 0x02 /* 1 = clear counter low nibble */
-#define AVM_CONF_WR_CCH 0x04 /* 1 = clear counter high nibble */
-#define AVM_CONF_WR_IRQEN 0x08 /* 1 = enable IRQ */
-#define AVM_CONF_WR_TEST 0x10 /* test bit */
- /* config register read */
-#define AVM_CONF_RD_IIRQ 0x01 /* 0 = ISAC IRQ active */
-#define AVM_CONF_RD_HIRQ 0x02 /* 0 = HSCX IRQ active */
-#define AVM_CONF_RD_CIRQ 0x04 /* 0 = counter IRQ active */
-#define AVM_CONF_RD_ZER1 0x08 /* unused, always read 0 */
-#define AVM_CONF_RD_TEST 0x10 /* test bit read back */
-#define AVM_CONF_RD_ZER2 0x20 /* unused, always read 0 */
-
-/*---------------------------------------------------------------------------*
- * AVM read fifo routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static void
-avma1_read_fifo(void *buf, const void *base, size_t len)
-{
- insb((int)base - 0x3e0, (u_char *)buf, (u_int)len);
-}
-#else
-static void
-avma1_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[what+4].t;
- bus_space_handle_t h = sc->sc_maps[what+4].h;
- bus_space_read_multi_1(t, h, 0, buf, size);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * AVM write fifo routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static void
-avma1_write_fifo(void *base, const void *buf, size_t len)
-{
- outsb((int)base - 0x3e0, (u_char *)buf, (u_int)len);
-}
-#else
-static void
-avma1_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[what+4].t;
- bus_space_handle_t h = sc->sc_maps[what+4].h;
- bus_space_write_multi_1(t, h, 0, buf, size);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * AVM write register routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static void
-avma1_write_reg(u_char *base, u_int offset, u_int v)
-{
- outb((int)base + offset, (u_char)v);
-}
-#else
-static void
-avma1_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_space_write_1(t, h, offs, data);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * AVM read register routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static u_char
-avma1_read_reg(u_char *base, u_int offset)
-{
- return (inb((int)base + offset));
-}
-#else
-static u_int8_t
-avma1_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- return bus_space_read_1(t, h, offs);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_probe_avma1 - probe for AVM A1 and compatibles
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-int
-isic_probe_avma1(struct isa_device *dev)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
- u_char savebyte;
- u_char byte;
-
- /* check max unit range */
-
- if(dev->id_unit >= ISIC_MAXUNIT)
- {
- printf("isic%d: Error, unit %d >= ISIC_MAXUNIT for AVM A1/Fritz!\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /* check IRQ validity */
-
- switch(ffs(dev->id_irq)-1)
- {
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
- case 15:
- break;
-
- default:
- printf("isic%d: Error, invalid IRQ [%d] specified for AVM A1/Fritz!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- break;
- }
- sc->sc_irq = dev->id_irq;
-
- /* check if memory addr specified */
-
- if(dev->id_maddr)
- {
- printf("isic%d: Error, mem addr 0x%lx specified for AVM A1/Fritz!\n",
- dev->id_unit, (u_long)dev->id_maddr);
- return(0);
- }
-
- dev->id_msize = 0;
-
- /* check if we got an iobase */
-
- switch(dev->id_iobase)
- {
- case 0x200:
- case 0x240:
- case 0x300:
- case 0x340:
- break;
-
- default:
- printf("isic%d: Error, invalid iobase 0x%x specified for AVM A1/Fritz!\n",
- dev->id_unit, dev->id_iobase);
- return(0);
- break;
- }
- sc->sc_port = dev->id_iobase;
-
- sc->clearirq = NULL;
- sc->readreg = avma1_read_reg;
- sc->writereg = avma1_write_reg;
-
- sc->readfifo = avma1_read_fifo;
- sc->writefifo = avma1_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_AVMA1;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
-
- ISAC_BASE = (void *)dev->id_iobase + 0x1400 - 0x20;
-
- HSCX_A_BASE = (void *)dev->id_iobase + 0x400 - 0x20;
- HSCX_B_BASE = (void *)dev->id_iobase + 0xc00 - 0x20;
-
- /*
- * Read HSCX A/B VSTR.
- * Expected value for AVM A1 is 0x04 or 0x05 and for the
- * AVM Fritz!Card is 0x05 in the least significant bits.
- */
-
- if( (((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) &&
- ((HSCX_READ(0, H_VSTR) & 0xf) != 0x4)) ||
- (((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) &&
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x4)) )
- {
- printf("isic%d: HSCX VSTR test failed for AVM A1/Fritz\n",
- dev->id_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- /* AVM A1 or Fritz! control register bits: */
- /* read write */
- /* 0x01 hscx irq* RESET */
- /* 0x02 isac irq* clear counter1 */
- /* 0x04 counter irq* clear counter2 */
- /* 0x08 always 0 irq enable */
- /* 0x10 read test bit set test bit */
- /* 0x20 always 0 unused */
-
- /*
- * XXX the following test may be destructive, to prevent the
- * worst case, we save the byte first, and in case the test
- * fails, we write back the saved byte .....
- */
-
- savebyte = inb(dev->id_iobase + AVM_CONF_REG);
-
- /* write low to test bit */
-
- outb(dev->id_iobase + AVM_CONF_REG, 0x00);
-
- /* test bit and next higher and lower bit must be 0 */
-
- if((byte = inb(dev->id_iobase + AVM_CONF_REG) & 0x38) != 0x00)
- {
- printf("isic%d: Error, probe-1 failed, 0x%02x should be 0x00 for AVM A1/Fritz!\n",
- dev->id_unit, byte);
- outb(dev->id_iobase + AVM_CONF_REG, savebyte);
- return (0);
- }
-
- /* write high to test bit */
-
- outb(dev->id_iobase + AVM_CONF_REG, 0x10);
-
- /* test bit must be high, next higher and lower bit must be 0 */
-
- if((byte = inb(dev->id_iobase + AVM_CONF_REG) & 0x38) != 0x10)
- {
- printf("isic%d: Error, probe-2 failed, 0x%02x should be 0x10 for AVM A1/Fritz!\n",
- dev->id_unit, byte);
- outb(dev->id_iobase + AVM_CONF_REG, savebyte);
- return (0);
- }
-
- return (1);
-}
-
-#else
-
-int
-isic_probe_avma1(struct isic_attach_args *ia)
-{
- u_int8_t savebyte, v1, v2;
-
- /*
- * Read HSCX A/B VSTR.
- * Expected value for AVM A1 is 0x04 or 0x05 and for the
- * AVM Fritz!Card is 0x05 in the least significant bits.
- */
-
- v1 = bus_space_read_1(ia->ia_maps[ISIC_WHAT_HSCXA+1].t, ia->ia_maps[ISIC_WHAT_HSCXA+1].h, H_VSTR) & 0x0f;
- v2 = bus_space_read_1(ia->ia_maps[ISIC_WHAT_HSCXB+1].t, ia->ia_maps[ISIC_WHAT_HSCXB+1].h, H_VSTR) & 0x0f;
- if (v1 != v2 || (v1 != 0x05 && v1 != 0x04))
- return 0;
-
- /* AVM A1 or Fritz! control register bits: */
- /* read write */
- /* 0x01 hscx irq* RESET */
- /* 0x02 isac irq* clear counter1 */
- /* 0x04 counter irq* clear counter2 */
- /* 0x08 always 0 irq enable */
- /* 0x10 read test bit set test bit */
- /* 0x20 always 0 unused */
-
- /*
- * XXX the following test may be destructive, to prevent the
- * worst case, we save the byte first, and in case the test
- * fails, we write back the saved byte .....
- */
-
- savebyte = bus_space_read_1(ia->ia_maps[0].t, ia->ia_maps[0].h, 0);
-
- /* write low to test bit */
-
- bus_space_write_1(ia->ia_maps[0].t, ia->ia_maps[0].h, 0, 0);
-
- /* test bit and next higher and lower bit must be 0 */
-
- if((bus_space_read_1(ia->ia_maps[0].t, ia->ia_maps[0].h, 0) & 0x38) != 0x00)
- {
- bus_space_write_1(ia->ia_maps[0].t, ia->ia_maps[0].h, 0, savebyte);
- return 0;
- }
-
- /* write high to test bit */
-
- bus_space_write_1(ia->ia_maps[0].t, ia->ia_maps[0].h, 0, 0x10);
-
- /* test bit must be high, next higher and lower bit must be 0 */
-
- if((bus_space_read_1(ia->ia_maps[0].t, ia->ia_maps[0].h, 0) & 0x38) != 0x10)
- {
- bus_space_write_1(ia->ia_maps[0].t, ia->ia_maps[0].h, 0, savebyte);
- return 0;
- }
-
- return (1);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_attach_avma1 - attach AVM A1 and compatibles
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-int
-isic_attach_avma1(struct isa_device *dev)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-
- /* reset the HSCX and ISAC chips */
-
- outb(dev->id_iobase + AVM_CONF_REG, 0x00);
- DELAY(SEC_DELAY / 10);
-
- outb(dev->id_iobase + AVM_CONF_REG, AVM_CONF_WR_RESET);
- DELAY(SEC_DELAY / 10);
-
- outb(dev->id_iobase + AVM_CONF_REG, 0x00);
- DELAY(SEC_DELAY / 10);
-
- /* setup IRQ */
-
- outb(dev->id_iobase + AVM_CONF_IRQ, (ffs(sc->sc_irq)) - 1);
- DELAY(SEC_DELAY / 10);
-
- /* enable IRQ, disable counter IRQ */
-
- outb(dev->id_iobase + AVM_CONF_REG, AVM_CONF_WR_IRQEN |
- AVM_CONF_WR_CCH | AVM_CONF_WR_CCL);
- DELAY(SEC_DELAY / 10);
-
- return (1);
-}
-
-#else
-
-int
-isic_attach_avma1(struct isic_softc *sc)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
-
- sc->clearirq = NULL;
- sc->readreg = avma1_read_reg;
- sc->writereg = avma1_write_reg;
-
- sc->readfifo = avma1_read_fifo;
- sc->writefifo = avma1_write_fifo;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* reset the HSCX and ISAC chips */
-
- bus_space_write_1(t, h, 0, 0x00);
- DELAY(SEC_DELAY / 10);
-
- bus_space_write_1(t, h, 0, AVM_CONF_WR_RESET);
- DELAY(SEC_DELAY / 10);
-
- bus_space_write_1(t, h, 0, 0x00);
- DELAY(SEC_DELAY / 10);
-
- /* setup IRQ */
-
- bus_space_write_1(t, h, 1, sc->sc_irq);
- DELAY(SEC_DELAY / 10);
-
- /* enable IRQ, disable counter IRQ */
-
- bus_space_write_1(t, h, 0, AVM_CONF_WR_IRQEN |
- AVM_CONF_WR_CCH | AVM_CONF_WR_CCL);
- DELAY(SEC_DELAY / 10);
-
- return (1);
-}
-#endif
-
-#endif /* ISICISA_AVM_A1 */
diff --git a/sys/dev/isa/isic_isa_itk_ix1.c b/sys/dev/isa/isic_isa_itk_ix1.c
deleted file mode 100644
index 71faf4c29bb..00000000000
--- a/sys/dev/isa/isic_isa_itk_ix1.c
+++ /dev/null
@@ -1,494 +0,0 @@
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isa_itk_ix1.c,v 1.18 2012/10/27 17:18:25 chs Exp $");
-
-#include "opt_isicisa.h"
-
-/*
- * The ITK ix1 micro ISDN card is an ISA card with one region
- * of four io ports mapped and a fixed irq all jumpered on the card.
- * Access to the board is straight forward and simmilar to
- * the ELSA and DYNALINK cards. If a PCI version of this card
- * exists all we need is probably a pci-bus attachment, all
- * this low level routines should work immediately.
- *
- * To reset the card:
- * - write 0x01 to ITK_CONFIG
- * - wait >= 10 ms
- * - write 0x00 to ITK_CONFIG
- *
- * To read or write data:
- * - write address to ITK_ALE port
- * - read data from or write data to ITK_ISAC_DATA port or ITK_HSCX_DATA port
- * The two HSCX channel registers are offset by HSCXA (0x00) and HSCXB (0x40).
- *
- * The probe routine was derived by trial and error from a representative
- * sample of two cards ;-) The standard way (checking HSCX versions)
- * was extended by reading a zero from a non existent HSCX register (register
- * 0xff). Reading the config register gives varying results, so this doesn't
- * seem to be used as an id register (like the Teles S0/16.3).
- *
- * If the probe fails for your card use "options ITK_PROBE_DEBUG" to get
- * additional debug output.
- *
- */
-
-#ifdef ISICISA_ITKIX1
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#endif
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#include <netisdn/i4b_global.h>
-
-/* Register offsets */
-#define ITK_ISAC_DATA 0
-#define ITK_HSCX_DATA 1
-#define ITK_ALE 2
-#define ITK_CONFIG 3
-
-/* Size of IO range to allocate for this card */
-#define ITK_IO_SIZE 4
-
-/* Register offsets for the two HSCX channels */
-#define HSCXA 0
-#define HSCXB 0x40
-
-/*
- * Local function prototypes
- */
-#ifdef __FreeBSD__
-/* FreeBSD version */
-static void itkix1_read_fifo(void *buf, const void *base, size_t len);
-static void itkix1_write_fifo(void *base, const void *buf, size_t len);
-static void itkix1_write_reg(u_char *base, u_int offset, u_int v);
-static u_char itkix1_read_reg(u_char *base, u_int offset);
-#else
-/* NetBSD/OpenBSD version */
-static void itkix1_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-static void itkix1_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size);
-static void itkix1_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static u_int8_t itkix1_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-#endif
-
-/*
- * Probe for card
- */
-#ifdef __FreeBSD__
-int
-isic_probe_itkix1(struct isa_device *dev)
-{
- u_int8_t hd, hv1, hv2, saveale;
- int ret;
-
- /* save old value of this port, we're stomping over it */
- saveale = inb(dev->id_iobase + ITK_ALE);
-
- /* select invalid register */
- outb(dev->id_iobase + ITK_ALE, 0xff);
- /* get HSCX data for this non existent register */
- hd = inb(dev->id_iobase + ITK_HSCX_DATA);
- /* get HSCX version info */
- outb(dev->id_iobase + ITK_ALE, HSCXA + H_VSTR);
- hv1 = inb(dev->id_iobase + ITK_HSCX_DATA);
- outb(dev->id_iobase + ITK_ALE, HSCXB + H_VSTR);
- hv2 = inb(dev->id_iobase + ITK_HSCX_DATA);
-
- /* succeed if version bits are OK and we got a zero from the
- * non existent register. we found verison 0x05 and 0x04
- * out there... */
- ret = (hd == 0)
- && (((hv1 & 0x0f) == 0x05) || ((hv1 & 0x0f) == 0x04))
- && (((hv2 & 0x0f) == 0x05) || ((hv2 & 0x0f) == 0x04));
-
- /* retstore save value if we fail (if we succeed the old value
- * has no meaning) */
- if (!ret)
- outb(dev->id_iobase + ITK_ALE, saveale);
-
-#ifdef ITK_PROBE_DEBUG
- printf("\nITK ix1 micro probe: hscx = 0x%02x, v1 = 0x%02x, v2 = 0x%02x, would have %s\n",
- hd, hv1, hv2, ret ? "succeeded" : "failed");
- return 1;
-#else
- return ret;
-#endif
-}
-#else
-int
-isic_probe_itkix1(struct isic_attach_args *ia)
-{
- bus_space_tag_t t = ia->ia_maps[0].t;
- bus_space_handle_t h = ia->ia_maps[0].h;
- u_int8_t hd, hv1, hv2, saveale;
- int ret;
-
- /* save old value of this port, we're stomping over it */
- saveale = bus_space_read_1(t, h, ITK_ALE);
-
- /* select invalid register */
- bus_space_write_1(t, h, ITK_ALE, 0xff);
- /* get HSCX data for this non existent register */
- hd = bus_space_read_1(t, h, ITK_HSCX_DATA);
- /* get HSCX version info */
- bus_space_write_1(t, h, ITK_ALE, HSCXA + H_VSTR);
- hv1 = bus_space_read_1(t, h, ITK_HSCX_DATA);
- bus_space_write_1(t, h, ITK_ALE, HSCXB + H_VSTR);
- hv2 = bus_space_read_1(t, h, ITK_HSCX_DATA);
-
- ret = (hd == 0) && ((hv1 & 0x0f) == 0x05) && ((hv2 & 0x0f) == 0x05);
- /* succeed if version bits are OK and we got a zero from the
- * non existent register. we found verison 0x05 and 0x04
- * out there... */
- ret = (hd == 0)
- && (((hv1 & 0x0f) == 0x05) || ((hv1 & 0x0f) == 0x04))
- && (((hv2 & 0x0f) == 0x05) || ((hv2 & 0x0f) == 0x04));
-
- /* retstore save value if we fail (if we succeed the old value
- * has no meaning) */
- if (!ret)
- bus_space_write_1(t, h, ITK_ALE, saveale);
-
-#ifdef ITK_PROBE_DEBUG
- printf("\nITK ix1 micro probe: hscx = 0x%02x, v1 = 0x%02x, v2 = 0x%02x, would have %s\n",
- hd, hv1, hv2, ret ? "succeeded" : "failed");
- return 1;
-#else
- return ret;
-#endif
-}
-#endif
-
-/*
- * Attach card
- */
-#ifdef __FreeBSD__
-int
-isic_attach_itkix1(struct isa_device *dev)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
- u_int8_t hv1, hv2;
-
- sc->sc_irq = dev->id_irq;
-
- dev->id_msize = 0;
-
- /* check if we got an iobase */
- sc->sc_port = dev->id_iobase;
-
- /* setup access routines */
- sc->clearirq = NULL;
- sc->readreg = itkix1_read_reg;
- sc->writereg = itkix1_write_reg;
- sc->readfifo = itkix1_read_fifo;
- sc->writefifo = itkix1_write_fifo;
-
- /* setup card type */
- sc->sc_cardtyp = CARD_TYPEP_ITKIX1;
-
- /* setup IOM bus type */
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
- ISAC_BASE = (void *) sc->sc_port;
- HSCX_A_BASE = (void *) sc->sc_port + 1;
- HSCX_B_BASE = (void *) sc->sc_port + 2;
-
- /* Read HSCX A/B VSTR. Expected value is 0x05 (V2.1) or 0x04 (V2.0). */
- hv1 = HSCX_READ(0, H_VSTR) & 0xf;
- hv2 = HSCX_READ(1, H_VSTR) & 0xf;
- if((hv1 != 0x05 && hv1 != 0x04) || (hv2 != 0x05 && hv2 != 0x04))
- {
- printf("isic%d: HSCX VSTR test failed for ITK ix1 micro\n",
- dev->id_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- outb((dev->id_iobase)+ITK_CONFIG, 1);
- DELAY(SEC_DELAY / 10);
- outb((dev->id_iobase)+ITK_CONFIG, 0);
- DELAY(SEC_DELAY / 10);
- return(1);
-}
-
-#else
-
-int isic_attach_itkix1(struct isic_softc *sc)
-{
- u_int8_t hv1, hv2;
-
- /* setup access routines */
- sc->clearirq = NULL;
- sc->readreg = itkix1_read_reg;
- sc->writereg = itkix1_write_reg;
- sc->readfifo = itkix1_read_fifo;
- sc->writefifo = itkix1_write_fifo;
-
- /* setup card type */
- sc->sc_cardtyp = CARD_TYPEP_ITKIX1;
-
- /* setup IOM bus type */
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* Read HSCX A/B VSTR. Expected value is 0x05 (V2.1) or 0x04 (V2.0). */
- hv1 = HSCX_READ(0, H_VSTR) & 0xf;
- hv2 = HSCX_READ(1, H_VSTR) & 0xf;
- if((hv1 != 0x05 && hv1 != 0x04) || (hv2 != 0x05 && hv2 != 0x04))
- {
- printf("%s: HSCX VSTR test failed for ITK ix1 micro\n",
- device_xname(sc->sc_dev));
- printf("%s: HSC0: VSTR: %#x\n",
- device_xname(sc->sc_dev), HSCX_READ(0, H_VSTR));
- printf("%s: HSC1: VSTR: %#x\n",
- device_xname(sc->sc_dev), HSCX_READ(1, H_VSTR));
- return 0;
- }
-
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h, ITK_CONFIG, 1);
- DELAY(SEC_DELAY / 10);
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h, ITK_CONFIG, 0);
- DELAY(SEC_DELAY / 10);
- return 1;
-}
-
-#endif
-
-#ifdef __FreeBSD__
-static void
-itkix1_read_fifo(void *buf, const void *base, size_t len)
-{
- u_int port = (u_int)base & ~0x0003;
- switch ((u_int)base & 3) {
- case 0: /* ISAC */
- outb(port+ITK_ALE, 0);
- insb(port+ITK_ISAC_DATA, (u_char *)buf, (u_int)len);
- break;
- case 1: /* HSCXA */
- outb(port+ITK_ALE, HSCXA);
- insb(port+ITK_HSCX_DATA, (u_char *)buf, (u_int)len);
- break;
- case 2: /* HSCXB */
- outb(port+ITK_ALE, HSCXB);
- insb(port+ITK_HSCX_DATA, (u_char *)buf, (u_int)len);
- break;
- }
-}
-#else
-static void
-itkix1_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ITK_ALE, 0);
- bus_space_read_multi_1(t, h, ITK_ISAC_DATA, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ITK_ALE, HSCXA);
- bus_space_read_multi_1(t, h, ITK_HSCX_DATA, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ITK_ALE, HSCXB);
- bus_space_read_multi_1(t, h, ITK_HSCX_DATA, buf, size);
- break;
- }
-}
-#endif
-
-#ifdef __FreeBSD__
-static void
-itkix1_write_fifo(void *base, const void *buf, size_t len)
-{
- u_int port = (u_int)base & ~0x0003;
- switch ((u_int)base & 3) {
- case 0: /* ISAC */
- outb(port+ITK_ALE, 0);
- outsb(port+ITK_ISAC_DATA, (u_char *)buf, (u_int)len);
- break;
- case 1: /* HSCXA */
- outb(port+ITK_ALE, HSCXA);
- outsb(port+ITK_HSCX_DATA, (u_char *)buf, (u_int)len);
- break;
- case 2: /* HSCXB */
- outb(port+ITK_ALE, HSCXB);
- outsb(port+ITK_HSCX_DATA, (u_char *)buf, (u_int)len);
- break;
- }
-}
-#else
-static void itkix1_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ITK_ALE, 0);
- bus_space_write_multi_1(t, h, ITK_ISAC_DATA, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ITK_ALE, HSCXA);
- bus_space_write_multi_1(t, h, ITK_HSCX_DATA, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ITK_ALE, HSCXB);
- bus_space_write_multi_1(t, h, ITK_HSCX_DATA, buf, size);
- break;
- }
-}
-#endif
-
-#ifdef __FreeBSD__
-static void
-itkix1_write_reg(u_char *base, u_int offset, u_int v)
-{
- u_int port = (u_int)base & ~0x0003;
- switch ((u_int)base & 3) {
- case 0: /* ISAC */
- outb(port+ITK_ALE, offset);
- outb(port+ITK_ISAC_DATA, (u_char)v);
- break;
- case 1: /* HSCXA */
- outb(port+ITK_ALE, HSCXA+offset);
- outb(port+ITK_HSCX_DATA, (u_char)v);
- break;
- case 2: /* HSCXB */
- outb(port+ITK_ALE, HSCXB+offset);
- outb(port+ITK_HSCX_DATA, (u_char)v);
- break;
- }
-}
-#else
-static void itkix1_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ITK_ALE, offs);
- bus_space_write_1(t, h, ITK_ISAC_DATA, data);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ITK_ALE, HSCXA+offs);
- bus_space_write_1(t, h, ITK_HSCX_DATA, data);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ITK_ALE, HSCXB+offs);
- bus_space_write_1(t, h, ITK_HSCX_DATA, data);
- break;
- }
-}
-#endif
-
-#ifdef __FreeBSD__
-static u_char
-itkix1_read_reg(u_char *base, u_int offset)
-{
- u_int port = (u_int)base & ~0x0003;
- switch ((u_int)base & 3) {
- case 0: /* ISAC */
- outb(port+ITK_ALE, offset);
- return (inb(port+ITK_ISAC_DATA));
- case 1: /* HSCXA */
- outb(port+ITK_ALE, HSCXA+offset);
- return (inb(port+ITK_HSCX_DATA));
- case 2: /* HSCXB */
- outb(port+ITK_ALE, HSCXB+offset);
- return (inb(port+ITK_HSCX_DATA));
- }
-}
-#else
-static u_int8_t itkix1_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ITK_ALE, offs);
- return bus_space_read_1(t, h, ITK_ISAC_DATA);
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ITK_ALE, HSCXA+offs);
- return bus_space_read_1(t, h, ITK_HSCX_DATA);
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ITK_ALE, HSCXB+offs);
- return bus_space_read_1(t, h, ITK_HSCX_DATA);
- }
- return 0;
-}
-#endif
-
-#endif /* ISICISA_ITKIX1 */
diff --git a/sys/dev/isa/isic_isa_tel_s016.c b/sys/dev/isa/isic_isa_tel_s016.c
deleted file mode 100644
index 438eb54bad4..00000000000
--- a/sys/dev/isa/isic_isa_tel_s016.c
+++ /dev/null
@@ -1,459 +0,0 @@
-/*
- * Copyright (c) 1996 Arne Helme. All rights reserved.
- *
- * Copyright (c) 1996 Gary Jennejohn. All rights reserved.
- *
- * Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * isic - I4B Siemens ISDN Chipset Driver for Teles S0/16 and clones
- * =================================================================
- *
- * $Id: isic_isa_tel_s016.c,v 1.9 2007/10/19 12:00:19 ad Exp $
- *
- * last edit-date: [Fri Jan 5 11:37:22 2001]
- *
- * -hm clean up
- * -hm checked with a Creatix ISDN-S0 (PCB version: mp 130.1)
- * -hm more cleanup
- * -hm NetBSD patches from Martin
- * -hm converting asm -> C
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isa_tel_s016.c,v 1.9 2007/10/19 12:00:19 ad Exp $");
-
-#include "opt_isicisa.h"
-#ifdef ISICISA_TEL_S0_16
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <machine/md_var.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#endif
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-static u_char intr_no[] = { 1, 1, 0, 2, 4, 6, 1, 1, 1, 0, 8, 10, 12, 1, 1, 14 };
-
-#ifndef __FreeBSD__
-static u_int8_t tels016_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-static void tels016_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static void tels016_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-static void tels016_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size);
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/16 write register routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-tels016_write_reg(u_char *base, u_int i, u_int v)
-{
- if(i & 0x01)
- i |= 0x200;
- base[i] = v;
-}
-
-#else
-
-static const bus_size_t offset[] = { 0x100, 0x180, 0x1c0 };
-
-static void
-tels016_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[1].t;
- bus_space_handle_t h = sc->sc_maps[1].h;
-
- offs += offset[what];
- if (offs & 0x01)
- offs |= 0x200;
-
- bus_space_write_1(t, h, offs, data);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/16 read register routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static u_char
-tels016_read_reg(u_char *base, u_int i)
-{
- if(i & 0x1)
- i |= 0x200;
- return(base[i]);
-}
-
-#else
-
-static u_int8_t
-tels016_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[1].t;
- bus_space_handle_t h = sc->sc_maps[1].h;
-
- offs += offset[what];
-
- if(offs & 0x01)
- offs |= 0x200;
-
- return bus_space_read_1(t, h, offs);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/16 fifo read/write routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-tels016_memcpyb(void *to, const void *from, size_t len)
-{
- for(;len > 0; len--)
- *((unsigned char *)to)++ = *((unsigned char *)from)++;
-}
-
-#else
-
-static void
-tels016_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[1].t;
- bus_space_handle_t h = sc->sc_maps[1].h;
- bus_space_write_region_1(t, h, offset[what], data, size);
-}
-
-static void
-tels016_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[1].t;
- bus_space_handle_t h = sc->sc_maps[1].h;
- bus_space_read_region_1(t, h, offset[what], buf, size);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_probe_s016 - probe for Teles S0/16 and compatibles
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-int
-isic_probe_s016(struct isa_device *dev)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
- u_char byte;
-
- /* check max unit range */
-
- if(dev->id_unit >= ISIC_MAXUNIT)
- {
- printf("isic%d: Error, unit %d >= ISIC_MAXUNIT for Teles S0/16!\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /* check IRQ validity */
-
- if((intr_no[ffs(dev->id_irq) - 1]) == 1)
- {
- printf("isic%d: Error, invalid IRQ [%d] specified for Teles S0/16!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- }
- sc->sc_irq = dev->id_irq;
-
- /* check if we got an iobase */
-
- switch(dev->id_iobase)
- {
- case 0xd80:
- case 0xe80:
- case 0xf80:
- break;
-
- default:
- printf("isic%d: Error, invalid iobase 0x%x specified for Teles S0/16!\n",
- dev->id_unit, dev->id_iobase);
- return(0);
- break;
- }
- sc->sc_port = dev->id_iobase;
-
- /* check if valid memory addr */
-
- switch((unsigned int)kvtop(dev->id_maddr))
- {
- case 0xc0000:
- case 0xc2000:
- case 0xc4000:
- case 0xc6000:
- case 0xc8000:
- case 0xca000:
- case 0xcc000:
- case 0xce000:
- case 0xd0000:
- case 0xd2000:
- case 0xd4000:
- case 0xd6000:
- case 0xd8000:
- case 0xda000:
- case 0xdc000:
- case 0xde000:
- break;
-
- default:
- printf("isic%d: Error, invalid mem addr 0x%lx for Teles S0/16!\n",
- dev->id_unit, kvtop(dev->id_maddr));
- return(0);
- break;
- }
- sc->sc_vmem_addr = (void *) dev->id_maddr;
- dev->id_msize = 0x1000;
-
- /* check card signature */
-
- if((byte = inb(sc->sc_port)) != 0x51)
- {
- printf("isic%d: Error, signature 1 0x%x != 0x51 for Teles S0/16!\n",
- dev->id_unit, byte);
- return(0);
- }
-
- if((byte = inb(sc->sc_port + 1)) != 0x93)
- {
- printf("isic%d: Error, signature 2 0x%x != 0x93 for Teles S0/16!\n",
- dev->id_unit, byte);
- return(0);
- }
-
- byte = inb(sc->sc_port + 2);
-
- if((byte != 0x1e) && (byte != 0x1f))
- {
- printf("isic%d: Error, signature 3 0x%x != 0x1e or 0x1f for Teles S0/16!\n",
- dev->id_unit, byte);
- return(0);
- }
-
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = tels016_read_reg;
- sc->writereg = tels016_write_reg;
-
- sc->readfifo = tels016_memcpyb;
- sc->writefifo = tels016_memcpyb;
-
- /* setup card type */
-
- sc->sc_cardtyp= CARD_TYPEP_16;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM1;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC base addr */
-
- ISAC_BASE = (void *) ((dev->id_maddr) + 0x100);
-
- /* setup HSCX base addr */
-
- HSCX_A_BASE = (void *) ((dev->id_maddr) + 0x180);
- HSCX_B_BASE = (void *) ((dev->id_maddr) + 0x1c0);
-
- return (1);
-}
-
-#else
-
-int
-isic_probe_s016(struct isic_attach_args *ia)
-{
- bus_space_tag_t t = ia->ia_maps[0].t;
- bus_space_handle_t h = ia->ia_maps[0].h;
- u_int8_t b0, b1, b2;
-
- b0 = bus_space_read_1(t, h, 0);
- b1 = bus_space_read_1(t, h, 1);
- b2 = bus_space_read_1(t, h, 2);
-
- if (b0 == 0x51 && b1 == 0x93 && (b2 == 0x1e || b2 == 0x1f))
- return 1;
-
- return 0;
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_attach_s016 - attach Teles S0/16 and compatibles
- *---------------------------------------------------------------------------*/
-int
-#ifdef __FreeBSD__
-isic_attach_s016(struct isa_device *dev)
-#else
-isic_attach_s016(struct isic_softc *sc)
-#endif
-{
-
-#ifdef __FreeBSD__
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-#endif
-
- u_long irq;
-
-#ifndef __FreeBSD__
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = tels016_read_reg;
- sc->writereg = tels016_write_reg;
-
- sc->readfifo = tels016_read_fifo;
- sc->writefifo = tels016_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp= CARD_TYPEP_16;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM1;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
-#endif
-
-#ifdef __FreeBSD__
- if((irq = intr_no[ffs(dev->id_irq) - 1]) == 1)
- {
- printf("isic%d: Attach error, invalid IRQ [%d] specified for Teles S0/16!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- }
-#else
- irq = intr_no[sc->sc_irq];
-#endif
-
- /* configure IRQ */
-
-#ifdef __FreeBSD__
- irq |= ((u_long) sc->sc_vmem_addr) >> 9;
-
- DELAY(SEC_DELAY / 10);
- outb(sc->sc_port + 4, irq);
-
- DELAY(SEC_DELAY / 10);
- outb(sc->sc_port + 4, irq | 0x01);
-
- DELAY(SEC_DELAY / 5);
-
- /* set card bit off */
-
- sc->sc_vmem_addr[0x80] = 0;
- DELAY(SEC_DELAY / 5);
-
- /* set card bit on */
-
- sc->sc_vmem_addr[0x80] = 1;
- DELAY(SEC_DELAY / 5);
-
-#else
-
- irq |= ((sc->sc_maddr >> 9) & 0x000000f0);
-
- DELAY(SEC_DELAY / 10);
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h, 4, irq);
-
- DELAY(SEC_DELAY / 10);
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h, 4, irq | 0x01);
-
- DELAY(SEC_DELAY / 5);
-
- /* set card bit off */
-
- bus_space_write_1(sc->sc_maps[1].t, sc->sc_maps[1].h, 0x80, 0);
- DELAY(SEC_DELAY / 5);
-
- /* set card bit on */
-
- bus_space_write_1(sc->sc_maps[1].t, sc->sc_maps[1].h, 0x80, 1);
- DELAY(SEC_DELAY / 5);
-#endif
-
- return (1);
-}
-
-#endif /* ISICISA_TEL_S0_16 */
-
diff --git a/sys/dev/isa/isic_isa_tel_s0163.c b/sys/dev/isa/isic_isa_tel_s0163.c
deleted file mode 100644
index e44686f865b..00000000000
--- a/sys/dev/isa/isic_isa_tel_s0163.c
+++ /dev/null
@@ -1,607 +0,0 @@
-/*
- * Copyright (c) 1996 Arne Helme. All rights reserved.
- *
- * Copyright (c) 1996 Gary Jennejohn. All rights reserved.
- *
- * Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * isic - I4B Siemens ISDN Chipset Driver for Teles S0/16.3
- * ========================================================
- *
- * $Id: isic_isa_tel_s0163.c,v 1.13 2012/10/27 17:18:25 chs Exp $
- *
- * last edit-date: [Fri Jan 5 11:37:22 2001]
- *
- * -hm clean up
- * -hm more cleanup
- * -hm NetBSD patches from Martin
- * -hm VSTR detection for older 16.3 cards
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isa_tel_s0163.c,v 1.13 2012/10/27 17:18:25 chs Exp $");
-
-#include "opt_isicisa.h"
-#ifdef ISICISA_TEL_S0_16_3
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#elif defined(__bsdi__)
- /* XXX */
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#endif
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-static u_char intr_no[] = { 1, 1, 0, 2, 4, 6, 1, 1, 1, 0, 8, 10, 12, 1, 1, 14 };
-
-#if !defined(__FreeBSD__) && !defined(__bsdi__)
-static u_int8_t tels0163_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-static void tels0163_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static void tels0163_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-static void tels0163_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size);
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/16.3 read fifo routine
- *---------------------------------------------------------------------------*/
-#if defined(__FreeBSD__) || defined(__bsdi__)
-
-static void
-tels0163_read_fifo(void *buf, const void *base, size_t len)
-{
- insb((int)base + 0x3e, (u_char *)buf, (u_int)len);
-}
-
-#else
-
-static void
-tels0163_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- bus_space_read_multi_1(t, h, o + 0x1e, buf, size);
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/16.3 write fifo routine
- *---------------------------------------------------------------------------*/
-#if defined(__FreeBSD__) || defined(__bsdi__)
-
-static void
-tels0163_write_fifo(void *base, const void *buf, size_t len)
-{
- outsb((int)base + 0x3e, (u_char *)buf, (u_int)len);
-}
-
-#else
-
-static void
-tels0163_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- bus_space_write_multi_1(t, h, o + 0x1e, buf, size);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/16.3 ISAC put register routine
- *---------------------------------------------------------------------------*/
-#if defined(__FreeBSD__) || defined(__bsdi__)
-
-static void
-tels0163_write_reg(u_char *base, u_int offset, u_int v)
-{
- outb((int)base + offset, (u_char)v);
-}
-
-#else
-
-static void
-tels0163_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- bus_space_write_1(t, h, o + offs - 0x20, data);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/16.3 ISAC get register routine
- *---------------------------------------------------------------------------*/
-#if defined(__FreeBSD__) || defined(__bsdi__)
-
-static u_char
-tels0163_read_reg(u_char *base, u_int offset)
-{
- return (inb((int)base + offset));
-}
-
-#else
-
-static u_int8_t
-tels0163_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- return bus_space_read_1(t, h, o + offs - 0x20);
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_probe_s0163 - probe for Teles S0/16.3 and compatibles
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-int
-isic_probe_s0163(struct isa_device *dev)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
- u_char byte;
-
- /* check max unit range */
-
- if(dev->id_unit >= ISIC_MAXUNIT)
- {
- printf("isic%d: Error, unit %d >= ISIC_MAXUNIT for Teles S0/16.3!\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /* check IRQ validity */
-
- if((intr_no[ffs(dev->id_irq) - 1]) == 1)
- {
- printf("isic%d: Error, invalid IRQ [%d] specified for Teles S0/16.3!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- }
- sc->sc_irq = dev->id_irq;
-
- /* check if memory addr specified */
-
- if(dev->id_maddr)
- {
- printf("isic%d: Error, mem addr 0x%lx specified for Teles S0/16.3!\n",
- dev->id_unit, (u_long)dev->id_maddr);
- return(0);
- }
-
- dev->id_msize = 0;
-
- /* check if we got an iobase */
-
- switch(dev->id_iobase)
- {
- case 0xd80:
- case 0xe80:
- case 0xf80:
- break;
-
- default:
- printf("isic%d: Error, invalid iobase 0x%x specified for Teles S0/16.3!\n",
- dev->id_unit, dev->id_iobase);
- return(0);
- break;
- }
- sc->sc_port = dev->id_iobase;
-
- if(((byte = inb(sc->sc_port)) != 0x51) && (byte != 0x10))
- {
- printf("isic%d: Error, signature 1 0x%x != 0x51 or 0x10 for Teles S0/16.3!\n",
- dev->id_unit, byte);
- return(0);
- }
-
- if((byte = inb(sc->sc_port + 1)) != 0x93)
- {
- printf("isic%d: Error, signature 2 0x%x != 0x93 for Teles S0/16.3!\n",
- dev->id_unit, byte);
- return(0);
- }
-
- if(((byte = inb(sc->sc_port + 2)) != 0x1c) && (byte != 0x1f))
- {
- printf("isic%d: Error, signature 3 0x%x != (0x1c||0x1f) for Teles S0/16.3!\n",
- dev->id_unit, byte);
- return(0);
- }
-
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = tels0163_read_reg;
- sc->writereg = tels0163_write_reg;
-
- sc->readfifo = tels0163_read_fifo;
- sc->writefifo = tels0163_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp= CARD_TYPEP_16_3;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
-
- switch(dev->id_iobase)
- {
- case 0xd80:
- ISAC_BASE = (void *) 0x960;
- HSCX_A_BASE = (void *) 0x160;
- HSCX_B_BASE = (void *) 0x560;
- break;
-
- case 0xe80:
- ISAC_BASE = (void *) 0xa60;
- HSCX_A_BASE = (void *) 0x260;
- HSCX_B_BASE = (void *) 0x660;
- break;
-
- case 0xf80:
- ISAC_BASE = (void *) 0xb60;
- HSCX_A_BASE = (void *) 0x360;
- HSCX_B_BASE = (void *) 0x760;
- break;
- }
-
- /*
- * Read HSCX A/B VSTR. Expected value for the S0/16.3 card is
- * 0x05 or 0x04 (for older 16.3's) in the least significant bits.
- */
-
- if( (((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) &&
- ((HSCX_READ(0, H_VSTR) & 0xf) != 0x4)) ||
- (((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) &&
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x4)) )
- {
- printf("isic%d: HSCX VSTR test failed for Teles S0/16.3\n",
- dev->id_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- return (1);
-}
-
-#elif defined(__bsdi__)
-
-static int
-set_softc(struct isic_softc *sc, struct isa_attach_args *ia, int unit)
-{
- sc->sc_irq = ia->ia_irq;
-
- /* check if we got an iobase */
-
- switch(ia->ia_iobase)
- {
- case 0xd80:
- case 0xe80:
- case 0xf80:
- break;
-
- default:
- printf("isic%d: Error, invalid iobase 0x%x specified for Teles S0/16.3!\n",
- unit, ia->ia_iobase);
- return(0);
- break;
- }
- sc->sc_port = ia->ia_iobase;
-
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = tels0163_read_reg;
- sc->writereg = tels0163_write_reg;
-
- sc->readfifo = tels0163_read_fifo;
- sc->writefifo = tels0163_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp= CARD_TYPEP_16_3;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
-
- switch(ia->ia_iobase)
- {
- case 0xd80:
- ISAC_BASE = (void *) 0x960;
- HSCX_A_BASE = (void *) 0x160;
- HSCX_B_BASE = (void *) 0x560;
- break;
-
- case 0xe80:
- ISAC_BASE = (void *) 0xa60;
- HSCX_A_BASE = (void *) 0x260;
- HSCX_B_BASE = (void *) 0x660;
- break;
-
- case 0xf80:
- ISAC_BASE = (void *) 0xb60;
- HSCX_A_BASE = (void *) 0x360;
- HSCX_B_BASE = (void *) 0x760;
- break;
- }
- return 1;
-}
-
-int
-isic_probe_s0163(device_t dev, cfdata_t cf,
- struct isa_attach_args *ia)
-{
- u_char byte;
- struct isic_softc dummysc, *sc = &dummysc;
-
- if((intr_no[ffs(ia->ia_irq) - 1]) == 1)
- {
- printf("isic%d: Error, invalid IRQ [%d] specified for Teles S0/16.3!\n",
- cf->cf_unit, ffs(ia->ia_irq)-1);
- return(0);
- }
-
- /* check if memory addr specified */
-
- if(ia->ia_maddr)
- {
- printf("isic%d: Error, mem addr 0x%lx specified for Teles S0/16.3!\n",
- cf->cf_unit, (u_long)ia->ia_maddr);
- return 0;
- }
-
- /* Set up a temporary softc for the probe */
-
- if (set_softc(sc, ia, cf->cf_unit) == 0)
- return 0;
-
- if((byte = inb(sc->sc_port)) != 0x51)
- {
- printf("isic%d: Error, signature 1 0x%x != 0x51 for Teles S0/16.3!\n",
- cf->cf_unit, byte);
- return(0);
- }
-
- if((byte = inb(sc->sc_port + 1)) != 0x93)
- {
- printf("isic%d: Error, signature 2 0x%x != 0x93 for Teles S0/16.3!\n",
- cf->cf_unit, byte);
- return(0);
- }
-
- if(((byte = inb(sc->sc_port + 2)) != 0x1c) && (byte != 0x1f))
- {
- printf("isic%d: Error, signature 3 0x%x != (0x1c||0x1f) for Teles S0/16.3!\n",
- cf->cf_unit, byte);
- return(0);
- }
-
- /*
- * Read HSCX A/B VSTR. Expected value for the S0/16.3 card is
- * 0x05 or 0x04 (for older 16.3's) in the least significant bits.
- */
-
- if( (((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) &&
- ((HSCX_READ(0, H_VSTR) & 0xf) != 0x4)) ||
- (((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) &&
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x4)) )
- {
- printf("isic%d: HSCX VSTR test failed for Teles S0/16.3\n",
- cf->cf_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- cf->cf_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- cf->cf_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- return (1);
-}
-
-
-#else
-
-int
-isic_probe_s0163(struct isic_attach_args *ia)
-{
- bus_space_tag_t t = ia->ia_maps[0].t;
- bus_space_handle_t h = ia->ia_maps[0].h;
- u_int8_t b0, b1, b2;
-
- b0 = bus_space_read_1(t, h, 0);
- b1 = bus_space_read_1(t, h, 1);
- b2 = bus_space_read_1(t, h, 2);
-
- if (b0 == 0x51 && b1 == 0x93 && (b2 == 0x1c || b2 == 0x1f))
- return 1;
-
- return 0;
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_attach_s0163 - attach Teles S0/16.3 and compatibles
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-int
-isic_attach_s0163(struct isa_device *dev)
-{
- u_char irq;
-
- if((irq = intr_no[ffs(dev->id_irq) - 1]) == 1)
- {
- printf("isic%d: Attach error, invalid IRQ [%d] specified for Teles S0/16.3!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- }
-
- /* configure IRQ */
-
- DELAY(SEC_DELAY / 10);
- outb(dev->id_iobase + 4, irq);
-
- DELAY(SEC_DELAY / 10);
- outb(dev->id_iobase + 4, irq | 0x01);
-
- return (1);
-}
-
-#elif defined(__bsdi__)
-
-extern int
-isic_attach_s0163(device_t parent, device_t self, struct isa_attach_args *ia)
-{
- u_char irq;
- struct isic_softc *sc = device_private(self);
- int unit = sc->sc_dev.dv_unit;
-
- /* Commit the probed attachement values */
-
- if (set_softc(sc, ia, unit) == 0)
- panic("isic_attach_s0163: set_softc");
-
- if (((unsigned)sc->sc_unit) >= NISIC)
- panic("attach isic%d; NISIC=%d", sc->sc_unit, NISIC);
- l1_sc[sc->sc_unit] = sc;
- irq = intr_no[ffs(sc->sc_irq) - 1];
- /* configure IRQ */
-
- DELAY(SEC_DELAY / 10);
- outb(sc->sc_port + 4, irq);
-
- DELAY(SEC_DELAY / 10);
- outb(sc->sc_port + 4, irq | 0x01);
-
- return 1;
-}
-#else
-
-int
-isic_attach_s0163(struct isic_softc *sc)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- u_int8_t irq = intr_no[sc->sc_irq];
-
- /* configure IRQ */
-
- DELAY(SEC_DELAY / 10);
- bus_space_write_1(t, h, 4, irq);
-
- DELAY(SEC_DELAY / 10);
- bus_space_write_1(t, h, 4, irq | 0x01);
-
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = tels0163_read_reg;
- sc->writereg = tels0163_write_reg;
-
- sc->readfifo = tels0163_read_fifo;
- sc->writefifo = tels0163_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp= CARD_TYPEP_16_3;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- return (1);
-}
-#endif
-
-#endif /* ISICISA_TEL_S0_16_3 */
-
diff --git a/sys/dev/isa/isic_isa_tel_s08.c b/sys/dev/isa/isic_isa_tel_s08.c
deleted file mode 100644
index 48975e445fa..00000000000
--- a/sys/dev/isa/isic_isa_tel_s08.c
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- * Copyright (c) 1996 Arne Helme. All rights reserved.
- *
- * Copyright (c) 1996 Gary Jennejohn. All rights reserved.
- *
- * Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * isic - I4B Siemens ISDN Chipset Driver for Teles S0/8 and clones
- * ================================================================
- *
- * $Id: isic_isa_tel_s08.c,v 1.9 2007/10/19 12:00:19 ad Exp $
- *
- * last edit-date: [Fri Jan 5 11:37:22 2001]
- *
- * -hm clean up
- * -hm more cleanup
- * -hm NetBSD patches from Martin
- * -hm making it finally work (checked with board revision 1.2)
- * -hm converting asm -> C
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isa_tel_s08.c,v 1.9 2007/10/19 12:00:19 ad Exp $");
-
-#include "opt_isicisa.h"
-#ifdef ISICISA_TEL_S0_8
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <machine/md_var.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#endif
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#ifndef __FreeBSD__
-static u_int8_t tels08_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-static void tels08_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static void tels08_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size);
-static void tels08_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/8 write register routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-tels08_write_reg(u_char *base, u_int i, u_int v)
-{
- if(i & 0x01)
- i |= 0x200;
- base[i] = v;
-}
-
-#else
-
-static const bus_size_t offset[] = { 0x100, 0x180, 0x1c0 };
-
-static void
-tels08_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
-
- offs += offset[what];
-
- if (offs & 0x01)
- offs |= 0x200;
-
- bus_space_write_1(t, h, offs, data);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/8 read register routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static u_char
-tels08_read_reg(u_char *base, u_int i)
-{
- if(i & 0x1)
- i |= 0x200;
- return(base[i]);
-}
-
-#else
-
-static u_int8_t
-tels08_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
-
- offs += offset[what];
-
- if (offs & 0x01)
- offs |= 0x200;
-
- return bus_space_read_1(t, h, offs);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/8 fifo read/write access
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-tels08_memcpyb(void *to, const void *from, size_t len)
-{
- for(;len > 0; len--)
- *((unsigned char *)to)++ = *((unsigned char *)from)++;
-}
-
-#else
-
-static void
-tels08_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- bus_space_write_region_1(t, h, offset[what], data, size);
-}
-
-static void
-tels08_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- bus_space_read_region_1(t, h, offset[what], buf, size);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_probe_s08 - probe for Teles S0/8 and compatibles
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-int
-isic_probe_s08(struct isa_device *dev)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-
- /* check max unit range */
-
- if(dev->id_unit >= ISIC_MAXUNIT)
- {
- printf("isic%d: Error, unit %d >= ISIC_MAXUNIT for Teles S0/8!\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /* check IRQ validity */
-
- switch(ffs(dev->id_irq)-1)
- {
- case 2:
- case 9: /* XXX */
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- break;
-
- default:
- printf("isic%d: Error, invalid IRQ [%d] specified for Teles S0/8!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- break;
- }
- sc->sc_irq = dev->id_irq;
-
- /* check if we got an iobase */
-
- if(dev->id_iobase > 0)
- {
- printf("isic%d: Error, iobase specified for Teles S0/8!\n",
- dev->id_unit);
- return(0);
- }
-
- /* check if inside memory range of 0xA0000 .. 0xDF000 */
-
- if( (kvtop(dev->id_maddr) < 0xa0000) ||
- (kvtop(dev->id_maddr) > 0xdf000) )
- {
- printf("isic%d: Error, mem addr 0x%lx outside 0xA0000-0xDF000 for Teles S0/8!\n",
- dev->id_unit, kvtop(dev->id_maddr));
- return(0);
- }
-
- sc->sc_vmem_addr = (void *) dev->id_maddr;
- dev->id_msize = 0x1000;
-
- /* setup ISAC access routines */
-
- sc->clearirq = NULL;
- sc->readreg = tels08_read_reg;
- sc->writereg = tels08_write_reg;
-
- sc->readfifo = tels08_memcpyb;
- sc->writefifo = tels08_memcpyb;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_8;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM1;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC base addr */
-
- ISAC_BASE = (void *)((dev->id_maddr) + 0x100);
-
- /* setup HSCX base addr */
-
- HSCX_A_BASE = (void *)((dev->id_maddr) + 0x180);
- HSCX_B_BASE = (void *)((dev->id_maddr) + 0x1c0);
-
- return (1);
-}
-
-#else
-
-int
-isic_probe_s08(struct isic_attach_args *ia)
-{
- /* no real sensible probe is easy - write to fifo memory
- and read back to verify there is memory doesn't work,
- because you talk to tx fifo and rcv fifo. So, just check
- HSCX version, which at least fails if no card present
- at the given location. */
- bus_space_tag_t t = ia->ia_maps[0].t;
- bus_space_handle_t h = ia->ia_maps[0].h;
- u_int8_t v1, v2;
-
- /* HSCX A VSTR */
- v1 = bus_space_read_1(t, h, offset[1] + H_VSTR) & 0x0f;
- if (v1 != HSCX_VA1 && v1 != HSCX_VA2 && v1 != HSCX_VA3 && v1 != HSCX_V21)
- return 0;
-
- /* HSCX B VSTR */
- v2 = bus_space_read_1(t, h, offset[2] + H_VSTR) & 0x0f;
- if (v2 != HSCX_VA1 && v2 != HSCX_VA2 && v2 != HSCX_VA3 && v2 != HSCX_V21)
- return 0;
-
- /* both HSCX channels should have the same version... */
- if (v1 != v2)
- return 0;
-
- return 1;
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_attach_s08 - attach Teles S0/8 and compatibles
- *---------------------------------------------------------------------------*/
-int
-#ifdef __FreeBSD__
-isic_attach_s08(struct isa_device *dev)
-#else
-isic_attach_s08(struct isic_softc *sc)
-#endif
-{
-#ifdef __FreeBSD__
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-#else
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
-#endif
-
- /* set card off */
-
-#ifdef __FreeBSD__
- sc->sc_vmem_addr[0x80] = 0;
-#else
- bus_space_write_1(t, h, 0x80, 0);
-#endif
-
- DELAY(SEC_DELAY / 5);
-
- /* set card on */
-
-#ifdef __FreeBSD__
- sc->sc_vmem_addr[0x80] = 1;
-#else
- bus_space_write_1(t, h, 0x80, 1);
-#endif
-
- DELAY(SEC_DELAY / 5);
-
-#ifndef __FreeBSD__
-
- /* setup ISAC access routines */
-
- sc->clearirq = NULL;
- sc->readreg = tels08_read_reg;
- sc->writereg = tels08_write_reg;
- sc->readfifo = tels08_read_fifo;
- sc->writefifo = tels08_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_8;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM1;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
-#endif
-
- return (1);
-}
-
-#endif /* ISICISA_TEL_S0_8 */
-
diff --git a/sys/dev/isa/isic_isa_usr_sti.c b/sys/dev/isa/isic_isa_usr_sti.c
deleted file mode 100644
index da32681b3cc..00000000000
--- a/sys/dev/isa/isic_isa_usr_sti.c
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * i4b_usr_sti.c - USRobotics Sportster ISDN TA intern (Tina-pp)
- * -------------------------------------------------------------
- *
- * $Id: isic_isa_usr_sti.c,v 1.8 2007/10/19 12:00:20 ad Exp $
- *
- * last edit-date: [Fri Jan 5 11:37:22 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isa_usr_sti.c,v 1.8 2007/10/19 12:00:20 ad Exp $");
-
-#include "opt_isicisa.h"
-#ifdef ISICISA_USR_STI
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#endif
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#include <netisdn/i4b_global.h>
-
-/*---------------------------------------------------------------------------*
- * USR Sportster TA intern special registers
- *---------------------------------------------------------------------------*/
-#define USR_HSCXA_OFF 0x0000
-#define USR_HSCXB_OFF 0x4000
-#define USR_INTL_OFF 0x8000
-#define USR_ISAC_OFF 0xc000
-
-#define USR_RES_BIT 0x80 /* 0 = normal, 1 = reset ISAC/HSCX */
-#define USR_INTE_BIT 0x40 /* 0 = IRQ disabled, 1 = IRQ's enabled */
-#define USR_IL_MASK 0x07 /* IRQ level config */
-
-static u_char intr_no[] = { 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 3, 4, 5, 0, 6, 7 };
-
-#ifdef __FreeBSD__
-
-#define ADDR(reg) \
- (((reg/4) * 1024) + ((reg%4) * 2))
-
-/*---------------------------------------------------------------------------*
- * USRobotics read fifo routine
- *---------------------------------------------------------------------------*/
-static void
-usrtai_read_fifo(void *buf, const void *base, size_t len)
-{
- register int offset = 0;
-
- for(;len > 0; len--, offset++)
- *((u_char *)buf + offset) = inb((int)base + ADDR(offset));
-}
-
-/*---------------------------------------------------------------------------*
- * USRobotics write fifo routine
- *---------------------------------------------------------------------------*/
-static void
-usrtai_write_fifo(void *base, const void *buf, size_t len)
-{
- register int offset = 0;
-
- for(;len > 0; len--, offset++)
- outb((int)base + ADDR(offset), *((u_char *)buf + offset));
-}
-
-/*---------------------------------------------------------------------------*
- * USRobotics write register routine
- *---------------------------------------------------------------------------*/
-static void
-usrtai_write_reg(u_char *base, u_int offset, u_int v)
-{
- outb((int)base + ADDR(offset), (u_char)v);
-}
-
-/*---------------------------------------------------------------------------*
- * USRobotics read register routine
- *---------------------------------------------------------------------------*/
-static u_char
-usrtai_read_reg(u_char *base, u_int offset)
-{
- return(inb((int)base + ADDR(offset)));
-}
-
-/*---------------------------------------------------------------------------*
- * isic_probe_usrtai - probe for USR
- *---------------------------------------------------------------------------*/
-int
-isic_probe_usrtai(struct isa_device *dev)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-
- /* check max unit range */
-
- if(dev->id_unit >= ISIC_MAXUNIT)
- {
- printf("isic%d: Error, unit %d >= MAXUNIT for USR Sportster TA!\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /* check IRQ validity */
-
- if((intr_no[ffs(dev->id_irq) - 1]) == 0)
- {
- printf("isic%d: Error, invalid IRQ [%d] specified for USR Sportster TA!\n",
- dev->id_unit, (ffs(dev->id_irq))-1);
- return(0);
- }
- sc->sc_irq = dev->id_irq;
-
- /* check if memory addr specified */
-
- if(dev->id_maddr)
- {
- printf("isic%d: Error, mem addr 0x%lx specified for USR Sportster TA!\n",
- dev->id_unit, (u_long)dev->id_maddr);
- return(0);
- }
- dev->id_msize = 0;
-
- /* check if we got an iobase */
-
- switch(dev->id_iobase)
- {
- case 0x200:
- case 0x208:
- case 0x210:
- case 0x218:
- case 0x220:
- case 0x228:
- case 0x230:
- case 0x238:
- case 0x240:
- case 0x248:
- case 0x250:
- case 0x258:
- case 0x260:
- case 0x268:
- case 0x270:
- case 0x278:
- break;
-
- default:
- printf("isic%d: Error, invalid iobase 0x%x specified for USR Sportster TA!\n",
- dev->id_unit, dev->id_iobase);
- return(0);
- break;
- }
- sc->sc_port = dev->id_iobase;
-
- /* setup ISAC access routines */
-
- sc->clearirq = NULL;
- sc->readreg = usrtai_read_reg;
- sc->writereg = usrtai_write_reg;
-
- sc->readfifo = usrtai_read_fifo;
- sc->writefifo = usrtai_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_USRTA;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
-
- ISAC_BASE = (void *)dev->id_iobase + USR_ISAC_OFF;
- HSCX_A_BASE = (void *)dev->id_iobase + USR_HSCXA_OFF;
- HSCX_B_BASE = (void *)dev->id_iobase + USR_HSCXB_OFF;
-
- /*
- * Read HSCX A/B VSTR. Expected value for USR Sportster TA based
- * boards is 0x05 in the least significant bits.
- */
-
- if( ((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) ||
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) )
- {
- printf("isic%d: HSCX VSTR test failed for USR Sportster TA\n",
- dev->id_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- return (1);
-}
-
-/*---------------------------------------------------------------------------*
- * isic_attach_usrtai - attach USR
- *---------------------------------------------------------------------------*/
-int
-isic_attach_usrtai(struct isa_device *dev)
-{
- u_char irq = 0;
-
- /* reset the HSCX and ISAC chips */
-
- outb(dev->id_iobase + USR_INTL_OFF, USR_RES_BIT);
- DELAY(SEC_DELAY / 10);
-
- outb(dev->id_iobase + USR_INTL_OFF, 0x00);
- DELAY(SEC_DELAY / 10);
-
- /* setup IRQ */
-
- if((irq = intr_no[ffs(dev->id_irq) - 1]) == 0)
- {
- printf("isic%d: Attach error, invalid IRQ [%d] specified for USR Sportster TA!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- }
-
- /* configure and enable irq */
-
- outb(dev->id_iobase + USR_INTL_OFF, irq | USR_INTE_BIT);
- DELAY(SEC_DELAY / 10);
-
- return (1);
-}
-
-#else /* end of FreeBSD, start NetBSD */
-
-/*
- * Use of sc->sc_maps:
- * 0 : config register
- * 1 - 16 : HSCX A registers
- * 17 - 32 : HSCX B registers
- * 33 - 48 : ISAC registers
- */
-
-#define USR_REG_OFFS(reg) ((reg % 4) * 2)
-#define USR_HSCXA_MAP(reg) ((reg / 4) + 1)
-#define USR_HSCXB_MAP(reg) ((reg / 4) + 17)
-#define USR_ISAC_MAP(reg) ((reg / 4) + 33)
-
-static int map_base[] = { 33, 1, 17, 0 }; /* ISAC, HSCX A, HSCX B */
-
-/*---------------------------------------------------------------------------*
- * USRobotics read fifo routine
- *---------------------------------------------------------------------------*/
-static void
-usrtai_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- int map, off, offset;
- u_char * p = buf;
- bus_space_tag_t t;
- bus_space_handle_t h;
-
- for (offset = 0; size > 0; size--, offset++) {
- map = map_base[what] + (offset / 4);
- t = sc->sc_maps[map].t;
- h = sc->sc_maps[map].h;
- off = USR_REG_OFFS(offset);
-
- *p++ = bus_space_read_1(t, h, off);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * USRobotics write fifo routine
- *---------------------------------------------------------------------------*/
-static void
-usrtai_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- int map, off, offset;
- const u_char * p = buf;
- bus_space_tag_t t;
- bus_space_handle_t h;
- u_char v;
-
- for (offset = 0; size > 0; size--, offset++) {
- map = map_base[what] + (offset / 4);
- t = sc->sc_maps[map].t;
- h = sc->sc_maps[map].h;
- off = USR_REG_OFFS(offset);
-
- v = *p++;
- bus_space_write_1(t, h, off, v);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * USRobotics write register routine
- *---------------------------------------------------------------------------*/
-static void
-usrtai_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- int map = map_base[what] + (offs / 4),
- off = USR_REG_OFFS(offs);
- bus_space_tag_t t = sc->sc_maps[map].t;
- bus_space_handle_t h = sc->sc_maps[map].h;
-
- bus_space_write_1(t, h, off, data);
-}
-
-/*---------------------------------------------------------------------------*
- * USRobotics read register routine
- *---------------------------------------------------------------------------*/
-static u_char
-usrtai_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- int map = map_base[what] + (offs / 4),
- off = USR_REG_OFFS(offs);
- bus_space_tag_t t = sc->sc_maps[map].t;
- bus_space_handle_t h = sc->sc_maps[map].h;
-
- return bus_space_read_1(t, h, off);
-}
-
-/*---------------------------------------------------------------------------*
- * isic_probe_usrtai - probe for USR
- *---------------------------------------------------------------------------*/
-int
-isic_probe_usrtai(struct isic_attach_args *ia)
-{
- /*
- * Read HSCX A/B VSTR. Expected value for IOM2 based
- * boards is 0x05 in the least significant bits.
- */
-
- if(((bus_space_read_1(ia->ia_maps[USR_HSCXA_MAP(H_VSTR)].t, ia->ia_maps[USR_HSCXA_MAP(H_VSTR)].h, USR_REG_OFFS(H_VSTR)) & 0x0f) != 0x05) ||
- ((bus_space_read_1(ia->ia_maps[USR_HSCXB_MAP(H_VSTR)].t, ia->ia_maps[USR_HSCXB_MAP(H_VSTR)].h, USR_REG_OFFS(H_VSTR)) & 0x0f) != 0x05))
- return 0;
-
- return (1);
-}
-
-/*---------------------------------------------------------------------------*
- * isic_attach_usrtai - attach USR
- *---------------------------------------------------------------------------*/
-int
-isic_attach_usrtai(struct isic_softc *sc)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- u_char irq = intr_no[sc->sc_irq];
-
- sc->clearirq = NULL;
- sc->readreg = usrtai_read_reg;
- sc->writereg = usrtai_write_reg;
-
- sc->readfifo = usrtai_read_fifo;
- sc->writefifo = usrtai_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_USRTA;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* reset the HSCX and ISAC chips */
-
- bus_space_write_1(t, h, 0, USR_RES_BIT);
- DELAY(SEC_DELAY / 10);
-
- bus_space_write_1(t, h, 0, 0x00);
- DELAY(SEC_DELAY / 10);
-
- /* setup IRQ */
-
- bus_space_write_1(t, h, 0, irq | USR_INTE_BIT);
- DELAY(SEC_DELAY / 10);
-
- return (1);
-}
-
-#endif /* __FreeBSD__ */
-
-#endif /* ISICISA_USR_STI */
diff --git a/sys/dev/isapnp/files.isapnp b/sys/dev/isapnp/files.isapnp
index fcfbc6dce1b..9268e7a80e9 100644
--- a/sys/dev/isapnp/files.isapnp
+++ b/sys/dev/isapnp/files.isapnp
@@ -1,4 +1,4 @@
-# $NetBSD: files.isapnp,v 1.38 2005/12/11 12:22:16 christos Exp $
+# $NetBSD: files.isapnp,v 1.39 2018/09/22 16:22:23 maxv Exp $
#
# Config file and device description for machine-independent ISAPnP code.
# Included by ports that need it.
@@ -91,24 +91,6 @@ file dev/isapnp/aha_isapnp.c aha_isapnp
attach aic at isapnp with aic_isapnp
file dev/isapnp/aic_isapnp.c aic_isapnp
-# ISDN devices
-attach isic at isapnp with isic_isapnp
-file dev/isapnp/isic_isapnp.c isic_isapnp
-
-defflag opt_isicpnp.h ISICPNP_TEL_S0_16_3_P ISICPNP_CRTX_S0_P ISICPNP_DRN_NGO
- ISICPNP_ELSA_QS1ISA ISICPNP_ELSA_PCC16
- ISICPNP_SEDLBAUER ISICPNP_DYNALINK
- ISICPNP_SIEMENS_ISURF2 ISICPNP_ITKIX
-
-file dev/isapnp/isic_isapnp_tel_s0P.c isic_isapnp
-file dev/isapnp/isic_isapnp_ctx_s0P.c isic_isapnp
-file dev/isapnp/isic_isapnp_drn_ngo.c isic_isapnp
-file dev/isapnp/isic_isapnp_elsa_qs1i.c isic_isapnp
-file dev/isapnp/isic_isapnp_sws.c isic_isapnp
-file dev/isapnp/isic_isapnp_dynalink.c isic_isapnp
-file dev/isapnp/isic_isapnp_siemens_isurf.c isic_isapnp
-file dev/isapnp/isic_isapnp_itkix.c isic_isapnp
-
# Game adapter (joystick)
attach joy at isapnp with joy_isapnp
file dev/isapnp/joy_isapnp.c joy_isapnp
diff --git a/sys/dev/isapnp/isic_isapnp.c b/sys/dev/isapnp/isic_isapnp.c
deleted file mode 100644
index e118ea66637..00000000000
--- a/sys/dev/isapnp/isic_isapnp.c
+++ /dev/null
@@ -1,393 +0,0 @@
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isapnp.c,v 1.33 2016/07/14 04:00:45 msaitoh Exp $");
-
-#include <sys/param.h>
-#include <sys/errno.h>
-#include <sys/syslog.h>
-#include <sys/device.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <sys/systm.h>
-#include <sys/malloc.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#include <sys/cpu.h>
-#include <sys/intr.h>
-#include <sys/bus.h>
-
-#include <dev/isa/isavar.h>
-#include <dev/isapnp/isapnpreg.h>
-#include <dev/isapnp/isapnpvar.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_ioctl.h>
-#include <machine/i4b_trace.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_trace.h>
-#include <netisdn/i4b_l2.h>
-#endif
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/ipac.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_global.h>
-
-#include "opt_isicpnp.h"
-
-extern const struct isdn_layer1_isdnif_driver isic_std_driver;
-
-static int isic_isapnp_probe(device_t, cfdata_t, void *);
-static void isic_isapnp_attach(device_t, device_t, void *);
-
-CFATTACH_DECL_NEW(isic_isapnp, sizeof(struct isic_softc),
- isic_isapnp_probe, isic_isapnp_attach, NULL, NULL);
-
-typedef void (*allocmaps_func)(struct isapnp_attach_args *ipa,
- struct isic_softc *sc);
-typedef void (*attach_func)(struct isic_softc *sc);
-
-/* map allocators */
-#if defined(ISICPNP_ELSA_QS1ISA) || defined(ISICPNP_SEDLBAUER) \
- || defined(ISICPNP_DYNALINK) || defined(ISICPNP_SIEMENS_ISURF2) \
- || defined(ISICPNP_ITKIX)
-static void generic_pnp_mapalloc(struct isapnp_attach_args *ipa,
- struct isic_softc *sc);
-#endif
-#ifdef ISICPNP_DRN_NGO
-static void ngo_pnp_mapalloc(struct isapnp_attach_args *ipa,
- struct isic_softc *sc);
-#endif
-#if defined(ISICPNP_CRTX_S0_P) || defined(ISICPNP_TEL_S0_16_3_P)
-static void tls_pnp_mapalloc(struct isapnp_attach_args *ipa,
- struct isic_softc *sc);
-#endif
-
-/* card attach functions */
-extern void isic_attach_Cs0P(struct isic_softc *sc);
-extern void isic_attach_Dyn(struct isic_softc *sc);
-extern void isic_attach_s0163P(struct isic_softc *sc);
-extern void isic_attach_drnngo(struct isic_softc *sc);
-extern void isic_attach_sws(struct isic_softc *sc);
-extern void isic_attach_Eqs1pi(struct isic_softc *sc);
-extern void isic_attach_siemens_isurf(struct isic_softc *sc);
-extern void isic_attach_isapnp_itkix1(struct isic_softc *sc);
-
-struct isic_isapnp_card_desc {
- const char *devlogic; /* ISAPNP logical device ID */
- const char *name; /* Name of the card */
- int card_type; /* isic card type identifier */
- allocmaps_func allocmaps; /* map allocator function */
- attach_func attach; /* card attach and init function */
-};
-static const struct isic_isapnp_card_desc
-isic_isapnp_descriptions[] =
-{
-#ifdef ISICPNP_CRTX_S0_P
- { "CTX0000", "Creatix ISDN S0-16 P&P", CARD_TYPEP_CS0P,
- tls_pnp_mapalloc, isic_attach_Cs0P },
-#endif
-#ifdef ISICPNP_TEL_S0_16_3_P
- { "TAG2110", "Teles S0/PnP", CARD_TYPEP_163P,
- tls_pnp_mapalloc, isic_attach_s0163P },
-#endif
-#ifdef ISICPNP_DRN_NGO
- { "SDA0150", "Dr. Neuhaus NICCY GO@", CARD_TYPEP_DRNNGO,
- ngo_pnp_mapalloc, isic_attach_drnngo },
-#endif
-#ifdef ISICPNP_ELSA_QS1ISA
- { "ELS0133", "Elsa QuickStep 1000 (ISA)", CARD_TYPEP_ELSAQS1ISA,
- generic_pnp_mapalloc, isic_attach_Eqs1pi },
-#endif
-#ifdef ISICPNP_SEDLBAUER
- { "SAG0001", "Sedlbauer WinSpeed", CARD_TYPEP_SWS,
- generic_pnp_mapalloc, isic_attach_sws },
-#endif
-#ifdef ISICPNP_DYNALINK
- { "ASU1688", "Dynalink IS64PH", CARD_TYPEP_DYNALINK,
- generic_pnp_mapalloc, isic_attach_Dyn },
-#endif
-#ifdef ISICPNP_SIEMENS_ISURF2
- { "SIE0020", "Siemens I-Surf 2.0 PnP", CARD_TYPEP_SIE_ISURF2,
- generic_pnp_mapalloc, isic_attach_siemens_isurf },
-#endif
-#ifdef ISICPNP_ITKIX
- { "ITK0025", "ix1-micro 3.0", 0,
- generic_pnp_mapalloc, isic_attach_isapnp_itkix1 },
-#endif
-};
-#define NUM_DESCRIPTIONS (sizeof(isic_isapnp_descriptions)/sizeof(isic_isapnp_descriptions[0]))
-
-/*
- * Probe card
- */
-static int
-isic_isapnp_probe(device_t parent, cfdata_t cf, void *aux)
-{
- struct isapnp_attach_args *ipa = aux;
- const struct isic_isapnp_card_desc *desc = isic_isapnp_descriptions;
- int i;
-
- for (i = 0; i < NUM_DESCRIPTIONS; i++, desc++)
- if (strcmp(ipa->ipa_devlogic, desc->devlogic) == 0)
- return 1;
-
- return 0;
-}
-
-/*---------------------------------------------------------------------------*
- * card independend attach for ISA P&P cards
- *---------------------------------------------------------------------------*/
-
-/* parameter and format for message producing e.g. "isic0: " */
-
-#ifdef __FreeBSD__
-#define ISIC_FMT "isic%d: "
-#define ISIC_PARM dev->id_unit
-#define TERMFMT " "
-#else
-#define ISIC_FMT "%s: "
-#define ISIC_PARM device_xname(sc->sc_dev)
-#define TERMFMT "\n"
-#endif
-
-static void
-isic_isapnp_attach(device_t parent, device_t self, void *aux)
-{
- static const char *ISACversion[] = {
- "2085 Version A1/A2 or 2086/2186 Version 1.1",
- "2085 Version B1",
- "2085 Version B2",
- "2085 Version V2.3 (B3)",
- "Unknown Version"
- };
-
- static const char *HSCXversion[] = {
- "82525 Version A1",
- "Unknown (0x01)",
- "82525 Version A2",
- "Unknown (0x03)",
- "82525 Version A3",
- "82525 or 21525 Version 2.1",
- "Unknown Version"
- };
-
- struct isic_softc *sc = device_private(self);
- struct isapnp_attach_args *ipa = aux;
- const struct isic_isapnp_card_desc *desc = isic_isapnp_descriptions;
- int i;
-
- sc->sc_dev = self;
- if (isapnp_config(ipa->ipa_iot, ipa->ipa_memt, ipa)) {
- aprint_error_dev(sc->sc_dev, "error in region allocation\n");
- return;
- }
-
- for (i = 0; i < NUM_DESCRIPTIONS; i++, desc++)
- if (strcmp(ipa->ipa_devlogic, desc->devlogic) == 0)
- break;
- if (i >= NUM_DESCRIPTIONS)
- panic("could not identify isic PnP device");
-
- /* setup parameters */
- sc->sc_cardtyp = desc->card_type;
- sc->sc_irq = ipa->ipa_irq[0].num;
- desc->allocmaps(ipa, sc);
-
- /* announce card name */
- printf(": %s\n", desc->name);
-
- /* establish interrupt handler */
- if (isa_intr_establish(ipa->ipa_ic, ipa->ipa_irq[0].num,
- ipa->ipa_irq[0].type, IPL_NET, isicintr, sc) == NULL)
- aprint_error_dev(sc->sc_dev,
- "couldn't establish interrupt handler\n");
-
- /* init card */
- desc->attach(sc);
-
- /* announce chip versions */
- sc->sc_isac_version = 0;
- sc->sc_isac_version = ((ISAC_READ(I_RBCH)) >> 5) & 0x03;
-
- switch (sc->sc_isac_version) {
- case ISAC_VA:
- case ISAC_VB1:
- case ISAC_VB2:
- case ISAC_VB3:
- break;
-
- default:
- aprint_error(ISIC_FMT
- "Error, ISAC version %d unknown!\n",
- ISIC_PARM, sc->sc_isac_version);
- return;
- break;
- }
-
- sc->sc_hscx_version = HSCX_READ(0, H_VSTR) & 0xf;
-
- switch (sc->sc_hscx_version) {
- case HSCX_VA1:
- case HSCX_VA2:
- case HSCX_VA3:
- case HSCX_V21:
- break;
-
- default:
- aprint_error(ISIC_FMT
- "Error, HSCX version %d unknown!\n",
- ISIC_PARM, sc->sc_hscx_version);
- return;
- break;
- };
-
- sc->sc_intr_valid = ISIC_INTR_DISABLED;
-
- /* HSCX setup */
-
- isic_bchannel_setup(sc, HSCX_CH_A, BPROT_NONE, 0);
-
- isic_bchannel_setup(sc, HSCX_CH_B, BPROT_NONE, 0);
-
- /* setup linktab */
-
- isic_init_linktab(sc);
-
- /* set trace level */
-
- sc->sc_trace = TRACE_OFF;
-
- sc->sc_state = ISAC_IDLE;
-
- sc->sc_ibuf = NULL;
- sc->sc_ib = NULL;
- sc->sc_ilen = 0;
-
- sc->sc_obuf = NULL;
- sc->sc_op = NULL;
- sc->sc_ol = 0;
- sc->sc_freeflag = 0;
-
- sc->sc_obuf2 = NULL;
- sc->sc_freeflag2 = 0;
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
- callout_init(&sc->sc_T3_callout, 0);
- callout_init(&sc->sc_T4_callout, 0);
-#endif
-
- /* announce chip versions */
-
- if (sc->sc_isac_version >= ISAC_UNKN) {
- aprint_error(ISIC_FMT
- "ISAC Version UNKNOWN (VN=0x%x)" TERMFMT, ISIC_PARM,
- sc->sc_isac_version);
- sc->sc_isac_version = ISAC_UNKN;
- } else {
- aprint_error(ISIC_FMT "ISAC %s (IOM-%c)" TERMFMT, ISIC_PARM,
- ISACversion[sc->sc_isac_version],
- sc->sc_bustyp == BUS_TYPE_IOM1 ? '1' : '2');
- }
-
- if (sc->sc_hscx_version >= HSCX_UNKN) {
- aprint_error(ISIC_FMT "HSCX Version UNKNOWN (VN=0x%x)" TERMFMT,
- ISIC_PARM, sc->sc_hscx_version);
- sc->sc_hscx_version = HSCX_UNKN;
- } else {
- aprint_error(ISIC_FMT "HSCX %s" TERMFMT, ISIC_PARM,
- HSCXversion[sc->sc_hscx_version]);
- }
-
- /* init higher protocol layers and save l2 handle */
- isic_attach_bri(sc, desc->name, &isic_std_driver);
-}
-
-#if defined(ISICPNP_ELSA_QS1ISA) || defined(ISICPNP_SEDLBAUER) \
- || defined(ISICPNP_DYNALINK) || defined(ISICPNP_SIEMENS_ISURF2) \
- || defined(ISICPNP_ITKIX)
-static void
-generic_pnp_mapalloc(struct isapnp_attach_args *ipa, struct isic_softc *sc)
-{
- sc->sc_num_mappings = 1; /* most cards have just one mapping */
- MALLOC_MAPS(sc); /* malloc the maps */
- sc->sc_maps[0].t = ipa->ipa_iot; /* copy the access handles */
- sc->sc_maps[0].h = ipa->ipa_io[0].h;
- sc->sc_maps[0].size = 0; /* foreign mapping, leave it alone */
-}
-#endif
-
-#ifdef ISICPNP_DRN_NGO
-static void
-ngo_pnp_mapalloc(struct isapnp_attach_args *ipa, struct isic_softc *sc)
-{
- sc->sc_num_mappings = 2; /* one data, one address mapping */
- MALLOC_MAPS(sc); /* malloc the maps */
- sc->sc_maps[0].t = ipa->ipa_iot; /* copy the access handles */
- sc->sc_maps[0].h = ipa->ipa_io[0].h;
- sc->sc_maps[0].size = 0; /* foreign mapping, leave it alone */
- sc->sc_maps[1].t = ipa->ipa_iot;
- sc->sc_maps[1].h = ipa->ipa_io[1].h;
- sc->sc_maps[1].size = 0;
-}
-#endif
-
-#if defined(ISICPNP_CRTX_S0_P) || defined(ISICPNP_TEL_S0_16_3_P)
-static void
-tls_pnp_mapalloc(struct isapnp_attach_args *ipa, struct isic_softc *sc)
-{
- sc->sc_num_mappings = 4; /* config, isac, 2 * hscx */
- MALLOC_MAPS(sc); /* malloc the maps */
- sc->sc_maps[0].t = ipa->ipa_iot; /* copy the access handles */
- sc->sc_maps[0].h = ipa->ipa_io[0].h;
- sc->sc_maps[0].size = 0; /* foreign mapping, leave it alone */
- sc->sc_maps[1].t = ipa->ipa_iot;
- sc->sc_maps[1].h = ipa->ipa_io[0].h;
- sc->sc_maps[1].size = 0;
- sc->sc_maps[1].offset = - 0x20;
- sc->sc_maps[2].t = ipa->ipa_iot;
- sc->sc_maps[2].offset = - 0x20;
- sc->sc_maps[2].h = ipa->ipa_io[1].h;
- sc->sc_maps[2].size = 0;
- sc->sc_maps[3].t = ipa->ipa_iot;
- sc->sc_maps[3].offset = 0;
- sc->sc_maps[3].h = ipa->ipa_io[1].h;
- sc->sc_maps[3].size = 0;
-}
-#endif
diff --git a/sys/dev/isapnp/isic_isapnp_ctx_s0P.c b/sys/dev/isapnp/isic_isapnp_ctx_s0P.c
deleted file mode 100644
index 68a9cde71b7..00000000000
--- a/sys/dev/isapnp/isic_isapnp_ctx_s0P.c
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- * Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * isic - I4B Siemens ISDN Chipset Driver for Creatix PnP cards
- * ============================================================
- *
- * $Id: isic_isapnp_ctx_s0P.c,v 1.11 2007/10/19 12:00:32 ad Exp $
- *
- * last edit-date: [Fri Jan 5 11:38:29 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isapnp_ctx_s0P.c,v 1.11 2007/10/19 12:00:32 ad Exp $");
-
-#include "opt_isicpnp.h"
-#if ISICPNP_CRTX_S0_P
-
-#include <sys/param.h>
-
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#endif
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#include <netisdn/i4b_mbuf.h>
-
-#ifndef __FreeBSD__
-static u_int8_t ctxs0P_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-static void ctxs0P_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static void ctxs0P_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-static void ctxs0P_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size);
-void isic_attach_Cs0P(struct isic_softc *sc);
-#endif
-
-#ifdef __FreeBSD__
-#include <i386/isa/pnp.h>
-extern void isicintr ( int unit );
-#endif
-
-/*---------------------------------------------------------------------------*
- * Creatix ISDN-S0 P&P ISAC get fifo routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-ctxs0P_read_fifo(void *buf, const void *base, size_t len)
-{
- insb((int)base + 0x3e, (u_char *)buf, (u_int)len);
-}
-
-#else
-
-static void
-ctxs0P_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- bus_space_read_multi_1(t, h, o + 0x3e, buf, size);
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * Creatix ISDN-S0 P&P ISAC put fifo routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-ctxs0P_write_fifo(void *base, const void *buf, size_t len)
-{
- outsb((int)base + 0x3e, (u_char *)buf, (u_int)len);
-}
-
-#else
-
-static void
-ctxs0P_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- bus_space_write_multi_1(t, h, o + 0x3e, buf, size);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * Creatix ISDN-S0 P&P ISAC put register routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-ctxs0P_write_reg(u_char *base, u_int offset, u_int v)
-{
- outb((int)base + offset, (u_char)v);
-}
-
-#else
-
-static void
-ctxs0P_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- bus_space_write_1(t, h, o + offs, data);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * Creatix ISDN-S0 P&P ISAC get register routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static u_char
-ctxs0P_read_reg(u_char *base, u_int offset)
-{
- return (inb((int)base + offset));
-}
-
-#else
-
-static u_int8_t
-ctxs0P_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- return bus_space_read_1(t, h, o + offs);
-}
-
-#endif
-
-#ifdef __FreeBSD__
-
-/*---------------------------------------------------------------------------*
- * isic_probe_Cs0P - probe for Creatix ISDN-S0 P&P and compatibles
- *---------------------------------------------------------------------------*/
-int
-isic_probe_Cs0P(struct isa_device *dev, unsigned int iobase2)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-
- /* check max unit range */
-
- if(dev->id_unit >= ISIC_MAXUNIT)
- {
- printf("isic%d: Error, unit %d >= ISIC_MAXUNIT for Creatix ISDN-S0 P&P!\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /* check IRQ validity */
-
- switch(ffs(dev->id_irq) - 1)
- {
- case 3:
- case 5:
- case 7:
- case 10:
- case 11:
- case 12:
- break;
-
- default:
- printf("isic%d: Error, invalid IRQ [%d] specified for Creatix ISDN-S0 P&P!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- break;
- }
- sc->sc_irq = dev->id_irq;
-
- /* check if memory addr specified */
-
- if(dev->id_maddr)
- {
- printf("isic%d: Error, mem addr 0x%lx specified for Creatix ISDN-S0 P&P!\n",
- dev->id_unit, (u_long)dev->id_maddr);
- return(0);
- }
- dev->id_msize = 0;
-
- if(iobase2 == 0)
- {
- printf("isic%d: Error, iobase2 is 0 for Creatix ISDN-S0 P&P!\n",
- dev->id_unit);
- return(0);
- }
-
- /* check if we got an iobase */
-
- switch(dev->id_iobase)
- {
- case 0x120:
- case 0x180:
-/*XXX*/ break;
-
- default:
- printf("isic%d: Error, invalid iobase 0x%x specified for Creatix ISDN-S0 P&P!\n",
- dev->id_unit, dev->id_iobase);
- return(0);
- break;
- }
- sc->sc_port = dev->id_iobase;
-
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = ctxs0P_read_reg;
- sc->writereg = ctxs0P_write_reg;
-
- sc->readfifo = ctxs0P_read_fifo;
- sc->writefifo = ctxs0P_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_CS0P;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
-
- ISAC_BASE = (void *) dev->id_iobase - 0x20;
- HSCX_A_BASE = (void *) iobase2 - 0x20;
- HSCX_B_BASE = (void *) iobase2;
-
- /*
- * Read HSCX A/B VSTR. Expected value for the Creatix PnP card is
- * 0x05 ( = version 2.1 ) in the least significant bits.
- */
-
- if( ((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) ||
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) )
- {
- printf("isic%d: HSCX VSTR test failed for Creatix PnP\n",
- dev->id_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- return (1);
-}
-
-/*---------------------------------------------------------------------------*
- * isic_attach_s0163P - attach Creatix ISDN-S0 P&P
- *---------------------------------------------------------------------------*/
-int
-isic_attach_Cs0P(struct isa_device *dev, unsigned int iobase2)
-{
- outb((dev->id_iobase) + 0x1c, 0);
- DELAY(SEC_DELAY / 10);
- outb((dev->id_iobase) + 0x1c, 1);
- DELAY(SEC_DELAY / 10);
- return(1);
-}
-
-#else /* !__FreeBSD__ */
-
-void
-isic_attach_Cs0P(struct isic_softc *sc)
-{
- /* init card */
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- bus_space_write_1(t, h, 0x1c, 0);
- DELAY(SEC_DELAY / 10);
- bus_space_write_1(t, h, 0x1c, 1);
- DELAY(SEC_DELAY / 10);
-
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = ctxs0P_read_reg;
- sc->writereg = ctxs0P_write_reg;
-
- sc->readfifo = ctxs0P_read_fifo;
- sc->writefifo = ctxs0P_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_CS0P;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-}
-#endif
-
-#endif /* ISICPNP_CRTX_S0_P */
-
diff --git a/sys/dev/isapnp/isic_isapnp_drn_ngo.c b/sys/dev/isapnp/isic_isapnp_drn_ngo.c
deleted file mode 100644
index a7c36be65e5..00000000000
--- a/sys/dev/isapnp/isic_isapnp_drn_ngo.c
+++ /dev/null
@@ -1,539 +0,0 @@
-/*
- * Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * i4b_drn_ngo.c - Dr. Neuhaus Niccy GO@ and SAGEM Cybermod
- * --------------------------------------------------------
- *
- * $Id: isic_isapnp_drn_ngo.c,v 1.10 2007/10/19 12:00:32 ad Exp $
- *
- * last edit-date: [Fri Jan 5 11:38:29 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isapnp_drn_ngo.c,v 1.10 2007/10/19 12:00:32 ad Exp $");
-
-#include "opt_isicpnp.h"
-#ifdef ISICPNP_DRN_NGO
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#endif
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-/*---------------------------------------------------------------------------*
- * Niccy GO@ definitions
- *
- * the card uses 2 i/o addressranges each using 2 bytes
- *
- * addressrange 0:
- * offset 0 - ISAC dataregister
- * offset 1 - HSCX dataregister
- * addressrange 1:
- * offset 0 - ISAC addressregister
- * offset 1 - HSCX addressregister
- *
- * to access an ISAC/HSCX register, you have to write the register
- * number into the ISAC or HSCX addressregister and then read/write
- * data for the ISAC/HSCX register into/from the corresponding
- * dataregister.
- *
- * Thanks to Klaus Muehle of Dr. Neuhaus Telekommunikation for giving
- * out this information!
- *
- *---------------------------------------------------------------------------*/
-#define NICCY_PORT_MIN 0x200
-#define NICCY_PORT_MAX 0x3e0
-
-#define HSCX_ABIT 0x1000 /* flag, HSCX A is meant */
-#define HSCX_BBIT 0x2000 /* flag, HSCX B is meant */
-
-#define HSCX_BOFF 0x40
-
-#define ADDR_OFF 2 /* address register range offset XXX */
-
-#define ISAC_DATA 0
-#define HSCX_DATA 1
-
-#define ISAC_ADDR 0
-#define HSCX_ADDR 1
-
-#ifdef __FreeBSD__
-
-#if 0
-#define HSCXADEBUG
-#define HSCXBDEBUG
-#define ISACDEBUG
-#else
-#undef HSCXADEBUG
-#undef HSCXBDEBUG
-#undef ISACDEBUG
-#endif
-
-/*---------------------------------------------------------------------------*
- * Dr. Neuhaus Niccy GO@ read fifo routine
- *---------------------------------------------------------------------------*/
-static void
-drnngo_read_fifo(void *buf, const void *base, size_t len)
-{
- register int offset;
- register u_int data;
-
- int x = SPLI4B();
-
- if((u_int)base & HSCX_ABIT)
- {
- (u_int)base &= ~HSCX_ABIT;
- (u_int)data = ((u_int)base + HSCX_DATA);
- (u_int)base += (ADDR_OFF + HSCX_ADDR);
- offset = 0;
-#ifdef HSCXADEBUG
-printf("GO/A/frd: base=0x%x, data=0x%x, len=%d\n", base, data, len);
-#endif
- }
- else if((u_int)base & HSCX_BBIT)
- {
- (u_int)base &= ~HSCX_BBIT;
- (u_int)data = ((u_int)base + HSCX_DATA);
- (u_int)base += (ADDR_OFF + HSCX_ADDR);
- offset = HSCX_BOFF;
-#ifdef HSCXBDEBUG
-printf("GO/B/frd: base=0x%x, data=0x%x, len=%d\n", base, data, len);
-#endif
- }
- else
- {
- (u_int)data = ((u_int)base + ISAC_DATA);
- (u_int)base += (ADDR_OFF + ISAC_ADDR);
- offset = 0;
-#ifdef ISACDEBUG
-printf("GO/I/frd: base=0x%x, data=0x%x, len=%d\n", base, data, len);
-#endif
- }
-
- for(;len > 0; len--, offset++)
- {
- outb((int)base, (u_char)offset);
- *((u_char *)buf + offset) = inb((int)data);
- }
-
- splx(x);
-}
-
-/*---------------------------------------------------------------------------*
- * Dr. Neuhaus Niccy GO@ write fifo routine
- *---------------------------------------------------------------------------*/
-static void
-drnngo_write_fifo(void *base, const void *buf, size_t len)
-{
- register int offset;
- register u_int data;
-
- int x = SPLI4B();
-
- if((u_int)base & HSCX_ABIT)
- {
- (u_int)base &= ~HSCX_ABIT;
- (u_int)data = ((u_int)base + HSCX_DATA);
- (u_int)base += (ADDR_OFF + HSCX_ADDR);
- offset = 0;
-#ifdef HSCXADEBUG
-printf("GO/A/fwr: base=0x%x, data=0x%x, len=%d\n", base, data, len);
-#endif
- }
- else if((u_int)base & HSCX_BBIT)
- {
- (u_int)base &= ~HSCX_BBIT;
- (u_int)data = ((u_int)base + HSCX_DATA);
- (u_int)base += (ADDR_OFF + HSCX_ADDR);
- offset = HSCX_BOFF;
-#ifdef HSCXBDEBUG
-printf("GO/B/fwr: base=0x%x, data=0x%x, len=%d\n", base, data, len);
-#endif
- }
- else
- {
- (u_int)data = ((u_int)base + ISAC_DATA);
- (u_int)base += (ADDR_OFF + ISAC_ADDR);
- offset = 0;
-#ifdef ISACDEBUG
-printf("GO/I/fwr: base=0x%x, data=0x%x, len=%d\n", base, data, len);
-#endif
- }
-
- for(;len > 0; len--, offset++)
- {
- outb((int)base, (u_char)offset);
- outb((int)data, *((u_char *)buf + offset));
- }
-
- splx(x);
-}
-
-/*---------------------------------------------------------------------------*
- * Dr. Neuhaus Niccy GO@ write register routine
- *---------------------------------------------------------------------------*/
-static void
-drnngo_write_reg(u_char *base, u_int offset, u_int v)
-{
- int x = SPLI4B();
- if((u_int)base & HSCX_ABIT)
- {
- (u_int)base &= ~HSCX_ABIT;
- outb((int)base + ADDR_OFF + HSCX_ADDR, (u_char)offset);
- outb((int)base + HSCX_DATA, (u_char)v);
-#ifdef HSCXADEBUG
-printf("GO/A/rwr: base=0x%x, addr=0x%x, offset=0x%x, val=0x%x\n",
- (int)base + ADDR_OFF + HSCX_ADDR, (int)base + HSCX_DATA,
- (u_char)offset, (u_char)v);
-#endif
- }
- else if((u_int)base & HSCX_BBIT)
- {
- (u_int)base &= ~HSCX_BBIT;
- outb((int)base + ADDR_OFF + HSCX_ADDR, (u_char)(offset + HSCX_BOFF));
- outb((int)base + HSCX_DATA, (u_char)v);
-#ifdef HSCXBDEBUG
-printf("GO/B/rwr: base=0x%x, addr=0x%x, offset=0x%x, val=0x%x\n",
- (int)base + ADDR_OFF + HSCX_ADDR, (int)base + HSCX_DATA,
- (u_char)(offset + HSCX_BOFF), (u_char)v);
-#endif
- }
- else
- {
- outb((int)base + ADDR_OFF + ISAC_ADDR, (u_char)offset);
- outb((int)base + ISAC_DATA, (u_char)v);
-#ifdef ISACDEBUG
-printf("GO/I/rwr: base=0x%x, addr=0x%x, offset=0x%x, val=0x%x\n",
- (int)base + ADDR_OFF + ISAC_ADDR, (int)base + ISAC_DATA,
- (u_char)offset, (u_char)v);
-#endif
- }
- splx(x);
-}
-
-/*---------------------------------------------------------------------------*
- * Dr. Neuhaus Niccy GO@ read register routine
- *---------------------------------------------------------------------------*/
-static u_char
-drnngo_read_reg(u_char *base, u_int offset)
-{
- u_char val;
- int x = SPLI4B();
-
- if((u_int)base & HSCX_ABIT)
- {
- (u_int)base &= ~HSCX_ABIT;
- outb((int)base + ADDR_OFF + HSCX_ADDR, (u_char)offset);
- val = inb((int)base + HSCX_DATA);
-#ifdef HSCXADEBUG
-printf("GO/A/rrd: base=0x%x, addr=0x%x, offset=0x%x, val=0x%x\n",
- (int)base + ADDR_OFF + HSCX_ADDR, (int)base + HSCX_DATA,
- (u_char)offset, (u_char)val);
-#endif
- }
- else if((u_int)base & HSCX_BBIT)
- {
- (u_int)base &= ~HSCX_BBIT;
- outb((int)base + ADDR_OFF + HSCX_ADDR, (u_char)(offset + HSCX_BOFF));
- val = inb((int)base + HSCX_DATA);
-#ifdef HSCXBDEBUG
-printf("GO/B/rrd: base=0x%x, addr=0x%x, offset=0x%x, val=0x%x\n",
- (int)base + ADDR_OFF + HSCX_ADDR, (int)base + HSCX_DATA,
- (u_char)(offset + HSCX_BOFF), (u_char)val);
-#endif
- }
- else
- {
- outb((int)base + ADDR_OFF + ISAC_ADDR, (u_char)offset);
- val = inb((int)base + ISAC_DATA);
-#ifdef ISACDEBUG
-printf("GO/I/rrd: base=0x%x, addr=0x%x, offset=0x%x, val=0x%x\n",
- (int)base + ADDR_OFF + ISAC_ADDR, (int)base + ISAC_DATA,
- (u_char)offset, (u_char)val);
-#endif
- }
- splx(x);
- return(val);
-}
-
-/*---------------------------------------------------------------------------*
- * isic_probe_drnngo - probe for Dr. Neuhaus Niccy GO@
- *---------------------------------------------------------------------------*/
-int
-isic_probe_drnngo(struct isa_device *dev, unsigned int iobase2)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-
- /* check max unit range */
-
- if(dev->id_unit >= ISIC_MAXUNIT)
- {
- printf("isic%d: Error, unit %d >= ISIC_MAXUNIT for Dr. Neuhaus Niccy GO@!\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /* check IRQ validity */
-
- switch(ffs(dev->id_irq)-1)
- {
- case 3:
- case 4:
- case 5:
- case 9:
- case 10:
- case 11:
- case 12:
- case 15:
- break;
-
- default:
- printf("isic%d: Error, invalid IRQ [%d] specified for Dr. Neuhaus Niccy GO@!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- break;
- }
- sc->sc_irq = dev->id_irq;
-
- /* check if memory addr specified */
-
- if(dev->id_maddr)
- {
- printf("isic%d: Error, mem addr 0x%lx specified for Dr. Neuhaus Niccy GO@!\n",
- dev->id_unit, (u_long)dev->id_maddr);
- return(0);
- }
- dev->id_msize = 0;
-
- /* check if we got an iobase */
-
- if(dev->id_iobase < NICCY_PORT_MIN || dev->id_iobase > NICCY_PORT_MAX)
- {
- printf("isic%d: Error, invalid iobase 0x%x specified for Dr. Neuhaus Niccy GO@!\n",
- dev->id_unit, dev->id_iobase);
- return(0);
- }
- sc->sc_port = dev->id_iobase;
-
- if(iobase2 == 0)
- {
- printf("isic%d: Error, iobase2 is 0 for Dr. Neuhaus Niccy GO@!\n",
- dev->id_unit);
- return(0);
- }
-
- if(iobase2 < NICCY_PORT_MIN || iobase2 > NICCY_PORT_MAX)
- {
- printf("isic%d: Error, invalid port1 0x%x specified for Dr. Neuhaus Niccy GO@!\n",
- dev->id_unit, iobase2);
- return(0);
- }
-
-/*XXX*/ if((dev->id_iobase + 2) != iobase2)
- {
- printf("isic%d: Error, port1 must be (port0+2) for Dr.Neuhaus Niccy GO@!\n",
- dev->id_unit);
- return(0);
- }
-
- /* setup ISAC access routines */
-
- sc->clearirq = NULL;
- sc->readreg = drnngo_read_reg;
- sc->writereg = drnngo_write_reg;
-
- sc->readfifo = drnngo_read_fifo;
- sc->writefifo = drnngo_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_DRNNGO;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
-
- ISAC_BASE = (void *)dev->id_iobase;
- HSCX_A_BASE = (void *)(((u_int)dev->id_iobase) | HSCX_ABIT);
- HSCX_B_BASE = (void *)(((u_int)dev->id_iobase) | HSCX_BBIT);
-
- /*
- * Read HSCX A/B VSTR. Expected value for Dr. Neuhaus Niccy GO@ based
- * boards is 0x05 in the least significant bits.
- */
-
- if( ((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) ||
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) )
- {
- printf("isic%d: HSCX VSTR test failed for Dr. Neuhaus Niccy GO@\n",
- dev->id_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- return (1);
-}
-
-/*---------------------------------------------------------------------------*
- * isic_attach_drnngo - attach Dr. Neuhaus Niccy GO@
- *---------------------------------------------------------------------------*/
-int
-isic_attach_drnngo(struct isa_device *dev, unsigned int iobase2)
-{
- return (1);
-}
-
-#else
-
-static u_int8_t drnngo_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-static void drnngo_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static void drnngo_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-static void drnngo_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size);
-void isic_attach_drnngo(struct isic_softc *sc);
-
-/*
- * Mapping from "what" parameter to offsets into the io map
- */
-static struct {
- bus_size_t oa, /* address register offset */
- od, /* data register offset */
- or; /* additional chip register offset */
-} offset[] =
-{
- { ISAC_ADDR, ISAC_DATA, 0 }, /* ISAC access */
- { HSCX_ADDR, HSCX_DATA, 0 }, /* HSCX A access */
- { HSCX_ADDR, HSCX_DATA, HSCX_BOFF } /* HSCX B access */
-};
-
-static void
-drnngo_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t hd = sc->sc_maps[0].h, ha = sc->sc_maps[1].h;
- bus_space_write_1(t, ha, offset[what].oa, offset[what].or);
- bus_space_read_multi_1(t, hd, offset[what].od, buf, size);
-}
-
-static void
-drnngo_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t hd = sc->sc_maps[0].h, ha = sc->sc_maps[1].h;
- bus_space_write_1(t, ha, offset[what].oa, offset[what].or);
- bus_space_write_multi_1(t, hd, offset[what].od, buf, size);
-}
-
-static void
-drnngo_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t hd = sc->sc_maps[0].h, ha = sc->sc_maps[1].h;
- bus_space_write_1(t, ha, offset[what].oa, offs+offset[what].or);
- bus_space_write_1(t, hd, offset[what].od, data);
-}
-
-static u_int8_t
-drnngo_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t hd = sc->sc_maps[0].h, ha = sc->sc_maps[1].h;
- bus_space_write_1(t, ha, offset[what].oa, offs+offset[what].or);
- return bus_space_read_1(t, hd, offset[what].od);
-}
-
-void
-isic_attach_drnngo(struct isic_softc *sc)
-{
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = drnngo_read_reg;
- sc->writereg = drnngo_write_reg;
-
- sc->readfifo = drnngo_read_fifo;
- sc->writefifo = drnngo_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_DRNNGO;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-}
-
-#endif
-
-#endif /* ISICPNP_DRN_NGO */
diff --git a/sys/dev/isapnp/isic_isapnp_dynalink.c b/sys/dev/isapnp/isic_isapnp_dynalink.c
deleted file mode 100644
index 343b2c18772..00000000000
--- a/sys/dev/isapnp/isic_isapnp_dynalink.c
+++ /dev/null
@@ -1,574 +0,0 @@
-/*
- * Copyright (c) 1998 Martijn Plak. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * isdn4bsd layer1 driver for Dynalink IS64PH isdn TA
- * ==================================================
- *
- * $Id: isic_isapnp_dynalink.c,v 1.14 2012/10/27 17:18:26 chs Exp $
- *
- * last edit-date: [Fri Jan 5 11:38:29 2001]
- *
- * written by Martijn Plak (martijn@be3.com)
- *
- * -mp 11 jun 1998 first try, code borrowed from Creatix driver
- * -mp 18 jun 1998 cleaned up code
- * -hm FreeBSD PnP
- * -mp 17 dec 1998 made it compile again
- *
- *---------------------------------------------------------------------------*/
-
-/* NOTES:
-
- This driver was written for the Dynalink IS64PH ISDN TA, based on two
- Siemens chips (HSCX 21525 and ISAC 2186). It is sold in the Netherlands.
-
- model numbers found on (my) card:
- IS64PH, TAS100H-N, P/N:89590555, TA200S100045521
-
- chips:
- Siemens PSB 21525N, HSCX TE V2.1
- Siemens PSB 2186N, ISAC-S TE V1.1
- 95MS14, PNP
-
- plug-and-play info:
- device id "ASU1688"
- vendor id 0x88167506
- serial 0x00000044
- i/o port 4 byte alignment, 4 bytes requested,
- 10 bit i/o decoding, 0x100-0x3f8 (?)
- irq 3,4,5,9,10,11,12,15, high true, edge sensitive
-
- At the moment I'm writing this Dynalink is replacing this card with
- one based on a single Siemens chip (IPAC). It will apparently be sold
- under the same model name.
-
- This driver might also work for Asuscom cards.
-*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isapnp_dynalink.c,v 1.14 2012/10/27 17:18:26 chs Exp $");
-
-#include "opt_isicpnp.h"
-#ifdef ISICPNP_DYNALINK
-
-/* HEADERS
-*/
-
-#include <sys/param.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <net/if.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#if __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#include <i386/isa/pnp.h>
-#elif defined(__bsdi__)
-#include <i386/isa/pnp.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#endif
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#if defined(__FreeBSD__) || defined(__bsdi__)
-static void dynalink_read_fifo(void *buf, const void *base, size_t len);
-static void dynalink_write_fifo(void *base, const void *buf, size_t len);
-static void dynalink_write_reg(u_char *base, u_int offset, u_int v);
-static u_char dynalink_read_reg(u_char *base, u_int offset);
-#endif
-
-#ifdef __FreeBSD__
-extern struct isa_driver isicdriver;
-#endif
-#ifdef __bsdi__
-extern struct cfdriver isiccd;
-#endif
-
-#if !defined(__FreeBSD__) && !defined(__bsdi__)
-static void dynalink_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-static void dynalink_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size);
-static void dynalink_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static u_int8_t dynalink_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-void isic_attach_Dyn(struct isic_softc *sc);
-#endif
-
-/* io address mapping */
-#define ISAC 0
-#define HSCX 1
-#define ADDR 2
-
-/* ADDR bits */
-#define ADDRMASK 0x7F
-#define RESET 0x80
-
-/* HSCX register offsets */
-#define HSCXA 0x00
-#define HSCXB 0x40
-
-#if defined(__FreeBSD__) || defined(__bsdi__)
-/* base address juggling */
-#define HSCXB_HACK 0x400
-#define IOBASE(addr) (((int)addr)&0x3FC)
-#define IOADDR(addr) (((int)addr)&0x3FF)
-#define IS_HSCXB_HACK(addr) ((((int)addr)&HSCXB_HACK)?HSCXB:HSCXA)
-#endif
-
-#ifdef __FreeBSD__
-/* ISIC probe and attach
-*/
-
-int
-isic_probe_Dyn(struct isa_device *dev, unsigned int iobase2)
-{
-
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-
- if(dev->id_unit >= ISIC_MAXUNIT)
- {
- printf("isic%d: Error, unit %d >= ISIC_MAXUNIT for Dynalink IS64PH.\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /* check IRQ validity */
-
- switch(ffs(dev->id_irq) - 1)
- {
- case 3:
- case 4:
- case 5:
- case 9:
- case 10:
- case 11:
- case 12:
- case 15:
- break;
-
- default:
- printf("isic%d: Error, invalid IRQ [%d] specified for Dynalink IS64PH.\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- break;
- }
- sc->sc_irq = dev->id_irq;
-
- /* check if memory addr specified */
-
- if(dev->id_maddr)
- {
- printf("isic%d: Error, mem addr 0x%lx specified for Dynalink IS64PH.\n",
- dev->id_unit, (u_long)dev->id_maddr);
- return (0);
- }
- dev->id_msize = 0;
-
- /* check if we got an iobase */
- if ( (dev->id_iobase < 0x100) ||
- (dev->id_iobase > 0x3f8) ||
- (dev->id_iobase & 3) )
- {
- printf("isic%d: Error, invalid iobase 0x%x specified for Dynalink!\n", dev->id_unit, dev->id_iobase);
- return(0);
- }
- sc->sc_port = dev->id_iobase;
-
- /* setup access routines */
- sc->clearirq = NULL;
- sc->readreg = dynalink_read_reg;
- sc->writereg = dynalink_write_reg;
- sc->readfifo = dynalink_read_fifo;
- sc->writefifo = dynalink_write_fifo;
-
- /* setup card type */
- sc->sc_cardtyp = CARD_TYPEP_DYNALINK;
-
- /* setup IOM bus type */
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
- ISAC_BASE = (void *) sc->sc_port;
- HSCX_A_BASE = (void *) sc->sc_port + 1;
- HSCX_B_BASE = (void *) sc->sc_port + 1 + HSCXB_HACK;
-
- /* Read HSCX A/B VSTR. Expected value is 0x05 (V2.1). */
- if( ((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) ||
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) )
- {
- printf("isic%d: HSCX VSTR test failed for Dynalink\n",
- dev->id_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- return (1);
-}
-
-int
-isic_attach_Dyn(struct isa_device *dev, unsigned int iobase2)
-{
- outb((dev->id_iobase)+ADDR, RESET);
- DELAY(SEC_DELAY / 10);
- outb((dev->id_iobase)+ADDR, 0);
- DELAY(SEC_DELAY / 10);
- return(1);
-}
-
-#elif defined(__bsdi__)
-
-/* ISIC probe and attach
-*/
-
-static int
-set_softc(struct isic_softc *sc, struct isa_attach_args *ia, int unit)
-{
- if (unit >= NISIC)
- return 0;
- sc->sc_unit = unit;
- switch(ffs(ia->ia_irq) - 1)
- {
- case 3:
- case 4:
- case 5:
- case 9:
- case 10:
- case 11:
- case 12:
- case 15:
- break;
-
- default:
- printf("isic%d: Error, invalid IRQ [%d] specified for Dynalink IS64PH.\n",
- unit, ffs(ia->ia_irq)-1);
- return(0);
- break;
- }
- sc->sc_irq = ia->ia_irq;
-
- /* check if memory addr specified */
-
- if(ia->ia_maddr)
- {
- printf("isic%d: Error, mem addr 0x%lx specified for Dynalink IS64PH.\n",
- unit, (u_long)ia->ia_maddr);
- return (0);
- }
-
- /* check if we got an iobase */
- if ( (ia->ia_iobase < 0x100) ||
- (ia->ia_iobase > 0x3f8) ||
- (ia->ia_iobase & 3) )
- {
- printf("isic%d: Error, invalid iobase 0x%x specified for Dynalink!\n", unit, ia->ia_iobase);
- return(0);
- }
- sc->sc_port = ia->ia_iobase;
-
- /* setup access routines */
- sc->clearirq = NULL;
- sc->readreg = dynalink_read_reg;
- sc->writereg = dynalink_write_reg;
- sc->readfifo = dynalink_read_fifo;
- sc->writefifo = dynalink_write_fifo;
-
- /* setup card type */
- sc->sc_cardtyp = CARD_TYPEP_DYNALINK;
-
- /* setup IOM bus type */
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
- ISAC_BASE = (void *) sc->sc_port;
- HSCX_A_BASE = (void *) sc->sc_port + 1;
- HSCX_B_BASE = (void *) sc->sc_port + 1 + HSCXB_HACK;
- return 1;
-}
-
-int
-isapnp_match_dynalink(device_t parent, cfdata_t cf,
- struct isa_attach_args *ia)
-{
- struct isic_softc dummysc, *sc = &dummysc;
- pnp_resource_t res;
- char *ids[] = {"ASU1688", NULL};
- memset(&res, 0, sizeof res);
- res.res_irq[0].irq_level = ia->ia_irq;
- res.res_port[0].prt_base = ia->ia_iobase;
- res.res_port[0].prt_length = 4;
-
- if (!pnp_assigndev(ids, isiccd.cd_name, &res))
- return (0);
-
- ia->ia_irq = res.res_irq[0].irq_level;
- ia->ia_iobase = res.res_port[0].prt_base;
- ia->ia_iosize = res.res_port[0].prt_length;
-
- if (set_softc(sc, ia, cf->cf_unit) == 0)
- return 0;
-
- /* Read HSCX A/B VSTR. Expected value is 0x05 (V2.1). */
- if( ((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) ||
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) )
- {
- printf("isic%d: HSCX VSTR test failed for Dynalink\n",
- cf->cf_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- cf->cf_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- cf->cf_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- cf->cf_flags = FLAG_DYNALINK;
- return (1);
-}
-
-int
-isic_attach_Dyn(device_t parent, device_t self,
- struct isa_attach_args *ia)
-{
- struct isic_softc *sc = device_private(self);
- int unit = sc->sc_dev.dv_unit;
-
- /* Commit the probed attachment values */
- if (set_softc(sc, ia, unit) == 0)
- panic("isic_attach_Dyn: set_softc");
-
- outb((ia->ia_iobase)+ADDR, RESET);
- DELAY(SEC_DELAY / 10);
- outb((ia->ia_iobase)+ADDR, 0);
- DELAY(SEC_DELAY / 10);
- return(1);
-}
-
-#else
-
-void isic_attach_Dyn(struct isic_softc *sc)
-{
- /* setup access routines */
- sc->clearirq = NULL;
- sc->readreg = dynalink_read_reg;
- sc->writereg = dynalink_write_reg;
- sc->readfifo = dynalink_read_fifo;
- sc->writefifo = dynalink_write_fifo;
-
- /* setup card type */
- sc->sc_cardtyp = CARD_TYPEP_DYNALINK;
-
- /* setup IOM bus type */
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* Read HSCX A/B VSTR. Expected value is 0x05 (V2.1). */
- if( ((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) || ((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) )
- {
- printf("%s: HSCX VSTR test failed for Dynalink PnP\n",
- device_xname(sc->sc_dev));
- printf("%s: HSC0: VSTR: %#x\n",
- device_xname(sc->sc_dev), HSCX_READ(0, H_VSTR));
- printf("%s: HSC1: VSTR: %#x\n",
- device_xname(sc->sc_dev), HSCX_READ(1, H_VSTR));
- return;
- }
-
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h, ADDR, RESET);
- DELAY(SEC_DELAY / 10);
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h, ADDR, 0);
- DELAY(SEC_DELAY / 10);
-}
-
-#endif
-
-/* LOW-LEVEL DEVICE ACCESS
-
- NOTE: The isdn4bsd code expects the two HSCX channels at different
- base addresses. I'm faking this, and remap them to the same address
- in the low-level routines. Search for HSCXB_HACK and IS_HSCXB_HACK.
-
- REM: this is only true for the FreeBSD version of I4B!
-*/
-
-#if defined(__FreeBSD__) || defined(__bsdi__)
-static void
-dynalink_read_fifo(void *buf, const void *base, size_t len)
-{
- outb(IOBASE(base)+ADDR, 0+IS_HSCXB_HACK(base));
- insb(IOADDR(base), (u_char *)buf, (u_int)len);
-}
-#else
-static void
-dynalink_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ADDR, 0);
- bus_space_read_multi_1(t, h, ISAC, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ADDR, HSCXA);
- bus_space_read_multi_1(t, h, HSCX, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ADDR, HSCXB);
- bus_space_read_multi_1(t, h, HSCX, buf, size);
- break;
- }
-}
-#endif
-
-#if defined(__FreeBSD__) || defined(__bsdi__)
-static void
-dynalink_write_fifo(void *base, const void *buf, size_t len)
-{
- outb(IOBASE(base)+ADDR, 0+IS_HSCXB_HACK(base));
- outsb(IOADDR(base), (u_char *)buf, (u_int)len);
-}
-#else
-static void dynalink_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ADDR, 0);
- bus_space_write_multi_1(t, h, ISAC, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ADDR, HSCXA);
- bus_space_write_multi_1(t, h, HSCX, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ADDR, HSCXB);
- bus_space_write_multi_1(t, h, HSCX, buf, size);
- break;
- }
-}
-#endif
-
-#if defined(__FreeBSD__) || defined(__bsdi__)
-static void
-dynalink_write_reg(u_char *base, u_int offset, u_int v)
-{
- outb(IOBASE(base)+ADDR, (offset+IS_HSCXB_HACK(base))&ADDRMASK);
- outb(IOADDR(base), (u_char)v);
-}
-#else
-static void dynalink_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ADDR, offs);
- bus_space_write_1(t, h, ISAC, data);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ADDR, HSCXA+offs);
- bus_space_write_1(t, h, HSCX, data);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ADDR, HSCXB+offs);
- bus_space_write_1(t, h, HSCX, data);
- break;
- }
-}
-#endif
-
-#if defined(__FreeBSD__) || defined(__bsdi__)
-static u_char
-dynalink_read_reg(u_char *base, u_int offset)
-{
- outb(IOBASE(base)+ADDR, (offset+IS_HSCXB_HACK(base))&ADDRMASK);
- return (inb(IOADDR(base)));
-}
-#else
-static u_int8_t dynalink_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ADDR, offs);
- return bus_space_read_1(t, h, ISAC);
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ADDR, HSCXA+offs);
- return bus_space_read_1(t, h, HSCX);
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ADDR, HSCXB+offs);
- return bus_space_read_1(t, h, HSCX);
- }
- return 0;
-}
-#endif
-
-#endif /* ISICPNP_DYNALINK */
diff --git a/sys/dev/isapnp/isic_isapnp_elsa_qs1i.c b/sys/dev/isapnp/isic_isapnp_elsa_qs1i.c
deleted file mode 100644
index a04da6517ba..00000000000
--- a/sys/dev/isapnp/isic_isapnp_elsa_qs1i.c
+++ /dev/null
@@ -1,609 +0,0 @@
-/*
- * Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * isic - I4B Siemens ISDN Chipset Driver for ELSA Quickstep 1000pro ISA
- * =====================================================================
- *
- * $Id: isic_isapnp_elsa_qs1i.c,v 1.16 2007/10/19 12:00:32 ad Exp $
- *
- * last edit-date: [Fri Jan 5 11:38:29 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isapnp_elsa_qs1i.c,v 1.16 2007/10/19 12:00:32 ad Exp $");
-
-#include "opt_isicpnp.h"
-#if defined(ISICPNP_ELSA_QS1ISA) || defined(ISICPNP_ELSA_PCC16)
-
-#include <sys/param.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <net/if.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#if __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#include <i386/isa/pnp.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#endif
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#ifdef __FreeBSD__
-static void i4b_eq1i_clrirq(void* base);
-#else
-static void i4b_eq1i_clrirq(struct isic_softc *sc);
-void isic_attach_Eqs1pi(struct isic_softc *sc);
-static void elsa_command_req(struct isic_softc *sc, int command, void *data);
-static void elsa_led_handler(void *);
-#endif
-
-/* masks for register encoded in base addr */
-
-#define ELSA_BASE_MASK 0x0ffff
-#define ELSA_OFF_MASK 0xf0000
-
-/* register id's to be encoded in base addr */
-
-#define ELSA_IDISAC 0x00000
-#define ELSA_IDHSCXA 0x10000
-#define ELSA_IDHSCXB 0x20000
-
-/* offsets from base address */
-
-#define ELSA_OFF_ISAC 0x00
-#define ELSA_OFF_HSCX 0x02
-#define ELSA_OFF_OFF 0x03
-#define ELSA_OFF_CTRL 0x04
-#define ELSA_OFF_CFG 0x05
-#define ELSA_OFF_TIMR 0x06
-#define ELSA_OFF_IRQ 0x07
-
-/* control register (write access) */
-
-#define ELSA_CTRL_LED_YELLOW 0x02
-#define ELSA_CTRL_LED_GREEN 0x08
-#define ELSA_CTRL_RESET 0x20
-#define ELSA_CTRL_TIMEREN 0x80
-#define ELSA_CTRL_SECRET 0x50
-
-/*---------------------------------------------------------------------------*
- * ELSA QuickStep 1000pro/ISA clear IRQ routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static void
-i4b_eq1i_clrirq(void* base)
-{
- outb((u_int)base + ELSA_OFF_IRQ, 0);
-}
-
-#else
-static void
-i4b_eq1i_clrirq(struct isic_softc *sc)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- bus_space_write_1(t, h, ELSA_OFF_IRQ, 0);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * ELSA QuickStep 1000pro/ISA ISAC get fifo routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-eqs1pi_read_fifo(void *buf, const void *base, size_t len)
-{
- if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDHSCXB)
- {
- outb((u_int)((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, 0x40);
- insb((((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_HSCX), (u_char *)buf, (u_int)len);
- }
- else if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDHSCXA)
- {
- outb((u_int)((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, 0);
- insb((((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_HSCX), (u_char *)buf, (u_int)len);
- }
- else /* if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDISAC) */
- {
- outb((u_int)((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, 0);
- insb((((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_ISAC), (u_char *)buf, (u_int)len);
- }
-}
-
-#else
-
-static void
-eqs1pi_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ELSA_OFF_OFF, 0);
- bus_space_read_multi_1(t, h, ELSA_OFF_ISAC, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ELSA_OFF_OFF, 0);
- bus_space_read_multi_1(t, h, ELSA_OFF_HSCX, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ELSA_OFF_OFF, 0x40);
- bus_space_read_multi_1(t, h, ELSA_OFF_HSCX, buf, size);
- break;
- }
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * ELSA QuickStep 1000pro/ISA ISAC put fifo routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-eqs1pi_write_fifo(void *base, const void *buf, size_t len)
-{
- if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDHSCXB)
- {
- outb((u_int)((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, 0x40);
- outsb((((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_HSCX), (u_char *)buf, (u_int)len);
- }
- else if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDHSCXA)
- {
- outb((u_int)((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, 0);
- outsb((((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_HSCX), (u_char *)buf, (u_int)len);
- }
- else /* if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDISAC) */
- {
- outb((u_int)((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, 0);
- outsb((((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_ISAC), (u_char *)buf, (u_int)len);
- }
-}
-
-#else
-
-static void
-eqs1pi_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ELSA_OFF_OFF, 0);
- bus_space_write_multi_1(t, h, ELSA_OFF_ISAC, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ELSA_OFF_OFF, 0);
- bus_space_write_multi_1(t, h, ELSA_OFF_HSCX, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ELSA_OFF_OFF, 0x40);
- bus_space_write_multi_1(t, h, ELSA_OFF_HSCX, buf, size);
- break;
- }
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * ELSA QuickStep 1000pro/ISA ISAC put register routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-eqs1pi_write_reg(u_char *base, u_int offset, u_int v)
-{
- if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDHSCXB)
- {
- outb(((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, (u_char)(offset+0x40));
- outb(((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_HSCX, (u_char)v);
- }
- else if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDHSCXA)
- {
- outb(((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, (u_char)offset);
- outb(((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_HSCX, (u_char)v);
- }
- else /* if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDISAC) */
- {
- outb(((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, (u_char)offset);
- outb(((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_ISAC, (u_char)v);
- }
-}
-
-#else
-
-static void
-eqs1pi_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ELSA_OFF_OFF, offs);
- bus_space_write_1(t, h, ELSA_OFF_ISAC, data);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ELSA_OFF_OFF, offs);
- bus_space_write_1(t, h, ELSA_OFF_HSCX, data);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ELSA_OFF_OFF, 0x40+offs);
- bus_space_write_1(t, h, ELSA_OFF_HSCX, data);
- break;
- }
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * ELSA QuickStep 1000pro/ISA ISAC get register routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static u_char
-eqs1pi_read_reg(u_char *base, u_int offset)
-{
- if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDHSCXB)
- {
- outb((u_int)((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, (u_char)(offset+0x40));
- return(inb(((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_HSCX));
- }
- else if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDHSCXA)
- {
- outb((u_int)((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, (u_char)offset);
- return(inb(((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_HSCX));
- }
- else /* if(((u_int)base & ELSA_OFF_MASK) == ELSA_IDISAC) */
- {
- outb((u_int)((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_OFF, (u_char)offset);
- return(inb(((u_int)base & ELSA_BASE_MASK) + ELSA_OFF_ISAC));
- }
-}
-
-#else
-
-static u_int8_t
-eqs1pi_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ELSA_OFF_OFF, offs);
- return bus_space_read_1(t, h, ELSA_OFF_ISAC);
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ELSA_OFF_OFF, offs);
- return bus_space_read_1(t, h, ELSA_OFF_HSCX);
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ELSA_OFF_OFF, 0x40+offs);
- return bus_space_read_1(t, h, ELSA_OFF_HSCX);
- }
- return 0;
-}
-
-#endif
-
-#ifdef __FreeBSD__
-
-/*---------------------------------------------------------------------------*
- * isic_probe_Eqs1pi - probe for ELSA QuickStep 1000pro/ISA and compatibles
- *---------------------------------------------------------------------------*/
-int
-isic_probe_Eqs1pi(struct isa_device *dev, unsigned int iobase2)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-
- /* check max unit range */
-
- if(dev->id_unit >= ISIC_MAXUNIT)
- {
- printf("isic%d: Error, unit %d >= ISIC_MAXUNIT for ELSA QuickStep 1000pro/ISA!\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /* check IRQ validity */
-
- switch(ffs(dev->id_irq) - 1)
- {
- case 3:
- case 4:
- case 5:
- case 7:
- case 10:
- case 11:
- case 12:
- case 15:
- break;
-
- default:
- printf("isic%d: Error, invalid IRQ [%d] specified for ELSA QuickStep 1000pro/ISA!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- break;
- }
- sc->sc_irq = dev->id_irq;
-
- /* check if memory addr specified */
-
- if(dev->id_maddr)
- {
- printf("isic%d: Error, mem addr 0x%lx specified for ELSA QuickStep 1000pro/ISA!\n",
- dev->id_unit, (u_long)dev->id_maddr);
- return(0);
- }
- dev->id_msize = 0;
-
- /* check if we got an iobase */
-
- if(!((dev->id_iobase >= 0x160) && (dev->id_iobase <= 0x360)))
- {
- printf("isic%d: Error, invalid iobase 0x%x specified for ELSA QuickStep 1000pro/ISA!\n",
- dev->id_unit, dev->id_iobase);
- return(0);
- }
- sc->sc_port = dev->id_iobase;
-
- /* setup access routines */
-
- sc->clearirq = i4b_eq1i_clrirq;
- sc->readreg = eqs1pi_read_reg;
- sc->writereg = eqs1pi_write_reg;
-
- sc->readfifo = eqs1pi_read_fifo;
- sc->writefifo = eqs1pi_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_ELSAQS1ISA;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
-
- ISAC_BASE = (void *) ((u_int)dev->id_iobase | ELSA_IDISAC);
- HSCX_A_BASE = (void *) ((u_int)dev->id_iobase | ELSA_IDHSCXA);
- HSCX_B_BASE = (void *) ((u_int)dev->id_iobase | ELSA_IDHSCXB);
-
- /*
- * Read HSCX A/B VSTR. Expected value for the ELSA QuickStep 1000pro
- * ISA card is 0x05 ( = version 2.1 ) in the least significant bits.
- */
-
- if( ((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) ||
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) )
- {
- printf("isic%d: HSCX VSTR test failed for ELSA QuickStep 1000pro/ISA\n",
- dev->id_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- return (1);
-}
-
-/*---------------------------------------------------------------------------*
- * isic_attach_s0163P - attach ELSA QuickStep 1000pro/ISA
- *---------------------------------------------------------------------------*/
-int
-isic_attach_Eqs1pi(struct isa_device *dev, unsigned int iobase2)
-{
- u_char byte = ELSA_CTRL_SECRET;
-
- byte &= ~ELSA_CTRL_RESET;
- outb(dev->id_iobase + ELSA_OFF_CTRL, byte);
- DELAY(20);
- byte |= ELSA_CTRL_RESET;
- outb(dev->id_iobase + ELSA_OFF_CTRL, byte);
-
- DELAY(20);
- outb(dev->id_iobase + ELSA_OFF_IRQ, 0xff);
-
- return(1);
-}
-
-#else /* !__FreeBSD__ */
-
-static void
-elsa_command_req(struct isic_softc *sc, int command, void *data)
-{
- int v, s, blink;
- u_int8_t led_val;
-
- switch (command) {
- case CMR_DOPEN:
- s = splnet();
-
- v = ELSA_CTRL_SECRET & ~ELSA_CTRL_RESET;
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h,
- ELSA_OFF_CTRL, v);
- delay(20);
- v |= ELSA_CTRL_RESET;
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h,
- ELSA_OFF_CTRL, v);
- delay(20);
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h,
- ELSA_OFF_IRQ, 0xff);
-
- splx(s);
- break;
-
- case CMR_DCLOSE:
- s = splnet();
- callout_stop(&sc->sc_driver_callout);
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h,
- ELSA_OFF_IRQ, 0);
- v = ELSA_CTRL_SECRET & ~ELSA_CTRL_RESET;
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h,
- ELSA_OFF_CTRL, v);
- delay(20);
- v |= ELSA_CTRL_RESET;
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h,
- ELSA_OFF_CTRL, v);
- splx(s);
- break;
-
- case CMR_SETLEDS:
- /* the magic value and keep reset off */
- led_val = ELSA_CTRL_SECRET|ELSA_CTRL_RESET;
-
- /* now see what LEDs we want to add */
- v = (int)data;
- if (v & CMRLEDS_TEI)
- led_val |= ELSA_CTRL_LED_GREEN;
- blink = 0;
- if (v & (CMRLEDS_B0|CMRLEDS_B1)) {
- led_val |= ELSA_CTRL_LED_YELLOW;
- if ((v & (CMRLEDS_B0|CMRLEDS_B1)) == (CMRLEDS_B0|CMRLEDS_B1))
- blink = hz/4;
- else
- blink = hz;
- sc->sc_driver_specific = v;
- }
-
- s = splnet();
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h,
- ELSA_OFF_CTRL, led_val);
- callout_stop(&sc->sc_driver_callout);
- if (blink)
- callout_reset(&sc->sc_driver_callout, blink,
- elsa_led_handler, sc);
- splx(s);
-
- break;
-
- default:
- return;
- }
-}
-
-static void
-elsa_led_handler(void *token)
-{
- struct isic_softc *sc = token;
- int v, s, blink, off = 0;
- u_int8_t led_val = ELSA_CTRL_SECRET|ELSA_CTRL_RESET;
-
- s = splnet();
- v = sc->sc_driver_specific;
- if (v > 0) {
- /* turn blinking LED off */
- v = -sc->sc_driver_specific;
- sc->sc_driver_specific = v;
- off = 1;
- } else {
- sc->sc_driver_specific = -v;
- }
- if (v & CMRLEDS_TEI)
- led_val |= ELSA_CTRL_LED_GREEN;
- blink = 0;
- if (off == 0) {
- if (v & (CMRLEDS_B0|CMRLEDS_B1))
- led_val |= ELSA_CTRL_LED_YELLOW;
- }
- if ((v & (CMRLEDS_B0|CMRLEDS_B1)) == (CMRLEDS_B0|CMRLEDS_B1))
- blink = hz/4;
- else
- blink = hz;
-
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h,
- ELSA_OFF_CTRL, led_val);
- if (blink)
- callout_reset(&sc->sc_driver_callout, blink,
- elsa_led_handler, sc);
- splx(s);
-}
-
-void
-isic_attach_Eqs1pi(struct isic_softc *sc)
-{
- /* setup access routines */
-
- sc->clearirq = i4b_eq1i_clrirq;
- sc->readreg = eqs1pi_read_reg;
- sc->writereg = eqs1pi_write_reg;
-
- sc->readfifo = eqs1pi_read_fifo;
- sc->writefifo = eqs1pi_write_fifo;
-
- sc->drv_command = elsa_command_req;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_ELSAQS1ISA;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- callout_init(&sc->sc_driver_callout, 0);
- sc->sc_driver_specific = 0;
-}
-
-#endif
-
-#endif /* ISICPNP_ELSA_QS1ISA or ISICPNP_ELSA_PCC16 */
diff --git a/sys/dev/isapnp/isic_isapnp_itkix.c b/sys/dev/isapnp/isic_isapnp_itkix.c
deleted file mode 100644
index ca886ccdda4..00000000000
--- a/sys/dev/isapnp/isic_isapnp_itkix.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* $NetBSD: isic_isapnp_itkix.c,v 1.8 2008/04/28 20:23:53 martin Exp $ */
-
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isapnp_itkix.c,v 1.8 2008/04/28 20:23:53 martin Exp $");
-
-#include "opt_isicpnp.h"
-
-#ifdef ISICPNP_ITKIX
-
-#include <sys/param.h>
-#include <sys/ioccom.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-#include <sys/callout.h>
-#include <sys/bus.h>
-#include <sys/device.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-
-#include <dev/ic/isic_l1.h>
-
-/* XXX: this is a hack to share some more code - will be replaced with generic
- * io-mapped isic driver */
-#include "opt_isicisa.h"
-#ifndef ISICISA_ITKIX1
-#define ISICISA_ITKIX1
-#include <dev/isa/isic_isa_itk_ix1.c>
-#else
-extern int isic_attach_itkix1(struct isic_softc *sc);
-#endif
-
-void isic_attach_isapnp_itkix1(struct isic_softc *sc);
-
-void isic_attach_isapnp_itkix1(struct isic_softc *sc)
-{
- isic_attach_itkix1(sc);
-}
-
-#endif
diff --git a/sys/dev/isapnp/isic_isapnp_siemens_isurf.c b/sys/dev/isapnp/isic_isapnp_siemens_isurf.c
deleted file mode 100644
index 19fa589b041..00000000000
--- a/sys/dev/isapnp/isic_isapnp_siemens_isurf.c
+++ /dev/null
@@ -1,481 +0,0 @@
-/*
- * Copyright (c) 1999 Udo Schweigert. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- * Based on ELSA Quickstep 1000pro PCI driver (i4b_elsa_qs1p.c)
- *---------------------------------------------------------------------------
- * In case of trouble please contact Udo Schweigert <ust@cert.siemens.de>
- *---------------------------------------------------------------------------
- *
- * Siemens I-Surf 2.0 PnP specific routines for isic driver
- * --------------------------------------------------------
- *
- * $Id: isic_isapnp_siemens_isurf.c,v 1.11 2007/10/19 12:00:32 ad Exp $
- *
- * last edit-date: [Fri Jan 5 11:38:29 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isapnp_siemens_isurf.c,v 1.11 2007/10/19 12:00:32 ad Exp $");
-
-#include <sys/param.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#if defined(__FreeBSD__)
-#if __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#if defined(__FreeBSD__)
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_ioctl.h>
-#endif
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/ipac.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#if !defined(__FreeBSD__)
-void isic_attach_siemens_isurf(struct isic_softc *sc);
-#endif
-
-/* masks for register encoded in base addr */
-
-#define SIE_ISURF_BASE_MASK 0x0ffff
-#define SIE_ISURF_OFF_MASK 0xf0000
-
-/* register id's to be encoded in base addr */
-
-#define SIE_ISURF_IDISAC 0x00000
-#define SIE_ISURF_IDHSCXA 0x10000
-#define SIE_ISURF_IDHSCXB 0x20000
-#define SIE_ISURF_IDIPAC 0x40000
-
-/* offsets from base address */
-
-#define SIE_ISURF_OFF_ALE 0x00
-#define SIE_ISURF_OFF_RW 0x01
-
-/*---------------------------------------------------------------------------*
- * Siemens I-Surf 2.0 PnP ISAC get fifo routine
- *---------------------------------------------------------------------------*/
-#if defined(__FreeBSD__)
-
-static void
-siemens_isurf_read_fifo(void *buf, const void *base, size_t len)
-{
- if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDHSCXB)
- {
- outb((u_int)((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, IPAC_HSCXB_OFF);
- insb((((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW), (u_char *)buf, (u_int)len);
- }
- else if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDHSCXA)
- {
- outb((u_int)((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, IPAC_HSCXA_OFF);
- insb((((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW), (u_char *)buf, (u_int)len);
- }
- else /* if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDISAC) */
- {
- outb((u_int)((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, IPAC_ISAC_OFF);
- insb((((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW), (u_char *)buf, (u_int)len);
- }
-}
-
-#else
-
-static void
-siemens_isurf_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_ISAC_OFF);
- bus_space_read_multi_1(t, h, SIE_ISURF_OFF_RW, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_HSCXA_OFF);
- bus_space_read_multi_1(t, h, SIE_ISURF_OFF_RW, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_HSCXB_OFF);
- bus_space_read_multi_1(t, h, SIE_ISURF_OFF_RW, buf, size);
- break;
- }
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * Siemens I-Surf 2.0 PnP ISAC put fifo routine
- *---------------------------------------------------------------------------*/
-#if defined(__FreeBSD__)
-
-static void
-siemens_isurf_write_fifo(void *base, const void *buf, size_t len)
-{
- if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDHSCXB)
- {
- outb((u_int)((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, IPAC_HSCXB_OFF);
- outsb((((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW), (const u_char *)buf, (u_int)len);
- }
- else if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDHSCXA)
- {
- outb((u_int)((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, IPAC_HSCXA_OFF);
- outsb((((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW), (const u_char *)buf, (u_int)len);
- }
- else /* if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDISAC) */
- {
- outb((u_int)((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, IPAC_ISAC_OFF);
- outsb((((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW), (const u_char *)buf, (u_int)len);
- }
-}
-
-#else
-
-static void
-siemens_isurf_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_ISAC_OFF);
- bus_space_write_multi_1(t, h, SIE_ISURF_OFF_RW, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_HSCXA_OFF);
- bus_space_write_multi_1(t, h, SIE_ISURF_OFF_RW, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_HSCXB_OFF);
- bus_space_write_multi_1(t, h, SIE_ISURF_OFF_RW, buf, size);
- break;
- }
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * Siemens I-Surf 2.0 PnP ISAC put register routine
- *---------------------------------------------------------------------------*/
-#if defined(__FreeBSD__)
-
-static void
-siemens_isurf_write_reg(u_char *base, u_int offset, u_int v)
-{
- if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDHSCXB)
- {
- outb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, (u_char)(offset+IPAC_HSCXB_OFF));
- outb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW, (u_char)v);
- }
- else if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDHSCXA)
- {
- outb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, (u_char)(offset+IPAC_HSCXA_OFF));
- outb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW, (u_char)v);
- }
- else if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDISAC)
- {
- outb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, (u_char)(offset+IPAC_ISAC_OFF));
- outb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW, (u_char)v);
- }
- else /* IPAC */
- {
- outb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, (u_char)(offset+IPAC_IPAC_OFF));
- outb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW, (u_char)v);
- }
-}
-
-#else
-
-static void
-siemens_isurf_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_ISAC_OFF+offs);
- bus_space_write_1(t, h, SIE_ISURF_OFF_RW, data);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_HSCXA_OFF+offs);
- bus_space_write_1(t, h, SIE_ISURF_OFF_RW, data);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_HSCXB_OFF+offs);
- bus_space_write_1(t, h, SIE_ISURF_OFF_RW, data);
- break;
- case ISIC_WHAT_IPAC:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_IPAC_OFF+offs);
- bus_space_write_1(t, h, SIE_ISURF_OFF_RW, data);
- break;
- }
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * Siemens I-Surf 2.0 PnP ISAC get register routine
- *---------------------------------------------------------------------------*/
-#if defined(__FreeBSD__)
-
-static u_char
-siemens_isurf_read_reg(u_char *base, u_int offset)
-{
- if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDHSCXB)
- {
- outb((u_int)((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, (u_char)(offset+IPAC_HSCXB_OFF));
- return(inb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW));
- }
- else if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDHSCXA)
- {
- outb((u_int)((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, (u_char)(offset+IPAC_HSCXA_OFF));
- return(inb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW));
- }
- else if(((u_int)base & SIE_ISURF_OFF_MASK) == SIE_ISURF_IDISAC)
- {
- outb((u_int)((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, (u_char)(offset+IPAC_ISAC_OFF));
- return(inb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW));
- }
- else /* IPAC */
- {
- outb((u_int)((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_ALE, (u_char)(offset+IPAC_IPAC_OFF));
- return(inb(((u_int)base & SIE_ISURF_BASE_MASK) + SIE_ISURF_OFF_RW));
- }
-}
-
-#else
-
-static u_int8_t
-siemens_isurf_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_ISAC_OFF+offs);
- return bus_space_read_1(t, h, SIE_ISURF_OFF_RW);
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_HSCXA_OFF+offs);
- return bus_space_read_1(t, h, SIE_ISURF_OFF_RW);
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_HSCXB_OFF+offs);
- return bus_space_read_1(t, h, SIE_ISURF_OFF_RW);
- case ISIC_WHAT_IPAC:
- bus_space_write_1(t, h, SIE_ISURF_OFF_ALE, IPAC_IPAC_OFF+offs);
- return bus_space_read_1(t, h, SIE_ISURF_OFF_RW);
- }
- return 0;
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_probe_siemens_isurf - probe for Siemens I-Surf 2.0 PnP
- *---------------------------------------------------------------------------*/
-#if defined(__FreeBSD__)
-
-int
-isic_probe_siemens_isurf(struct isa_device *dev, unsigned int iobase2)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-
- /* check max unit range */
-
- if(dev->id_unit >= ISIC_MAXUNIT)
- {
- printf("isic%d: Error, unit %d >= ISIC_MAXUNIT for Siemens I-Surf 2.0 PnP\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /* check IRQ validity */
-
- switch(ffs(dev->id_irq) - 1)
- {
- case 3:
- case 4:
- case 5:
- case 7:
- case 10:
- case 11:
- case 12:
- case 15:
- break;
-
- default:
- printf("isic%d: Error, invalid IRQ [%d] specified for Siemens I-Surf 2.0 PnP!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- break;
- }
- sc->sc_irq = dev->id_irq;
-
- /* check if memory addr specified */
-
- if(dev->id_maddr)
- {
- printf("isic%d: Error, mem addr 0x%lx specified for Siemens I-Surf 2.0 PnP!\n",
- dev->id_unit, (u_long)dev->id_maddr);
- return(0);
- }
- dev->id_msize = 0;
-
- /* check if we got an iobase */
-
- if(!((dev->id_iobase >= 0x100) && (dev->id_iobase <= 0xfffc)))
- {
- printf("isic%d: Error, invalid iobase 0x%x specified for Siemens I-Surf 2.0 PnP!\n",
- dev->id_unit, dev->id_iobase);
- return(0);
- }
- sc->sc_port = dev->id_iobase;
-
-
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = siemens_isurf_read_reg;
- sc->writereg = siemens_isurf_write_reg;
-
- sc->readfifo = siemens_isurf_read_fifo;
- sc->writefifo = siemens_isurf_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_SIE_ISURF2;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- /* setup chip type = IPAC ! */
-
- sc->sc_ipac = 1;
- sc->sc_bfifolen = IPAC_BFIFO_LEN;
-
-
- return (1);
-}
-
-/*---------------------------------------------------------------------------*
- * isic_attach_siemens_isurf - attach for Siemens I-Surf 2.0 PnP
- *---------------------------------------------------------------------------*/
-int
-isic_attach_siemens_isurf(struct isa_device *dev, unsigned int iobase2)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-
- /* setup ISAC and HSCX base addr */
-
- ISAC_BASE = (void *) ((u_int)sc->sc_port | SIE_ISURF_IDISAC);
- HSCX_A_BASE = (void *) ((u_int)sc->sc_port | SIE_ISURF_IDHSCXA);
- HSCX_B_BASE = (void *) ((u_int)sc->sc_port | SIE_ISURF_IDHSCXB);
- IPAC_BASE = (void *) ((u_int)sc->sc_port | SIE_ISURF_IDIPAC);
-
- /* enable hscx/isac irq's */
- IPAC_WRITE(IPAC_MASK, (IPAC_MASK_INT1 | IPAC_MASK_INT0));
-
- IPAC_WRITE(IPAC_ACFG, 0); /* outputs are open drain */
- IPAC_WRITE(IPAC_AOE, /* aux 5..2 are inputs, 7, 6 outputs */
- (IPAC_AOE_OE5 | IPAC_AOE_OE4 | IPAC_AOE_OE3 | IPAC_AOE_OE2));
- IPAC_WRITE(IPAC_ATX, 0xff); /* set all output lines high */
-
- return(1);
-}
-
-#else
-
-void
-isic_attach_siemens_isurf(struct isic_softc *sc)
-{
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = siemens_isurf_read_reg;
- sc->writereg = siemens_isurf_write_reg;
-
- sc->readfifo = siemens_isurf_read_fifo;
- sc->writefifo = siemens_isurf_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_SIE_ISURF2;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- /* setup chip type = IPAC ! */
-
- sc->sc_ipac = 1;
- sc->sc_bfifolen = IPAC_BFIFO_LEN;
-
- /* enable hscx/isac irq's */
-
- IPAC_WRITE(IPAC_MASK, (IPAC_MASK_INT1 | IPAC_MASK_INT0));
-
- IPAC_WRITE(IPAC_ACFG, 0); /* outputs are open drain */
- IPAC_WRITE(IPAC_AOE, /* aux 5..2 are inputs, 7, 6 outputs */
- (IPAC_AOE_OE5 | IPAC_AOE_OE4 | IPAC_AOE_OE3 | IPAC_AOE_OE2));
- IPAC_WRITE(IPAC_ATX, 0xff); /* set all output lines high */
-}
-
-#endif
diff --git a/sys/dev/isapnp/isic_isapnp_sws.c b/sys/dev/isapnp/isic_isapnp_sws.c
deleted file mode 100644
index d30739d8635..00000000000
--- a/sys/dev/isapnp/isic_isapnp_sws.c
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
- * Copyright (c) 1998 German Tischler. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * Card format:
- *
- * iobase + 0 : reset on (0x03)
- * iobase + 1 : reset off (0x0)
- * iobase + 2 : isac read/write
- * iobase + 3 : hscx read/write ( offset 0-0x3f hscx0 ,
- * offset 0x40-0x7f hscx1 )
- * iobase + 4 : offset for indirect addressing
- *
- *---------------------------------------------------------------------------
- *
- * isic - I4B Siemens ISDN Chipset Driver for SWS cards
- * ====================================================
- *
- * EXPERIMENTAL !!!!
- * =================
- *
- * $Id: isic_isapnp_sws.c,v 1.14 2012/10/27 17:18:26 chs Exp $
- *
- * last edit-date: [Fri Jan 5 11:38:29 2001]
- *
- * -hm adding driver to i4b
- * -hm adjustments for FreeBSD < 2.2.6, no PnP support yet
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isapnp_sws.c,v 1.14 2012/10/27 17:18:26 chs Exp $");
-
-#include "opt_isicpnp.h"
-#ifdef ISICPNP_SEDLBAUER
-
-#define SWS_RESON 0 /* reset on */
-#define SWS_RESOFF 1 /* reset off */
-#define SWS_ISAC 2 /* ISAC */
-#define SWS_HSCX0 3 /* HSCX0 */
-#define SWS_RW 4 /* indirect access register */
-#define SWS_HSCX1 5 /* this is for fakeing that we mean hscx1, though */
- /* access is done through hscx0 */
-
-#define SWS_REGS 8 /* we use an area of 8 bytes for io */
-
-#define SWS_BASE(X) ((unsigned int)X&~(SWS_REGS-1))
-#define SWS_PART(X) ((unsigned int)X& (SWS_REGS-1))
-#define SWS_ADDR(X) ((SWS_PART(X) == SWS_ISAC) ? (SWS_BASE(X)+SWS_ISAC) : (SWS_BASE(X)+SWS_HSCX0) )
-#define SWS_REG(X,Y) ((SWS_PART(X) != SWS_HSCX1) ? Y : (Y+0x40) )
-#define SWS_IDO(X) (SWS_BASE(X)+SWS_RW)
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_l2.h>
-#endif
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#ifndef __FreeBSD__
-static u_int8_t sws_read_reg (struct isic_softc *sc, int what, bus_size_t offs);
-static void sws_write_reg (struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static void sws_read_fifo (struct isic_softc *sc, int what, void *buf, size_t size);
-static void sws_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size);
-void isic_attach_sws(struct isic_softc *sc);
-#endif
-
-/*---------------------------------------------------------------------------*
- * SWS P&P ISAC get fifo routine
- *---------------------------------------------------------------------------*/
-
-#ifdef __FreeBSD__
-
-static void
-sws_read_fifo(void *buf, const void *base, size_t len)
-{
- outb(SWS_IDO(base),SWS_REG(base,0));
- insb(SWS_ADDR(base),buf,len);
-}
-
-#else
-
-static void
-sws_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SWS_RW, 0);
- bus_space_read_multi_1(t, h, SWS_ISAC, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SWS_RW, 0);
- bus_space_read_multi_1(t, h, SWS_HSCX0, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SWS_RW, 0x40);
- bus_space_read_multi_1(t, h, SWS_HSCX0, buf, size);
- break;
- }
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * SWS P&P ISAC put fifo routine
- *---------------------------------------------------------------------------*/
-
-#ifdef __FreeBSD__
-
-static void
-sws_write_fifo(void *base, const void *buf, size_t len)
-{
- outb (SWS_IDO(base),SWS_REG(base,0));
- outsb(SWS_ADDR(base),buf,len);
-}
-
-#else
-
-static void
-sws_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SWS_RW, 0);
- bus_space_write_multi_1(t, h, SWS_ISAC, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SWS_RW, 0);
- bus_space_write_multi_1(t, h, SWS_HSCX0, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SWS_RW, 0x40);
- bus_space_write_multi_1(t, h, SWS_HSCX0, buf, size);
- break;
- }
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * SWS P&P ISAC put register routine
- *---------------------------------------------------------------------------*/
-
-#ifdef __FreeBSD__
-
-static void
-sws_write_reg(u_char *base, u_int offset, u_int v)
-{
- outb(SWS_IDO(base),SWS_REG(base,offset));
- outb(SWS_ADDR(base),v);
-}
-
-#else
-
-static void
-sws_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SWS_RW, offs);
- bus_space_write_1(t, h, SWS_ISAC, data);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SWS_RW, offs);
- bus_space_write_1(t, h, SWS_HSCX0, data);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SWS_RW, 0x40+offs);
- bus_space_write_1(t, h, SWS_HSCX0, data);
- break;
- }
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * SWS P&P ISAC get register routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static u_char
-sws_read_reg(u_char *base, u_int offset)
-{
- outb(SWS_IDO(base),SWS_REG(base,offset));
- return inb(SWS_ADDR(base));
-}
-
-#else
-
-static u_int8_t
-sws_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SWS_RW, offs);
- return bus_space_read_1(t, h, SWS_ISAC);
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SWS_RW, offs);
- return bus_space_read_1(t, h, SWS_HSCX0);
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SWS_RW, 0x40+offs);
- return bus_space_read_1(t, h, SWS_HSCX0);
- }
- return 0;
-}
-
-#endif
-
-#ifdef __FreeBSD__
-
-/* attach callback routine */
-
-int
-isic_attach_sws(struct isa_device *dev)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-
- /* fill in isic_softc structure */
-
- sc->readreg = sws_read_reg;
- sc->writereg = sws_write_reg;
- sc->readfifo = sws_read_fifo;
- sc->writefifo = sws_write_fifo;
- sc->clearirq = NULL;
- sc->sc_unit = dev->id_unit;
- sc->sc_irq = dev->id_irq;
- sc->sc_port = dev->id_iobase;
- sc->sc_cardtyp = CARD_TYPEP_SWS;
- sc->sc_bustyp = BUS_TYPE_IOM2;
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
- dev->id_msize = 0;
-
- ISAC_BASE = (void *) (((u_int) sc->sc_port) + SWS_ISAC);
- HSCX_A_BASE = (void *) (((u_int) sc->sc_port) + SWS_HSCX0);
- HSCX_B_BASE = (void *) (((u_int) sc->sc_port) + SWS_HSCX1);
-
- /*
- * Read HSCX A/B VSTR. Expected value for the SWS PnP card is
- * 0x05 ( = version 2.1 ) in the least significant bits.
- */
-
- if( ((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) ||
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) )
- {
- printf("isic%d: HSCX VSTR test failed for SWS PnP\n",
- dev->id_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- /* reset card */
-
- outb( ((u_int) sc->sc_port) + SWS_RESON , 0x3);
- DELAY(SEC_DELAY / 5);
- outb( ((u_int) sc->sc_port) + SWS_RESOFF, 0);
- DELAY(SEC_DELAY / 5);
-
- return(1);
-}
-
-#else /* !__FreeBSD__ */
-
-void
-isic_attach_sws(struct isic_softc *sc)
-{
- /* setup access routines */
-
- sc->readreg = sws_read_reg;
- sc->writereg = sws_write_reg;
-
- sc->readfifo = sws_read_fifo;
- sc->writefifo = sws_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_SWS;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /*
- * Read HSCX A/B VSTR. Expected value for the SWS PnP card is
- * 0x05 ( = version 2.1 ) in the least significant bits.
- */
-
- if( ((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) ||
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) )
- {
- printf("%s: HSCX VSTR test failed for SWS PnP\n",
- device_xname(sc->sc_dev));
- printf("%s: HSC0: VSTR: %#x\n",
- device_xname(sc->sc_dev), HSCX_READ(0, H_VSTR));
- printf("%s: HSC1: VSTR: %#x\n",
- device_xname(sc->sc_dev), HSCX_READ(1, H_VSTR));
- return;
- }
-
- /* reset card */
- {
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- bus_space_write_1(t, h, SWS_RESON, 0x3);
- DELAY(SEC_DELAY / 5);
- bus_space_write_1(t, h, SWS_RESOFF, 0);
- DELAY(SEC_DELAY / 5);
- }
-}
-
-#endif /* !__FreeBSD__ */
-
-#endif /* ISICPNP_SEDLBAUER */
diff --git a/sys/dev/isapnp/isic_isapnp_tel_s0P.c b/sys/dev/isapnp/isic_isapnp_tel_s0P.c
deleted file mode 100644
index 7d75652fab2..00000000000
--- a/sys/dev/isapnp/isic_isapnp_tel_s0P.c
+++ /dev/null
@@ -1,377 +0,0 @@
-/*
- * Copyright (c) 1997 Andrew Gordon. All rights reserved.
- *
- * Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * isic - I4B Siemens ISDN Chipset Driver for Teles S0 PnP
- * =======================================================
- *
- * EXPERIMENTAL !!!
- * ================
- *
- * $Id: isic_isapnp_tel_s0P.c,v 1.11 2007/10/19 12:00:32 ad Exp $
- *
- * last edit-date: [Fri Jan 5 11:38:29 2001]
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_isapnp_tel_s0P.c,v 1.11 2007/10/19 12:00:32 ad Exp $");
-
-#include "opt_isicpnp.h"
-#ifdef ISICPNP_TEL_S0_16_3_P
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_l2.h>
-#endif
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#ifndef __FreeBSD__
-static u_int8_t tels0163P_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-static void tels0163P_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static void tels0163P_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-static void tels0163P_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size);
-void isic_attach_s0163P(struct isic_softc *sc);
-#endif
-
-
-/*---------------------------------------------------------------------------*
- * Teles S0/16.3 PnP read fifo routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-tels0163P_read_fifo(void *buf, const void *base, size_t len)
-{
- insb((int)base + 0x3e, (u_char *)buf, (u_int)len);
-}
-
-#else
-
-static void
-tels0163P_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- bus_space_read_multi_1(t, h, o + 0x3e, buf, size);
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/16.3 PnP write fifo routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-tels0163P_write_fifo(void *base, const void *buf, size_t len)
-{
- outsb((int)base + 0x3e, (u_char *)buf, (u_int)len);
-}
-
-#else
-
-static void
-tels0163P_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- bus_space_write_multi_1(t, h, o + 0x3e, buf, size);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/16.3 PnP write register routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static void
-tels0163P_write_reg(u_char *base, u_int offset, u_int v)
-{
- outb((int)base + offset, (u_char)v);
-}
-
-#else
-
-static void
-tels0163P_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- bus_space_write_1(t, h, o + offs, data);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * Teles S0/16.3 PnP read register routine
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-
-static u_char
-tels0163P_read_reg(u_char *base, u_int offset)
-{
- return (inb((int)base + offset));
-}
-
-#else
-
-static u_int8_t
-tels0163P_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[what+1].t;
- bus_space_handle_t h = sc->sc_maps[what+1].h;
- bus_size_t o = sc->sc_maps[what+1].offset;
- return bus_space_read_1(t, h, o + offs);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_probe_s0163P - probe for Teles S0/16.3 PnP and compatibles
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-int
-isic_probe_s0163P(struct isa_device *dev, unsigned int iobase2)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
-
- /* check max unit range */
-
- if(dev->id_unit >= ISIC_MAXUNIT)
- {
- printf("isic%d: Error, unit %d >= ISIC_MAXUNIT for Teles S0/16.3 PnP!\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /* check IRQ validity */
-
- switch(ffs(dev->id_irq) - 1)
- {
- case 3:
- case 5:
- case 7:
- case 10:
- case 11:
- case 12:
- break;
-
- default:
- printf("isic%d: Error, invalid IRQ [%d] specified for Teles S0/16.3 PnP!\n",
- dev->id_unit, ffs(dev->id_irq)-1);
- return(0);
- break;
- }
- sc->sc_irq = dev->id_irq;
-
- /* check if memory addr specified */
-
- if(dev->id_maddr)
- {
- printf("isic%d: Error, mem addr 0x%lx specified for Teles S0/16.3 PnP!\n",
- dev->id_unit, (u_long)dev->id_maddr);
- return(0);
- }
- dev->id_msize = 0;
-
- /* check if we got an iobase */
-
- switch(dev->id_iobase)
- {
- case 0x580:
- case 0x500:
- case 0x680:
- break;
-
- default:
- printf("isic%d: Error, invalid iobase 0x%x specified for Teles S0/16.3 PnP!\n",
- dev->id_unit, dev->id_iobase);
- return(0);
- break;
- }
- sc->sc_port = dev->id_iobase;
-
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = tels0163P_read_reg;
- sc->writereg = tels0163P_write_reg;
-
- sc->readfifo = tels0163P_read_fifo;
- sc->writefifo = tels0163P_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_163P;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
-
- switch(dev->id_iobase)
- {
- case 0x580:
- ISAC_BASE = (void *) 0x580 - 0x20;
- HSCX_A_BASE = (void *) 0x180 - 0x20;
- HSCX_B_BASE = (void *) 0x180;
- break;
-
- case 0x500:
- ISAC_BASE = (void *) 0x500 - 0x20;
- HSCX_A_BASE = (void *) 0x100 - 0x20;
- HSCX_B_BASE = (void *) 0x100;
- break;
-
- case 0x680:
- ISAC_BASE = (void *) 0x680 - 0x20;
- HSCX_A_BASE = (void *) 0x280 - 0x20;
- HSCX_B_BASE = (void *) 0x280;
- break;
- }
-
- /*
- * Read HSCX A/B VSTR. Expected value for the S0/16.3 PnP card is
- * 0x05 in the least significant bits.
- */
-
- if( ((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) ||
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) )
- {
- printf("isic%d: HSCX VSTR test failed for Teles S0/16.3 PnP\n",
- dev->id_unit);
- printf("isic%d: HSC0: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: %#x\n",
- dev->id_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- return (1);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_attach_s0163P - attach Teles S0/16.3 PnP and compatibles
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-int
-isic_attach_s0163P(struct isa_device *dev, unsigned int iobase2)
-{
- outb((dev->id_iobase) + 0x1c, 0);
- DELAY(SEC_DELAY / 10);
- outb((dev->id_iobase) + 0x1c, 1);
- DELAY(SEC_DELAY / 10);
- return(1);
-}
-
-#else
-
-void
-isic_attach_s0163P(struct isic_softc *sc)
-{
- /* init card */
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- bus_space_write_1(t, h, 0x1c, 0);
- DELAY(SEC_DELAY / 10);
- bus_space_write_1(t, h, 0x1c, 1);
- DELAY(SEC_DELAY / 10);
-
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = tels0163P_read_reg;
- sc->writereg = tels0163P_write_reg;
-
- sc->readfifo = tels0163P_read_fifo;
- sc->writefifo = tels0163P_write_fifo;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_163P;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-}
-#endif
-
-#endif /* ISICPNP_TEL_S0_16_3_P */
-
diff --git a/sys/dev/pci/files.pci b/sys/dev/pci/files.pci
index 92122e76206..a7f0c576f67 100644
--- a/sys/dev/pci/files.pci
+++ b/sys/dev/pci/files.pci
@@ -1,4 +1,4 @@
-# $NetBSD: files.pci,v 1.406 2018/09/22 12:56:16 maxv Exp $
+# $NetBSD: files.pci,v 1.407 2018/09/22 16:22:23 maxv Exp $
#
# Config file and device description for machine-independent PCI code.
# Included by ports that need it. Requires that the SCSI files be
@@ -807,12 +807,6 @@ file dev/pci/if_malo_pci.c malo_pci
attach wi at pci with wi_pci
file dev/pci/if_wi_pci.c wi_pci
-# ISDN devices
-attach isic at pci with isic_pci
-file dev/pci/isic_pci.c isic_pci
-
-file dev/pci/isic_pci_elsa_qs1p.c isic_pci
-
# IrDA devices
# Toshiba Fast Infrared Type O IrDA driver
device oboe: irbus, irdasir
diff --git a/sys/dev/pci/isic_pci.c b/sys/dev/pci/isic_pci.c
deleted file mode 100644
index 5f5bda050d3..00000000000
--- a/sys/dev/pci/isic_pci.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/* $NetBSD: isic_pci.c,v 1.41 2016/07/14 10:19:06 msaitoh Exp $ */
-
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_pci.c,v 1.41 2016/07/14 10:19:06 msaitoh Exp $");
-
-#include <sys/param.h>
-#include <sys/errno.h>
-#include <sys/syslog.h>
-#include <sys/device.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <sys/systm.h>
-#include <sys/malloc.h>
-#include <sys/callout.h>
-
-#include <sys/cpu.h>
-#include <sys/intr.h>
-#include <sys/bus.h>
-
-
-#include <sys/bus.h>
-#include <sys/intr.h>
-#include <dev/pci/pcireg.h>
-#include <dev/pci/pcivar.h>
-#include <dev/pci/pcidevs.h>
-
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_trace.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/ipac.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-#include <dev/pci/isic_pci.h>
-
-extern const struct isdn_layer1_isdnif_driver isic_std_driver;
-
-static int isic_pci_match(device_t, cfdata_t, void *);
-static void isic_pci_attach(device_t, device_t, void *);
-static const struct isic_pci_product * find_matching_card(struct pci_attach_args *pa);
-
-static void isic_pci_isdn_attach(struct pci_isic_softc *psc,
- struct pci_attach_args *pa, const char *cardname);
-static int isic_pci_detach(device_t self, int flags);
-static int isic_pci_activate(device_t self, enum devact act);
-
-CFATTACH_DECL_NEW(isic_pci, sizeof(struct pci_isic_softc),
- isic_pci_match, isic_pci_attach, isic_pci_detach, isic_pci_activate);
-
-static const struct isic_pci_product {
- pci_vendor_id_t npp_vendor;
- pci_product_id_t npp_product;
- int cardtype;
- const char * name;
- int (*attach)(struct pci_isic_softc *psc, struct pci_attach_args *pa);
- void (*pciattach)(struct pci_isic_softc *psc, struct pci_attach_args *pa, const char *cardname);
-} isic_pci_products[] = {
- { PCI_VENDOR_ELSA, PCI_PRODUCT_ELSA_QS1PCI,
- CARD_TYPEP_ELSAQS1PCI,
- "ELSA QuickStep 1000pro/PCI",
- isic_attach_Eqs1pp, /* card specific initialization */
- isic_pci_isdn_attach /* generic setup for ISAC/HSCX or IPAC boards */
- },
- { 0, 0, 0, NULL, NULL, NULL },
-};
-
-static const struct isic_pci_product * find_matching_card(
- struct pci_attach_args *pa)
-{
- const struct isic_pci_product * pp = NULL;
-
- for (pp = isic_pci_products; pp->npp_vendor; pp++)
- if (PCI_VENDOR(pa->pa_id) == pp->npp_vendor &&
- PCI_PRODUCT(pa->pa_id) == pp->npp_product)
- return pp;
-
- return NULL;
-}
-
-/*
- * Match card
- */
-static int
-isic_pci_match(device_t parent, cfdata_t match, void *aux)
-{
- struct pci_attach_args *pa = aux;
-
- if (!find_matching_card(pa))
- return 0;
-
- return 1;
-}
-
-/*
- * Attach the card
- */
-static void
-isic_pci_attach(device_t parent, device_t self, void *aux)
-{
- struct pci_isic_softc *psc = device_private(self);
- struct isic_softc *sc = &psc->sc_isic;
- struct pci_attach_args *pa = aux;
- const struct isic_pci_product * prod;
-
- aprint_naive("\n");
- sc->sc_dev = self;
-
- /* Redo probe */
- prod = find_matching_card(pa);
- if (prod == NULL) return; /* oops - not found?!? */
-
- aprint_normal(": %s\n", prod->name);
-
- callout_init(&sc->sc_T3_callout, 0);
- callout_init(&sc->sc_T4_callout, 0);
-
- /* card initilization and sc setup */
- if (!prod->attach(psc, pa))
- return;
-
- /* generic setup, if needed for this card */
- if (prod->pciattach)
- prod->pciattach(psc, pa, prod->name);
-}
-
-/*---------------------------------------------------------------------------*
- * isic - pci device driver attach routine
- *---------------------------------------------------------------------------*/
-static void
-isic_pci_isdn_attach(struct pci_isic_softc *psc, struct pci_attach_args *pa,
- const char *cardname)
-{
- struct isic_softc *sc = &psc->sc_isic;
- pci_chipset_tag_t pc = pa->pa_pc;
- pci_intr_handle_t ih;
- const char *intrstr;
- char intrbuf[PCI_INTRSTR_LEN];
-
- static const char *ISACversion[] = {
- "2085 Version A1/A2 or 2086/2186 Version 1.1",
- "2085 Version B1",
- "2085 Version B2",
- "2085 Version V2.3 (B3)",
- "Unknown Version"
- };
-
- static const char *HSCXversion[] = {
- "82525 Version A1",
- "Unknown (0x01)",
- "82525 Version A2",
- "Unknown (0x03)",
- "82525 Version A3",
- "82525 or 21525 Version 2.1",
- "Unknown Version"
- };
-
- sc->sc_isac_version = 0;
- sc->sc_hscx_version = 0;
-
- if(sc->sc_ipac)
- {
- u_int ret = IPAC_READ(IPAC_ID);
-
- switch(ret)
- {
- case 0x01:
- printf("%s: IPAC PSB2115 Version 1.1\n", device_xname(sc->sc_dev));
- break;
-
- case 0x02:
- printf("%s: IPAC PSB2115 Version 1.2\n", device_xname(sc->sc_dev));
- break;
-
- default:
- printf("%s: Error, IPAC version %d unknown!\n",
- device_xname(sc->sc_dev), ret);
- return;
- }
- }
- else
- {
- sc->sc_isac_version = ((ISAC_READ(I_RBCH)) >> 5) & 0x03;
-
- switch(sc->sc_isac_version)
- {
- case ISAC_VA:
- case ISAC_VB1:
- case ISAC_VB2:
- case ISAC_VB3:
- printf("%s: ISAC %s (IOM-%c)\n",
- device_xname(sc->sc_dev),
- ISACversion[sc->sc_isac_version],
- sc->sc_bustyp == BUS_TYPE_IOM1 ? '1' : '2');
- break;
-
- default:
- printf("%s: Error, ISAC version %d unknown!\n",
- device_xname(sc->sc_dev), sc->sc_isac_version);
- return;
- }
-
- sc->sc_hscx_version = HSCX_READ(0, H_VSTR) & 0xf;
-
- switch(sc->sc_hscx_version)
- {
- case HSCX_VA1:
- case HSCX_VA2:
- case HSCX_VA3:
- case HSCX_V21:
- printf("%s: HSCX %s\n",
- device_xname(sc->sc_dev),
- HSCXversion[sc->sc_hscx_version]);
- break;
-
- default:
- printf("%s: Error, HSCX version %d unknown!\n",
- device_xname(sc->sc_dev), sc->sc_hscx_version);
- return;
- }
- }
-
- /* Map and establish the interrupt. */
- if (pci_intr_map(pa, &ih)) {
- aprint_error_dev(sc->sc_dev, "couldn't map interrupt\n");
- return;
- }
- intrstr = pci_intr_string(pc, ih, intrbuf, sizeof(intrbuf));
- psc->sc_ih = pci_intr_establish(pc, ih, IPL_NET, isic_intr_qs1p, psc);
- if (psc->sc_ih == NULL) {
- aprint_error_dev(sc->sc_dev, "couldn't establish interrupt");
- if (intrstr != NULL)
- aprint_error(" at %s", intrstr);
- aprint_error("\n");
- return;
- }
- psc->sc_pc = pc;
- aprint_normal_dev(sc->sc_dev, "interrupting at %s\n", intrstr);
-
- sc->sc_intr_valid = ISIC_INTR_DISABLED;
-
- /* HSCX setup */
-
- isic_bchannel_setup(sc, HSCX_CH_A, BPROT_NONE, 0);
-
- isic_bchannel_setup(sc, HSCX_CH_B, BPROT_NONE, 0);
-
- /* setup linktab */
-
- isic_init_linktab(sc);
-
- /* set trace level */
-
- sc->sc_trace = TRACE_OFF;
-
- sc->sc_state = ISAC_IDLE;
-
- sc->sc_ibuf = NULL;
- sc->sc_ib = NULL;
- sc->sc_ilen = 0;
-
- sc->sc_obuf = NULL;
- sc->sc_op = NULL;
- sc->sc_ol = 0;
- sc->sc_freeflag = 0;
-
- sc->sc_obuf2 = NULL;
- sc->sc_freeflag2 = 0;
-
- /* init higher protocol layers */
- isic_attach_bri(sc, cardname, &isic_std_driver);
-}
-
-
-static int
-isic_pci_detach(device_t self, int flags)
-{
- struct pci_isic_softc *psc = device_private(self);
-
- bus_space_unmap(psc->sc_isic.sc_maps[0].t, psc->sc_isic.sc_maps[0].h,
- psc->sc_size);
- bus_space_free(psc->sc_isic.sc_maps[0].t, psc->sc_isic.sc_maps[0].h,
- psc->sc_size);
- pci_intr_disestablish(psc->sc_pc, psc->sc_ih);
-
- return (0);
-}
-
-static int
-isic_pci_activate(device_t self, enum devact act)
-{
- struct pci_isic_softc *psc = device_private(self);
-
- switch (act) {
- case DVACT_DEACTIVATE:
- psc->sc_isic.sc_intr_valid = ISIC_INTR_DYING;
- isic_detach_bri(&psc->sc_isic);
- return 0;
- default:
- return EOPNOTSUPP;
- }
-}
diff --git a/sys/dev/pci/isic_pci.h b/sys/dev/pci/isic_pci.h
deleted file mode 100644
index 6f9d7cbcb09..00000000000
--- a/sys/dev/pci/isic_pci.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* $NetBSD: isic_pci.h,v 1.11 2008/04/28 20:23:55 martin Exp $ */
-
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-struct pci_isic_softc {
- struct isic_softc sc_isic; /* parent class, must be first */
-
- /* PCI-specific goo */
- void *sc_ih; /* interrupt handler */
- bus_addr_t sc_base;
- bus_size_t sc_size;
- pci_chipset_tag_t sc_pc;
- int flags;
-#define PCIISIC_LCROK 0x01
-
- /* status LED handling */
- struct callout ledcallout;
- u_int8_t ledstat, ledblinkmask;
- int ledblinkfreq;
-};
-
-extern int isic_attach_Eqs1pp(struct pci_isic_softc *psc, struct pci_attach_args *pa);
-extern int isic_intr_qs1p(void *);
diff --git a/sys/dev/pci/isic_pci_elsa_qs1p.c b/sys/dev/pci/isic_pci_elsa_qs1p.c
deleted file mode 100644
index 8cfedae33e7..00000000000
--- a/sys/dev/pci/isic_pci_elsa_qs1p.c
+++ /dev/null
@@ -1,365 +0,0 @@
-/* $NetBSD: isic_pci_elsa_qs1p.c,v 1.20 2012/10/27 17:18:34 chs Exp $ */
-
-/*
- * Copyright (c) 1997, 1999 Hellmuth Michaelis. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * isic - I4B Siemens ISDN Chipset Driver for ELSA Quickstep 1000pro PCI
- * =====================================================================
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_pci_elsa_qs1p.c,v 1.20 2012/10/27 17:18:34 chs Exp $");
-
-#include <sys/param.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <sys/callout.h>
-
-#include <sys/bus.h>
-#include <sys/device.h>
-
-#include <dev/pci/pcireg.h>
-#include <dev/pci/pcivar.h>
-#include <dev/pci/pcidevs.h>
-
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-#include <dev/ic/ipac.h>
-#include <dev/pci/isic_pci.h>
-
-/* masks for register encoded in base addr */
-
-#define ELSA_BASE_MASK 0x0ffff
-#define ELSA_OFF_MASK 0xf0000
-
-/* register id's to be encoded in base addr */
-
-#define ELSA_IDISAC 0x00000
-#define ELSA_IDHSCXA 0x10000
-#define ELSA_IDHSCXB 0x20000
-#define ELSA_IDIPAC 0x40000
-
-/* offsets from base address */
-
-#define ELSA_OFF_ALE 0x00
-#define ELSA_OFF_RW 0x01
-
-/* LED values */
-#define ELSA_NO_LED 0xff
-#define ELSA_GREEN_LED 0x40
-#define ELSA_YELLOW_LED 0x80
-
-#define ELSA_PORT0_MEM_MAPOFF PCI_MAPREG_START
-#define ELSA_PORT0_IO_MAPOFF PCI_MAPREG_START+4
-#define ELSA_PORT1_MAPOFF PCI_MAPREG_START+12
-
-
-static void elsa_cmd_req(struct isic_softc *sc, int cmd, void *data);
-static void elsa_led_handler(void *token);
-
-/*---------------------------------------------------------------------------*
- * ELSA QuickStep 1000pro/PCI ISAC get fifo routine
- *---------------------------------------------------------------------------*/
-
-static void
-eqs1pp_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[1].t;
- bus_space_handle_t h = sc->sc_maps[1].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_ISAC_OFF);
- bus_space_read_multi_1(t, h, ELSA_OFF_RW, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_HSCXA_OFF);
- bus_space_read_multi_1(t, h, ELSA_OFF_RW, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_HSCXB_OFF);
- bus_space_read_multi_1(t, h, ELSA_OFF_RW, buf, size);
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * ELSA QuickStep 1000pro/PCI ISAC put fifo routine
- *---------------------------------------------------------------------------*/
-
-static void
-eqs1pp_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[1].t;
- bus_space_handle_t h = sc->sc_maps[1].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_ISAC_OFF);
- bus_space_write_multi_1(t, h, ELSA_OFF_RW, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_HSCXA_OFF);
- bus_space_write_multi_1(t, h, ELSA_OFF_RW, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_HSCXB_OFF);
- bus_space_write_multi_1(t, h, ELSA_OFF_RW, buf, size);
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * ELSA QuickStep 1000pro/PCI ISAC put register routine
- *---------------------------------------------------------------------------*/
-
-static void
-eqs1pp_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[1].t;
- bus_space_handle_t h = sc->sc_maps[1].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_ISAC_OFF+offs);
- bus_space_write_1(t, h, ELSA_OFF_RW, data);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_HSCXA_OFF+offs);
- bus_space_write_1(t, h, ELSA_OFF_RW, data);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_HSCXB_OFF+offs);
- bus_space_write_1(t, h, ELSA_OFF_RW, data);
- break;
- case ISIC_WHAT_IPAC:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_IPAC_OFF+offs);
- bus_space_write_1(t, h, ELSA_OFF_RW, data);
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * ELSA QuickStep 1000pro/PCI ISAC get register routine
- *---------------------------------------------------------------------------*/
-
-static u_int8_t
-eqs1pp_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[1].t;
- bus_space_handle_t h = sc->sc_maps[1].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_ISAC_OFF+offs);
- return bus_space_read_1(t, h, ELSA_OFF_RW);
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_HSCXA_OFF+offs);
- return bus_space_read_1(t, h, ELSA_OFF_RW);
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_HSCXB_OFF+offs);
- return bus_space_read_1(t, h, ELSA_OFF_RW);
- case ISIC_WHAT_IPAC:
- {
- bus_space_write_1(t, h, ELSA_OFF_ALE, IPAC_IPAC_OFF+offs);
- return bus_space_read_1(t, h, ELSA_OFF_RW);
- }
- }
-
- return 0;
-}
-
-/*---------------------------------------------------------------------------*
- * isic_attach_Eqs1pp - attach for ELSA QuickStep 1000pro/PCI
- *---------------------------------------------------------------------------*/
-
-int
-isic_attach_Eqs1pp(struct pci_isic_softc *psc, struct pci_attach_args *pa)
-{
- struct isic_softc *sc = &psc->sc_isic;
-
- /* setup io mappings */
- sc->sc_num_mappings = 2;
- MALLOC_MAPS(sc);
- sc->sc_maps[0].size = 0;
- if (pci_mapreg_map(pa, ELSA_PORT0_MEM_MAPOFF, PCI_MAPREG_TYPE_MEM, 0,
- &sc->sc_maps[0].t, &sc->sc_maps[0].h, &psc->sc_base, &psc->sc_size) != 0
- && pci_mapreg_map(pa, ELSA_PORT0_IO_MAPOFF, PCI_MAPREG_TYPE_IO, 0,
- &sc->sc_maps[0].t, &sc->sc_maps[0].h, &psc->sc_base, &psc->sc_size) != 0) {
- aprint_error_dev(sc->sc_dev, "can't map card registers\n");
- return (0);
- }
-
- /* PLX9050 Errata #1 */
- if (PCI_REVISION(pa->pa_class) == 1 && psc->sc_base & 0x00000080) {
-#ifdef DEBUG
- printf("%s: no LCR access\n", device_xname(sc->sc_dev));
-#endif
- } else
- psc->flags |= PCIISIC_LCROK;
-
- sc->sc_maps[1].size = 0;
- if (pci_mapreg_map(pa, ELSA_PORT1_MAPOFF, PCI_MAPREG_TYPE_IO, 0,
- &sc->sc_maps[1].t, &sc->sc_maps[1].h, NULL, NULL)) {
- aprint_error_dev(sc->sc_dev, "can't map i/o space\n");
- return (0);
- }
-
- /* setup access routines */
-
- sc->clearirq = NULL;
- sc->readreg = eqs1pp_read_reg;
- sc->writereg = eqs1pp_write_reg;
-
- sc->readfifo = eqs1pp_read_fifo;
- sc->writefifo = eqs1pp_write_fifo;
-
- sc->drv_command = elsa_cmd_req;
-
- /* setup card type */
-
- sc->sc_cardtyp = CARD_TYPEP_ELSAQS1PCI;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- /* setup chip type = IPAC ! */
-
- sc->sc_ipac = 1;
- sc->sc_bfifolen = IPAC_BFIFO_LEN;
-
- IPAC_WRITE(IPAC_ACFG, 0); /* outputs are open drain */
- IPAC_WRITE(IPAC_AOE, /* aux 5..2 are inputs, 7, 6 outputs */
- (IPAC_AOE_OE5 | IPAC_AOE_OE4 | IPAC_AOE_OE3 | IPAC_AOE_OE2));
- IPAC_WRITE(IPAC_ATX, ELSA_NO_LED); /* set all output lines high */
- callout_init(&((struct pci_isic_softc *)sc)->ledcallout, 0);
-
- /* disable any interrupts */
- IPAC_WRITE(IPAC_MASK, 0xff);
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h, 0x4c, 0x01);
-
- return (1);
-}
-
-int
-isic_intr_qs1p(void *vsc)
-{
- struct pci_isic_softc *psc = vsc;
- struct isic_softc *sc = &psc->sc_isic;
- u_int32_t intcsr;
-
- /*
- * if we are not hit by the PLX bug we can try a shortcut
- * (should improve speed for shared IRQs)
- */
- if (psc->flags & PCIISIC_LCROK) {
- intcsr = bus_space_read_4(sc->sc_maps[0].t, sc->sc_maps[0].h,
- 0x4c /* INTCSR */);
- if (!(intcsr & 0x4 /* LINTi1STAT */))
- return (0);
- }
-
- return (isicintr(sc));
-}
-
-static void
-elsa_cmd_req(struct isic_softc *sc, int cmd, void *data)
-{
- intptr_t v;
- int s;
- struct pci_isic_softc *psc = (struct pci_isic_softc *)sc;
-
- switch (cmd) {
- case CMR_DOPEN:
- s = splnet();
- /* enable hscx/isac irq's */
- IPAC_WRITE(IPAC_MASK, (IPAC_MASK_INT1 | IPAC_MASK_INT0));
- /* enable card interrupt */
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h, 0x4c, 0x41);
- splx(s);
- break;
- case CMR_DCLOSE:
- s = splnet();
- callout_stop(&psc->ledcallout);
- IPAC_WRITE(IPAC_ATX, ELSA_NO_LED);
- IPAC_WRITE(IPAC_MASK, 0xff);
- bus_space_write_1(sc->sc_maps[0].t, sc->sc_maps[0].h, 0x4c, 0x01);
- splx(s);
- break;
- case CMR_SETLEDS:
- v = (intptr_t)data;
- callout_stop(&psc->ledcallout);
-
- /* the magic value and keep reset off */
- psc->ledstat = ELSA_NO_LED;
- psc->ledblinkmask = 0;
- psc->ledblinkfreq = 0;
-
- /* now see what LEDs we want to add */
- if (v & CMRLEDS_TEI)
- psc->ledstat &= ~ELSA_GREEN_LED;
-
- if (v & (CMRLEDS_B0|CMRLEDS_B1)) {
- psc->ledstat &= ~ELSA_YELLOW_LED;
- psc->ledblinkmask |= ELSA_YELLOW_LED;
- if ((v & (CMRLEDS_B0|CMRLEDS_B1))
- == (CMRLEDS_B0|CMRLEDS_B1))
- psc->ledblinkfreq = hz/4;
- else
- psc->ledblinkfreq = hz;
- }
-
- elsa_led_handler(psc);
- break;
- }
-}
-
-static void
-elsa_led_handler(void *token)
-{
- struct pci_isic_softc *psc = token;
- struct isic_softc *sc = token; /* XXX */
- int s;
-
- s = splnet();
- IPAC_WRITE(IPAC_ATX, psc->ledstat);
- splx(s);
- if (psc->ledblinkfreq) {
- psc->ledstat ^= psc->ledblinkmask;
- callout_reset(&psc->ledcallout, psc->ledblinkfreq,
- elsa_led_handler, psc);
- }
-}
diff --git a/sys/dev/pcmcia/files.pcmcia b/sys/dev/pcmcia/files.pcmcia
index b194842395b..d528cb50ac3 100644
--- a/sys/dev/pcmcia/files.pcmcia
+++ b/sys/dev/pcmcia/files.pcmcia
@@ -1,4 +1,4 @@
-# $NetBSD: files.pcmcia,v 1.58 2012/08/25 08:20:03 kiyohara Exp $
+# $NetBSD: files.pcmcia,v 1.59 2018/09/22 16:22:23 maxv Exp $
#
# Config.new file and device description for machine-independent PCMCIA code.
# Included by ports that need it.
@@ -115,18 +115,6 @@ file dev/pcmcia/if_cs_pcmcia.c cs_pcmcia
attach an at pcmcia with an_pcmcia
file dev/pcmcia/if_an_pcmcia.c an_pcmcia
-# ISDN devices
-attach isic at pcmcia with isic_pcmcia
-file dev/pcmcia/isic_pcmcia.c isic_pcmcia
-
-defflag opt_isicpcmcia.h ISICPCMCIA_AVM_A1 ISICPCMCIA_ELSA_ISDNMC
- ISICPCMCIA_ELSA_MCALL ISICPCMCIA_SBSPEEDSTAR2
-
-file dev/pcmcia/isic_pcmcia_avm_fritz.c isic_pcmcia
-file dev/pcmcia/isic_pcmcia_elsa_isdnmc.c isic_pcmcia
-file dev/pcmcia/isic_pcmcia_elsa_mcall.c isic_pcmcia
-file dev/pcmcia/isic_pcmcia_sbspeedstar2.c isic_pcmcia
-
# 3Com Bluetooth controller 3CRW6096
device bt3c: btbus, bluetooth, firmload
attach bt3c at pcmcia
diff --git a/sys/dev/pcmcia/isic_pcmcia.c b/sys/dev/pcmcia/isic_pcmcia.c
deleted file mode 100644
index f95d9724364..00000000000
--- a/sys/dev/pcmcia/isic_pcmcia.c
+++ /dev/null
@@ -1,413 +0,0 @@
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_pcmcia.c,v 1.43 2016/07/14 09:27:14 msaitoh Exp $");
-
-#include <sys/param.h>
-#include <sys/errno.h>
-#include <sys/syslog.h>
-#include <sys/device.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <sys/systm.h>
-#include <sys/malloc.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#include <sys/cpu.h>
-#include <sys/intr.h>
-#include <sys/bus.h>
-
-#include <dev/pcmcia/pcmciareg.h>
-#include <dev/pcmcia/pcmciavar.h>
-#include <dev/pcmcia/pcmciadevs.h>
-
-#ifdef __FreeBSD__
-#include <machine/i4b_ioctl.h>
-#include <machine/i4b_trace.h>
-#else
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_trace.h>
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#endif
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/ipac.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_global.h>
-
-#include <dev/pcmcia/isic_pcmcia.h>
-
-#include "opt_isicpcmcia.h"
-
-extern const struct isdn_layer1_isdnif_driver isic_std_driver;
-
-static int isic_pcmcia_match(device_t, cfdata_t, void *);
-static void isic_pcmcia_attach(device_t, device_t, void *);
-static const struct isic_pcmcia_card_entry * find_matching_card(
- struct pcmcia_attach_args *pa);
-static int isic_pcmcia_isdn_attach(struct isic_softc *sc, const char*);
-static int isic_pcmcia_detach(device_t self, int flags);
-static int isic_pcmcia_activate(device_t self, enum devact act);
-
-CFATTACH_DECL_NEW(isic_pcmcia, sizeof(struct pcmcia_isic_softc),
- isic_pcmcia_match, isic_pcmcia_attach,
- isic_pcmcia_detach, isic_pcmcia_activate);
-
-struct isic_pcmcia_card_entry {
- int32_t vendor; /* vendor ID */
- int32_t product; /* product ID */
- const char *cis1_info[4]; /* CIS info to match */
- const char *name; /* name of controller */
- int function; /* expected PCMCIA function type */
- int card_type; /* card type found */
- isic_pcmcia_attach_func attach; /* card initialization */
-};
-
-static const struct isic_pcmcia_card_entry card_list[] = {
-
-#ifdef ISICPCMCIA_AVM_A1
- { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
- { "AVM", "ISDN A", NULL, NULL },
- "AVM Fritz!Card", PCMCIA_FUNCTION_NETWORK,
- CARD_TYPEP_PCFRITZ, isic_attach_fritzpcmcia },
-#endif
-
-#ifdef ISICPCMCIA_ELSA_ISDNMC
- { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
- { "ELSA GmbH, Aachen", "MicroLink ISDN/MC ", NULL, NULL },
- "ELSA MicroLink ISDN/MC", PCMCIA_FUNCTION_NETWORK,
- CARD_TYPEP_ELSAMLIMC, isic_attach_elsaisdnmc },
- { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
- { "ELSA AG, Aachen", "MicroLink ISDN/MC ", NULL, NULL },
- "ELSA MicroLink ISDN/MC", PCMCIA_FUNCTION_NETWORK,
- CARD_TYPEP_ELSAMLIMC, isic_attach_elsaisdnmc },
- { PCMCIA_VENDOR_INVALID, PCMCIA_PRODUCT_INVALID,
- { "ELSA AG (Aachen, Germany)", "MicroLink ISDN/MC ", NULL, NULL },
- "ELSA MicroLink ISDN/MC", PCMCIA_FUNCTION_NETWORK,
- CARD_TYPEP_ELSAMLIMC, isic_attach_elsaisdnmc },
-#endif
-
-#ifdef ISICPCMCIA_ELSA_MCALL
- { 0x105, 0x410a,
- { "ELSA", "MicroLink MC all", NULL, NULL },
- "ELSA MicroLink MCall", PCMCIA_FUNCTION_NETWORK,
- CARD_TYPEP_ELSAMLMCALL, isic_attach_elsamcall },
-#endif
-
-#ifdef ISICPCMCIA_SBSPEEDSTAR2
- { 0x020e, 0x0002,
- { "SEDLBAUER", "speed star II", NULL, NULL },
- "SEDLBAUER speed star II", PCMCIA_FUNCTION_NETWORK,
- CARD_TYPEP_SWS, isic_attach_sbspeedstar2 },
-#endif
-
-};
-#define NUM_MATCH_ENTRIES (sizeof(card_list)/sizeof(card_list[0]))
-
-static const struct isic_pcmcia_card_entry *
-find_matching_card(struct pcmcia_attach_args *pa)
-{
- int i, j;
-
- for (i = 0; i < NUM_MATCH_ENTRIES; i++) {
- if (card_list[i].vendor != PCMCIA_VENDOR_INVALID
- && pa->card->manufacturer != card_list[i].vendor)
- continue;
- if (card_list[i].product != PCMCIA_PRODUCT_INVALID
- && pa->card->product != card_list[i].product)
- continue;
- if (pa->pf->function != card_list[i].function)
- continue;
- for (j = 0; j < 4; j++) {
- if (card_list[i].cis1_info[j] == NULL)
- continue; /* wildcard */
- if (pa->card->cis1_info[j] == NULL)
- break; /* not available */
- if (strcmp(pa->card->cis1_info[j],
- card_list[i].cis1_info[j]) != 0)
- break; /* mismatch */
- }
- if (j >= 4)
- break;
- }
- if (i >= NUM_MATCH_ENTRIES)
- return NULL;
-
- return &card_list[i];
-}
-
-/*
- * Match card
- */
-static int
-isic_pcmcia_match(device_t parent, cfdata_t match, void *aux)
-{
- struct pcmcia_attach_args *pa = aux;
-
- if (!find_matching_card(pa))
- return 0;
-
- return 1;
-}
-
-/*
- * Attach the card
- */
-static void
-isic_pcmcia_attach(device_t parent, device_t self, void *aux)
-{
- struct pcmcia_isic_softc *psc = device_private(self);
- struct isic_softc *sc = &psc->sc_isic;
- struct pcmcia_attach_args *pa = aux;
- struct pcmcia_config_entry *cfe;
- const struct isic_pcmcia_card_entry * cde;
-
- sc->sc_dev = self;
- psc->sc_pf = pa->pf;
- cfe = SIMPLEQ_FIRST(&pa->pf->cfe_head);
- psc->sc_ih = NULL;
-
- aprint_naive("\n");
- /* Which card is it? */
- cde = find_matching_card(pa);
- if (cde == NULL) {
- aprint_error_dev(self,
- "attach failed, couldn't find matching card\n");
- return;
- }
- aprint_normal_dev(self, "%s\n", cde->name);
-
- /* Enable the card */
- pcmcia_function_init(pa->pf, cfe);
- psc->sc_ih = pcmcia_intr_establish(pa->pf, IPL_NET, isicintr, sc);
- pcmcia_function_enable(pa->pf);
-
- if (!cde->attach(psc, cfe, pa)) {
- aprint_error_dev(self,
- "attach failed, card-specific attach unsuccesful\n");
- goto fail;
- }
-
- /* MI initilization */
- sc->sc_cardtyp = cde->card_type;
- if (isic_pcmcia_isdn_attach(sc, cde->name)) {
- aprint_error_dev(self,
- "attach failed, generic attach unsuccesful\n");
- goto fail;
- }
-
- return;
-
-fail:
- pcmcia_function_disable(psc->sc_pf);
- pcmcia_intr_disestablish(psc->sc_pf, psc->sc_ih);
-}
-
-static int
-isic_pcmcia_detach(device_t self, int flags)
-{
- struct pcmcia_isic_softc *psc = device_private(self);
-
- pcmcia_function_disable(psc->sc_pf);
- pcmcia_io_unmap(psc->sc_pf, psc->sc_io_window);
- pcmcia_io_free(psc->sc_pf, &psc->sc_pcioh);
- if (psc->sc_ih != NULL)
- pcmcia_intr_disestablish(psc->sc_pf, psc->sc_ih);
-
- return (0);
-}
-
-int
-isic_pcmcia_activate(device_t self, enum devact act)
-{
- struct pcmcia_isic_softc *psc = device_private(self);
-
- switch (act) {
- case DVACT_DEACTIVATE:
- psc->sc_isic.sc_intr_valid = ISIC_INTR_DYING;
- if (psc->sc_isic.sc_l3token != NULL)
- isic_detach_bri(&psc->sc_isic);
- return 0;
- default:
- return EOPNOTSUPP;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * card independend attach for pcmicia cards
- *---------------------------------------------------------------------------*/
-
-/* parameter and format for message producing e.g. "isic0: " */
-
-#ifdef __FreeBSD__
-#define ISIC_FMT "isic%d: "
-#define ISIC_PARM dev->id_unit
-#define TERMFMT " "
-#else
-#define ISIC_FMT "%s: "
-#define ISIC_PARM device_xname(sc->sc_dev)
-#define TERMFMT "\n"
-#endif
-
-int
-isic_pcmcia_isdn_attach(struct isic_softc *sc, const char *cardname)
-{
- static const char *ISACversion[] = {
- "2085 Version A1/A2 or 2086/2186 Version 1.1",
- "2085 Version B1",
- "2085 Version B2",
- "2085 Version V2.3 (B3)",
- "Unknown Version"
- };
-
- static const char *HSCXversion[] = {
- "82525 Version A1",
- "Unknown (0x01)",
- "82525 Version A2",
- "Unknown (0x03)",
- "82525 Version A3",
- "82525 or 21525 Version 2.1",
- "Unknown Version"
- };
-
- sc->sc_l3token = NULL;
- sc->sc_isac_version = 0;
- sc->sc_isac_version = ((ISAC_READ(I_RBCH)) >> 5) & 0x03;
-
- switch(sc->sc_isac_version)
- {
- case ISAC_VA:
- case ISAC_VB1:
- case ISAC_VB2:
- case ISAC_VB3:
- break;
-
- default:
- printf(ISIC_FMT "Error, ISAC version %d unknown!\n",
- ISIC_PARM, sc->sc_isac_version);
- return(EIO);
- }
-
- sc->sc_hscx_version = HSCX_READ(0, H_VSTR) & 0xf;
-
- switch(sc->sc_hscx_version)
- {
- case HSCX_VA1:
- case HSCX_VA2:
- case HSCX_VA3:
- case HSCX_V21:
- break;
-
- default:
- printf(ISIC_FMT "Error, HSCX version %d unknown!\n",
- ISIC_PARM, sc->sc_hscx_version);
- return(EIO);
- };
-
- sc->sc_intr_valid = ISIC_INTR_DISABLED;
-
- /* HSCX setup */
-
- isic_bchannel_setup(sc, HSCX_CH_A, BPROT_NONE, 0);
-
- isic_bchannel_setup(sc, HSCX_CH_B, BPROT_NONE, 0);
-
- /* setup linktab */
-
- isic_init_linktab(sc);
-
- /* set trace level */
-
- sc->sc_trace = TRACE_OFF;
-
- sc->sc_state = ISAC_IDLE;
-
- sc->sc_ibuf = NULL;
- sc->sc_ib = NULL;
- sc->sc_ilen = 0;
-
- sc->sc_obuf = NULL;
- sc->sc_op = NULL;
- sc->sc_ol = 0;
- sc->sc_freeflag = 0;
-
- sc->sc_obuf2 = NULL;
- sc->sc_freeflag2 = 0;
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
- callout_init(&sc->sc_T3_callout, 0);
- callout_init(&sc->sc_T4_callout, 0);
-#endif
-
- /* announce chip versions */
-
- if(sc->sc_isac_version >= ISAC_UNKN)
- {
- printf(ISIC_FMT "ISAC Version UNKNOWN (VN=0x%x)" TERMFMT,
- ISIC_PARM,
- sc->sc_isac_version);
- sc->sc_isac_version = ISAC_UNKN;
- }
- else
- {
- printf(ISIC_FMT "ISAC %s (IOM-%c)" TERMFMT,
- ISIC_PARM,
- ISACversion[sc->sc_isac_version],
- sc->sc_bustyp == BUS_TYPE_IOM1 ? '1' : '2');
- }
-
- if(sc->sc_hscx_version >= HSCX_UNKN)
- {
- printf(ISIC_FMT "HSCX Version UNKNOWN (VN=0x%x)" TERMFMT,
- ISIC_PARM,
- sc->sc_hscx_version);
- sc->sc_hscx_version = HSCX_UNKN;
- }
- else
- {
- printf(ISIC_FMT "HSCX %s" TERMFMT,
- ISIC_PARM,
- HSCXversion[sc->sc_hscx_version]);
- }
-
- /* init higher protocol layers */
- isic_attach_bri(sc, cardname, &isic_std_driver);
-
- return(0);
-}
-
diff --git a/sys/dev/pcmcia/isic_pcmcia.h b/sys/dev/pcmcia/isic_pcmcia.h
deleted file mode 100644
index b725268747c..00000000000
--- a/sys/dev/pcmcia/isic_pcmcia.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-struct pcmcia_isic_softc {
- struct isic_softc sc_isic; /* parent class */
-
- /* PCMCIA-specific goo */
- struct pcmcia_io_handle sc_pcioh; /* PCMCIA i/o space info */
- int sc_io_window; /* our i/o window */
- struct pcmcia_function *sc_pf; /* our PCMCIA function */
- void *sc_ih; /* interrupt handler */
-};
-
-typedef int (*isic_pcmcia_attach_func)(struct pcmcia_isic_softc *,
- struct pcmcia_config_entry *, struct pcmcia_attach_args *);
-
-extern int isic_attach_fritzpcmcia(struct pcmcia_isic_softc *,
- struct pcmcia_config_entry *, struct pcmcia_attach_args *);
-extern int isic_attach_elsaisdnmc(struct pcmcia_isic_softc *,
- struct pcmcia_config_entry *, struct pcmcia_attach_args *);
-extern int isic_attach_elsamcall(struct pcmcia_isic_softc *,
- struct pcmcia_config_entry *, struct pcmcia_attach_args *);
-extern int isic_attach_sbspeedstar2(struct pcmcia_isic_softc *,
- struct pcmcia_config_entry *, struct pcmcia_attach_args *);
diff --git a/sys/dev/pcmcia/isic_pcmcia_avm_fritz.c b/sys/dev/pcmcia/isic_pcmcia_avm_fritz.c
deleted file mode 100644
index 31b7e42c4a1..00000000000
--- a/sys/dev/pcmcia/isic_pcmcia_avm_fritz.c
+++ /dev/null
@@ -1,494 +0,0 @@
-/*
- * Copyright (c) 1998 Matthias Apitz. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the author nor the names of any co-contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- * 4. Altered versions must be plainly marked as such, and must not be
- * misrepresented as being the original software and/or documentation.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *---------------------------------------------------------------------------
- *
- * Fritz!Card pcmcia specific routines for isic driver
- * ---------------------------------------------------
- *
- * $Id: isic_pcmcia_avm_fritz.c,v 1.12 2007/10/19 12:01:05 ad Exp $
- *
- * last edit-date: [Fri Jan 5 11:39:32 2001]
- *
- * -ap added support for AVM PCMCIA Fritz!Card
- * -mh split into separate file
- *
- *---------------------------------------------------------------------------*/
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_pcmcia_avm_fritz.c,v 1.12 2007/10/19 12:01:05 ad Exp $");
-
-#include "opt_isicpcmcia.h"
-#ifdef ISICPCMCIA_AVM_A1
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <dev/pcmcia/pcmciareg.h>
-#include <dev/pcmcia/pcmciavar.h>
-#endif
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#ifndef __FreeBSD__
-#include <dev/pcmcia/isic_pcmcia.h>
-
-/* PCMCIA support routines */
-static u_int8_t avma1_pcmcia_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-static void avma1_pcmcia_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static void avma1_pcmcia_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-static void avma1_pcmcia_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size);
-#endif
-
-/*---------------------------------------------------------------------------*
- * AVM PCMCIA Fritz!Card special registers
- *---------------------------------------------------------------------------*/
-
-/*
- * register offsets from i/o base 0x140 or 0x300
- */
-#define ADDR_REG_OFFSET 0x02
-#define DATA_REG_OFFSET 0x03
-#define STAT0_OFFSET 0x04
-#define STAT1_OFFSET 0x05
-#define MODREG_OFFSET 0x06
-#define VERREG_OFFSET 0x07
-/*
- * AVM PCMCIA Status Latch 0 read only bits
- */
-#define ASL_IRQ_TIMER 0x10 /* Timer interrupt, active low */
-#define ASL_IRQ_ISAC 0x20 /* ISAC interrupt, active low */
-#define ASL_IRQ_HSCX 0x40 /* HSX interrupt, active low */
-#define ASL_IRQ_BCHAN ASL_IRQ_HSCX
-#define ASL_IRQ_Pending (ASL_IRQ_ISAC | ASL_IRQ_HSCX | ASL_IRQ_TIMER)
-/*
- * AVM Status Latch 0 write only bits
- */
-#define ASL_RESET_ALL 0x01 /* reset siemens IC's, active 1 */
-#define ASL_TIMERDISABLE 0x02 /* active high */
-#define ASL_TIMERRESET 0x04 /* active high */
-#define ASL_ENABLE_INT 0x08 /* active high */
-/*
- * AVM Status Latch 1 write only bits
- */
-#define ASL1_LED0 0x10 /* active high */
-#define ASL1_LED1 0x20 /* active high */
-
-#define ASL1_ENABLE_S0 0xc0 /* enable active S0 I/F */
-
-/*----- EEpromless controller -----*/
-/*
- * AVM Status Latch read/write bit
- */
-
-#define ASL_TESTBIT 0x80
-
-
-/*---------------------------------------------------------------------------*
- * AVM read fifo routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static int PCMCIA_IO_BASE = 0; /* ap: XXX hack */
-static void
-avma1_pcmcia_read_fifo(void *buf, const void *base, size_t len)
-{
- outb(PCMCIA_IO_BASE + ADDR_REG_OFFSET, (int)base - 0x20);
- insb(PCMCIA_IO_BASE + DATA_REG_OFFSET, (u_char *)buf, (u_int)len);
-}
-#else
-/* offsets of the different 'what' arguments */
-static u_int8_t what_map[] = {
- 0x20-0x20, /* ISIC_WHAT_ISAC */
- 0xA0-0x20, /* ISIC_WHAT_HSCXA */
- 0xE0-0x20 /* ISIC_WHAT_HSCXB */
-};
-static void
-avma1_pcmcia_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- bus_space_write_1(t, h, ADDR_REG_OFFSET, what_map[what]);
- bus_space_read_multi_1(t, h, DATA_REG_OFFSET, buf, size);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * AVM write fifo routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static void
-avma1_pcmcia_write_fifo(void *base, const void *buf, size_t len)
-{
- outb(PCMCIA_IO_BASE + ADDR_REG_OFFSET, (int)base - 0x20);
- outsb(PCMCIA_IO_BASE + DATA_REG_OFFSET, (u_char *)buf, (u_int)len);
-}
-#else
-static void
-avma1_pcmcia_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- bus_space_write_1(t, h, ADDR_REG_OFFSET, what_map[what]);
- bus_space_write_multi_1(t, h, DATA_REG_OFFSET, buf, size);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * AVM write register routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static void
-avma1_pcmcia_write_reg(u_char *base, u_int offset, u_int v)
-{
- /* offset includes 0x20 FIFO ! */
- outb(PCMCIA_IO_BASE + ADDR_REG_OFFSET, (int)base+offset-0x20);
- outb(PCMCIA_IO_BASE + DATA_REG_OFFSET, (u_char)v);
-}
-#else
-static void
-avma1_pcmcia_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- bus_space_write_1(t, h, ADDR_REG_OFFSET, what_map[what]+offs);
- bus_space_write_1(t, h, DATA_REG_OFFSET, data);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * AVM read register routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static u_char
-avma1_pcmcia_read_reg(u_char *base, u_int offset)
-{
- /* offset includes 0x20 FIFO ! */
- outb(PCMCIA_IO_BASE + ADDR_REG_OFFSET, (int)base+offset-0x20);
- return (inb(PCMCIA_IO_BASE + DATA_REG_OFFSET));
-}
-#else
-static u_int8_t
-avma1_pcmcia_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- bus_space_write_1(t, h, ADDR_REG_OFFSET, what_map[what]+offs);
- return bus_space_read_1(t, h, DATA_REG_OFFSET);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * isic_probe_avma1_pcmcia - probe for AVM PCMCIA Fritz!Card
- * This is in the bus attachemnt part on NetBSD (isic_pcmcia.c), no
- * card specicfic probe is needed on direct config buses like pcmcia.
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-int
-isic_probe_avma1_pcmcia(struct isa_device *dev)
-{
- struct isic_softc *sc = &l1_sc[dev->id_unit];
- u_char byte;
- int i;
- u_int cardinfo;
-
- /* check max unit range */
-
- if(dev->id_unit > 1)
- {
- printf("isic%d: Error, unit %d > MAXUNIT for AVM PCMCIA Fritz!Card\n",
- dev->id_unit, dev->id_unit);
- return(0);
- }
- sc->sc_unit = dev->id_unit;
-
- /*
- * we trust the IRQ we got from PCCARD service
- */
- sc->sc_irq = dev->id_irq;
-
- /* check if we got an iobase */
-
- switch(dev->id_iobase)
- {
- case 0x140:
- case 0x300:
- break;
- default:
- printf("isic%d: Error, invalid iobase 0x%x specified for AVM PCMCIA Fritz!Card.\n",
- dev->id_unit, dev->id_iobase);
- return(0);
- break;
- }
- sc->sc_port = dev->id_iobase;
-
- /* ResetController */
-
- outb(dev->id_iobase + STAT0_OFFSET, 0x00);
- DELAY(SEC_DELAY / 20);
- outb(dev->id_iobase + STAT0_OFFSET, 0x01);
- DELAY(SEC_DELAY / 20);
- outb(dev->id_iobase + STAT0_OFFSET, 0x00);
-
- /*
- * CheckController
- * The logic to check for the PCMCIA was adapted as
- * described by AVM.
- */
-
- outb(dev->id_iobase + ADDR_REG_OFFSET, 0x21); /* ISAC STAR */
- if ( (byte=inb(dev->id_iobase + DATA_REG_OFFSET) & 0xfd) != 0x48 )
- {
- printf("isic%d: Error, ISAC STAR for AVM PCMCIA is 0x%0x (should be 0x48)\n",
- dev->id_unit, byte);
- return(0);
- }
-
- outb(dev->id_iobase + ADDR_REG_OFFSET, 0xa1); /* HSCX STAR */
- if ( (byte=inb(dev->id_iobase + DATA_REG_OFFSET) & 0xfd) != 0x48 )
- {
- printf("isic%d: Error, HSCX STAR for AVM PCMCIA is 0x%0x (should be 0x48)\n",
- dev->id_unit, byte);
- return(0);
- }
-
- byte = ASL_TESTBIT;
- for (i=0; i<256; i++) {
- byte = byte ? 0 : ASL_TESTBIT;
- outb(dev->id_iobase + STAT0_OFFSET, byte);
- if ((inb(dev->id_iobase+STAT0_OFFSET)&ASL_TESTBIT)!=byte) {
- printf("isic%d: Error during toggle of AVM PCMCIA Status Latch0\n",
- dev->id_unit);
- return(0);
- }
- }
-
- sc->clearirq = NULL;
- sc->readreg = avma1_pcmcia_read_reg;
- sc->writereg = avma1_pcmcia_write_reg;
-
- sc->readfifo = avma1_pcmcia_read_fifo;
- sc->writefifo = avma1_pcmcia_write_fifo;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2; /* ap: XXX ??? */
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* setup ISAC and HSCX base addr */
- /*
- * NOTE: for PCMCIA these are no real addrs; they are
- * offsets to be written into the base+ADDR_REG_OFFSET register
- * to pick up the values of the bytes fro base+DATA_REG_OFFSET
- *
- * see also the logic in the avma1_pcmcia_* routines;
- * therefore we also must have the base addr in some static
- * space or struct; XXX better solution?
- */
-
- PCMCIA_IO_BASE = dev->id_iobase;
- ISAC_BASE = (void *)0x20;
-
- HSCX_A_BASE = (void *)0xA0;
- HSCX_B_BASE = (void *)0xE0;
-
- /*
- * Read HSCX A/B VSTR.
- * Expected value for AVM A1 is 0x04 or 0x05 and for the
- * AVM Fritz!Card is 0x05 in the least significant bits.
- */
-
- if( (((HSCX_READ(0, H_VSTR) & 0xf) != 0x5) &&
- ((HSCX_READ(0, H_VSTR) & 0xf) != 0x4)) ||
- (((HSCX_READ(1, H_VSTR) & 0xf) != 0x5) &&
- ((HSCX_READ(1, H_VSTR) & 0xf) != 0x4)) )
- {
- printf("isic%d: HSCX VSTR test failed for AVM PCMCIA Fritz!Card\n",
- dev->id_unit);
- printf("isic%d: HSC0: VSTR: 0x%0x\n",
- dev->id_unit, HSCX_READ(0, H_VSTR));
- printf("isic%d: HSC1: VSTR: 0x%0x\n",
- dev->id_unit, HSCX_READ(1, H_VSTR));
- return (0);
- }
-
- /*
- * seems we really have an AVM PCMCIA Fritz!Card controller
- */
- cardinfo = inb(dev->id_iobase + VERREG_OFFSET)<<8 | inb(dev->id_iobase + MODREG_OFFSET);
- printf("isic%d: successfully detect AVM PCMCIA cardinfo = 0x%0x\n",
- dev->id_unit, cardinfo);
- dev->id_flags = FLAG_AVM_A1_PCMCIA;
- return (1);
-}
-#endif /* __FreeBSD__ */
-
-
-
-/*---------------------------------------------------------------------------*
- * isic_attach_fritzpcmcia - attach Fritz!Card
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-int
-isic_attach_fritzpcmcia(struct isa_device *dev)
-{
- /* ResetController again just to make sure... */
-
- outb(dev->id_iobase + STAT0_OFFSET, 0x00);
- DELAY(SEC_DELAY / 10);
- outb(dev->id_iobase + STAT0_OFFSET, 0x01);
- DELAY(SEC_DELAY / 10);
- outb(dev->id_iobase + STAT0_OFFSET, 0x00);
- DELAY(SEC_DELAY / 10);
-
- /* enable IRQ, disable counter IRQ */
-
- outb(dev->id_iobase + STAT0_OFFSET, ASL_TIMERDISABLE |
- ASL_TIMERRESET | ASL_ENABLE_INT);
- /* DELAY(SEC_DELAY / 10); */
-
- return(1);
-}
-
-#else
-
-int
-isic_attach_fritzpcmcia(struct pcmcia_isic_softc *psc, struct pcmcia_config_entry *cfe, struct pcmcia_attach_args *pa)
-{
- struct isic_softc *sc = &psc->sc_isic;
- bus_space_tag_t t;
- bus_space_handle_t h;
- int i;
-
- /* Validate config info */
- if (cfe->num_memspace != 0)
- printf(": unexpected number of memory spaces %d should be 0\n",
- cfe->num_memspace);
- if (cfe->num_iospace != 1)
- printf(": unexpected number of memory spaces %d should be 1\n",
- cfe->num_iospace);
-
- /* Allocate pcmcia space - but don't listen to the card, it's lying
- about the size needed! */
- for (i = 0; i < cfe->num_iospace; i++)
- if (pcmcia_io_alloc(pa->pf, cfe->iospace[i].start, cfe->iospace[i].length, 1, &psc->sc_pcioh) == 0)
- break;
- if (i >= cfe->num_iospace) {
- printf(": can't allocate i/o space\n");
- return 0;
- }
-
- /* map the selected space */
- if (pcmcia_io_map(pa->pf, ((cfe->flags & PCMCIA_CFE_IO16) ?
- PCMCIA_WIDTH_IO16 : PCMCIA_WIDTH_IO8), &psc->sc_pcioh,
- &psc->sc_io_window)) {
- printf(": can't map i/o space\n");
- return 0;
- }
-
- /* Setup bus space maps */
- sc->sc_num_mappings = 1;
- MALLOC_MAPS(sc);
-
- /* Copy our handles/tags to the MI maps */
- sc->sc_maps[0].t = psc->sc_pcioh.iot;
- sc->sc_maps[0].h = psc->sc_pcioh.ioh;
- sc->sc_maps[0].offset = 0;
- sc->sc_maps[0].size = 0; /* not our mapping */
-
- t = sc->sc_maps[0].t;
- h = sc->sc_maps[0].h;
-
- sc->clearirq = NULL;
- sc->readreg = avma1_pcmcia_read_reg;
- sc->writereg = avma1_pcmcia_write_reg;
-
- sc->readfifo = avma1_pcmcia_read_fifo;
- sc->writefifo = avma1_pcmcia_write_fifo;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* Reset controller again just to make sure... */
-
- bus_space_write_1(t, h, STAT0_OFFSET, 0x00);
- DELAY(SEC_DELAY / 10);
- bus_space_write_1(t, h, STAT0_OFFSET, 0x01);
- DELAY(SEC_DELAY / 10);
- bus_space_write_1(t, h, STAT0_OFFSET, 0x00);
- DELAY(SEC_DELAY / 10);
-
- /* enable IRQ, disable counter IRQ */
-
- bus_space_write_1(t, h, STAT0_OFFSET, ASL_TIMERDISABLE |
- ASL_TIMERRESET | ASL_ENABLE_INT);
-
- return 1;
-}
-#endif
-
-#endif /* ISICPCMCIA_AVM_A1 */
diff --git a/sys/dev/pcmcia/isic_pcmcia_elsa_isdnmc.c b/sys/dev/pcmcia/isic_pcmcia_elsa_isdnmc.c
deleted file mode 100644
index 56df084c856..00000000000
--- a/sys/dev/pcmcia/isic_pcmcia_elsa_isdnmc.c
+++ /dev/null
@@ -1,304 +0,0 @@
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_pcmcia_elsa_isdnmc.c,v 1.14 2014/03/23 02:47:38 christos Exp $");
-
-#include "opt_isicpcmcia.h"
-#ifdef ISICPCMCIA_ELSA_ISDNMC
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-
-#include <dev/pcmcia/pcmciareg.h>
-#include <dev/pcmcia/pcmciavar.h>
-#endif
-
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#include <dev/pcmcia/isic_pcmcia.h>
-
-#ifndef __FreeBSD__
-/* PCMCIA support routines */
-static u_int8_t elsa_isdnmc_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-static void elsa_isdnmc_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static void elsa_isdnmc_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-static void elsa_isdnmc_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size);
-static void elsa_isdnmc_clrirq(struct isic_softc *sc);
-#endif
-
-/*
- * The ELSA MicroLink ISDN/MC uses one contigous IO region,
- * mapped by the pcmcia code.
- * The chip access is via three ports:
- */
-#define ISAC_DATA 1 /* ISAC dataport at offset 1 */
-#define HSCX_DATA 2 /* HSCX dataport at offset 2 */
-#define ADDR_LATCH 4 /* address latch at offset 4 */
-
-/* This is very similar to the ELSA QuickStep 1000 (ISA) card */
-
-#ifdef __FreeBSD__
-static void
-elsa_isdnmc_clrirq(void *base)
-{
-}
-#else
-static void
-elsa_isdnmc_clrirq(struct isic_softc *sc)
-{
- ISAC_WRITE(I_MASK, 0xff);
- HSCX_WRITE(0, H_MASK, 0xff);
- HSCX_WRITE(1, H_MASK, 0xff);
- ISAC_WRITE(I_MASK, ISAC_IMASK);
- HSCX_WRITE(0, H_MASK, HSCX_A_IMASK);
- HSCX_WRITE(1, H_MASK, HSCX_B_IMASK);
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * read fifo routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static void
-elsa_isdnmc_read_fifo(void *buf, const void *base, size_t len)
-{
-}
-#else
-static void
-elsa_isdnmc_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ADDR_LATCH, 0);
- bus_space_read_multi_1(t, h, ISAC_DATA, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ADDR_LATCH, 0);
- bus_space_read_multi_1(t, h, HSCX_DATA, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ADDR_LATCH, 0x40);
- bus_space_read_multi_1(t, h, HSCX_DATA, buf, size);
- break;
- }
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * write fifo routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static void
-elsa_isdnmc_write_fifo(void *base, const void *buf, size_t len)
-{
-}
-#else
-static void
-elsa_isdnmc_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ADDR_LATCH, 0);
- bus_space_write_multi_1(t, h, ISAC_DATA, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ADDR_LATCH, 0);
- bus_space_write_multi_1(t, h, HSCX_DATA, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ADDR_LATCH, 0x40);
- bus_space_write_multi_1(t, h, HSCX_DATA, buf, size);
- break;
- }
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * write register routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static void
-elsa_isdnmc_write_reg(u_char *base, u_int offset, u_int v)
-{
-}
-#else
-static void
-elsa_isdnmc_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ADDR_LATCH, offs);
- bus_space_write_1(t, h, ISAC_DATA, data);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ADDR_LATCH, offs);
- bus_space_write_1(t, h, HSCX_DATA, data);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ADDR_LATCH, 0x40+offs);
- bus_space_write_1(t, h, HSCX_DATA, data);
- break;
- }
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * read register routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static u_char
-elsa_isdnmc_read_reg(u_char *base, u_int offset)
-{
- return 0;
-}
-#else
-static u_int8_t
-elsa_isdnmc_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, ADDR_LATCH, offs);
- return bus_space_read_1(t, h, ISAC_DATA);
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, ADDR_LATCH, offs);
- return bus_space_read_1(t, h, HSCX_DATA);
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, ADDR_LATCH, 0x40+offs);
- return bus_space_read_1(t, h, HSCX_DATA);
- }
- return 0;
-}
-#endif
-
-#ifdef __FreeBSD__
-#else
-
-/*
- * XXX - one time only! Some of this has to go into an enable
- * function, with apropriate counterpart in disable, so a card
- * could be removed an inserted again.
- */
-int
-isic_attach_elsaisdnmc(struct pcmcia_isic_softc *psc, struct pcmcia_config_entry *cfe, struct pcmcia_attach_args *pa)
-{
- struct isic_softc *sc = &psc->sc_isic;
-
- /* Validate config info */
- if (cfe->num_memspace != 0)
- printf(": unexpected number of memory spaces %d should be 0\n",
- cfe->num_memspace);
- if (cfe->num_iospace != 1)
- printf(": unexpected number of memory spaces %d should be 1\n",
- cfe->num_iospace);
-
- /* Allocate pcmcia space */
- if (pcmcia_io_alloc(pa->pf, 0, cfe->iospace[0].length,
- cfe->iospace[0].length, &psc->sc_pcioh))
- printf(": can't allocate i/o space\n");
-
- /* map them */
- if (pcmcia_io_map(pa->pf, ((cfe->flags & PCMCIA_CFE_IO16) ?
- PCMCIA_WIDTH_IO16 : PCMCIA_WIDTH_IO8), &psc->sc_pcioh,
- &psc->sc_io_window)) {
- printf(": can't map i/o space\n");
- return 0;
- }
-
- /* Setup bus space maps */
- sc->sc_num_mappings = 1;
- MALLOC_MAPS(sc);
-
- /* Copy our handles/tags to the MI maps */
- sc->sc_maps[0].t = psc->sc_pcioh.iot;
- sc->sc_maps[0].h = psc->sc_pcioh.ioh;
- sc->sc_maps[0].offset = 0;
- sc->sc_maps[0].size = 0; /* not our mapping */
-
- sc->clearirq = elsa_isdnmc_clrirq;
-
- sc->readreg = elsa_isdnmc_read_reg;
- sc->writereg = elsa_isdnmc_write_reg;
-
- sc->readfifo = elsa_isdnmc_read_fifo;
- sc->writefifo = elsa_isdnmc_write_fifo;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- return 1;
-}
-#endif
-
-#endif /* ISICPCMCIA_ELSA_ISDNMC */
diff --git a/sys/dev/pcmcia/isic_pcmcia_elsa_mcall.c b/sys/dev/pcmcia/isic_pcmcia_elsa_mcall.c
deleted file mode 100644
index 3d4f8cf6fec..00000000000
--- a/sys/dev/pcmcia/isic_pcmcia_elsa_mcall.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_pcmcia_elsa_mcall.c,v 1.15 2014/03/23 02:48:41 christos Exp $");
-
-#include "opt_isicpcmcia.h"
-#ifdef ISICPCMCIA_ELSA_MCALL
-
-#include <sys/param.h>
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
-#include <sys/ioccom.h>
-#else
-#include <sys/ioctl.h>
-#endif
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-
-#ifdef __FreeBSD__
-#include <machine/clock.h>
-#include <i386/isa/isa_device.h>
-#else
-#include <sys/bus.h>
-#include <sys/device.h>
-#endif
-
-#include <sys/socket.h>
-#include <net/if.h>
-
-#if defined(__NetBSD__) && __NetBSD_Version__ >= 104230000
-#include <sys/callout.h>
-#endif
-
-#ifdef __FreeBSD__
-#include <machine/i4b_debug.h>
-#include <machine/i4b_ioctl.h>
-#else
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-
-#include <dev/pcmcia/pcmciareg.h>
-#include <dev/pcmcia/pcmciavar.h>
-#endif
-
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-#include <dev/ic/ipac.h>
-
-#include <dev/pcmcia/isic_pcmcia.h>
-
-#ifndef __FreeBSD__
-/* PCMCIA support routines */
-static u_int8_t elsa_mcall_read_reg(struct isic_softc *sc, int what, bus_size_t offs);
-static void elsa_mcall_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data);
-static void elsa_mcall_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size);
-static void elsa_mcall_write_fifo(struct isic_softc *sc, int what, const void *data, size_t size);
-#endif
-
-/*---------------------------------------------------------------------------*
- * read fifo routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static int PCMCIA_IO_BASE = 0; /* ap: XXX hack */
-static void
-elsa_mcall_read_fifo(void *buf, const void *base, size_t len)
-{
-}
-#else
-static void
-elsa_mcall_read_fifo(struct isic_softc *sc, int what,
- void *buf, size_t size)
-{
- /*
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- */
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * write fifo routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static void
-elsa_mcall_write_fifo(void *base, const void *buf, size_t len)
-{
-}
-#else
-static void
-elsa_mcall_write_fifo(struct isic_softc *sc, int what,
- const void *buf, size_t size)
-{
- /*
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- */
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * write register routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static void
-elsa_mcall_write_reg(u_char *base, u_int offset, u_int v)
-{
-}
-#else
-static void
-elsa_mcall_write_reg(struct isic_softc *sc, int what,
- bus_size_t offs, u_int8_t data)
-{
- /*
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- */
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * read register routines
- *---------------------------------------------------------------------------*/
-#ifdef __FreeBSD__
-static u_char
-elsa_mcall_read_reg(u_char *base, u_int offset)
-{
- return 0;
-}
-#else
-static u_int8_t
-elsa_mcall_read_reg(struct isic_softc *sc, int what,
- bus_size_t offs)
-{
- /*
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- */
- return 0;
-}
-#endif
-
-#ifdef __FreeBSD__
-#else
-
-/*
- * XXX - one time only! Some of this has to go into an enable
- * function, with apropriate counterpart in disable, so a card
- * could be removed an inserted again.
- */
-int
-isic_attach_elsamcall(struct pcmcia_isic_softc *psc, struct pcmcia_config_entry *cfe, struct pcmcia_attach_args *pa)
-{
- struct isic_softc *sc = &psc->sc_isic;
-
- /* Validate config info */
- if (cfe->num_memspace != 0)
- printf(": unexpected number of memory spaces %d should be 0\n",
- cfe->num_memspace);
- if (cfe->num_iospace != 1)
- printf(": unexpected number of memory spaces %d should be 1\n",
- cfe->num_iospace);
-
- /* Allocate pcmcia space */
- if (pcmcia_io_alloc(pa->pf, 0, cfe->iospace[0].length,
- cfe->iospace[0].length, &psc->sc_pcioh))
- printf(": can't allocate i/o space\n");
-
- /* map them */
- if (pcmcia_io_map(pa->pf, ((cfe->flags & PCMCIA_CFE_IO16) ?
- PCMCIA_WIDTH_IO16 : PCMCIA_WIDTH_IO8), &psc->sc_pcioh,
- &psc->sc_io_window)) {
- printf(": can't map i/o space\n");
- return 0;
- }
-
- /* Setup bus space maps */
- sc->sc_num_mappings = 1;
- MALLOC_MAPS(sc);
-
- /* Copy our handles/tags to the MI maps */
- sc->sc_maps[0].t = psc->sc_pcioh.iot;
- sc->sc_maps[0].h = psc->sc_pcioh.ioh;
- sc->sc_maps[0].offset = 0;
- sc->sc_maps[0].size = 0; /* not our mapping */
-
- sc->clearirq = NULL;
- sc->readreg = elsa_mcall_read_reg;
- sc->writereg = elsa_mcall_write_reg;
-
- sc->readfifo = elsa_mcall_read_fifo;
- sc->writefifo = elsa_mcall_write_fifo;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 1;
- sc->sc_bfifolen = IPAC_BFIFO_LEN;
-
- return 1;
-}
-#endif
-
-#endif /* ISICPCMCIA_ELSA_MCALL */
diff --git a/sys/dev/pcmcia/isic_pcmcia_sbspeedstar2.c b/sys/dev/pcmcia/isic_pcmcia_sbspeedstar2.c
deleted file mode 100644
index ff245834660..00000000000
--- a/sys/dev/pcmcia/isic_pcmcia_sbspeedstar2.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/*-
- * Copyright (c) 2002 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Martin Husemann <martin@NetBSD.org>.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: isic_pcmcia_sbspeedstar2.c,v 1.13 2014/03/23 02:50:08 christos Exp $");
-
-#include "opt_isicpcmcia.h"
-#ifdef ISICPCMCIA_SBSPEEDSTAR2
-
-/*
- * Card format:
- *
- * iobase + 0 : reset on (0x03), off (0x0)
- * iobase + 1 : isac read/write
- * iobase + 2 : hscx read/write ( offset 0-0x3f hscx0 ,
- * offset 0x40-0x7f hscx1 )
- * iobase + 4 : address register
- *
- */
-
-#define SBSS_RESET 0 /* reset on / off */
-#define SBSS_ISAC 1 /* ISAC */
-#define SBSS_HSCX 2 /* HSCX0 */
-#define SBSS_RW 4 /* indirect access register */
-
-#define SBSS_REGS 8 /* we use an area of 8 bytes for io */
-
-#include <sys/param.h>
-#include <sys/callout.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/mbuf.h>
-#include <sys/device.h>
-#include <sys/bus.h>
-#include <sys/socket.h>
-#include <net/if.h>
-#include <netisdn/i4b_debug.h>
-#include <netisdn/i4b_ioctl.h>
-#include <netisdn/i4b_l2.h>
-#include <netisdn/i4b_l1l2.h>
-
-#include <dev/ic/isic_l1.h>
-#include <dev/ic/isac.h>
-#include <dev/ic/hscx.h>
-
-#include <netisdn/i4b_global.h>
-#include <netisdn/i4b_l1l2.h>
-#include <netisdn/i4b_mbuf.h>
-#include <dev/pcmcia/pcmciareg.h>
-#include <dev/pcmcia/pcmciavar.h>
-
-#include <dev/pcmcia/isic_pcmcia.h>
-
-/*---------------------------------------------------------------------------*
- * Sedlbauer SpeedStar ISAC get fifo routine
- *---------------------------------------------------------------------------*/
-
-static void
-sws_read_fifo(struct isic_softc *sc, int what, void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SBSS_RW, 0);
- bus_space_read_multi_1(t, h, SBSS_ISAC, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SBSS_RW, 0);
- bus_space_read_multi_1(t, h, SBSS_HSCX, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SBSS_RW, 0x40);
- bus_space_read_multi_1(t, h, SBSS_HSCX, buf, size);
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Sedlbauer SpeedStar ISAC put fifo routine
- *---------------------------------------------------------------------------*/
-
-static void
-sws_write_fifo(struct isic_softc *sc, int what, const void *buf, size_t size)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SBSS_RW, 0);
- bus_space_write_multi_1(t, h, SBSS_ISAC, buf, size);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SBSS_RW, 0);
- bus_space_write_multi_1(t, h, SBSS_HSCX, buf, size);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SBSS_RW, 0x40);
- bus_space_write_multi_1(t, h, SBSS_HSCX, buf, size);
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Sedlbauer SpeedStar ISAC put register routine
- *---------------------------------------------------------------------------*/
-
-static void
-sws_write_reg(struct isic_softc *sc, int what, bus_size_t offs, u_int8_t data)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SBSS_RW, offs);
- bus_space_write_1(t, h, SBSS_ISAC, data);
- break;
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SBSS_RW, offs);
- bus_space_write_1(t, h, SBSS_HSCX, data);
- break;
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SBSS_RW, 0x40+offs);
- bus_space_write_1(t, h, SBSS_HSCX, data);
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Sedlbauer SpeedStar ISAC get register routine
- *---------------------------------------------------------------------------*/
-
-static u_int8_t
-sws_read_reg(struct isic_softc *sc, int what, bus_size_t offs)
-{
- bus_space_tag_t t = sc->sc_maps[0].t;
- bus_space_handle_t h = sc->sc_maps[0].h;
- switch (what) {
- case ISIC_WHAT_ISAC:
- bus_space_write_1(t, h, SBSS_RW, offs);
- return bus_space_read_1(t, h, SBSS_ISAC);
- case ISIC_WHAT_HSCXA:
- bus_space_write_1(t, h, SBSS_RW, offs);
- return bus_space_read_1(t, h, SBSS_HSCX);
- case ISIC_WHAT_HSCXB:
- bus_space_write_1(t, h, SBSS_RW, 0x40+offs);
- return bus_space_read_1(t, h, SBSS_HSCX);
- }
- return 0;
-}
-
-/*
- * XXX - one time only! Some of this has to go into an enable
- * function, with apropriate counterpart in disable, so a card
- * could be removed an inserted again.
- */
-int
-isic_attach_sbspeedstar2(struct pcmcia_isic_softc *psc, struct pcmcia_config_entry *cfe, struct pcmcia_attach_args *pa)
-{
- struct isic_softc * sc = &psc->sc_isic;
-
- /* Validate config info */
- if (cfe->num_memspace != 0)
- printf(": unexpected number of memory spaces %d should be 0\n",
- cfe->num_memspace);
- if (cfe->num_iospace != 1)
- printf(": unexpected number of memory spaces %d should be 1\n",
- cfe->num_iospace);
-
- /* Allocate pcmcia space */
- if (pcmcia_io_alloc(pa->pf, 0, cfe->iospace[0].length,
- cfe->iospace[0].length, &psc->sc_pcioh))
- printf(": can't allocate i/o space\n");
-
- /* map them */
- if (pcmcia_io_map(pa->pf, ((cfe->flags & PCMCIA_CFE_IO16) ?
- PCMCIA_WIDTH_IO16 : PCMCIA_WIDTH_IO8), &psc->sc_pcioh,
- &psc->sc_io_window)) {
- printf(": can't map i/o space\n");
- return 0;
- }
-
- /* Setup bus space maps */
- sc->sc_num_mappings = 1;
- MALLOC_MAPS(sc);
-
- /* Copy our handles/tags to the MI maps */
- sc->sc_maps[0].t = psc->sc_pcioh.iot;
- sc->sc_maps[0].h = psc->sc_pcioh.ioh;
- sc->sc_maps[0].offset = 0;
- sc->sc_maps[0].size = 0; /* not our mapping */
-
- /* setup access routines */
-
- sc->readreg = sws_read_reg;
- sc->writereg = sws_write_reg;
-
- sc->readfifo = sws_read_fifo;
- sc->writefifo = sws_write_fifo;
-
- /* setup IOM bus type */
-
- sc->sc_bustyp = BUS_TYPE_IOM2;
-
- sc->sc_ipac = 0;
- sc->sc_bfifolen = HSCX_FIFO_LEN;
-
- /* reset card */
- {
- bus_space_tag_t t1 = sc->sc_maps[0].t;
- bus_space_handle_t h1 = sc->sc_maps[0].h;
- bus_space_write_1(t1, h1, SBSS_RESET, 0x3);
- DELAY(SEC_DELAY / 5);
- bus_space_write_1(t1, h1, SBSS_RESET, 0);
- DELAY(SEC_DELAY / 5);
- }
-
- return 1;
-}
-
-#endif /* ISICPCMCIA_SBSPEEDSTAR2 */