Add support for ISDN Surfer (ISDN only, for the time being).

This commit is contained in:
is 2001-01-25 22:22:15 +00:00
parent c5d65e2d74
commit 3f25157bea
2 changed files with 35 additions and 25 deletions

View File

@ -1,7 +1,7 @@
/* $NetBSD: aster.c,v 1.7 2000/01/23 21:06:12 aymeric Exp $ */
/* $NetBSD: aster.c,v 1.8 2001/01/25 22:22:15 is Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
* Copyright (c) 1998,2001 The NetBSD Foundation, Inc.
* All rights reserved.
*
* This code is derived from software contributed to The NetBSD Foundation
@ -92,6 +92,9 @@ astermatch(parent, cfp, auxp)
if (zap->manid == 5000 && zap->prodid == 1) /* ITH ISDN Master II */
return (1);
if (zap->manid == 4626 && zap->prodid == 5 && zap->serno == 0)
return (1); /* Schoenfeld ISDN Surfer */
return (0);
}
@ -108,27 +111,38 @@ asterattach(parent, self, auxp)
astrsc = (struct aster_softc *)self;
zap = auxp;
astrsc->sc_bst.base = (u_long)zap->va + 0;
astrsc->sc_bst.absm = &amiga_bus_stride_2;
supa.supio_ipl = 2; /* could be 6. isic_supio will decide. */
if (zap->manid == 5001 && zap->prodid == 1) {
cardname = "Blaster";
supa.supio_name = "isic";
supa.supio_name = "isic31";
} else if (zap->manid == 2092 && zap->prodid == 64) {
cardname = "Master";
supa.supio_name = "isic";
} else /* if (zap->manid == 5000 && zap->prodid == 1) */ {
supa.supio_name = "isic31";
} else if (zap->manid == 5000 && zap->prodid == 1) {
cardname = "Master II";
supa.supio_name = "isicII";
supa.supio_name = "isic13";
} else /* if (zap->manid == 4626 && zap->prodid == 5 &&
zap->serno == 0) */{
cardname = "Surfer";
supa.supio_name = "isic1C";
((volatile u_int8_t *)zap->va)[0x00fe] = 0xff;
if (((volatile u_int8_t *)zap->va)[0x00fe] & 0x80)
supa.supio_ipl = 6;
}
if (parent)
printf(": ISDN %s\n", cardname);
astrsc->sc_bst.base = (u_long)zap->va + 0;
astrsc->sc_bst.absm = &amiga_bus_stride_2;
supa.supio_iot = &astrsc->sc_bst;
supa.supio_iobase = 0;
supa.supio_arg = 0;
supa.supio_ipl = 2; /* could be 6. isic_supio will decide. */
config_found(self, &supa, asterprint); /* XXX */
#ifdef __notyet__
hyper3i_attach_subr(self, &supa, asterprint);

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998 Ignatios Souvatzis. All rights reserved.
* Copyright (c) 1998,2001 Ignatios Souvatzis. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@ -35,10 +35,11 @@
* - ISDN Blaster 5001/1
* - ISDN MasterII 5000/1
* - ISDN Master 2092/64
* But we attach to the supio, so just see "isic" or "isicII".
* - ISDN Surfer 4626/5
* But we attach to the supio, so just see "isic", "isicII", icis
* -----------------------------------------------------------
*
* $Id: isic_supio.c,v 1.1 2001/01/21 22:23:08 is Exp $
* $Id: isic_supio.c,v 1.2 2001/01/25 22:22:15 is Exp $
*
* last edit-date: [Tue Jan 9 21:57:11 2001]
*
@ -111,8 +112,7 @@ isic_supio_match(parent, cf, aux)
struct supio_attach_args *sap = aux;
/* ARGSUSED */
return (!strcmp("isic", sap->supio_name) ||
!strcmp("isicII", sap->supio_name));
return (!strncmp("isic", sap->supio_name, 4));
}
int isic_supio_ipl = 2;
@ -141,32 +141,28 @@ isic_supio_attach(parent, self, aux)
/* create io mappings */
MALLOC_MAPS(sc);
if (!strcmp(sap->supio_name, "isic")) {
o1 = 0x300;
o2 = 0x100;
} else /* "isic-II" */ {
o1 = 0x100;
o2 = 0x300;
}
o1 = (sap->supio_name[4]-'0') << 7;
o2 = (sap->supio_name[5]-'0') << 7;
bst = sap->supio_iot;
bus_space_map(bst, sap->supio_iobase, 0x400, 0, &h);
bus_space_map(bst, sap->supio_iobase, 0x1000, 0, &h);
/* ISAC */
sc->sc_maps[0].t = bst;
sc->sc_maps[0].h = h;
sc->sc_maps[0].offset = o1/2;
sc->sc_maps[0].offset = o1;
sc->sc_maps[0].size = 0; /* foreign mapping, leave it alone */
/* HSCX A */
sc->sc_maps[1].t = bst;
sc->sc_maps[1].h = h;
sc->sc_maps[1].offset = o2/2;
sc->sc_maps[1].offset = o2;
sc->sc_maps[1].size = 0; /* foreign mapping, leave it alone */
/* HSCX B */
sc->sc_maps[2].t = bst;
sc->sc_maps[2].h = h;
sc->sc_maps[2].offset = (o2 + 0x80)/2;
sc->sc_maps[2].offset = o2 + 0x40;
sc->sc_maps[2].size = 0; /* foreign mapping, leave it alone */
sc->clearirq = NULL;