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. * All rights reserved.
* *
* This code is derived from software contributed to The NetBSD Foundation * 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 */ if (zap->manid == 5000 && zap->prodid == 1) /* ITH ISDN Master II */
return (1); return (1);
if (zap->manid == 4626 && zap->prodid == 5 && zap->serno == 0)
return (1); /* Schoenfeld ISDN Surfer */
return (0); return (0);
} }
@ -108,27 +111,38 @@ asterattach(parent, self, auxp)
astrsc = (struct aster_softc *)self; astrsc = (struct aster_softc *)self;
zap = auxp; 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) { if (zap->manid == 5001 && zap->prodid == 1) {
cardname = "Blaster"; cardname = "Blaster";
supa.supio_name = "isic"; supa.supio_name = "isic31";
} else if (zap->manid == 2092 && zap->prodid == 64) { } else if (zap->manid == 2092 && zap->prodid == 64) {
cardname = "Master"; cardname = "Master";
supa.supio_name = "isic"; supa.supio_name = "isic31";
} else /* if (zap->manid == 5000 && zap->prodid == 1) */ { } else if (zap->manid == 5000 && zap->prodid == 1) {
cardname = "Master II"; 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) if (parent)
printf(": ISDN %s\n", cardname); 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_iot = &astrsc->sc_bst;
supa.supio_iobase = 0; supa.supio_iobase = 0;
supa.supio_arg = 0; supa.supio_arg = 0;
supa.supio_ipl = 2; /* could be 6. isic_supio will decide. */
config_found(self, &supa, asterprint); /* XXX */ config_found(self, &supa, asterprint); /* XXX */
#ifdef __notyet__ #ifdef __notyet__
hyper3i_attach_subr(self, &supa, asterprint); 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 * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
@ -35,10 +35,11 @@
* - ISDN Blaster 5001/1 * - ISDN Blaster 5001/1
* - ISDN MasterII 5000/1 * - ISDN MasterII 5000/1
* - ISDN Master 2092/64 * - 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] * 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; struct supio_attach_args *sap = aux;
/* ARGSUSED */ /* ARGSUSED */
return (!strcmp("isic", sap->supio_name) || return (!strncmp("isic", sap->supio_name, 4));
!strcmp("isicII", sap->supio_name));
} }
int isic_supio_ipl = 2; int isic_supio_ipl = 2;
@ -141,32 +141,28 @@ isic_supio_attach(parent, self, aux)
/* create io mappings */ /* create io mappings */
MALLOC_MAPS(sc); MALLOC_MAPS(sc);
if (!strcmp(sap->supio_name, "isic")) { o1 = (sap->supio_name[4]-'0') << 7;
o1 = 0x300; o2 = (sap->supio_name[5]-'0') << 7;
o2 = 0x100;
} else /* "isic-II" */ {
o1 = 0x100;
o2 = 0x300;
}
bst = sap->supio_iot; 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 */ /* ISAC */
sc->sc_maps[0].t = bst; sc->sc_maps[0].t = bst;
sc->sc_maps[0].h = h; 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 */ sc->sc_maps[0].size = 0; /* foreign mapping, leave it alone */
/* HSCX A */ /* HSCX A */
sc->sc_maps[1].t = bst; sc->sc_maps[1].t = bst;
sc->sc_maps[1].h = h; 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 */ sc->sc_maps[1].size = 0; /* foreign mapping, leave it alone */
/* HSCX B */ /* HSCX B */
sc->sc_maps[2].t = bst; sc->sc_maps[2].t = bst;
sc->sc_maps[2].h = h; 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->sc_maps[2].size = 0; /* foreign mapping, leave it alone */
sc->clearirq = NULL; sc->clearirq = NULL;