summaryrefslogtreecommitdiffstats
path: root/sys/gnu/i386
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1996-10-20 18:24:17 +0000
committerphk <phk@FreeBSD.org>1996-10-20 18:24:17 +0000
commitea3476f34db58155dd54a57b1f484cda34b4799d (patch)
tree490c229a5f1fd7bb348bdb449d91368c3020b03c /sys/gnu/i386
parent64291ea9abdfb9c1ed60f0a3ef2e8ff6893a6545 (diff)
downloadFreeBSD-src-ea3476f34db58155dd54a57b1f484cda34b4799d.zip
FreeBSD-src-ea3476f34db58155dd54a57b1f484cda34b4799d.tar.gz
Removing old isdn stuff.
Diffstat (limited to 'sys/gnu/i386')
-rw-r--r--sys/gnu/i386/isa/nic3008.c1293
-rw-r--r--sys/gnu/i386/isa/nic3008.h123
-rw-r--r--sys/gnu/i386/isa/nic3009.c1358
-rw-r--r--sys/gnu/i386/isa/nic3009.h88
-rw-r--r--sys/gnu/i386/isa/niccyreg.h167
5 files changed, 0 insertions, 3029 deletions
diff --git a/sys/gnu/i386/isa/nic3008.c b/sys/gnu/i386/isa/nic3008.c
deleted file mode 100644
index 3561e6f..0000000
--- a/sys/gnu/i386/isa/nic3008.c
+++ /dev/null
@@ -1,1293 +0,0 @@
-/* @(#)$Id: nic3008.c,v 1.15 1996/03/28 14:27:27 scrappy Exp $
- *******************************************************************************
- * II - Version 0.1 $Revision: 1.15 $ $State: Exp $
- *
- * Copyright 1994 Dietmar Friede
- *******************************************************************************
- * Bug reports, patches, comments, suggestions should be sent to:
- *
- * jkr@saarlink.de or jkrause@guug.de
- *
- *******************************************************************************
- * $Log: nic3008.c,v $
- * Revision 1.15 1996/03/28 14:27:27 scrappy
- * Switched from using devfs_add_sw() to using devfs_add_swf()
- *
- * Reviewed by: julian@freebsd.org
- *
- * Revision 1.14 1995/12/17 21:14:34 phk
- * Staticize.
- *
- * Revision 1.13 1995/12/08 23:19:29 phk
- * Julian forgot to make the *devsw structures static.
- *
- * Revision 1.12 1995/12/08 11:12:45 julian
- * Pass 3 of the great devsw changes
- * most devsw referenced functions are now static, as they are
- * in the same file as their devsw structure. I've also added DEVFS
- * support for nearly every device in the system, however
- * many of the devices have 'incorrect' names under DEVFS
- * because I couldn't quickly work out the correct naming conventions.
- * (but devfs won't be coming on line for a month or so anyhow so that doesn't
- * matter)
- *
- * If you "OWN" a device which would normally have an entry in /dev
- * then search for the devfs_add_devsw() entries and munge to make them right..
- * check out similar devices to see what I might have done in them in you
- * can't see what's going on..
- * for a laugh compare conf.c conf.h defore and after... :)
- * I have not doen DEVFS entries for any DISKSLICE devices yet as that will be
- * a much more complicated job.. (pass 5 :)
- *
- * pass 4 will be to make the devsw tables of type (cdevsw * )
- * rather than (cdevsw)
- * seems to work here..
- * complaints to the usual places.. :)
- *
- * Revision 1.11 1995/11/29 14:39:07 julian
- * If you're going to mechanically replicate something in 50 files
- * it's best to not have a (compiles cleanly) typo in it! (sigh)
- *
- * Revision 1.10 1995/11/29 10:47:04 julian
- * OK, that's it..
- * That's EVERY SINGLE driver that has an entry in conf.c..
- * my next trick will be to define cdevsw[] and bdevsw[]
- * as empty arrays and remove all those DAMNED defines as well..
- *
- * Revision 1.9 1995/11/21 14:56:01 bde
- * Completed function declarations, added prototypes and removed redundant
- * declarations.
- *
- * Revision 1.8 1995/11/18 04:19:44 bde
- * Fixed the type of nic_listen(). A trailing arg was missing.
- *
- * Fixed calls to s_intr(). There was sometimes an extra trailing arg.
- *
- * Revision 1.7 1995/09/08 11:06:46 bde
- * Fix benign type mismatches in devsw functions. 82 out of 299 devsw
- * functions were wrong.
- *
- * Revision 1.6 1995/05/30 07:57:57 rgrimes
- * Remove trailing whitespace.
- *
- * Revision 1.5 1995/05/11 19:25:55 rgrimes
- * Fix -Wformat warnings from LINT kernel.
- *
- * Revision 1.4 1995/03/28 07:54:31 bde
- * Add and move declarations to fix all of the warnings from `gcc -Wimplicit'
- * (except in netccitt, netiso and netns) that I didn't notice when I fixed
- * "all" such warnings before.
- *
- * Revision 1.3 1995/03/19 14:28:35 davidg
- * Removed redundant newlines that were in some panic strings.
- *
- * Revision 1.2 1995/02/15 11:59:40 jkh
- * Fix a few more nits. Should compile better now! :_)
- *
- * Revision 1.1 1995/02/14 15:00:10 jkh
- * An ISDN driver that supports the EDSS1 and the 1TR6 ISDN interfaces.
- * EDSS1 is the "Euro-ISDN", 1TR6 is the soon obsolete german ISDN Interface.
- * Obtained from: Dietmar Friede <dfriede@drnhh.neuhaus.de> and
- * Juergen Krause <jkr@saarlink.de>
- *
- * This is only one part - the rest to follow in a couple of hours.
- * This part is a benign import, since it doesn't affect anything else.
- *
- *
- ******************************************************************************/
-
-/*
- * Copyright (c) 1994 Dietmar Friede (dietmar@friede.de) All rights reserved.
- * FSF/FSAG GNU Copyright applies
- *
- * A low level driver for the NICCY-3008 ISDN Card.
- *
- */
-
-#include "nic.h"
-#if NNIC > 0
-
-#include <sys/param.h>
-#include <sys/ioctl.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/conf.h>
-#include <sys/proc.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-
-#include <i386/isa/isa_device.h>
-#include <gnu/i386/isa/nic3008.h>
-#include <gnu/i386/isa/niccyreg.h>
-#include <gnu/isdn/isdn_ioctl.h>
-
-
-#define OPEN 1
-#define LOAD_HEAD 3
-#define LOAD_DATA 5
-#define IS_DIAL(p) (((p)&0x20)==0)
-#define IS_LISTEN(p) ((p)&0x20)
-#define CHAN(pl) (((pl)&7)-1)
-#define C_CHAN(x) ((x)&1)
-#define APPL(pl) ((((pl)>>6)&0x7f)-1)
-#define CARD(pl) (((pl)>>13)&7)
-#define MK_APPL(pl) (((pl)+1)<<6)
-
-#define con_act_resp(sc,pl) en_q_d(sc,DD_CONN_ACT_RSP, pl ,0,NULL)
-#define discon_resp(sc,pl) en_q_d(sc,DD_DISC_RSP, pl ,0,NULL)
-#define inf_resp(sc,pl) en_q_d(sc,DD_INFO_RSP, pl ,0,NULL)
-#define listen_b3_req(sc,mb,pl) en_q_b(sc,mb,BD_LIST_B3_REQ,pl,0,NULL)
-#define con_b3_req(sc,mb,pl) en_q_b(sc,mb,BD_CONN_B3_REQ,pl,0,NULL)
-#define min(a,b) ((a)<(b)?(a):(b))
-
-extern isdn_appl_t isdn_appl[];
-extern u_short isdn_state;
-extern isdn_ctrl_t isdn_ctrl[];
-extern int ispy_applnr;
-extern int Isdn_Appl, Isdn_Ctrl, Isdn_Typ;
-
-static old_spy= 0;
-
-static int nicattach __P((struct isa_device *is));
-static int nicprobe __P((struct isa_device *is));
-static int nic_accept __P((int cn, int an, int rea));
-static int nic_connect __P((int cn, int ap, int b_channel, int inf_mask,
- int out_serv, int out_serv_add,
- int src_subadr, unsigned ad_len,
- char *dest_addr, int spv));
-static int nic_disconnect __P((int cn, int rea));
-static int nic_listen __P((int cn, int ap, int inf_mask, int subadr_mask,
- int si_mask, int spv));
-static int nic_output __P((int cn));
-
-static short bsintr;
-
-struct isa_driver nicdriver = {nicprobe, nicattach, "nic"};
-
-static d_open_t nicopen;
-static d_close_t nicclose;
-static d_ioctl_t nicioctl;
-
-#define CDEV_MAJOR 54
-static struct cdevsw nic_cdevsw =
- { nicopen, nicclose, noread, nowrite, /*54*/
- nicioctl, nostop, nullreset, nodevtotty,/* nic */
- seltrue, nommap, NULL, "nic", NULL, -1 };
-
-typedef enum
-{
- DISCON, ISDISCON, DIAL, CALLED, CONNECT, IDLE, ACTIVE
-} io_state;
-typedef struct
-{
- char ctrl;
- u_char msg_nr;
- u_char morenr;
- short plci;
- short ncci;
- short state;
- short i_len;
- char i_buf[2048];
- char o_buf[2048];
- u_short more;
- char *more_b;
-} chan_t;
-
-static struct nic_softc
-{
- dpr_type *sc_dpr; /* card RAM virtual memory base */
- u_short sc_vector; /* interrupt vector */
- short sc_port;
- u_char sc_flags;
- u_char sc_unit;
- u_char sc_ctrl;
- short sc_stat;
- chan_t sc_chan[2];
-#ifdef DEVFS
- void *devfs_token;
-#endif
-} nic_sc[NNIC];
-
-static void badstate __P((mbx_type *mbx, int n, int mb, dpr_type *dpr));
-static void b_intr __P((int mb, int c, struct nic_softc *sc));
-static void bs_intr __P((int mb, int c, struct nic_softc *sc));
-static void con_b3_resp __P((struct nic_softc *sc, int mb, u_short ncci,
- u_char reject));
-static void con_resp __P((struct nic_softc *sc, int pl, int rea));
-static void d_intr __P((struct nic_softc *sc));
-static int discon_req __P((int w, struct nic_softc *sc, int pl, int rea,
- int err));
-static int en_q_b __P((struct nic_softc *sc, int mb, int t, int pl, int l,
- u_char *b));
-static int en_q_d __P((struct nic_softc *sc, int t, int pl, int l,
- u_char *b));
-static int cstrcmp __P((char *str1, char *str2));
-static void make_intr __P((int box, struct nic_softc *sc));
-static void reset_card __P((struct nic_softc *sc));
-static int reset_plci __P((int w_is_defined_bletch, chan_t *chan, int p));
-static void reset_req __P((struct nic_softc *sc, unsigned box, int w));
-static void s_intr __P((struct nic_softc *sc));
-static int sel_b2_prot_req __P((struct nic_softc *sc, int c, int pl,
- dlpd_t *dlpd));
-static void sel_b3_prot_req __P((struct nic_softc *sc, int mb, u_short pl,
- ncpd_t *ncpd));
-
-int
-nicprobe(struct isa_device * is)
-{
- register struct nic_softc *sc = &nic_sc[is->id_unit & 127];
- dpr_type *dpr;
-
- sc->sc_vector = is->id_irq;
- sc->sc_port = is->id_iobase;
- sc->sc_unit = is->id_unit;
- dpr = sc->sc_dpr = (dpr_type *) is->id_maddr;
-
- if (cstrcmp(dpr->niccy_ver, "NICCY V ") == 0)
- {
- printf("NICCY NICCY-Card %d not found at %p\n"
- ,is->id_unit, is->id_maddr);
- return (0);
- }
- while (dpr->card_state & 1); /* self test running */
-
- if (dpr->card_state & 0x8A)
- {
- printf("Check Niccy Card, error state %d \n", dpr->card_state);
- return (0);
- }
- dpr->card_number = is->id_unit;
- is->id_msize = 8192;
- reset_card(sc);
- return (8);
-}
-
-/*
- * nicattach() Install device
- */
-int
-nicattach(struct isa_device * is)
-{
- struct nic_softc *sc;
- dpr_type *dpr;
- int cn;
- isdn_ctrl_t *ctrl0, *ctrl1;
-
- sc = &nic_sc[is->id_unit];
- dpr = sc->sc_dpr;
- sc->sc_ctrl = -1;
- if ((cn = isdn_ctrl_attach(2)) == -1)
- {
- return (0);
- }
- sc->sc_ctrl = cn;
-
- sc->sc_chan[0].plci = sc->sc_chan[1].plci = -1;
-
- ctrl0 = &isdn_ctrl[cn];
- ctrl1 = &isdn_ctrl[cn + 1];
- sc->sc_chan[0].ctrl = ctrl0->ctrl = cn;
- sc->sc_chan[1].ctrl = ctrl1->ctrl = cn + 1;
- ctrl0->o_buf = sc->sc_chan[0].o_buf;
- ctrl1->o_buf = sc->sc_chan[1].o_buf;
- ctrl0->listen = ctrl1->listen = nic_listen;
- ctrl0->disconnect = ctrl1->disconnect = nic_disconnect;
- ctrl0->accept = ctrl1->accept = nic_accept;
- ctrl0->connect = ctrl1->connect = nic_connect;
- ctrl0->output = ctrl1->output = nic_output;
- ctrl0->unit = ctrl1->unit = is->id_unit;
- ctrl0->appl = ctrl1->appl = -1;
- ctrl0->o_len = ctrl1->o_len = -1;
-
- while (dpr->card_state & 1); /* self test running */
- dpr->card_number = is->id_unit;
- dpr->int_flg_pc = 0xff;
- reset_req(sc, MBX_MU, 4);
-#ifdef DEVFS
- sc->devfs_token =
- devfs_add_devswf(&nic_cdevsw, is->id_unit, DV_CHR, 0, 0,
- 0600, "/isdn/nic%d", is->id_unit);
-#endif
- return (1);
-}
-
-static int
-cstrcmp(char *str1, char *str2)
-{
- while (*str2 && (*str2 == *str1))
- {
- str1++;
- str2++;
- }
- if (!*str2)
- return (1);
- return (0);
-}
-
-/* If the niccy card wants it: Interupt it. */
-static void
-make_intr(int box, struct nic_softc * sc)
-{
- dpr_type *dpr = sc->sc_dpr;
-
- dpr->watchdog_cnt = 0xFF;
- if ((dpr->int_flg_nic & (1 << box)) == 0)
- return;
- if (dpr->ext_hw_config == 1)
- {
- u_char s;
- s = inb(sc->sc_port + 4);
- outb(sc->sc_port + 4, s & 0xfb);
- outb(sc->sc_port + 4, s | 4);
- outb(sc->sc_port + 4, s);
- return;
- }
- outb(sc->sc_port + 2, 1);
-}
-
-static void
-reset_req(struct nic_softc * sc, unsigned box, int w)
-{
- if(box >= 8)
- return;
-
- (sc->sc_dpr)->msg_flg[box] = 0;
- make_intr(box, sc);
-}
-
-static int
-en_q_d(struct nic_softc * sc, int t, int pl, int l, u_char * b)
-{
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx = &dpr->dpr_mbx[3];
-
- if (dpr->card_state & ~4)
- return (ENODEV);
- if (dpr->msg_flg[3])
- return (EBUSY);
-
- bzero(mbx, 18);
- mbx->type = t;
- mbx->add_info = pl;
- if (l)
- {
- mbx->data_len = l;
- bcopy(b, mbx->data, l);
- }
- dpr->msg_flg[3] = 1;
- make_intr(3, sc);
- return (0);
-}
-
-static int
-en_q_b(struct nic_softc * sc, int mb, int t, int pl, int l, u_char * b)
-{
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx = &dpr->dpr_mbx[++mb];
-
- if (mb == 7)
- t |= 0x40;
-
- if (dpr->card_state)
- return (ENODEV);
- if (dpr->msg_flg[mb])
- return (EBUSY);
-
- bzero(mbx, 18);
- mbx->type = t;
- mbx->add_info = pl;
- if (l)
- {
- mbx->data_len = l;
- bcopy(b, mbx->data, l);
- }
- dpr->msg_flg[mb] = 1;
- make_intr(mb, sc);
- return (0);
-}
-
-static void
-badstate(mbx_type * mbx, int n, int mb, dpr_type *dpr)
-{
- printf("Niccy: not implemented %x len %d at %d.", mbx->type,mbx->data_len,n);
- if(mbx->data_len)
- {
- u_char *b = (u_char *) dpr;
- int i;
-
- b += dpr->buf_ptr[mb];
- for(i=0; i<mbx->data_len; i++) printf(" %x",mbx->data[i]);
- printf(".");
- for(i=0; i<mbx->data_len; i++) printf(" %x",b[i]);
- }
- printf("\n");
-}
-
-static int
-nic_connect(int cn, int ap, int b_channel, int inf_mask, int out_serv
- ,int out_serv_add, int src_subadr, unsigned ad_len
- ,char *dest_addr, int spv)
-{
- char buf[128];
-
- if (ad_len > 22)
- return (-1);
-
- buf[0] = spv ? 0x53 : 0;
- buf[1] = b_channel;
- if (spv)
- inf_mask |= 0x40000000;
- *(u_long *) & buf[2] = inf_mask;
- buf[6] = out_serv;
- buf[7] = out_serv_add;
- buf[8] = src_subadr;
- buf[9] = ad_len;
- bcopy(dest_addr, &buf[10], ad_len);
- return (en_q_d(&nic_sc[isdn_ctrl[cn].unit], DD_CONN_REQ, MK_APPL(ap), ad_len + 10, buf));
-}
-
-static int
-nic_listen(int cn, int ap, int inf_mask, int subadr_mask, int si_mask, int spv)
-{
- u_short sbuf[4];
-
- *(u_long *) sbuf = inf_mask;
- sbuf[2] = subadr_mask;
- sbuf[3] = si_mask;
- return (en_q_d(&nic_sc[isdn_ctrl[cn].unit], DD_LISTEN_REQ, MK_APPL(ap), 8, (u_char *) sbuf));
-}
-
-static int
-nic_disconnect(int cn, int rea)
-{
- isdn_ctrl_t *ctrl = &isdn_ctrl[cn];
- struct nic_softc *sc = &nic_sc[ctrl->unit];
- chan_t *chan = &sc->sc_chan[C_CHAN(cn)];
- u_char buf[16];
- int l = 3;
- int p;
- int err;
-
- if(chan->ncci != -1)
- {
- bzero(buf,16);
- *(u_short *) buf = chan->ncci;
- l += sizeof(ncpi_t);
- err= en_q_b(sc, C_CHAN(cn)?6:4, BD_DISC_B3_REQ, chan->plci, l, buf);
- if(err==0)
- {
- chan->more= 0;
- ctrl->o_len= -1;
- }
- return(err);
- }
-
- p = chan->plci;
- if((p == 0) || (p == -1))
- return (ENODEV);
-
- err= en_q_d(sc, DD_DISC_REQ, p, 1, (u_char *) & rea);
- if(err==0)
- {
- chan->more= 0;
- ctrl->o_len= -1;
- }
- return(err);
-}
-
-static int
-nic_accept(int cn, int an, int rea)
-{
- isdn_ctrl_t *ctrl = &isdn_ctrl[cn];
- struct nic_softc *sc = &nic_sc[ctrl->unit];
- chan_t *chan = &sc->sc_chan[C_CHAN(cn)];
- isdn_appl_t *appl = &isdn_appl[an];
-
- if (rea)
- {
- ctrl->appl= -1;
- return(discon_req(1, sc, chan->plci, rea, 0));
- }
- ctrl->appl= an;
- ctrl->lastact = time.tv_sec;
- appl->ctrl= cn;
- appl->state= 4;
-
- return(sel_b2_prot_req(sc, C_CHAN(cn), chan->plci, &appl->dlpd));
-}
-
-static int
-nic_output(int cn)
-{
- isdn_ctrl_t *ctrl = &isdn_ctrl[cn];
- struct nic_softc *sc = &nic_sc[ctrl->unit];
- chan_t *chan = &sc->sc_chan[C_CHAN(cn)];
- int mb = C_CHAN(cn) ? 7 : 5;
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx = &dpr->dpr_mbx[mb];
- int l;
- u_char *b = (u_char *) dpr;
- int len= ctrl->o_len;
- char *buf= ctrl->o_buf;
-
- if (dpr->card_state /* & ~4 */)
- return (ENODEV);
-
- if ((chan->ncci == -1) || dpr->msg_flg[mb] || (chan->state != IDLE))
- return (EBUSY);
-
- chan->state = ACTIVE;
-
- bzero(mbx, 20);
- mbx->type = BD_DATA_B3_REQ;
- if (C_CHAN(cn))
- mbx->type |= 0x40;
- *(u_short *) mbx->data = chan->ncci;
- mbx->data[4] = chan->msg_nr++;
- b += dpr->buf_ptr[mb];
- l = min(1024, len);
- mbx->data_len = l;
- bcopy(buf, b, l);
-
- if (l < len)
- {
- chan->more = min(len - l, 1024); /* This is a bug, but */
- /* max. blocks length is 2048 bytes including protokoll */
- chan->more_b = buf + l;
- mbx->more_data = 1;
- } else
- {
- chan->more = 0;
- ctrl->o_len = -1;
- }
-
- dpr->msg_flg[mb] = 3;
- bsintr |= (1 << C_CHAN(cn));
- make_intr(mb, sc);
- ctrl->lastact = time.tv_sec;
- return (0);
-}
-
-static void
-con_resp(struct nic_softc * sc, int pl, int rea)
-{
- en_q_d(sc, DD_CONN_RSP, pl, 1, (u_char *) & rea);
-}
-
-static int
-discon_req(int w, struct nic_softc * sc, int pl, int rea, int err)
-{
- if ((pl == 0) || (pl == -1))
- return(0);
- return(en_q_d(sc, DD_DISC_REQ, pl, 1, (u_char *) & rea));
-}
-
-static int
-sel_b2_prot_req(struct nic_softc * sc, int c, int pl, dlpd_t * dlpd)
-{
- return(en_q_b(sc, c ? 6 : 4, BD_SEL_PROT_REQ | 0x200, pl,
- sizeof(dlpd_t), (u_char *) dlpd));
-}
-
-static void
-sel_b3_prot_req(struct nic_softc * sc, int mb, u_short pl, ncpd_t * ncpd)
-{
- en_q_b(sc, mb, BD_SEL_PROT_REQ | 0x300, pl, sizeof(ncpd_t), (u_char *) ncpd);
-}
-
-static void
-con_b3_resp(struct nic_softc * sc, int mb, u_short ncci, u_char reject)
-{
- u_char buf[32];
- int l = 4;
-
- bzero(buf, 32);
- *(u_short *) buf = ncci;
- buf[2] = reject;
- buf[3] = 0; /* ncpi ???? */
- l += 15;
- en_q_b(sc, mb, BD_CONN_B3_RSP, 0, l, buf);
-}
-
-static int
-reset_plci(int w, chan_t * chan, int p)
-{
- isdn_ctrl_t *ctrl;
-
- if (p == -1)
- return (-1);
-
- if(chan == NULL)
- return(p);
-
- ctrl = &isdn_ctrl[chan->ctrl];
- if (chan->plci == p)
- {
- if (ISBUSY(ctrl->appl))
- {
- isdn_disconn_ind(ctrl->appl);
- isdn_appl[ctrl->appl].ctrl = -1;
- isdn_appl[ctrl->appl].state = 0;
- }
- ctrl->appl = -1;
- ctrl->o_len = -1;
- chan->plci = -1;
- chan->ncci = -1;
- chan->state = DISCON;
- chan->i_len = 0;
- chan->more = 0;
- }
- return (p);
-}
-
-static void
-reset_card(struct nic_softc * sc)
-{
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx = &dpr->dpr_mbx[1];
- bzero(mbx, 16);
- mbx->type = MD_RESET_REQ;
- dpr->msg_flg[1] = 1;
- make_intr(1, sc);
-}
-
-/*
- * nicopen() New open on device.
- *
- * We forbid all but first open
- */
-static int
-nicopen(dev_t dev, int flags, int fmt, struct proc *p)
-{
- struct nic_softc *sc;
- u_char unit;
- dpr_type *dpr;
- int x;
-
- unit = minor(dev);
-
- /* minor number out of limits ? */
- if (unit >= NNIC)
- return (ENXIO);
- sc = &nic_sc[unit];
-
- sc->sc_flags |= OPEN;
- dpr = sc->sc_dpr;
- dpr->card_number = sc->sc_unit;
- dpr->int_flg_pc = 0xff;
- if (dpr->msg_flg[0])
- {
- x = splhigh();
- s_intr(sc);
- splx(x);
- }
- return (0);
-}
-
-/*
- * nicclose() Close device
- */
-static int
-nicclose(dev_t dev, int flags, int fmt, struct proc *p)
-{
- struct nic_softc *sc = &nic_sc[minor(dev)];
-
- sc->sc_flags = 0;
- return (0);
-}
-
-static int
-nicioctl(dev_t dev, int cmd, caddr_t data, int flags, struct proc *p)
-{
- int error;
- int x;
- struct nic_softc *sc = &nic_sc[minor(dev)];
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx;
-
- dpr->int_flg_pc = 0xff;
-
- error = 0;
- switch (cmd)
- {
- case NICCY_DEBUG:
- data[0]= 0x38;
- bcopy((char *)dpr, data+1, sizeof(dpr_type));
- break;
- case NICCY_LOAD:
- {
- struct head *head = (struct head *) data;
- u_char *b = (u_char *) dpr;
- int len, l, off;
-
- x = splhigh();
- while (dpr->msg_flg[1])
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "nic1head", 1);
- if (error != EWOULDBLOCK)
- {
- splx(x);
- return (error);
- }
- }
- mbx = &dpr->dpr_mbx[1];
- bzero(mbx, 16);
- mbx->type = MD_DNL_MOD_REQ | ((u_short) head->typ << 8);
- mbx->data_len = 12;
- bcopy(head->nam, mbx->data, 8);
- *(u_long *) (mbx->data + 8) = head->len;
-
- sc->sc_flags = LOAD_HEAD;
- sc->sc_stat = -1;
- dpr->msg_flg[1] = 1;
- make_intr(1, sc);
- while (sc->sc_flags == LOAD_HEAD)
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "nic2head", 1);
- if (error != EWOULDBLOCK)
- break;
- }
-
- len= head->d_len;
- off= 0;
- b += dpr->buf_ptr[1];
-
- while(len > 0)
- {
- while (dpr->msg_flg[1])
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "nic1load", 1);
- if (error != EWOULDBLOCK)
- {
- splx(x);
- return (error);
- }
- }
- bzero(mbx, 16);
- mbx->type = MD_DNL_MOD_DATA | ((u_short) head->typ << 8);
- l= min(len,1024);
- len-= l;
- mbx->buf_valid = 1;
- mbx->more_data = len > 0;
- mbx->data_len = l;
- bcopy(head->nam, mbx->data, 8);
-
- if(error= copyin(head->data+off, b, l))
- {
- splx(x);
- return(error);
- }
- off+= l;
- sc->sc_flags = LOAD_DATA;
- sc->sc_stat = -1;
- dpr->msg_flg[1] = 3;
- make_intr(1, sc);
- }
-
- while ((sc->sc_flags == LOAD_DATA) || (dpr->card_state & 0x20))
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "nic2load", 1);
- if (error != EWOULDBLOCK)
- break;
- }
- if (sc->sc_flags)
- sc->sc_flags = OPEN;
- head->status = sc->sc_stat;
- splx(x);
- return (0);
- }
- case NICCY_SET_CLOCK:
- x = splhigh();
- if (dpr->msg_flg[1])
- {
- splx(x);
- return (EBUSY);
- }
- mbx = &dpr->dpr_mbx[1];
- bzero(mbx, 16);
- mbx->type = MD_SET_CLOCK_REQ;
- mbx->data_len = 14;
- bcopy(data, mbx->data, 14);
-
- dpr->msg_flg[1] = 1;
- if (dpr->int_flg_nic & 2)
- make_intr(1, sc);
- splx(x);
- return (0);
- case NICCY_SPY:
- x = splhigh();
- if (dpr->msg_flg[1])
- {
- splx(x);
- return (EBUSY);
- }
- mbx = &dpr->dpr_mbx[1];
- bzero(mbx, 16);
- mbx->type = MD_MANUFACT_REQ | (18<<8);
- mbx->data_len = 1;
- mbx->add_info = MK_APPL(ispy_applnr);
-/* There are ilegal states. So I use them to toggle */
- if((data[0] == 0) && (old_spy == 0)) data[0]= 255;
- else if(data[0] && old_spy ) data[0]= 0;
- old_spy= mbx->data[0]= data[0];
-
- dpr->msg_flg[1] = 1;
- if (dpr->int_flg_nic & 2)
- make_intr(1, sc);
- splx(x);
- return (0);
- case NICCY_RESET:
- x = splhigh();
-
- reset_card(sc);
-
- while (dpr->card_state & 1) /* self test running */
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "nic: reset", 10);
- if (error != EWOULDBLOCK)
- break;
- }
- dpr->card_number = sc->sc_unit;
- dpr->int_flg_pc = 0xff;
- if (dpr->msg_flg[0])
- s_intr(sc);
- splx(x);
- return (0);
-
- default:
- error = ENODEV;
- }
- return (error);
-}
-
-static void
-b_intr(int mb, int c, struct nic_softc * sc)
-{
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx = &dpr->dpr_mbx[mb];
- chan_t *chan = &sc->sc_chan[c];
- u_short ap, n, err = 0;
- u_short pl = mbx->add_info;
- isdn_ctrl_t *ctrl = &isdn_ctrl[chan->ctrl];
-
- if(((unsigned)(mbx->type >> 8) > 3) || ((pl & 0xff00) == 0xff00))
- panic("3008 conflict with 16 bit card\nReconfig your system");
-
- if (dpr->msg_flg[mb+1])
- return; /* can happen. Should make no problems */
-
- if (ISBUSY(ap = ctrl->appl))
- switch (mbx->type & 0x1f)
- {
- case 0: /* SELECT PROT CONF */
- err = *(u_short *) mbx->data;
- if (err)
- {
- discon_req(2, sc, pl, 0, err);
- break;
- }
-
- switch ((mbx->type >> 8) & 3)
- {
- case 2:/* SELECT B2 PROTOCOL */
- sel_b3_prot_req(sc, mb, pl, &isdn_appl[ap].ncpd);
- break;
-
- case 3:/* SELECT B3 PROTOCOL */
- if (IS_DIAL(pl))
- con_b3_req(sc, mb, pl);
- else
- listen_b3_req(sc, mb, pl);
- break;
- }
- break;
-
- case 1: /* LISTEN B3 CONF */
- err = *(u_short *) mbx->data;
- if (err)
- {
- discon_req(4, sc, pl, 0, err);
- break;
- }
- con_resp(sc, pl, 0);
- break;
-
- case 2: /* CONNECT B3 CONF */
- err = *(u_short *) (mbx->data + 2);
- n = *(u_short *) mbx->data;
-
- if (err)
- {
- discon_req(5, sc, pl, 0, err);
- break;
- }
- chan->ncci = n;
- chan->state = CONNECT;
- break;
-
- case 3: /* CONNECT B3 IND */
- n = *(u_short *) mbx->data;
- chan->ncci = n;
- chan->state = CONNECT;
- con_b3_resp(sc, mb, n, 0);
- break;
-
- case 4: /* CONNECT B3 ACTIVE IND */
- if (chan->state < IDLE)
- {
- chan->state = IDLE;
- ctrl->o_len = 0;
- /*
- * XXX the chan->ctrl arg is very bogus.
- * Don't just use a cast to "fix" it.
- */
- timeout(isdn_start_out, chan->ctrl, hz / 5);
- break;
- }
- break;
-
- case 5: /* DISCONNECT B3 CONF */
- chan->state = ISDISCON;
- err = *(u_short *) (mbx->data + 2);
- if (err)
- {
- discon_req(6, sc, chan->plci, 0, err);
- break;
- }
- break;
- case 6: /* DISCONNECT B3 IND */
- chan->state = ISDISCON;
- err = *(u_short *) (mbx->data + 2);
- discon_req(7, sc, chan->plci, 0, err);
- break;
-
- case 8: /* DATA B3 CONF */
- err = *(u_short *) (mbx->data + 2);
- if (err)
- {
- ctrl->send_err++;
- isdn_appl[ap].send_err++;
- }
- ctrl->o_len = 0;
- chan->state= IDLE;
- isdn_start_out(chan->ctrl);
- break;
-
- case 9: /* DATA B3 IND */
- {
- u_char *b = (u_char *) dpr;
-
- b += dpr->buf_ptr[mb];
- if (mbx->more_data)
- {
- chan->morenr= mbx->data[4];
- if(chan->i_len)
- {
- chan->i_len= 0;
- break;
- }
- bcopy(b, &chan->i_buf[chan->i_len], mbx->data_len);
- chan->i_len = mbx->data_len;
- break;
- } /* mbx->more_data == 0 */
- if (chan->i_len)
- {
- int l;
- if(chan->morenr != mbx->data[4])
- break;
-
- if ((l = chan->i_len + mbx->data_len) <= 2048)
- {
- bcopy(b, &chan->i_buf[chan->i_len], mbx->data_len);
- if(isdn_input(ap, l, chan->i_buf, ctrl->islisten))
- ctrl->lastact = time.tv_sec;
- }
- chan->i_len = 0;
- break;
- } /* chan->i_len == 0 && mbx->more_data == 0 */
- if(isdn_input(ap, mbx->data_len, b, ctrl->islisten))
- ctrl->lastact = time.tv_sec;
- break;
- }
- break;
-
- default:
- badstate(mbx,1,mb,dpr);
- }
-/*
- else badstate(mbx,2,mb,dpr);
-*/
-
- reset_req(sc, mb,1);
-}
-
-static void
-d_intr(struct nic_softc * sc)
-{
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx = &dpr->dpr_mbx[2];
- chan_t *chan;
- u_short ap, c, pl, err = 0;
- isdn_ctrl_t *ctrl;
- isdn_appl_t *appl;
-
- if (dpr->msg_flg[3])
- return; /* should not happen. might make problems */
- /* but there should be another intr., so what? */
-
- pl = mbx->add_info;
- if ((c = CHAN(pl)) < 2)
- {
- chan = &sc->sc_chan[c];
- ctrl = &isdn_ctrl[chan->ctrl];
- } else
- {
- c = 0xffff;
- chan = NULL;
- ctrl = NULL;
- }
-
- ap= APPL(pl);
- if(ctrl && (ctrl->appl & 0xC0) == 0)
- appl= &isdn_appl[ctrl->appl];
- else if(ap < 0x30)
- appl = &isdn_appl[ap];
- else if(ap < 0x40)
- appl = NULL;
- else
- {
- reset_req(sc, 2,2);
- return;
- }
-
- switch (mbx->type & 0x1f)
- {
- case 0: /* CONNECT CONF */
- err = *(u_short *) mbx->data;
- if(err || (appl == NULL) || (chan == NULL) || (ctrl == NULL))
- {
- if(chan) reset_plci(1, chan, pl);
- if(appl) appl->state= 0;
- break;
- }
-
- if (ISBUSY(ctrl->appl))
- {
- discon_req(8, sc, pl, 0, 0);
- break;
- }
- chan->plci = pl;
- chan->msg_nr= 0;
- chan->ncci = -1;
- ctrl->lastact = time.tv_sec;
- ctrl->appl = ap;
- appl->ctrl = chan->ctrl;
- ctrl->islisten= 0;
- chan->state = DIAL;
- appl->state = 3;
- break;
-
- case 1: /* CONNECT IND */
- if (ISBUSY(ctrl->appl))
- {
- discon_req(9, sc, pl, 0, 0);
- break;
- }
- chan->plci = pl;
- chan->msg_nr= 0;
- chan->ncci = -1;
- ctrl->lastact = time.tv_sec;
- ctrl->appl = 0x7f;
- ctrl->islisten= 1;
- chan->state = CALLED;
- mbx->data[mbx->data[3] + 4] = 0;
- isdn_accept_con_ind(ap, chan->ctrl, mbx->data[0], mbx->data[1]
- ,mbx->data[2], mbx->data[3], (char *) &mbx->data[4]);
- break;
-
- case 2: /* CONNECT ACTIVE IND */
- con_act_resp(sc, pl);
- if (IS_LISTEN(pl))
- {
- isdn_conn_ind(ctrl->appl,chan->ctrl,0);
- break;
- }
- isdn_conn_ind(APPL(pl),chan->ctrl,1);
- chan->state = CONNECT;
- ctrl->appl = ap;
- appl->ctrl = chan->ctrl;
- break;
-
- case 3: /* DISCONNECT CONF */
- reset_plci(2, chan, pl);
- break;
-
- case 4: /* DISCONNECT IND */
- discon_resp(sc, reset_plci(3, chan, pl));
- break;
-
- case 7: /* LISTEN CONF */
- isdn_state = *(u_short *) mbx->data;
- break;
-
- case 10: /* INFO IND */
- isdn_info(ap,*(u_short *)mbx->data, mbx->data[2], mbx->data+3);
- inf_resp(sc, pl);
- break;
-
- default:
- badstate(mbx,3,2,dpr);
- }
- reset_req(sc, 2,2);
-}
-
-static void
-s_intr(struct nic_softc * sc)
-{
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx = &dpr->dpr_mbx[0];
- mbx_type *smbx = &dpr->dpr_mbx[1];
-
- if (dpr->msg_flg[1])
- return; /* should not happen. might make problems */
- /* but there should be another intr., so what? */
-
- bzero(smbx, 16);
-
- switch (mbx->type & 0x1f)
- {
- case 0: /* INIT CONF */
- break;
- case 1: /* INIT IND */
- smbx->type = mbx->type + 0x20;
- dpr->msg_flg[1] = 1;
- make_intr(1, sc);
- break;
- case 4: /* DNL MOD CONF */
- sc->sc_stat = mbx->data[0];
- if (sc->sc_flags)
- sc->sc_flags = OPEN;
- break;
- case 6: /* DNL MOD IND */
- smbx->type = mbx->type + 0x20;
- smbx->data_len = 1;
- smbx->data[0] = mbx->data[1];
- sc->sc_stat = mbx->data[0];
- if (sc->sc_flags)
- sc->sc_flags = OPEN;
- dpr->msg_flg[1] = 1;
- make_intr(1, sc);
- break;
- case 0x0e: /* SET CLOCK CONF */
- dpr->watchdog_cnt = 0xFF;
- dpr->int_flg_pc = 0xFF;
- dpr->api_active = 1;
- break;
- case 0x15: /* POLL IND */
- dpr->watchdog_cnt = 0xFF;
- dpr->int_flg_pc = 0xFF;
- dpr->api_active = 1;
- smbx->type = mbx->type + 0x20;
- dpr->msg_flg[1] = 1;
- make_intr(1, sc);
- break;
- case 0x1e: /* MANUFACT CONF */
- if(((mbx->type >> 8) == 18 ) && (*mbx->data == 0)) /* LISTEN */
- break;
- badstate(mbx,4,0,dpr);
- break;
- case 0x1f: /* MANUFACT IND */
- if((mbx->type >> 8) == 19 ) /* DATA */
- {
- u_char *b = (u_char *) dpr;
- b += dpr->buf_ptr[0];
- isdn_input(ispy_applnr, mbx->data_len, b, 0);
- smbx->type = mbx->type + 0x20;
- dpr->msg_flg[1] = 1;
- make_intr(1, sc);
- break;
- }
- default:
- badstate(mbx,5,0,dpr);
- }
- reset_req(sc, 0, 3);
-}
-
-static void
-bs_intr(int mb, int c, struct nic_softc * sc)
-{
- chan_t *chan = &sc->sc_chan[c];
- isdn_ctrl_t *ctrl = &isdn_ctrl[chan->ctrl];
-
- if (chan->state == ACTIVE)
- {
- if (chan->more)
- {
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx = &dpr->dpr_mbx[mb];
- u_char *b = (u_char *) dpr;
-
- bzero(mbx, 20);
- mbx->type = BD_DATA_B3_REQ;
- if (mb == 7)
- mbx->type |= 0x40;
- *(u_short *) mbx->data = chan->ncci;
- mbx->data[4] = chan->msg_nr;
- b += dpr->buf_ptr[mb];
- mbx->data_len = chan->more;
- bcopy(chan->more_b, b, chan->more);
-
- chan->more = 0;
- ctrl->o_len = -1;
-
- dpr->msg_flg[mb] = 3;
- make_intr(mb, sc);
-
- ctrl->lastact = time.tv_sec;
- return;
- }
- bsintr &= ~(1 << c);
- }
-}
-
-void
-nicintr(int unit)
-{
- register struct nic_softc *sc = &nic_sc[unit];
- dpr_type *dpr = sc->sc_dpr;
-
- if (dpr->msg_flg[2])
- d_intr(sc);
- if (dpr->msg_flg[0])
- s_intr(sc);
- if (dpr->msg_flg[6])
- b_intr(6, 1, sc);
- if (dpr->msg_flg[4])
- b_intr(4, 0, sc);
- if (bsintr)
- {
- if (dpr->msg_flg[7] == 0)
- bs_intr(7, 1, sc);
- if (dpr->msg_flg[5] == 0)
- bs_intr(5, 0, sc);
- }
-}
-
-
-static nic_devsw_installed = 0;
-
-static void nic_drvinit(void *unused)
-{
- dev_t dev;
-
- if( ! nic_devsw_installed ) {
- dev = makedev(CDEV_MAJOR ,0);
- cdevsw_add(&dev,&nic_cdevsw, NULL);
- nic_devsw_installed = 1;
- }
-}
-
-SYSINIT(nicdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,nic_drvinit,NULL)
-
-#endif /* NNIC > 0 */
diff --git a/sys/gnu/i386/isa/nic3008.h b/sys/gnu/i386/isa/nic3008.h
deleted file mode 100644
index 5a87409..0000000
--- a/sys/gnu/i386/isa/nic3008.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/* @(#)$Id: nic3008.h,v 1.1 1995/02/14 15:00:12 jkh Exp $
- *******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
- *
- * Copyright 1994 Dietmar Friede
- *******************************************************************************
- * Bug reports, patches, comments, suggestions should be sent to:
- *
- * jkr@saarlink.de or jkrause@guug.de
- *
- *******************************************************************************
- * $Log: nic3008.h,v $
- * Revision 1.1 1995/02/14 15:00:12 jkh
- * An ISDN driver that supports the EDSS1 and the 1TR6 ISDN interfaces.
- * EDSS1 is the "Euro-ISDN", 1TR6 is the soon obsolete german ISDN Interface.
- * Obtained from: Dietmar Friede <dfriede@drnhh.neuhaus.de> and
- * Juergen Krause <jkr@saarlink.de>
- *
- * This is only one part - the rest to follow in a couple of hours.
- * This part is a benign import, since it doesn't affect anything else.
- *
- *
- ******************************************************************************/
-
-/*
- * This file defines the NICCY 3008 Interface.
- * Copyright Dr. Neuhaus GmbH, Hamburg and Dietmar Friede
- *
-*/
-
-#pragma pack (1)
-
-typedef struct {
- u_short type; /* Message Subtype/Type */
- u_char source;
- u_char dest;
- u_short number; /* laufende Nachrichten-Nummer */
- u_short timeoutval; /* Wert fr Timeout */
- u_char priority; /* Nachrichten-Priorit„t */
- u_char more_data; /* Nachricht vollst„ndig? */
- u_short data_len; /* Datenmenge */
- u_char buf_valid; /* im aux. buf.? */
- u_char reserved[1];
- u_short add_info; /* Maske */
- u_char data[0x30];/* Datenfeld */
-} mbx_type;
-
-/* ------------------------------------------------------------------------ */
-
-typedef struct {
-/* Offset 0x0000 ---------------------------------------------------------- */
- u_char msg_flg[8]; /* Messages in MBX i */
- u_char card_number; /* Kartennummer of Applikation */
- u_char card_state; /* Kartenstatus */
- u_short mainloop_cnt; /* NICCY's M'loop,68000-Notation*/
- u_char watchdog_cnt; /* Applikation "lebt"? */
- u_char hw_config; /* Steckmodule? */
- u_char jmp_config; /* Karten-Jumper? */
- u_char ram_config; /* Karten-Speicher? */
-/* Offset 0x0010 -----------------------------------------------------------*/
- char niccy_ver[0x0E]; /* "NICCY V x.yyy\c" */
- u_char int_flg_pc; /* Will PC Interrupts? */
- u_char int_flg_nic; /* Will NICCY Interrupts? */
-/* Offset 0x0020 -----------------------------------------------------------*/
- u_short buf_ptr[8]; /* Pointer to aux. buf. ... */
-/* Offset 0x0030 -----------------------------------------------------------*/
- u_short buf_len[8]; /* Size of aux. buf. ... */
-/* Offset 0x0040 -----------------------------------------------------------*/
- /* 0x40 Bytes fr die */
- /* frei verfgbar */
- u_char old_flg[8]; /* Messages in MBX i */
- u_char irq_level; /* welcher IRQ (als Bitmaske */
- u_char res[7]; /* FREI */
-/* Offset 0x0050 -----------------------------------------------------------*/
- u_char api_area_int_nr; /*SW-Int des API wenn API_ACTIVE*/
- u_char api_area_PLCI[2]; /* PLCI w„hrend ApiManufacturer */
- u_char capi_version[6]; /* Versionsnummer der CAPI */
- u_char api_area[0x27]; /* FREI */
-/* Offset 0x0080 -----------------------------------------------------------*/
- u_char api_active; /* Flag ob CAPI aktiv ist */
- u_char ext_hw_config; /* Bit 0: UART 16550 */
- /* Bit 1..7: reserved */
- u_char dpr_hw_id[0x0E]; /* Hardware ID */
-/* Offset 0x0090 -----------------------------------------------------------*/
- u_char dpr_listen_req;/* Anzahl Listen Request's */
- u_char dpr_state_b1; /* state B1 channel */
- /* 0x00 : channel ist frei */
- /* 0x01 : Verbindungsaufb. Req */
- /* 0x02 : Verbindungsaufb. Act */
- /* 0x03 : Verbindung besteht */
- /* 0x04 : eintreffender Ruf */
- /* 0x05 : Verbindung angenommen */
- /* 0x06 : Verbindungsabb. Req */
- /* 0x07 : Verbindungsabb. laeuft*/
- /* 0x08 : Verbindung getrennt */
- u_char dpr_state_b2; /* state B2 channel (siehe oben)*/
- u_char dpr_state_ic1; /* state of Intercomm-Channel */
- u_char dpr_state_ic2; /* ----------- " -------------- */
- u_char state_res[0x04];
- u_char dpr_si_b1; /* Service Indicator auf B1 */
- u_char dpr_si_b2; /* Service Indicator auf B2 */
- u_char dpr_state_res_0[0x05];
-/* Offset 0x00A0 -----------------------------------------------------------*/
- u_char dpr_state_hscx; /* state of HSCX */
- u_char dpr_state_itac; /* state of ITAC */
- u_char dpr_state_arcofi;/* state of ARCOFI */
- u_char dpr_state_modem; /* state of Aufsteckmodem */
- u_char dpr_state_com; /* state of COM */
- u_char dpr_state_res[0x0B];
-/* Offset 0x00B0 -----------------------------------------------------------*/
- u_char dpr_state_ia_tel;/* state of internal Appl. */
- u_char dpr_state_ia_com;/* state of internal Appl. */
- u_char dpr_state_ia_mod;/* state of internal Appl. */
- u_char dpr_state_res_1[0x0D];
-/* Offset 0x00C0 -----------------------------------------------------------*/
- u_char dpr_state_dcp[0x10];/* state of D-channel Prot */
-/* Offset 0x00D0 -----------------------------------------------------------*/
- u_char reserved[0x130];
-/* Offset 0x0200 -----------------------------------------------------------*/
- mbx_type dpr_mbx[8]; /* the mailboxes ... */
-} dpr_type;
-
-#pragma pack ()
diff --git a/sys/gnu/i386/isa/nic3009.c b/sys/gnu/i386/isa/nic3009.c
deleted file mode 100644
index 2e5a322..0000000
--- a/sys/gnu/i386/isa/nic3009.c
+++ /dev/null
@@ -1,1358 +0,0 @@
-/* @(#)$Id: nic3009.c,v 1.15 1996/03/28 14:27:28 scrappy Exp $
- *******************************************************************************
- * II - Version 0.1 $Revision: 1.15 $ $State: Exp $
- *
- * Copyright 1994 Dietmar Friede
- *******************************************************************************
- * Bug reports, patches, comments, suggestions should be sent to:
- *
- * jkr@saarlink.de or jkrause@guug.de
- *
- *******************************************************************************
- * $Log: nic3009.c,v $
- * Revision 1.15 1996/03/28 14:27:28 scrappy
- * Switched from using devfs_add_sw() to using devfs_add_swf()
- *
- * Reviewed by: julian@freebsd.org
- *
- * Revision 1.14 1995/12/17 21:14:36 phk
- * Staticize.
- *
- * Revision 1.13 1995/12/08 23:19:30 phk
- * Julian forgot to make the *devsw structures static.
- *
- * Revision 1.12 1995/12/08 11:12:47 julian
- * Pass 3 of the great devsw changes
- * most devsw referenced functions are now static, as they are
- * in the same file as their devsw structure. I've also added DEVFS
- * support for nearly every device in the system, however
- * many of the devices have 'incorrect' names under DEVFS
- * because I couldn't quickly work out the correct naming conventions.
- * (but devfs won't be coming on line for a month or so anyhow so that doesn't
- * matter)
- *
- * If you "OWN" a device which would normally have an entry in /dev
- * then search for the devfs_add_devsw() entries and munge to make them right..
- * check out similar devices to see what I might have done in them in you
- * can't see what's going on..
- * for a laugh compare conf.c conf.h defore and after... :)
- * I have not doen DEVFS entries for any DISKSLICE devices yet as that will be
- * a much more complicated job.. (pass 5 :)
- *
- * pass 4 will be to make the devsw tables of type (cdevsw * )
- * rather than (cdevsw)
- * seems to work here..
- * complaints to the usual places.. :)
- *
- * Revision 1.11 1995/11/29 14:39:08 julian
- * If you're going to mechanically replicate something in 50 files
- * it's best to not have a (compiles cleanly) typo in it! (sigh)
- *
- * Revision 1.10 1995/11/29 10:47:05 julian
- * OK, that's it..
- * That's EVERY SINGLE driver that has an entry in conf.c..
- * my next trick will be to define cdevsw[] and bdevsw[]
- * as empty arrays and remove all those DAMNED defines as well..
- *
- * Revision 1.9 1995/11/21 14:56:02 bde
- * Completed function declarations, added prototypes and removed redundant
- * declarations.
- *
- * Revision 1.8 1995/09/19 18:54:42 bde
- * Fix benign type mismatches in isa interrupt handlers. Many returned int
- * instead of void.
- *
- * Revision 1.7 1995/09/08 11:06:47 bde
- * Fix benign type mismatches in devsw functions. 82 out of 299 devsw
- * functions were wrong.
- *
- * Revision 1.6 1995/05/11 19:25:56 rgrimes
- * Fix -Wformat warnings from LINT kernel.
- *
- * Revision 1.5 1995/03/28 07:54:33 bde
- * Add and move declarations to fix all of the warnings from `gcc -Wimplicit'
- * (except in netccitt, netiso and netns) that I didn't notice when I fixed
- * "all" such warnings before.
- *
- * Revision 1.4 1995/02/16 08:06:21 jkh
- * Fix a few bogons introduced when config lost the 3 char limitation.
- *
- * Revision 1.3 1995/02/15 11:59:41 jkh
- * Fix a few more nits. Should compile better now! :_)
- *
- * Revision 1.2 1995/02/15 06:28:20 jkh
- * Fix up include paths, nuke some warnings.
- *
- * Revision 1.1 1995/02/14 15:00:14 jkh
- * An ISDN driver that supports the EDSS1 and the 1TR6 ISDN interfaces.
- * EDSS1 is the "Euro-ISDN", 1TR6 is the soon obsolete german ISDN Interface.
- * Obtained from: Dietmar Friede <dfriede@drnhh.neuhaus.de> and
- * Juergen Krause <jkr@saarlink.de>
- *
- * This is only one part - the rest to follow in a couple of hours.
- * This part is a benign import, since it doesn't affect anything else.
- *
- *
- ******************************************************************************/
-
-/*
- * Copyright (c) 1994 Dietmar Friede (dietmar@friede.de) All rights reserved.
- * FSF/FSAG GNU Copyright applies
- *
- * A low level driver for the NICCY-3009 ISDN Card.
- *
- */
-
-#include "nnic.h"
-#if NNNIC > 0
-
-#include <sys/param.h>
-#include <sys/ioctl.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/conf.h>
-#include <sys/proc.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif /*DEVFS*/
-
-#include <i386/isa/isa_device.h>
-#include <gnu/i386/isa/nic3009.h>
-#include <gnu/i386/isa/niccyreg.h>
-#include <gnu/isdn/isdn_ioctl.h>
-
-
-#define OPEN 1
-#define LOAD_HEAD 3
-#define LOAD_DATA 5
-#define LOAD_ENTITY 8
-#define IS_DIAL(p) (((p)&0x20)==0)
-#define IS_LISTEN(p) ((p)&0x20)
-#define CHAN(pl) (((pl)&7)-1)
-#define C_CHAN(x) ((x)&1)
-#define APPL(pl) ((((pl)>>6)&0x7f)-1)
-#define CARD(pl) (((pl)>>13)&7)
-#define MK_APPL(pl) (((pl)+1)<<6)
-
-#define min(a,b) ((a)<(b)?(a):(b))
-
-extern isdn_appl_t isdn_appl[];
-extern u_short isdn_state;
-extern isdn_ctrl_t isdn_ctrl[];
-extern int ispy_applnr;
-extern int Isdn_Appl, Isdn_Ctrl, Isdn_Typ;
-
-static old_spy= 0;
-
-static int nnicattach __P((struct isa_device *is));
-static int nnicprobe __P((struct isa_device *is));
-static int nnic_accept __P((int cn, int an, int rea));
-static int nnic_connect __P((int cn, int ap, int b_channel, int inf_mask,
- int out_serv, int out_serv_add,
- int src_subadr, unsigned ad_len,
- char *dest_addr, int spv));
-static int nnic_disconnect __P((int cn, int rea));
-static int nnic_listen __P((int cn, int ap, int inf_mask,
- int subadr_mask, int si_mask, int spv));
-static int nnic_output __P((int cn));
-static int nnic_state __P((int cn));
-
-static d_open_t nnicopen;
-static d_close_t nnicclose;
-static d_ioctl_t nnicioctl;
-
-#define CDEV_MAJOR 60
-static struct cdevsw nnic_cdevsw =
- { nnicopen, nnicclose, noread, nowrite, /*60*/
- nnicioctl, nostop, nullreset, nodevtotty,/* nnic */
- seltrue, nommap, NULL, "nnic", NULL, -1 };
-
-
-static short bsintr;
-
-struct isa_driver nnicdriver = {nnicprobe, nnicattach, "nnic"};
-
-typedef enum
-{
- DISCON, ISDISCON, DIAL, CALLED, CONNECT, IDLE, ACTIVE
-} io_state;
-
-typedef struct
-{
- char ctrl;
- u_char msg_nr;
- u_char morenr;
- short plci;
- short ncci;
- short state;
- short i_len;
- char i_buf[2048];
- char o_buf[2048];
- u_short more;
- char *more_b;
-} chan_t;
-
-static struct nnic_softc
-{
- dpr_type *sc_dpr; /* card RAM virtual memory base */
- u_short sc_vector; /* interrupt vector */
- short sc_port;
- u_char sc_flags;
- u_char sc_unit;
- u_char sc_ctrl;
- u_char sc_type;
- short sc_stat;
- chan_t sc_chan[2];
-#ifdef DEVFS
- void *devfs_token;
-#endif
-} nnic_sc[NNNIC];
-
-static void badstate __P((mbx_type *mbx, int n, int mb, dpr_type *dpr));
-static int con_b3_resp __P((int unit, int mb, u_short ncci, u_short pl,
- u_char reject));
-static int discon_req __P((int w, int unit, int pl, int rea, int err));
-static int con_resp __P((int unit, int pl, int rea));
-static void dn_intr __P((unsigned unit, struct nnic_softc *sc));
-static int en_q __P((int unit, int t, int st, int pl, int l, u_char *b));
-static void make_intr __P((void *gen));
-static void nnnicintr __P((void *gen));
-static void nnic_reset __P((struct nnic_softc *sc, int reset));
-static int reset_plci __P((int w, chan_t *chan, int p));
-static int sel_b2_prot_req __P((int unit, int c, int pl, dlpd_t *dlpd));
-static int sel_b3_prot_req __P((int unit, int mb, u_short pl,
- ncpd_t *ncpd));
-static void up_intr __P((unsigned unit, struct nnic_softc *sc));
-
-static int
-nnicprobe(struct isa_device * is)
-{
- register struct nnic_softc *sc = &nnic_sc[is->id_unit & 127];
- dpr_type *dpr;
- u_char *w;
- int i;
-
- sc->sc_vector = is->id_irq;
- sc->sc_port = is->id_iobase;
- sc->sc_unit = is->id_unit;
- w= (u_char *) dpr = sc->sc_dpr = (dpr_type *) is->id_maddr;
-
- i= ffs(sc->sc_vector)-1;
- if(i == 9) i= 1;
- outb(sc->sc_port, 0);
- outb(sc->sc_port+1, i);
- outb(sc->sc_port, ((unsigned) dpr >> 12) & 0xff);
-
-/* There should be memory, so lets test that */
- for (i=0;i<DPR_LEN;i++)
- w[i] = (i+0xaf) & 0xff;
- for (i=0;i<DPR_LEN;i++)
- if (w[i] != ((i+0xaf) & 0xff))
- {
- printf("Niccy card not found or bad memory %p\n",
- is->id_maddr);
- outb(sc->sc_port, 0);
- return(0);
- }
- bzero(w,DPR_LEN-4);
-
- is->id_msize = DPR_LEN;
- return (2);
-}
-
-static void
-nnic_reset(struct nnic_softc *sc, int reset)
-{
- u_char o;
- o= ffs(sc->sc_vector)-1;
- if(reset == 0)
- o|= 0x80;
- outb(sc->sc_port+1,o);
-}
-
-/*
- * nnicattach() Install device
- */
-static int
-nnicattach(struct isa_device * is)
-{
- struct nnic_softc *sc;
- int cn;
- isdn_ctrl_t *ctrl0, *ctrl1;
-
- sc = &nnic_sc[is->id_unit];
- sc->sc_ctrl = -1;
- if ((cn = isdn_ctrl_attach(2)) == -1)
- {
- return (0);
- }
- sc->sc_ctrl = cn;
- sc->sc_chan[0].plci = sc->sc_chan[1].plci = -1;
-
- ctrl0 = &isdn_ctrl[cn];
- ctrl1 = &isdn_ctrl[cn + 1];
- sc->sc_chan[0].ctrl = ctrl0->ctrl = cn;
- sc->sc_chan[1].ctrl = ctrl1->ctrl = cn + 1;
- ctrl0->o_buf = sc->sc_chan[0].o_buf;
- ctrl1->o_buf = sc->sc_chan[1].o_buf;
- ctrl0->listen = ctrl1->listen = nnic_listen;
- ctrl0->disconnect = ctrl1->disconnect = nnic_disconnect;
- ctrl0->accept = ctrl1->accept = nnic_accept;
- ctrl0->connect = ctrl1->connect = nnic_connect;
- ctrl0->output = ctrl1->output = nnic_output;
- ctrl0->state = ctrl1->state = nnic_state;
- ctrl0->unit = ctrl1->unit = is->id_unit;
- ctrl0->appl = ctrl1->appl = -1;
- ctrl0->o_len = ctrl1->o_len = -1;
- sc->sc_flags= LOAD_ENTITY;
-#ifdef DEVFS
- sc->devfs_token =
- devfs_add_devswf(&nnic_cdevsw, is->id_unit, DV_CHR, 0, 0,
- 0600, "/isdn/nnic%d", is->id_unit);
-#endif
-
- return (1);
-}
-
-#define con_b3_req(unit,mb,pl) en_q(unit,mb|BD_CONN_B3_REQ,0,pl,0,NULL)
-#define con_act_resp(unit,pl) en_q(unit,DD_CONN_ACT_RSP,0, pl,0,NULL)
-#define discon_resp(sc,pl) en_q(unit,DD_DISC_RSP,0, pl,0,NULL)
-#define inf_resp(unit,pl) en_q(unit,DD_INFO_RSP,0, pl,0,NULL)
-#define listen_b3_req(unit,mb,pl) en_q(unit,mb|BD_LIST_B3_REQ,0,pl,0,NULL)
-
-/* If the Niccy card wants it: Interupt it. */
-static void
-make_intr(void *gen)
-{
- struct nnic_softc * sc = (struct nnic_softc *)gen;
- dpr_type *dpr = sc->sc_dpr;
-
- dpr->watchdog_cnt = 0xFF;
-
- if (dpr->int_flg_nic)
- dpr->signal_pc_to_niccy++;
-}
-
-static int
-en_q(int unit, int t, int st, int pl, int l, u_char *b)
-{
- struct nnic_softc * sc= &nnic_sc[unit];
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx = &dpr->dn_mbx;
-
-/*
- if (dpr->card_state & ~4)
- return (ENODEV);
-*/
- if (mbx->msg_flag)
- return (EBUSY);
-
- bzero(&mbx->type, 18);
- mbx->type = t;
- mbx->subtype = st;
- mbx->plci = pl;
- if (l)
- {
- mbx->data_len = l;
- bcopy(b, mbx->data, l);
- }
- mbx->msg_flag = 1;
- make_intr(sc);
- return (0);
-}
-
-static void
-badstate(mbx_type * mbx, int n, int mb, dpr_type *dpr)
-{
- printf("Niccy: not implemented %x len %d at %d.", mbx->type,mbx->data_len,n);
- if(mbx->data_len)
- {
- int i;
-
- for(i=0; i<mbx->data_len; i++) printf(" %x",mbx->data[i]);
- }
- printf("\n");
-}
-
-static int
-nnic_state(int cn)
-{
- isdn_ctrl_t *ctrl = &isdn_ctrl[cn];
- struct nnic_softc *sc = &nnic_sc[ctrl->unit];
- chan_t *chan0 = &sc->sc_chan[0];
- chan_t *chan1 = &sc->sc_chan[1];
- dpr_type *dpr = sc->sc_dpr;
-
- if(sc->sc_flags == LOAD_ENTITY)
- return(ENODEV);
- if (dpr->card_state & ~4 )
- return (ENODEV);
- if (dpr->card_state & 4 )
- return (EAGAIN);
- if(chan0->state && chan1->state)
- return(EBUSY);
- return(0);
-}
-
-static int
-nnic_output(int cn)
-{
- isdn_ctrl_t *ctrl = &isdn_ctrl[cn];
- struct nnic_softc *sc = &nnic_sc[ctrl->unit];
- chan_t *chan = &sc->sc_chan[C_CHAN(cn)];
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx = &dpr->dn_mbx;
- int l;
- int len= ctrl->o_len;
-
- if (dpr->card_state /* & ~4 */)
- return (ENODEV);
-
- if (bsintr || (chan->ncci == -1) || mbx->msg_flag || (chan->state != IDLE))
- return (EBUSY);
-
- chan->state = ACTIVE;
-
- bzero(&mbx->type, 20);
- mbx->type = BD_DATA_B3_REQ;
- if (C_CHAN(cn))
- mbx->type |= 0x40;
- *(u_short *) mbx->data = chan->ncci;
- mbx->data[4] = chan->msg_nr;
- l = min(DATAFIELD_LEN-5, len);
- mbx->data_len = l+5;
- bcopy(ctrl->o_buf, &mbx->data[5], l);
-
- if (l < len)
- {
- chan->more = len - l;
- chan->more_b = ctrl->o_buf + l;
- mbx->more_data = 1;
- bsintr = C_CHAN(cn)+1;
- } else
- {
- chan->more = 0;
- ctrl->o_len = -1;
- bsintr= 0;
- ++chan->msg_nr;
- }
-
- mbx->msg_flag = 1;
- make_intr(sc);
- ctrl->lastact = time.tv_sec;
- return (0);
-}
-
-static int
-con_resp(int unit, int pl, int rea)
-{
- return(en_q(unit, DD_CONN_RSP, 0, pl, 1, (u_char *) & rea));
-}
-
-static int
-reset_plci(int w, chan_t * chan, int p)
-{
- isdn_ctrl_t *ctrl;
-
- if (p == -1)
- return (-1);
-
- if(chan == NULL)
- return(p);
-
- ctrl = &isdn_ctrl[chan->ctrl];
- if (chan->plci == p)
- {
- if (ISBUSY(ctrl->appl))
- {
- isdn_disconn_ind(ctrl->appl);
- isdn_appl[ctrl->appl].ctrl = -1;
- isdn_appl[ctrl->appl].state = 0;
- }
- ctrl->appl = -1;
- ctrl->o_len = -1;
- chan->plci = -1;
- chan->ncci = -1;
- chan->state = DISCON;
- chan->i_len = 0;
- chan->more = 0;
- }
- return (p);
-}
-
-static int
-sel_b2_prot_req(int unit, int c, int pl, dlpd_t * dlpd)
-{
- return(en_q(unit, (c ? 0x40 : 0)| BD_SEL_PROT_REQ, 2, pl, sizeof(dlpd_t), (u_char *) dlpd));
-}
-
-static int
-sel_b3_prot_req(int unit, int mb, u_short pl, ncpd_t * ncpd)
-{
- return(en_q(unit, mb | BD_SEL_PROT_REQ, 3, pl, sizeof(ncpd_t), (u_char *) ncpd));
-}
-
-static int
-discon_req(int w, int unit , int pl, int rea, int err)
-{
- if((pl == 0) || (pl == -1))
- return(0);
- return(en_q(unit, DD_DISC_REQ,0, pl, 1, (u_char *) &rea));
-}
-
-static int
-con_b3_resp(int unit, int mb, u_short ncci, u_short pl, u_char reject)
-{
- u_char buf[32];
- int l = 4;
-
- bzero(buf, 32);
- *(u_short *) buf = ncci;
- buf[2] = reject;
- buf[3] = 0; /* ncpi ??? */
- l += 15;
- return(en_q(unit, mb | BD_CONN_B3_RSP,0, pl, l, buf));
-}
-
-static int
-nnic_connect(int cn, int ap, int b_channel, int inf_mask, int out_serv
- ,int out_serv_add, int src_subadr, unsigned ad_len
- ,char *dest_addr, int spv)
-{
- char buf[128];
-
- if (ad_len > 118)
- return (-1);
-
- buf[0] = spv ? 0x53 : 0;
- buf[1] = b_channel;
- if (spv)
- inf_mask |= 0x40000000;
- *(u_long *) & buf[2] = inf_mask;
- buf[6] = out_serv;
- buf[7] = out_serv_add;
- buf[8] = src_subadr;
- buf[9] = ad_len;
- bcopy(dest_addr, &buf[10], ad_len);
- return (en_q(isdn_ctrl[cn].unit, DD_CONN_REQ, 0, MK_APPL(ap), ad_len + 10, buf));
-}
-
-static int
-nnic_listen(int cn, int ap, int inf_mask, int subadr_mask, int si_mask, int spv)
-{
- u_short sbuf[4];
-
- if (spv)
- inf_mask |= 0x40000000;
- *(u_long *) sbuf = inf_mask;
- sbuf[2] = subadr_mask;
- sbuf[3] = si_mask;
- return (en_q(isdn_ctrl[cn].unit, DD_LISTEN_REQ, 0, MK_APPL(ap), 8, (u_char *) sbuf));
-}
-
-static int
-nnic_disconnect(int cn, int rea)
-{
- isdn_ctrl_t *ctrl = &isdn_ctrl[cn];
- chan_t *chan = &nnic_sc[ctrl->unit].sc_chan[C_CHAN(cn)];
- int p, err;
- u_char buf[16];
-
- if(chan->ncci != -1)
- {
- bzero(buf,16);
- *(u_short *) buf = chan->ncci;
- err= en_q(ctrl->unit, (C_CHAN(cn)?0x40:0)|BD_DISC_B3_REQ, 0
- , chan->plci, 3+sizeof(ncpi_t), buf);
- if((err==0) && (ctrl->o_len == 0))
- ctrl->o_len= -1;
- return(err);
- }
- p = chan->plci;
- if ((p == 0) || (p == -1))
- return (ENODEV);
-
- err= en_q(ctrl->unit, DD_DISC_REQ, 0, p, 1, (u_char *) &rea);
- if((err==0) && (ctrl->o_len == 0))
- ctrl->o_len= -1;
- return(err);
-}
-
-static int
-nnic_accept(int cn, int an, int rea)
-{
- isdn_ctrl_t *ctrl = &isdn_ctrl[cn];
- struct nnic_softc *sc = &nnic_sc[ctrl->unit];
- chan_t *chan = &sc->sc_chan[C_CHAN(cn)];
- isdn_appl_t *appl = &isdn_appl[an];
-
- if(ISFREE(ctrl->appl))
- return(ENODEV);
-
- if (rea)
- {
- ctrl->appl= -1;
- return(discon_req(1, ctrl->unit, chan->plci, rea, 0));
- }
- ctrl->appl= an;
- ctrl->lastact = time.tv_sec;
- appl->ctrl= cn;
- appl->state= 4;
-
- return(sel_b2_prot_req(ctrl->unit, C_CHAN(cn), chan->plci, &appl->dlpd));
-}
-
-static int
-nnicopen(dev_t dev, int flags, int fmt, struct proc *p)
-{
- struct nnic_softc *sc;
- u_char unit;
- int x;
-
- unit = minor(dev);
- /* minor number out of limits ? */
- if (unit >= NNNIC)
- return (ENXIO);
- sc = &nnic_sc[unit];
-
- x= splhigh();
- /* Card busy ? */
-/*
- if (sc->sc_flags & 7)
- {
- splx(x);
- return (EBUSY);
- }
-*/
- sc->sc_flags |= OPEN;
-
- splx(x);
- return (0);
-}
-
-static int
-nnicclose(dev_t dev, int flags, int fmt, struct proc *p)
-{
- struct nnic_softc *sc = &nnic_sc[minor(dev)];
-
- sc->sc_flags &= ~7;
- return (0);
-}
-
-static int
-nnicioctl(dev_t dev, int cmd, caddr_t data, int flags, struct proc *pr)
-{
- int error;
- int i, x;
- struct nnic_softc *sc = &nnic_sc[minor(dev)];
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx= &dpr->dn_mbx;
- u_char *p= (u_char *)dpr;
- struct head *head = (struct head *) data;
-
- error = 0;
- switch (cmd)
- {
- case NICCY_DEBUG:
- data[0]= 0x39;
- bcopy(p, &data[1], 2044);
- break;
- case NICCY_LOAD:
- switch(head->status)
- {
- case 0: /* Loading initial boot code */
- x = splhigh();
- nnic_reset(sc,1);
- if(error = copyin(head->data+0x16,p, head->d_len-0x16))
- {
- splx(x);
- return (error);
- }
- nnic_reset(sc,0);
- i= hz;
- while (p[7] && i--)
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "l9_0", 1);
- if (error != EWOULDBLOCK)
- {
- splx(x);
- return (error);
- }
- }
- nnic_reset(sc,1);
- splx(x);
- if(p[7]) return(ENODEV);
- return(0);
-
- case 1: /* Loading boot code */
- x = splhigh();
-
- if(error = copyin(head->data+0x64,p, head->d_len-0x64))
- {
- splx(x);
- return (error);
- }
- nnic_reset(sc,0);
- i= 5*hz;
- while ((dpr->mainloop_cnt != 0x1147) && i--)
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "l9_1", 1);
- if (error != EWOULDBLOCK)
- {
- splx(x);
- return (error);
- }
- }
-
- if(dpr->mainloop_cnt != 0x1147)
- {
- splx(x);
- return(ENODEV);
- }
-
- i= 1*hz;
- while ((dpr->up_mbx.type != 1) && i--)
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "l9_2", 1);
- if (error != EWOULDBLOCK)
- {
- splx(x);
- return (error);
- }
- }
- if(dpr->up_mbx.type != 1)
- {
- splx(x);
- return(ENODEV);
- }
- bzero(&mbx->type, 16);
- dpr->up_mbx.msg_flag= 0;
- mbx->type= 0x21;
- mbx->msg_flag= 1;
-
- i= 1*hz;
- while (mbx->msg_flag && i--)
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "l9_3", 1);
- if (error != EWOULDBLOCK)
- {
- splx(x);
- return (error);
- }
- }
- if(mbx->msg_flag)
- {
- splx(x);
- return(ENODEV);
- }
-
- head->status= 0;
- splx(x);
- return(0);
-
- default:
- x = splhigh();
- while (mbx->msg_flag)
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "l9_1h", 1);
- if (error != EWOULDBLOCK)
- {
- splx(x);
- return (error);
- }
- }
-
- bzero(&mbx->type, 16);
- mbx->type = MD_DNL_MOD_REQ;
- mbx->subtype = head->typ;
- sc->sc_type = head->typ;
- mbx->data_len = 12;
- bcopy(head->nam, mbx->data, 8);
- *(u_long *) (mbx->data + 8) = head->len;
-
- mbx->msg_flag = 1;
- make_intr(sc);
- i= 1*hz;
- while ((dpr->up_mbx.msg_flag == 0) && i--)
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "l9_2", 1);
- if (error != EWOULDBLOCK)
- {
- splx(x);
- return (error);
- }
- }
-
- if((dpr->up_mbx.type != MU_DNL_MOD_CNF) || dpr->up_mbx.data[0])
- {
- dpr->up_mbx.msg_flag= 0;
- make_intr(sc);
- splx(x);
- return(ENODEV);
- }
- dpr->up_mbx.msg_flag= 0;
- make_intr(sc);
- {
- int len, l, off;
- len= head->d_len;
- off= 0;
- l= 0x64;
-
- while(len > 0)
- {
- while (mbx->msg_flag)
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "l9_4load", 1);
- if (error != EWOULDBLOCK)
- {
- splx(x);
- return (error);
- }
- }
- mbx->type = MD_DNL_MOD_DATA;
- len-= l;
- mbx->more_data = len > 0;
- mbx->data_len = l;
- if(error= copyin(head->data+off, mbx->data, l))
- {
- splx(x);
- return (error);
- }
- off+= l;
- l= min(len,512);
- mbx->msg_flag = 1;
- make_intr(sc);
- }
- }
-
- i= 3*hz;
- while ((dpr->up_mbx.msg_flag == 0) && i--)
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "l9_2", 1);
- if (error != EWOULDBLOCK)
- {
- splx(x);
- return (error);
- }
- }
- if(dpr->up_mbx.type == 0)
- {
- dpr->up_mbx.msg_flag= 0;
- make_intr(sc);
- i= 3*hz;
- while ((dpr->up_mbx.msg_flag == 0) && i--)
- {
- error = tsleep((caddr_t) sc, PZERO | PCATCH, "l9_3", 1);
- if (error != EWOULDBLOCK)
- {
- splx(x);
- return (error);
- }
- }
- }
-
- if(dpr->up_mbx.type != MU_DNL_MOD_IND)
- {
- dpr->up_mbx.msg_flag= 0;
- make_intr(sc);
- splx(x);
- return(ENODEV);
- }
- head->status = dpr->up_mbx.data[0];
- mbx->data[0] = dpr->up_mbx.data[1];
- mbx->type= 0x20|MU_DNL_MOD_IND;
- mbx->subtype = head->typ;
- mbx->data_len = 1;
- dpr->card_number = sc->sc_unit;
- dpr->up_mbx.msg_flag= 0;
- mbx->msg_flag= 1;
- make_intr(sc);
- splx(x);
- return (0);
- }
- splx(x);
- return(0);
- case NICCY_SET_CLOCK:
- x = splhigh();
- dpr->int_flg_pc = 0xff;
- dpr->card_number = sc->sc_unit;
- if (mbx->msg_flag)
- {
- splx(x);
- return (EBUSY);
- }
- bzero(&mbx->type, 16);
- mbx->type = MD_SET_CLOCK_REQ;
- mbx->data_len = 14;
- bcopy(data, mbx->data, 14);
-
- mbx->msg_flag = 1;
- make_intr(sc);
- splx(x);
- return (0);
- case NICCY_SPY:
- x = splhigh();
- if (mbx->msg_flag)
- {
- splx(x);
- return (EBUSY);
- }
- bzero(&mbx->type, 16);
- mbx->type = MD_MANUFACT_REQ;
- mbx->subtype = 18;
- mbx->data_len = 1;
- mbx->plci = MK_APPL(ispy_applnr);
-/* There are ilegal states. So I use them to toggle */
- if((data[0] == 0) && (old_spy == 0)) data[0]= 255;
- else if(data[0] && old_spy ) data[0]= 0;
- old_spy= mbx->data[0]= data[0];
-
- mbx->msg_flag = 1;
- make_intr(sc);
- splx(x);
- return (0);
-
- case NICCY_RESET:
- x = splhigh();
- nnic_reset(sc,1);
- bzero((u_char*)dpr,DPR_LEN);
- sc->sc_flags= LOAD_ENTITY;
- splx(x);
- return (0);
-
- default:
- error = ENODEV;
- }
- return (error);
-}
-
-static void
-dn_intr(unsigned unit, struct nnic_softc * sc)
-{
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *mbx= &dpr->dn_mbx;
- chan_t *chan;
- isdn_ctrl_t *ctrl;
- int c,l, len;
-
- c= bsintr-1;
- chan = &sc->sc_chan[c];
- ctrl = &isdn_ctrl[chan->ctrl];
-
- if ((chan->state == ACTIVE) && (chan->more))
- {
- len= chan->more;
-
- bzero(&mbx->type, 20);
- mbx->type = BD_DATA_B3_REQ;
- if (c)
- mbx->type |= 0x40;
- *(u_short *) mbx->data = chan->ncci;
- mbx->data[4] = chan->msg_nr;
- l = min(DATAFIELD_LEN-5, len);
- mbx->data_len = l+5;
- bcopy(chan->more_b, &mbx->data[5], l);
-
- if (l < len)
- {
- chan->more = len - l;
- chan->more_b += l;
- mbx->more_data = 1;
- } else
- {
- chan->more = 0;
- ctrl->o_len = -1;
- bsintr= 0;
- ++chan->msg_nr;
- }
-
- mbx->msg_flag = 1;
- make_intr(sc);
- ctrl->lastact = time.tv_sec;
- return;
- }
- bsintr= 0;
-}
-
-static void
-up_intr(unsigned unit, struct nnic_softc * sc)
-{
- dpr_type *dpr = sc->sc_dpr;
- mbx_type *msg= &dpr->up_mbx;
- chan_t *chan;
- u_short n, mb, c, pl, err = 0;
- isdn_ctrl_t *ctrl;
- isdn_appl_t *appl;
- int error= 0;
-
- chan= NULL;
- ctrl= NULL;
- appl= NULL;
- mb= 0;
- pl = msg->plci;
-
- if(pl && (msg->type >= 0x40) && (msg->type < 0xfd) && (msg->type != 0x47))
- {
- if ((c = CHAN(pl)) < 2)
- {
- chan = &sc->sc_chan[c];
- ctrl = &isdn_ctrl[chan->ctrl];
- } else
- {
- c = 0xffff;
- chan= NULL;
- ctrl= NULL;
- }
-
- if(ctrl && (ctrl->appl & 0xC0) == 0)
- appl= &isdn_appl[ctrl->appl];
- else if( APPL(pl) < 0x30)
- appl = &isdn_appl[APPL(pl)];
- else if( APPL(pl) < 0x40)
- appl= NULL;
- else goto fin;
-
- if(msg->type >= 0x80)
- {
- mb= msg->type & 0x40;
- msg->type &= 0xbf;
- }
- }
-
- switch (msg->type)
- {
- case 0x01: /* INIT IND */
- if(dpr->dn_mbx.msg_flag) return;
- error= en_q(unit,msg->type|0x20,0,0,0,NULL);
- break;
- case 0x04: /* DNL MOD */
- sc->sc_stat = msg->data[0];
- if (sc->sc_flags )
- sc->sc_flags = OPEN;
- break;
- case 0x06: /* DNL MOD IND */
- if(dpr->dn_mbx.msg_flag) return;
- sc->sc_stat = msg->data[0];
- if (sc->sc_flags)
- sc->sc_flags = OPEN;
- if(sc->sc_stat)
- break;
- error= en_q(unit,msg->type|0x20,sc->sc_type,0,1, &msg->data[1]);
- break;
- case 0x0e: /* SET CLOCK CONF */
- dpr->card_number = unit;
-/*
- dpr->api_active = 1;
- dpr->watchdog_cnt = 0xFF;
- dpr->api_area[0] = 0;
- dpr->api_area[2] = 0;
-*/
- dpr->int_flg_pc = 0xFF;
- break;
- case 0x15: /* POLL IND */
- if(dpr->dn_mbx.msg_flag) return;
- dpr->api_active = 1;
- dpr->watchdog_cnt = 0xFF;
- dpr->int_flg_pc = 0xFF;
- error= en_q(unit,msg->type|0x20,0,0,0,NULL);
- break;
- case 0x16: /* STATE IND */
- if(dpr->dn_mbx.msg_flag) return;
- if(sc->sc_flags & LOAD_ENTITY)
- {
- if(sc->sc_flags & 7)
- sc->sc_flags = OPEN;
- else sc->sc_flags= 0;
- }
- error= en_q(unit,msg->type|0x20,0,0,0,NULL);
- break;
- case 0x17: /* STATE RESP */
- break;
- case 0x1e: /* MANUFACT CONF */
- if(msg->subtype == 18)
- break;
- badstate(msg,1,0,dpr);
- break;
- case 0x1f: /* MANUFACT IND */
- if(msg->subtype == 19)
- {
- if(dpr->dn_mbx.msg_flag) return;
- isdn_input(ispy_applnr, msg->data_len, msg->data,0);
- error= en_q(unit,msg->type|0x20,msg->subtype,0,0,NULL);
- break;
- }
- badstate(msg,2,0,dpr);
- break;
- case 0x40: /* CONNECT CONF */
- err = *(u_short *) msg->data;
- if (err || (appl == NULL) || (chan == NULL) || (ctrl == NULL))
- {
- if(chan) reset_plci(3, chan, pl);
- if(appl) appl->state= 0;
- break;
- }
- if (ISBUSY(ctrl->appl))
- {
- if(dpr->dn_mbx.msg_flag) return;
- error= discon_req(2, unit, pl, 0, 0);
- break;
- }
- chan->plci = pl;
- chan->msg_nr = 0;
- chan->ncci = -1;
- ctrl->lastact = time.tv_sec;
- ctrl->appl = APPL(pl);
- appl->ctrl = chan->ctrl;
- ctrl->islisten= 0;
- chan->state = DIAL;
- appl->state= 3;
- break;
-
- case 0x41: /* CONNECT IND */
- if (ISBUSY(ctrl->appl))
- {
- if(dpr->dn_mbx.msg_flag) return;
- error= discon_req(3, unit, pl, 0, 0);
- break;
- }
- chan->plci = pl;
- chan->msg_nr = 0;
- chan->ncci = -1;
- ctrl->lastact = time.tv_sec;
- ctrl->appl = 0x7f;
- ctrl->islisten= 1;
- chan->state = CALLED;
- msg->data[msg->data[3] + 4] = 0;
- isdn_accept_con_ind(APPL(pl), chan->ctrl, msg->data[0], msg->data[1]
- ,msg->data[2], msg->data[3], (char *) &msg->data[4]);
- break;
-
- case 0x42: /* CONNECT ACTIVE IND */
- if(dpr->dn_mbx.msg_flag) return;
- error= con_act_resp(unit, pl);
- if (IS_LISTEN(pl))
- {
- isdn_conn_ind(ctrl->appl,chan->ctrl,0);
- break;
- }
- isdn_conn_ind(APPL(pl),chan->ctrl,1);
- chan->state = CONNECT;
- ctrl->appl = APPL(pl);
- appl->ctrl = chan->ctrl;
- break;
-
- case 0x43: /* DISCONNECT CONF */
- reset_plci(4, chan, pl);
- break;
-
- case 0x44: /* DISCONNECT IND */
- if(dpr->dn_mbx.msg_flag) return;
- error= discon_resp(unit, reset_plci(5, chan, pl));
- break;
-
- case 0x47: /* LISTEN CONF */
- isdn_state = *(u_short *) msg->data;
- break;
-
- case 0x4a: /* INFO IND */
- if(dpr->dn_mbx.msg_flag) return;
- isdn_info(APPL(pl),*(u_short *)msg->data, msg->data[2], msg->data+3);
- error= inf_resp(unit, pl);
- break;
- case 0x80: /* SELECT PROT CONF */
- if(dpr->dn_mbx.msg_flag) return;
- err = *(u_short *) msg->data;
- if (err)
- {
- error= discon_req(4, unit, pl, 0, err);
- break;
- }
-
- switch (msg->subtype)
- {
- case 2:/* SELECT B2 PROTOCOL */
- if(ISFREE(ctrl->appl))
- break;
- error= sel_b3_prot_req(unit, mb, pl, &isdn_appl[ctrl->appl].ncpd);
- break;
-
- case 3:/* SELECT B3 PROTOCOL */
- if (IS_DIAL(pl))
- error= con_b3_req(unit, mb, pl);
- else
- error= listen_b3_req(unit, mb, pl);
- break;
- }
- break;
-
- case 0x81: /* LISTEN B3 CONF */
- if(dpr->dn_mbx.msg_flag) return;
- err = *(u_short *) msg->data;
- if (err)
- {
- error= discon_req(5, unit, pl, 0, err);
- break;
- }
- error= con_resp(unit, pl, 0);
- break;
-
- case 0x82: /* CONNECT B3 CONF */
- err = *(u_short *) (msg->data + 2);
- n = *(u_short *) msg->data;
-
- if (err)
- {
- if(dpr->dn_mbx.msg_flag) return;
- error= discon_req(6, unit, pl, 0, err);
- break;
- }
- if(ISFREE(ctrl->appl))
- break;
- chan->ncci = n;
- chan->state = CONNECT;
- break;
-
- case 0x83: /* CONNECT B3 IND */
- if(ISFREE(ctrl->appl))
- break;
- if(dpr->dn_mbx.msg_flag) return;
- n = *(u_short *) msg->data;
- chan->ncci = n;
- chan->state = CONNECT;
- error= con_b3_resp(unit, mb, n, pl, 0);
- break;
-
- case 0x84: /* CONNECT B3 ACTIVE IND */
- if(ISFREE(ctrl->appl))
- break;
- if (chan->state < IDLE)
- {
- chan->state = IDLE;
- ctrl->o_len = 0;
- /*
- * XXX the chan->ctrl arg is very bogus.
- * Don't just use a cast to "fix" it.
- */
- timeout(isdn_start_out, chan->ctrl, hz / 5);
- }
- break;
-
- case 0x85: /* DISCONNECT B3 CONF */
- if(ISBUSY(ctrl->appl))
- chan->state = ISDISCON;
- err = *(u_short *) (msg->data + 2);
- if (err)
- {
- if(dpr->dn_mbx.msg_flag) return;
- error= discon_req(7, unit, pl, 0, err);
- break;
- }
- break;
- case 0x86: /* DISCONNECT B3 IND */
- if(dpr->dn_mbx.msg_flag) return;
- if(ISBUSY(ctrl->appl))
- chan->state = ISDISCON;
- err = *(u_short *) (msg->data + 2);
- error= discon_req(8, unit, pl, 0, err);
- break;
-
- case 0x88: /* DATA B3 CONF */
- if(ISFREE(ctrl->appl))
- break;
- err = *(u_short *) (msg->data + 2);
- if (err)
- {
- ctrl->send_err++;
- isdn_appl[ctrl->appl].send_err++;
- }
- chan->state = IDLE;
- ctrl->o_len = 0;
- isdn_start_out(chan->ctrl);
- break;
-
- case 0x89: /* DATA B3 IND */
- if(ISFREE(ctrl->appl))
- break;
- if (msg->more_data)
- {
- if(chan->i_len)
- {
- if((chan->morenr != msg->data[4]) || ((chan->i_len + msg->data_len - 5) > 2048))
- break;
- }
- else
- chan->morenr= msg->data[4];
- bcopy(msg->data+5, &chan->i_buf[chan->i_len], msg->data_len-5);
- chan->i_len += msg->data_len -5;
- break;
- } /* msg->more_data == 0 */
- if (chan->i_len)
- {
- int l;
-
- if(chan->morenr != msg->data[4])
- break;
-
- if ((l = chan->i_len + msg->data_len - 5) <= 2048)
- {
- bcopy(msg->data+5, &chan->i_buf[chan->i_len], msg->data_len);
- if(isdn_input(ctrl->appl, l, chan->i_buf, ctrl->islisten))
- ctrl->lastact = time.tv_sec;
- }
- chan->i_len = 0;
- break;
- } /* chan->i_len == 0 && msg->more_data == 0 */
- if(isdn_input(ctrl->appl, msg->data_len-5, msg->data+5,ctrl->islisten))
- ctrl->lastact = time.tv_sec;
- break;
-
- default:
- badstate(msg,3,mb,dpr);
- break;
- }
-
-fin:
- if(error)
- {
-printf("E?%x",error);
- return;
- }
- msg->msg_flag= 0;
- timeout(make_intr, (void *)sc,1);
-}
-
-static void
-nnnicintr(void *gen)
-{
- unsigned int unit = (int)gen;
- register struct nnic_softc *sc = &nnic_sc[unit];
- dpr_type *dpr = sc->sc_dpr;
-
- if(dpr->up_mbx.msg_flag)
- up_intr(unit,sc);
- if (bsintr && (dpr->dn_mbx.msg_flag == 0))
- dn_intr(unit,sc);
-}
-void
-nnicintr(int unit)
-{
- timeout(nnnicintr, (void *)unit,1);
-}
-
-
-static nnic_devsw_installed = 0;
-
-static void nnic_drvinit(void *unused)
-{
- dev_t dev;
-
- if( ! nnic_devsw_installed ) {
- dev = makedev(CDEV_MAJOR, 0);
- cdevsw_add(&dev,&nnic_cdevsw, NULL);
- nnic_devsw_installed = 1;
- }
-}
-
-SYSINIT(nnicdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,nnic_drvinit,NULL)
-
-#endif /* NNNIC > 0 */
diff --git a/sys/gnu/i386/isa/nic3009.h b/sys/gnu/i386/isa/nic3009.h
deleted file mode 100644
index 8e794cc..0000000
--- a/sys/gnu/i386/isa/nic3009.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/* @(#)$Id: nic3009.h,v 1.1 1995/02/14 15:00:16 jkh Exp $
- *******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
- *
- * Copyright 1994 Dietmar Friede
- *******************************************************************************
- * Bug reports, patches, comments, suggestions should be sent to:
- *
- * jkr@saarlink.de or jkrause@guug.de
- *
- *******************************************************************************
- * $Log: nic3009.h,v $
- * Revision 1.1 1995/02/14 15:00:16 jkh
- * An ISDN driver that supports the EDSS1 and the 1TR6 ISDN interfaces.
- * EDSS1 is the "Euro-ISDN", 1TR6 is the soon obsolete german ISDN Interface.
- * Obtained from: Dietmar Friede <dfriede@drnhh.neuhaus.de> and
- * Juergen Krause <jkr@saarlink.de>
- *
- * This is only one part - the rest to follow in a couple of hours.
- * This part is a benign import, since it doesn't affect anything else.
- *
- *
- ******************************************************************************/
-
-/*
- * This file defines the NICCY 3009 Interface. Copyright Dr. Neuhaus GmbH,
- * Hamburg and Dietmar Friede
- *
- */
-
-#define NO_MORE_DATA 0x00 /* der Message folgen keine Daten */
-#define MORE_DATA 0x01 /* der Message folgen weitere Daten */
-
-#define DPR_LEN 0x800 /* 2 kBytes gross */
-#define DPR_VAR_AREA_LEN 0x100 /* davon fuer allg. Variablen */
-
-#define DPR_MBX_LEN (DPR_LEN-DPR_VAR_AREA_LEN)/2 /* 0x380 lang */
-#define DPR_MBX_FLAG_LEN 2 /* zwei Bytes MBX-Zustand... */
-#define DPR_MSG_HDR_LEN 10 /* Msg-Laenge ohne Datafield */
-#define DATAFIELD_LEN (DPR_MBX_LEN-DPR_MBX_FLAG_LEN-DPR_MSG_HDR_LEN)
-#define MAX_B3_LEN (2048+2) /* Daten und Network-Header */
-
-#pragma pack (1)
-typedef struct
-{
- u_char msg_flag; /* Signalisierung NICCY / PC */
- u_char progress; /* NICCY-interne Verwendung ! */
- u_char type;
- u_char subtype;
- u_short number;
- u_char more_data;
- u_char reserved;
- u_short data_len;
- u_short plci;
- u_char data[DATAFIELD_LEN];
-} mbx_type;
-
-typedef struct
-{
- mbx_type up_mbx; /* Offset 0x000-0x37F */
- mbx_type dn_mbx; /* Offset 0x380-0x6FF */
- u_char card_number; /* Offset 0x700 */
- u_char card_state; /* Offset 0x701 */
- u_short mainloop_cnt; /* Offset 0x702-0x703 */
- u_char watchdog_cnt; /* Offset 0x704 */
- u_char hw_config; /* Offset 0x705 */
- u_char int_flg_pc; /* Offset 0x706 */
- u_char int_flg_nic; /* Offset 0x707 */
- u_char api_area[64]; /* Offset 0x708-0x747 */
- u_char api_active; /* Offset 0x748 */
- u_char tei; /* Offset 0x749 */
- u_char state_b1; /* Offset 0x74A */
- u_char state_b2; /* Offset 0x74B */
- u_char si_b1; /* Offset 0x74C */
- u_char si_b2; /* Offset 0x74D */
- u_short calls_in; /* Offset 0x74E-0x74F */
- u_short calls_out; /* Offset 0x750-0x751 */
- u_char ram_config; /* Offset 0x752 */
- u_char spv_request_flag; /* Offset 0x753 */
- u_char dcp_state_b1; /* Offset 0x754 */
- u_char dcp_state_b2; /* Offset 0x755 */
- u_char dc_protocol; /* Offset 0x756 */
- u_char poll_flag; /* Offset 0x757 */
- u_char debug[DPR_LEN - 0x758 - 4]; /* Offset 0x758-0x7FB */
- u_short signal_niccy_to_pc; /* Offset 0x7FC-0x7FD */
- u_short signal_pc_to_niccy; /* Offset 0x7FE-0x7FF */
-} dpr_type;
-#pragma pack ()
diff --git a/sys/gnu/i386/isa/niccyreg.h b/sys/gnu/i386/isa/niccyreg.h
deleted file mode 100644
index a696148..0000000
--- a/sys/gnu/i386/isa/niccyreg.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/* @(#)$Id: niccyreg.h,v 1.1 1995/02/14 15:00:19 jkh Exp $
- *******************************************************************************
- * II - Version 0.1 $Revision: 1.1 $ $State: Exp $
- *
- * Copyright 1994 Dietmar Friede
- *******************************************************************************
- * Bug reports, patches, comments, suggestions should be sent to:
- *
- * jkr@saarlink.de or jkrause@guug.de
- *
- *******************************************************************************
- * $Log: niccyreg.h,v $
- * Revision 1.1 1995/02/14 15:00:19 jkh
- * An ISDN driver that supports the EDSS1 and the 1TR6 ISDN interfaces.
- * EDSS1 is the "Euro-ISDN", 1TR6 is the soon obsolete german ISDN Interface.
- * Obtained from: Dietmar Friede <dfriede@drnhh.neuhaus.de> and
- * Juergen Krause <jkr@saarlink.de>
- *
- * This is only one part - the rest to follow in a couple of hours.
- * This part is a benign import, since it doesn't affect anything else.
- *
- *
- ******************************************************************************/
-
-/*
- * This file defines the NICCY 3008 Interface.
- * Copyright Dr. Neuhaus GmbH, Hamburg and Dietmar Friede
- *
-*/
-
-#define MBX_MU 0
-#define MBX_MD 1
-#define MBX_DU 2
-#define MBX_DD 3
-#define MBX_B1U 4
-#define MBX_B1D 5
-#define MBX_B2U 6
-#define MBX_B2D 7
-
-#define MBX_xU 0x55
-#define MBX_xD 0xAA
-
-/* -------------------------------------------------------------------- */
-
-#define MU_INIT_CNF 0x00
-#define MU_INIT_IND 0x01
-#define MU_RESET_CNF 0x02
-#define MU_HANDSET_IND 0x03
-#define MU_DNL_MOD_CNF 0x04
-/* reserved: 0x05 */
-#define MU_DNL_MOD_IND 0x06
-#define MU_DISC_MOD_CNF 0x07
-#define MU_LIST_MOD_CNF 0x08
-#define MU_LIST_MOD_DATA 0x09
-/* reserved: 0x0A to 0x0B */
-#define MU_HW_CONFIG_CNF 0x0C
-#define MU_HW_ID_CNF 0x0D
-#define MU_SET_CLOCK_CNF 0x0E
-#define MU_GET_CLOCK_CNF 0x0F
-#define MU_ACT_IA_CNF 0x10
-#define MU_ACT_IA_IND 0x11
-#define MU_DEACT_IA_CNF 0x12
-#define MU_DEACT_IA_IND 0x13
-#define MU_POLL_CNF 0x14
-#define MU_POLL_IND 0x15
-/* reserved: 0x16 to 0x1D */
-#define MU_MANUFACT_CNF 0x1E
-#define MU_MANUFACT_IND 0x1F
-
-/*---------------------------------------------------------------------------*/
-
-#define MD_INIT_REQ 0x20
-#define MD_INIT_RSP 0x21
-#define MD_RESET_REQ 0x22
-#define MD_HANDSET_RSP 0x23
-#define MD_DNL_MOD_REQ 0x24
-#define MD_DNL_MOD_DATA 0x25
-#define MD_DNL_MOD_RSP 0x26
-#define MD_DISC_MOD_REQ 0x27
-#define MD_LIST_MOD_REQ 0x28
-/* reserved: 0x29 to 0x2B */
-#define MD_HW_CONFIG_REQ 0x2C
-#define MD_HW_ID_REQ 0x2D
-#define MD_SET_CLOCK_REQ 0x2E
-#define MD_GET_CLOCK_REQ 0x2F
-#define MD_ACT_IA_REQ 0x30
-#define MD_ACT_IA_RSP 0x31
-#define MD_DEACT_IA_REQ 0x32
-#define MD_DEACT_IA_RSP 0x33
-#define MD_POLL_REQ 0x34
-#define MD_POLL_RSP 0x35
-#define MD_STATE_IND 0x37
-#define MD_MANUFACT_REQ 0x3E
-#define MD_MANUFACT_RSP 0x3F
-
-/*---------------------------------------------------------------------------*/
-
-#define DU_CONN_CNF 0x40
-#define DU_CONN_IND 0x41
-#define DU_CONN_ACT_IND 0x42
-#define DU_DISC_CNF 0x43
-#define DU_DISC_IND 0x44
-#define DU_DATA_CNF 0x45
-#define DU_DATA_IND 0x46
-#define DU_LISTEN_CNF 0x47
-#define DU_GET_PAR_CNF 0x48
-#define DU_INFO_CNF 0x49
-#define DU_INFO_IND 0x4A
-#define DU_CONN_INFO_CNF 0x4B
-#define DU_REL_PLCI_CNF 0x4C
-/* reserved: 0x4C to 0x5E */
-#define DU_STR_NOT_COMP 0x5F
-
-/*---------------------------------------------------------------------------*/
-
-#define DD_CONN_REQ 0x60
-#define DD_CONN_RSP 0x61
-#define DD_CONN_ACT_RSP 0x62
-#define DD_DISC_REQ 0x63
-#define DD_DISC_RSP 0x64
-#define DD_DATA_REQ 0x65
-#define DD_DATA_RSP 0x66
-#define DD_LISTEN_REQ 0x67
-#define DD_GET_PAR_REQ 0x68
-#define DD_INFO_REQ 0x69
-#define DD_INFO_RSP 0x6A
-#define DD_CONN_INFO_REQ 0x6B
-#define DD_REL_PLCI_REQ 0x6C
-
-/*---------------------------------------------------------------------------*/
-
-#define BD_SEL_PROT_REQ 0xA0
-#define BD_LIST_B3_REQ 0xA1
-#define BD_CONN_B3_REQ 0xA2
-#define BD_CONN_B3_RSP 0xA3
-#define BD_C_B3_ACT_RSP 0xA4
-#define BD_DISC_B3_REQ 0xA5
-#define BD_DISC_B3_RSP 0xA6
-#define BD_GET_P_B3_REQ 0xA7
-#define BD_DATA_B3_REQ 0xA8
-#define BD_DATA_B3_RSP 0xA9
-#define BD_RESET_B3_REQ 0xAA
-#define BD_RESET_B3_RSP 0xAB
-
-/*---------------------------------------------------------------------------*/
-
-
-#define NICCY_DEBUG _IOWR('N',1,dbg_type)
-#define NICCY_RESET _IOWR('N',2,int)
-#define NICCY_LOAD _IOWR('N',3,struct head)
-#define NICCY_SET_CLOCK _IOWR('N',4,time_str_t)
-#define NICCY_SPY _IOWR('N',5,int)
-
-struct head
-{
- u_long len;
- u_long sig;
- char nam[8];
- char ver[5];
- u_char typ;
- u_short status;
- u_long d_len;
- u_char *data;
-};
-
-typedef char time_str_t[14];
-typedef u_char dbg_type[10000];
OpenPOWER on IntegriCloud