arch/pmax/tc -> dev/tc, pass 1:
Eliminate pmax/tc/tc.h. Use dev/tc headers for pmax port. Change pmax TC autoconfig tables to use structs (mostly) compatible with dev/tc/tcvar.h. Move TC console search to tc.c.
This commit is contained in:
parent
1016f0c77a
commit
659c4a2ece
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: promio.c,v 1.5 1995/09/20 05:36:15 jonathan Exp $ */
|
||||
/* $NetBSD: promio.c,v 1.6 1996/01/03 20:39:19 jonathan Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 University of Utah.
|
||||
|
@ -74,9 +74,8 @@
|
|||
#include <pmax/dev/fbreg.h>
|
||||
|
||||
#include <machine/autoconf.h>
|
||||
#include <pmax/tc/tc.h>
|
||||
#include <pmax/dev/lk201.h>
|
||||
|
||||
#include <dev/tc/tcvar.h>
|
||||
|
||||
#include <pm.h>
|
||||
#include <cfb.h>
|
||||
|
@ -143,8 +142,6 @@ struct consdev cd = {
|
|||
*/
|
||||
|
||||
|
||||
int consprobetc __P((int prom_slot));
|
||||
int consprobeslot __P((int slot));
|
||||
void consinit __P((void));
|
||||
void xconsinit __P((void));
|
||||
|
||||
|
@ -281,7 +278,7 @@ consinit()
|
|||
/*
|
||||
* Check for a suitable turbochannel frame buffer.
|
||||
*/
|
||||
if (consprobetc(crt)) {
|
||||
if (tc_findconsole(crt)) {
|
||||
cd.cn_pri = CN_NORMAL;
|
||||
#ifdef RCONS_HACK
|
||||
/* FIXME */ cd.cn_putc = v_putc;
|
||||
|
@ -370,102 +367,6 @@ xconsinit()
|
|||
|
||||
|
||||
|
||||
/*
|
||||
* Probe for a framebuffer option card. Configure the first one
|
||||
* found as a console.
|
||||
*/
|
||||
int
|
||||
consprobetc(preferred_slot)
|
||||
int preferred_slot;
|
||||
{
|
||||
int slot;
|
||||
|
||||
struct tc_cpu_desc * sc_desc;
|
||||
|
||||
/*printf("Looking for fb console in slot %d", slot);*/
|
||||
|
||||
/* First, try the slot configured as console in NVRAM. */
|
||||
/* if (consprobeslot(preferred_slot)) return (1); */
|
||||
|
||||
/*
|
||||
* Try to configure each turbochannel (or CPU-internal) device.
|
||||
* Knows about gross internals of TurboChannel bus autoconfig
|
||||
* descriptor, which needs to be fixed badly.
|
||||
*/
|
||||
if ((sc_desc = cpu_tcdesc(pmax_boardtype)) == NULL)
|
||||
return 0;
|
||||
for (slot = 0; slot < sc_desc->tcd_ndevs; slot++) {
|
||||
|
||||
if (consprobeslot(slot))
|
||||
return (1);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Try and configure one slot as framebuffer console.
|
||||
* Accept only the framebuffers configured in.
|
||||
* Attach the framebuffer if found.
|
||||
*/
|
||||
int
|
||||
consprobeslot(slot)
|
||||
int slot;
|
||||
{
|
||||
void *slotaddr;
|
||||
char name[20];
|
||||
struct tc_cpu_desc * sc_desc;
|
||||
|
||||
if (slot < 0 || ((sc_desc = cpu_tcdesc(pmax_boardtype)) == NULL))
|
||||
return 0;
|
||||
slotaddr = (void *)sc_desc->tcd_slots[slot].tsd_dense;
|
||||
|
||||
/*printf("probing slot %d at 0x%x\n", slot, slotaddr);*/
|
||||
|
||||
if (tc_checkdevmem(slotaddr) == 0)
|
||||
return (0);
|
||||
|
||||
if (tc_checkslot(slotaddr, name) == 0)
|
||||
return (0);
|
||||
|
||||
/*
|
||||
* We found an device in the given slot. Now see if it's a
|
||||
* framebuffer for which we have a driver.
|
||||
*/
|
||||
|
||||
/*printf(", trying to init a \"%s\"", name);*/
|
||||
|
||||
#define DRIVER_FOR_SLOT(slotname, drivername) \
|
||||
(strcmp (slotname, drivername) == 0)
|
||||
|
||||
#if NMFB > 0
|
||||
if (DRIVER_FOR_SLOT(name, "PMAG-AA ") &&
|
||||
mfbinit(slotaddr, 0, 1)) {
|
||||
cd.cn_pri = CN_NORMAL;
|
||||
return (1);
|
||||
}
|
||||
#endif /* NMFB */
|
||||
|
||||
#if NSFB > 0
|
||||
if (DRIVER_FOR_SLOT(name, "PMAGB-BA") &&
|
||||
sfbinit(slotaddr, 0, 1)) {
|
||||
cd.cn_pri = CN_NORMAL;
|
||||
return (1);
|
||||
}
|
||||
#endif /* NSFB */
|
||||
|
||||
#if NCFB > 0
|
||||
/*"cfb"*/
|
||||
if (DRIVER_FOR_SLOT(name, "PMAG-BA ") &&
|
||||
cfbinit(NULL, slotaddr, 0, 1)) {
|
||||
cd.cn_pri = CN_NORMAL;
|
||||
return (1);
|
||||
}
|
||||
#endif /* NCFB */
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Get character from ROM console.
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: cpu_cons.c,v 1.5 1995/09/20 05:36:15 jonathan Exp $ */
|
||||
/* $NetBSD: cpu_cons.c,v 1.6 1996/01/03 20:39:19 jonathan Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 University of Utah.
|
||||
|
@ -74,9 +74,8 @@
|
|||
#include <pmax/dev/fbreg.h>
|
||||
|
||||
#include <machine/autoconf.h>
|
||||
#include <pmax/tc/tc.h>
|
||||
#include <pmax/dev/lk201.h>
|
||||
|
||||
#include <dev/tc/tcvar.h>
|
||||
|
||||
#include <pm.h>
|
||||
#include <cfb.h>
|
||||
|
@ -143,8 +142,6 @@ struct consdev cd = {
|
|||
*/
|
||||
|
||||
|
||||
int consprobetc __P((int prom_slot));
|
||||
int consprobeslot __P((int slot));
|
||||
void consinit __P((void));
|
||||
void xconsinit __P((void));
|
||||
|
||||
|
@ -281,7 +278,7 @@ consinit()
|
|||
/*
|
||||
* Check for a suitable turbochannel frame buffer.
|
||||
*/
|
||||
if (consprobetc(crt)) {
|
||||
if (tc_findconsole(crt)) {
|
||||
cd.cn_pri = CN_NORMAL;
|
||||
#ifdef RCONS_HACK
|
||||
/* FIXME */ cd.cn_putc = v_putc;
|
||||
|
@ -370,102 +367,6 @@ xconsinit()
|
|||
|
||||
|
||||
|
||||
/*
|
||||
* Probe for a framebuffer option card. Configure the first one
|
||||
* found as a console.
|
||||
*/
|
||||
int
|
||||
consprobetc(preferred_slot)
|
||||
int preferred_slot;
|
||||
{
|
||||
int slot;
|
||||
|
||||
struct tc_cpu_desc * sc_desc;
|
||||
|
||||
/*printf("Looking for fb console in slot %d", slot);*/
|
||||
|
||||
/* First, try the slot configured as console in NVRAM. */
|
||||
/* if (consprobeslot(preferred_slot)) return (1); */
|
||||
|
||||
/*
|
||||
* Try to configure each turbochannel (or CPU-internal) device.
|
||||
* Knows about gross internals of TurboChannel bus autoconfig
|
||||
* descriptor, which needs to be fixed badly.
|
||||
*/
|
||||
if ((sc_desc = cpu_tcdesc(pmax_boardtype)) == NULL)
|
||||
return 0;
|
||||
for (slot = 0; slot < sc_desc->tcd_ndevs; slot++) {
|
||||
|
||||
if (consprobeslot(slot))
|
||||
return (1);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Try and configure one slot as framebuffer console.
|
||||
* Accept only the framebuffers configured in.
|
||||
* Attach the framebuffer if found.
|
||||
*/
|
||||
int
|
||||
consprobeslot(slot)
|
||||
int slot;
|
||||
{
|
||||
void *slotaddr;
|
||||
char name[20];
|
||||
struct tc_cpu_desc * sc_desc;
|
||||
|
||||
if (slot < 0 || ((sc_desc = cpu_tcdesc(pmax_boardtype)) == NULL))
|
||||
return 0;
|
||||
slotaddr = (void *)sc_desc->tcd_slots[slot].tsd_dense;
|
||||
|
||||
/*printf("probing slot %d at 0x%x\n", slot, slotaddr);*/
|
||||
|
||||
if (tc_checkdevmem(slotaddr) == 0)
|
||||
return (0);
|
||||
|
||||
if (tc_checkslot(slotaddr, name) == 0)
|
||||
return (0);
|
||||
|
||||
/*
|
||||
* We found an device in the given slot. Now see if it's a
|
||||
* framebuffer for which we have a driver.
|
||||
*/
|
||||
|
||||
/*printf(", trying to init a \"%s\"", name);*/
|
||||
|
||||
#define DRIVER_FOR_SLOT(slotname, drivername) \
|
||||
(strcmp (slotname, drivername) == 0)
|
||||
|
||||
#if NMFB > 0
|
||||
if (DRIVER_FOR_SLOT(name, "PMAG-AA ") &&
|
||||
mfbinit(slotaddr, 0, 1)) {
|
||||
cd.cn_pri = CN_NORMAL;
|
||||
return (1);
|
||||
}
|
||||
#endif /* NMFB */
|
||||
|
||||
#if NSFB > 0
|
||||
if (DRIVER_FOR_SLOT(name, "PMAGB-BA") &&
|
||||
sfbinit(slotaddr, 0, 1)) {
|
||||
cd.cn_pri = CN_NORMAL;
|
||||
return (1);
|
||||
}
|
||||
#endif /* NSFB */
|
||||
|
||||
#if NCFB > 0
|
||||
/*"cfb"*/
|
||||
if (DRIVER_FOR_SLOT(name, "PMAG-BA ") &&
|
||||
cfbinit(NULL, slotaddr, 0, 1)) {
|
||||
cd.cn_pri = CN_NORMAL;
|
||||
return (1);
|
||||
}
|
||||
#endif /* NCFB */
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Get character from ROM console.
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ds-asic-conf.c,v 1.3 1995/10/09 01:45:29 jonathan Exp $ */
|
||||
/* $NetBSD: ds-asic-conf.c,v 1.4 1996/01/03 20:39:14 jonathan Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995 Jonathan Stone
|
||||
|
@ -20,50 +20,51 @@ struct asic_slot {
|
|||
|
||||
struct asic_slot kn03_asic_slots[] =
|
||||
{
|
||||
{ { "lance", 0, KN03_LANCE_SLOT, (u_int) (3 * 0x40000), },
|
||||
/* name slot offset intpri */
|
||||
{ { "lance", 0, (u_int) (3 * 0x40000), KN03_LANCE_SLOT, },
|
||||
KN03_INTR_LANCE, asic_intrnull, (void*) KN03_LANCE_SLOT, },
|
||||
|
||||
{ { "scc", 1, KN03_SCC0_SLOT, (u_int) (4 * 0x40000), },
|
||||
{ { "scc", 1, (u_int) (4 * 0x40000), KN03_SCC0_SLOT, },
|
||||
KN03_INTR_SCC_0, asic_intrnull, (void *)KN03_SCC0_SLOT, },
|
||||
|
||||
{ { "scc", 2, KN03_SCC1_SLOT, (u_int) (6 * 0x40000), },
|
||||
KN03_INTR_SCC_1, asic_intrnull, (void*)KN03_SCC1_SLOT, },
|
||||
{ { "scc", 2, (u_int) (6 * 0x40000), KN03_SCC1_SLOT, },
|
||||
KN03_INTR_SCC_1, asic_intrnull, (void *)KN03_SCC1_SLOT, },
|
||||
|
||||
{ { "dallas_rtc", 3, 0 /*XXX*/, (u_int) (8* 0x40000), },
|
||||
0, asic_intrnull, (void *)(long) 16 /*XXX*/, },
|
||||
{ { "dallas_rtc", 3, (u_int) (8* 0x40000), 0 /*XXX*/, },
|
||||
0, asic_intrnull, (void *)(long) 16 /*XXX*/, },
|
||||
|
||||
{ { "asc", 4, KN03_SCSI_SLOT, (u_int) (12 * 0x40000), },
|
||||
0, asic_intrnull, (void*)KN03_SCSI_SLOT, },
|
||||
{ { "asc", 4, (u_int) (12* 0x40000), KN03_SCSI_SLOT, },
|
||||
0, asic_intrnull, (void *)KN03_SCSI_SLOT, },
|
||||
|
||||
{ { NULL, 0, 0, 0 }, 0, NULL, NULL }
|
||||
};
|
||||
|
||||
/* UNTESTED*/
|
||||
|
||||
struct asic_slot xine_asic_slots[] =
|
||||
{
|
||||
{ { "lance", 0, KN03_LANCE_SLOT, (u_int) (3 * 0x40000), },
|
||||
{ { "lance", 0, (u_int) (3 * 0x40000), KN03_LANCE_SLOT, },
|
||||
KN03_INTR_LANCE, asic_intrnull, (void*) KN03_LANCE_SLOT, },
|
||||
|
||||
{ { "scc", 1, KN03_SCC0_SLOT, (u_int) (4 * 0x40000), },
|
||||
{ { "scc", 1, (u_int) (4 * 0x40000), KN03_SCC0_SLOT, },
|
||||
KN03_INTR_SCC_0, asic_intrnull, (void *)KN03_SCC0_SLOT, },
|
||||
|
||||
{ { "dallas_rtc", 2, 0, (u_int) (8* 0x40000), },
|
||||
0, asic_intrnull, (void *)(long) 16 /*XXX*/, },
|
||||
|
||||
{ { "isdn", 3, XINE_ISDN_SLOT, (u_int) (9* 0x40000), },
|
||||
0, asic_intrnull, (void *)(long) XINE_ISDN_SLOT, },
|
||||
{ { "isdn", 3, (u_int) (9 * 0x40000), XINE_ISDN_SLOT, },
|
||||
0, asic_intrnull, (void *)(long) XINE_ISDN_SLOT, },
|
||||
|
||||
{ { "dtop", 4, XINE_DTOP_SLOT, (u_int) (10* 0x40000), },
|
||||
0, asic_intrnull, (void *)(long) XINE_DTOP_SLOT, },
|
||||
{ { "dtop", 4, (u_int) (10* 0x40000), XINE_DTOP_SLOT, },
|
||||
0, asic_intrnull, (void *)(long) XINE_DTOP_SLOT, },
|
||||
|
||||
{ { "fdc", 5, XINE_FLOPPY_SLOT, (u_int) (11* 0x40000), },
|
||||
0, asic_intrnull, (void *)(long) XINE_FLOPPY_SLOT, },
|
||||
{ { "fdc", 5, (u_int) (11* 0x40000), XINE_FLOPPY_SLOT, },
|
||||
0, asic_intrnull, (void *) (long)XINE_FLOPPY_SLOT, },
|
||||
|
||||
{ { "asc", 6, XINE_SCSI_SLOT, (u_int) (12 * 0x40000), },
|
||||
{ { "asc", 6, (u_int) (12* 0x40000), XINE_SCSI_SLOT, },
|
||||
0 /*XINE_INTR_SCSI*/, asic_intrnull, (void*)XINE_SCSI_SLOT, },
|
||||
#if 0
|
||||
{ { "frc", 3, (u_int) XINE_SLOT_FRC, (15* 0x40000), },
|
||||
0, asic_intrnull, (void *)(long) XINE_SLOT_FRC, },
|
||||
{ { "frc", 3, (u_int) (15* 0x40000), XINE_SLOT_FRC, },
|
||||
0, asic_intrnull, (void *)(long) XINE_SLOT_FRC, },
|
||||
#endif
|
||||
{ { NULL, 0, 0, }, 0, NULL, NULL }
|
||||
};
|
||||
|
@ -79,10 +80,10 @@ struct asic_slot xine_asic_slots[] =
|
|||
*/
|
||||
|
||||
struct asic_slot kn02_asic_slots[] = {
|
||||
{ { "dc", 0, 7, (u_int) (4 * 0x80000), },
|
||||
{ { "dc", 0, (u_int) (4 * 0x80000), 7 },
|
||||
KN03_INTR_SCC_0, asic_intrnull, (void *) 7, },
|
||||
|
||||
{ { "dallas_rtc", 0, 0, (u_int) (5 * 0x80000), },
|
||||
{ { "dallas_rtc", 0, (u_int) (5 * 0x80000), 0, },
|
||||
0, asic_intrnull, (void *) 16 /*XXX*/, },
|
||||
|
||||
{ { NULL, 0, 0 }, 0, NULL, NULL }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: ds-tc-conf.c,v 1.4 1995/10/09 01:45:28 jonathan Exp $ */
|
||||
/* $NetBSD: ds-tc-conf.c,v 1.5 1996/01/03 20:39:16 jonathan Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1995 Jonathan Stone
|
||||
|
@ -13,27 +13,33 @@
|
|||
* addresses are different on the two machines.
|
||||
* (thankfully the IOASIC subslots are all the same size.)
|
||||
*/
|
||||
|
||||
#define C(x) ((void *)(u_long)x)
|
||||
|
||||
struct confargs tc3_devs[4] = {
|
||||
/* name entry pri xxx */
|
||||
{ "IOCTL ", 3, -1, /*0x040000*/ 0x0, },
|
||||
{ NULL, 2, 2, 0x0, },
|
||||
{ NULL, 1, 1, 0x0, },
|
||||
{ NULL, 0, 0, 0x0, }
|
||||
/* name slot offset intpri */
|
||||
{ "IOCTL ", 3, 0x0, -1, }, /* offset 0x040000 ?*/
|
||||
{ NULL, 2, 0x0, 2, },
|
||||
{ NULL, 1, 0x0, 1, },
|
||||
{ NULL, 0, 0x0, 0, }
|
||||
|
||||
};
|
||||
|
||||
/* 3MAXPLUS slot addreseses */
|
||||
static struct tc_slot_desc kn03_slot_addrs [4] = {
|
||||
{ KV(KN03_PHYS_TC_0_START), }, /* slot 0 - tc option slot 0 */
|
||||
{ KV(KN03_PHYS_TC_1_START), }, /* slot 1 - tc option slot 1 */
|
||||
{ KV(KN03_PHYS_TC_2_START), }, /* slot 2 - tc option slot 2 */
|
||||
{ KV(KN03_PHYS_TC_3_START), } /* slot 3 - IOCTL asic on CPU board */
|
||||
static struct tc_slotdesc tc_kn03_slots [4] = {
|
||||
{ KV(KN03_PHYS_TC_0_START), C(0) }, /* slot0 - tc option slot 0 */
|
||||
{ KV(KN03_PHYS_TC_1_START), C(1) }, /* slot1 - tc option slot 1 */
|
||||
{ KV(KN03_PHYS_TC_2_START), C(2) }, /* slot2 - tc option slot 2 */
|
||||
{ KV(KN03_PHYS_TC_3_START), C(3) } /* slot3 - IO asic on b'board */
|
||||
};
|
||||
int tc_kn03_nslots =
|
||||
sizeof(tc_kn03_slots) / sizeof(tc_kn03_slots[0]);
|
||||
|
||||
|
||||
/* 3MAXPLUS turbochannel autoconfiguration table */
|
||||
struct tc_cpu_desc kn03_tc_desc =
|
||||
{
|
||||
kn03_slot_addrs, KN03_TC_NSLOTS,
|
||||
tc_kn03_slots, KN03_TC_NSLOTS,
|
||||
tc3_devs, KN03_TC_NSLOTS, /*XXX*/
|
||||
tc_ds_ioasic_intr_setup,
|
||||
tc_ds_ioasic_intr_establish,
|
||||
|
@ -44,17 +50,20 @@ struct tc_cpu_desc kn03_tc_desc =
|
|||
/************************************************************************/
|
||||
|
||||
/* 3MIN slot addreseses */
|
||||
static struct tc_slot_desc kmin_slot_addrs [4] = {
|
||||
{ KV(KMIN_PHYS_TC_0_START), }, /* slot 0 - tc option slot 0 */
|
||||
{ KV(KMIN_PHYS_TC_1_START), }, /* slot 1 - tc option slot 1 */
|
||||
{ KV(KMIN_PHYS_TC_2_START), }, /* slot 2 - tc option slot 2 */
|
||||
{ KV(KMIN_PHYS_TC_3_START), } /* slot 3 - IOCTL asic on CPU board */
|
||||
static struct tc_slotdesc tc_kmin_slots [] = {
|
||||
{ KV(KMIN_PHYS_TC_0_START), C(0) }, /* slot0 - tc option slot 0 */
|
||||
{ KV(KMIN_PHYS_TC_1_START), C(1) }, /* slot1 - tc option slot 1 */
|
||||
{ KV(KMIN_PHYS_TC_2_START), C(3) }, /* slot2 - tc option slot 2 */
|
||||
{ KV(KMIN_PHYS_TC_3_START), C(4) } /* slot3 - IO asic on b'board */
|
||||
};
|
||||
|
||||
int tc_kmin_nslots =
|
||||
sizeof(tc_kmin_slots) / sizeof(tc_kmin_slots[0]);
|
||||
|
||||
/* 3MIN turbochannel autoconfiguration table */
|
||||
struct tc_cpu_desc kmin_tc_desc =
|
||||
{
|
||||
kmin_slot_addrs, KMIN_TC_NSLOTS,
|
||||
tc_kmin_slots, KMIN_TC_NSLOTS,
|
||||
tc3_devs, KMIN_TC_NSLOTS, /*XXX*/
|
||||
tc_ds_ioasic_intr_setup,
|
||||
tc_ds_ioasic_intr_establish,
|
||||
|
@ -66,23 +75,28 @@ struct tc_cpu_desc kmin_tc_desc =
|
|||
|
||||
/* MAXINE turbochannel slots */
|
||||
struct confargs xine_devs[4] = {
|
||||
{ "PMAG-DV ", 3, 3, 0x0, }, /* xcfb ? */
|
||||
{ "IOCTL ", 2, -1, 0x0, },
|
||||
{ NULL, 1, 1, 0x0, },
|
||||
{ NULL, 0, 0, 0x0, }
|
||||
/* name slot offset intpri */
|
||||
{ "PMAG-DV ", 3, 0x0, 3, }, /* xcfb */
|
||||
{ "IOCTL ", 2, 0x0, -1, },
|
||||
{ NULL, 1, 0x0, 1, },
|
||||
{ NULL, 0, 0x0, 0, }
|
||||
};
|
||||
|
||||
/* MAXINE slot addreseses */
|
||||
static struct tc_slot_desc xine_slot_addrs [4] = {
|
||||
{ KV(XINE_PHYS_TC_0_START), }, /* slot 0 - tc option slot 0 */
|
||||
{ KV(XINE_PHYS_TC_1_START), }, /* slot 1 - tc option slot 1 */
|
||||
{ KV(XINE_PHYS_TC_3_START), }, /* slot 2 - IOCTL asic on CPU board */
|
||||
{ KV(XINE_PHYS_CFB_START), } /* slot 3 - fb on CPU board */
|
||||
static struct tc_slotdesc tc_xine_slots [4] = {
|
||||
{ KV(XINE_PHYS_TC_0_START), C(0) }, /* slot 0 - tc option slot 0 */
|
||||
{ KV(XINE_PHYS_TC_1_START), C(1) }, /* slot 1 - tc option slot 1 */
|
||||
/* physical space for ``slot 2'' is reserved */
|
||||
{ KV(XINE_PHYS_TC_3_START), C(8) }, /* slot 2 - IO asic on b'board */
|
||||
{ KV(XINE_PHYS_CFB_START), C(-1) } /* slot 3 - fb on b'board */
|
||||
};
|
||||
|
||||
int tc_xine_nslots =
|
||||
sizeof(tc_xine_slots) / sizeof(tc_xine_slots[0]);
|
||||
|
||||
struct tc_cpu_desc xine_tc_desc =
|
||||
{
|
||||
xine_slot_addrs, XINE_TC_NSLOTS,
|
||||
tc_xine_slots, XINE_TC_NSLOTS,
|
||||
xine_devs, 4, /*XXX*/
|
||||
tc_ds_ioasic_intr_setup,
|
||||
tc_ds_ioasic_intr_establish,
|
||||
|
@ -90,6 +104,7 @@ struct tc_cpu_desc xine_tc_desc =
|
|||
/*xine_intr*/ (void *) -1
|
||||
};
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
|
||||
#if 0
|
||||
|
@ -104,19 +119,19 @@ struct tc_cpu_desc xine_tc_desc =
|
|||
struct confargs kn02_devs[8] = {
|
||||
/* The 3max supposedly has "KN02 " at 0xbffc0410 */
|
||||
|
||||
/* name entry pri xxx */
|
||||
{ KN02_ASIC_NAME, 7, -1, 0x0, }, /* System CSR and subslots */
|
||||
{ TC_ETHER, 6, 6, 0x0, }, /* slot 6: Ether on cpu board*/
|
||||
{ TC_SCSI, 5, 5, 0x0, }, /* slot 5: SCSI on cpu board */
|
||||
/*XXX*/ { NULL, 4, 0, -1, }, /* slot 3 reserved */
|
||||
/*XXX*/ { NULL, 3, 0, -1, }, /* slot 3 reserved */
|
||||
{ NULL, 2, 2, 0x0, }, /* slot 2 - TC option slot 2 */
|
||||
{ NULL, 1, 1, 0x0, }, /* slot 1 - TC option slot 1 */
|
||||
{ NULL, 0, 0, 0x0, } /* slot 0 - TC option slot 0 */
|
||||
/* name slot offset intpri */
|
||||
{ KN02_ASIC_NAME, 7, 0x0, -1, }, /* System CSR and subslots */
|
||||
{ TC_ETHER, 6, 0x0, 6, }, /* slot 6: Ether on cpu board*/
|
||||
{ TC_SCSI, 5, 0x0, 5, }, /* slot 5: SCSI on cpu board */
|
||||
/*XXX*/ { NULL, 4, -1, 0, }, /* slot 3 reserved */
|
||||
/*XXX*/ { NULL, 3, -1, 0, }, /* slot 3 reserved */
|
||||
{ NULL, 2, 0x0, 2, }, /* slot 2 - TC option slot 2 */
|
||||
{ NULL, 1, 0x0, 1, }, /* slot 1 - TC option slot 1 */
|
||||
{ NULL, 0, 0x0, 0, } /* slot 0 - TC option slot 0 */
|
||||
};
|
||||
|
||||
/* slot addreseses */
|
||||
static struct tc_slot_desc kn02_slot_addrs [8] = {
|
||||
static struct tc_slotdesc tc_kn02_slots [8] = {
|
||||
{ KV(KN02_PHYS_TC_0_START), }, /* slot 0 - tc option slot 0 */
|
||||
{ KV(KN02_PHYS_TC_1_START), }, /* slot 1 - tc option slot 1 */
|
||||
{ KV(KN02_PHYS_TC_2_START), }, /* slot 2 - tc option slot 2 */
|
||||
|
@ -128,10 +143,25 @@ static struct tc_slot_desc kn02_slot_addrs [8] = {
|
|||
|
||||
};
|
||||
|
||||
int tc_kn02_nslots =
|
||||
sizeof(tc_kn02_slots) / sizeof(tc_kn02_slots[0]);
|
||||
|
||||
#define KN02_ROM_NAME KN02_ASIC_NAME
|
||||
|
||||
#define TC_KN02_DEV_IOASIC -1
|
||||
#define TC_KN02_DEV_ETHER 6
|
||||
#define TC_KN02_DEV_SCSI 5
|
||||
|
||||
struct tc_builtin tc_kn02_builtins[] = {
|
||||
{ KN02_ROM_NAME,7, 0x00000000, C(TC_KN02_DEV_IOASIC), },
|
||||
{ TC_ETHER, 6, 0x00000000, C(TC_KN02_DEV_ETHER), },
|
||||
{ TC_SCSI, 5, 0x00000000, C(TC_KN02_DEV_SCSI), },
|
||||
};
|
||||
|
||||
|
||||
struct tc_cpu_desc kn02_tc_desc =
|
||||
{
|
||||
kn02_slot_addrs, KN02_TC_NSLOTS,
|
||||
tc_kn02_slots, KN02_TC_NSLOTS,
|
||||
kn02_devs, 8, /*XXX*/
|
||||
tc_ds_ioasic_intr_setup,
|
||||
tc_ds_ioasic_intr_establish,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: tc.c,v 1.6 1995/12/28 06:44:57 jonathan Exp $ */
|
||||
/* $NetBSD: tc.c,v 1.7 1996/01/03 20:39:10 jonathan Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
|
||||
|
@ -29,24 +29,56 @@
|
|||
|
||||
#include <sys/param.h>
|
||||
#include <sys/device.h>
|
||||
|
||||
#include <dev/cons.h>
|
||||
#include <dev/tc/tcvar.h>
|
||||
#include <machine/autoconf.h>
|
||||
|
||||
#ifdef alpha
|
||||
#include <machine/rpb.h>
|
||||
#include <alpha/tc/tc.h>
|
||||
#endif
|
||||
|
||||
#ifdef pmax
|
||||
#include <pmax/tc/tc.h>
|
||||
#endif
|
||||
/* Which TC framebuffers have drivers, for configuring a console device. */
|
||||
#include <cfb.h>
|
||||
#include <mfb.h>
|
||||
#include <sfb.h>
|
||||
|
||||
extern int pmax_boardtype;
|
||||
|
||||
|
||||
struct tc_softc {
|
||||
struct device sc_dv;
|
||||
int sc_nslots;
|
||||
struct tc_slotdesc *sc_slots;
|
||||
|
||||
void (*sc_intr_establish) __P((struct device *, void *,
|
||||
tc_intrlevel_t, int (*)(void *), void *));
|
||||
void (*sc_intr_disestablish) __P((struct device *, void *));
|
||||
#ifndef goneverysoon
|
||||
struct abus sc_bus;
|
||||
struct tc_cpu_desc *sc_desc;
|
||||
#endif /* goneverysoon */
|
||||
};
|
||||
|
||||
/*
|
||||
* Old-style model-specific autoconfiguration description.
|
||||
*/
|
||||
struct tc_cpu_desc {
|
||||
struct tc_slotdesc *tcd_slots;
|
||||
long tcd_nslots;
|
||||
struct confargs *tcd_devs;
|
||||
long tcd_ndevs;
|
||||
void (*tc_intr_setup) __P((void));
|
||||
void (*tc_intr_establish) __P((struct device *dev, void *cookie,
|
||||
int level, intr_handler_t handler, void *arg));
|
||||
void (*tc_intr_disestablish) __P((struct device *, void *));
|
||||
int (*tc_iointr) __P((u_int mask, u_int pc,
|
||||
u_int statusReg, u_int causeReg));
|
||||
};
|
||||
|
||||
/* Return the appropriate tc_cpu_desc for a given cputype */
|
||||
extern struct tc_cpu_desc * cpu_tcdesc __P ((int cputype));
|
||||
|
||||
|
||||
/* Definition of the driver for autoconfig. */
|
||||
int tcmatch(struct device *, void *, void *);
|
||||
void tcattach(struct device *, struct device *, void *);
|
||||
|
@ -54,13 +86,17 @@ int tcprint(void *, char *);
|
|||
struct cfdriver tccd =
|
||||
{ NULL, "tc", tcmatch, tcattach, DV_DULL, sizeof (struct tc_softc) };
|
||||
|
||||
void tc_intr_establish __P((struct confargs *, intr_handler_t handler,
|
||||
intr_arg_t));
|
||||
void tc_intr_disestablish __P((struct confargs *));
|
||||
void tc_intr_establish __P((struct device *, void *, tc_intrlevel_t,
|
||||
intr_handler_t handler, intr_arg_t arg));
|
||||
void tc_intr_disestablish __P((struct device *dev, void *cookie));
|
||||
caddr_t tc_cvtaddr __P((struct confargs *));
|
||||
int tc_matchname __P((struct confargs *, char *));
|
||||
|
||||
extern int cputype;
|
||||
extern int tc_findconsole __P((int prom_slot));
|
||||
|
||||
/* Forward declarations */
|
||||
int consprobeslot __P((int slot));
|
||||
|
||||
|
||||
/*XXX*/ /* should be in separate source file */
|
||||
|
@ -82,13 +118,15 @@ extern int cputype;
|
|||
|
||||
#include <pmax/pmax/turbochannel.h>
|
||||
|
||||
#include <pmax/pmax/nameglue.h>
|
||||
/*#include <pmax/pmax/nameglue.h>*/
|
||||
#define KV(x) ((tc_addr_t)MACH_PHYS_TO_UNCACHED(x))
|
||||
|
||||
|
||||
|
||||
void tc_ds_ioasic_intr_setup __P((void));
|
||||
void tc_ds_ioasic_intr_establish
|
||||
__P((struct confargs *, intr_handler_t, void *));
|
||||
void tc_ds_ioasic_intr_disestablish __P((struct confargs *));
|
||||
void tc_ds_ioasic_intr_establish __P((struct device *dev, void *cookie,
|
||||
int level, intr_handler_t handler, void *arg));
|
||||
void tc_ds_ioasic_intr_disestablish __P((struct device *, void *));
|
||||
void tc_ds_ioasic_iointr __P((void *, int));
|
||||
int tc_ds_ioasic_getdev __P((struct confargs *));
|
||||
|
||||
|
@ -111,36 +149,12 @@ extern void xine_enable_intr __P ((u_int slot, tc_handler_t,
|
|||
void *intr_arg, int on));
|
||||
|
||||
/*
|
||||
* configuration tables for the four models of
|
||||
* Configuration tables for the four models of
|
||||
* Decstation that have turbochannels.
|
||||
* None of the four are the same.
|
||||
*/
|
||||
#include "ds-tc-conf.c"
|
||||
|
||||
|
||||
/*
|
||||
* Mapping from CPU type to a tc_cpu_desc for that CPU type.
|
||||
* (Alpha-specific.)
|
||||
*/
|
||||
struct tc_cpu_desc *tc_cpu_devs[] = {
|
||||
NULL, /* Unused */
|
||||
NULL, /* ST_ADU */
|
||||
NULL, /* ST_DEC_4000 */
|
||||
NULL, /* ST_DEC_7000 */
|
||||
#ifdef DEC_3000_500
|
||||
&dec_3000_500_cpu, /* ST_DEC_3000_500 */
|
||||
#else
|
||||
NULL,
|
||||
#endif
|
||||
NULL, /* Unused */
|
||||
NULL, /* ST_DEC_2000_300 */
|
||||
#ifdef DEC_3000_300
|
||||
&dec_3000_300_cpu, /* ST_DEC_3000_300 */
|
||||
#else
|
||||
NULL,
|
||||
#endif
|
||||
};
|
||||
int ntc_cpu_devs = sizeof tc_cpu_devs / sizeof tc_cpu_devs[0];
|
||||
|
||||
/*
|
||||
* Function to map from a CPU code to a tc_cpu_desc.
|
||||
|
@ -151,8 +165,6 @@ struct tc_cpu_desc *
|
|||
cpu_tcdesc(cpu)
|
||||
int cpu;
|
||||
{
|
||||
/*XXX*/
|
||||
#ifdef pmax
|
||||
if (cpu == DS_3MAXPLUS) {
|
||||
tc_enable_interrupt = kn03_enable_intr;
|
||||
return &kn03_tc_desc;
|
||||
|
@ -160,27 +172,60 @@ cpu_tcdesc(cpu)
|
|||
tc_enable_interrupt = kn02_enable_intr;
|
||||
return &kn02_tc_desc;
|
||||
} else if (cpu == DS_3MIN) {
|
||||
DPRINTF(("tcattach: 3MIN Turbochannel\n"));
|
||||
tc_enable_interrupt = kmin_enable_intr;
|
||||
return &kmin_tc_desc;
|
||||
} else if (cpu == DS_MAXINE) {
|
||||
DPRINTF(("MAXINE turbochannel\n"));
|
||||
#ifdef DEBUG
|
||||
printf("MAXINE turbochannel\n");
|
||||
#endif
|
||||
tc_enable_interrupt = xine_enable_intr;
|
||||
return &xine_tc_desc;
|
||||
} else if (cpu == DS_PMAX) {
|
||||
DPRINTF(("tcattach: PMAX, no turbochannel\n"));
|
||||
#ifdef DIAGNOSTIC
|
||||
printf("tcattach: PMAX, no turbochannel\n");
|
||||
#endif
|
||||
return NULL;
|
||||
} else if (cpu == DS_MIPSFAIR) {
|
||||
DPRINTF(("tcattach: Mipsfair (5100), no turbochannel\n"));
|
||||
printf("tcattach: Mipsfair (5100), no turbochannel\n");
|
||||
return NULL;
|
||||
} else {
|
||||
panic("tcattach: Unrecognized bus type 0x%x\n", cpu);
|
||||
}
|
||||
|
||||
#else /* alpha?*/
|
||||
return tc_cpu_devs[cputype];
|
||||
#endif /* alpha?*/
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Temporary glue:
|
||||
* present the old-style signatures as used by BUS_INTR_ESTABLISH(),
|
||||
* but using the new NetBSD machine-independent TC infrastructure.
|
||||
*/
|
||||
|
||||
void
|
||||
confglue_tc_intr_establish(ca, handler, arg)
|
||||
struct confargs *ca;
|
||||
intr_handler_t handler;
|
||||
intr_arg_t arg;
|
||||
{
|
||||
struct tc_softc *sc = tccd.cd_devs[0]; /* XXX */
|
||||
/* XXX guess at level */
|
||||
(*sc->sc_desc->tc_intr_establish)
|
||||
((struct device*)sc, (void*)ca->ca_slotpri, 0, handler, arg);
|
||||
}
|
||||
|
||||
void
|
||||
confglue_tc_intr_disestablish(ca)
|
||||
struct confargs *ca;
|
||||
{
|
||||
struct tc_softc *sc = tccd.cd_devs[0]; /* XXX */
|
||||
|
||||
(*sc->sc_desc->tc_intr_disestablish)(
|
||||
(struct device*)sc, (void*)ca->ca_slotpri);
|
||||
}
|
||||
/*
|
||||
* End of temporary glue.
|
||||
*/
|
||||
|
||||
|
||||
int
|
||||
tcmatch(parent, cfdata, aux)
|
||||
struct device *parent;
|
||||
|
@ -239,8 +284,8 @@ tcattach(parent, self, aux)
|
|||
|
||||
sc->sc_bus.ab_dv = (struct device *)sc;
|
||||
sc->sc_bus.ab_type = BUS_TC;
|
||||
sc->sc_bus.ab_intr_establish = tc_intr_establish;
|
||||
sc->sc_bus.ab_intr_disestablish = tc_intr_disestablish;
|
||||
sc->sc_bus.ab_intr_establish = confglue_tc_intr_establish;
|
||||
sc->sc_bus.ab_intr_disestablish = confglue_tc_intr_disestablish;
|
||||
sc->sc_bus.ab_cvtaddr = tc_cvtaddr;
|
||||
sc->sc_bus.ab_matchname = tc_matchname;
|
||||
|
||||
|
@ -296,28 +341,40 @@ tc_cvtaddr(ca)
|
|||
{
|
||||
struct tc_softc *sc = tccd.cd_devs[0];
|
||||
|
||||
return (sc->sc_desc->tcd_slots[ca->ca_slot].tsd_dense + ca->ca_offset);
|
||||
return ((caddr_t)sc->sc_desc->tcd_slots[ca->ca_slot].tcs_addr +
|
||||
ca->ca_offset);
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
tc_intr_establish(ca, handler, val)
|
||||
struct confargs *ca;
|
||||
tc_intr_establish(dev, cookie, level, handler, arg)
|
||||
/*struct confargs *ca;*/
|
||||
struct device *dev;
|
||||
void *cookie;
|
||||
tc_intrlevel_t level;
|
||||
intr_handler_t handler;
|
||||
intr_arg_t val;
|
||||
intr_arg_t arg;
|
||||
{
|
||||
struct tc_softc *sc = tccd.cd_devs[0];
|
||||
struct tc_softc *sc = (struct tc_softc *)dev;
|
||||
|
||||
(*sc->sc_desc->tc_intr_establish)(ca, handler, val);
|
||||
#ifdef DEBUG
|
||||
printf("tc_intr_establish: %s parent intrcode %d\n",
|
||||
dev->dv_xname, dev->dv_parent->dv_xname, (int) cookie);
|
||||
#endif
|
||||
|
||||
/* XXX pmax interrupt-enable interface */
|
||||
(*sc->sc_desc->tc_intr_establish)(sc->sc_dv.dv_parent, cookie,
|
||||
level, handler, arg);
|
||||
}
|
||||
|
||||
void
|
||||
tc_intr_disestablish(ca)
|
||||
struct confargs *ca;
|
||||
tc_intr_disestablish(dev, cookie)
|
||||
struct device *dev;
|
||||
void *cookie;
|
||||
{
|
||||
struct tc_softc *sc = tccd.cd_devs[0];
|
||||
struct tc_softc *sc = (struct tc_softc *)dev;
|
||||
|
||||
(*sc->sc_desc->tc_intr_disestablish)(ca);
|
||||
(*sc->sc_intr_disestablish)(sc->sc_dv.dv_parent, cookie);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -390,8 +447,102 @@ tc_intrnull(val)
|
|||
panic("uncaught TC intr for slot %ld\n", (long)val);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* hack for kn03 */
|
||||
|
||||
/*
|
||||
* Probe the turbochannel for a framebuffer option card, starting
|
||||
* at the preferred slot and then scanning all slots. Configure the first
|
||||
* supported framebuffer device found, if any, as the console, and return
|
||||
* 1 if found.
|
||||
* Called before autoconfiguration, to find a system console.
|
||||
*/
|
||||
int
|
||||
tc_findconsole(preferred_slot)
|
||||
int preferred_slot;
|
||||
{
|
||||
int slot;
|
||||
|
||||
struct tc_cpu_desc * sc_desc;
|
||||
|
||||
/* First, try the slot configured as console in NVRAM. */
|
||||
/* if (consprobeslot(preferred_slot)) return (1); */
|
||||
|
||||
/*
|
||||
* Try to configure each turbochannel (or CPU-internal) device.
|
||||
* Knows about gross internals of TurboChannel bus autoconfig
|
||||
* descriptor, which needs to be fixed badly.
|
||||
*/
|
||||
if ((sc_desc = cpu_tcdesc(pmax_boardtype)) == NULL)
|
||||
return 0;
|
||||
for (slot = 0; slot < sc_desc->tcd_ndevs; slot++) {
|
||||
|
||||
if (tc_consprobeslot(slot))
|
||||
return (1);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Try and configure one slot as framebuffer console.
|
||||
* Accept only the framebuffers for which driver are configured into
|
||||
* the kernel. If a suitable framebuffer is found, attach it and
|
||||
* set up glass-tty emulation.
|
||||
*/
|
||||
int
|
||||
tc_consprobeslot(slot)
|
||||
int slot;
|
||||
{
|
||||
void *slotaddr;
|
||||
char name[20];
|
||||
struct tc_cpu_desc * sc_desc;
|
||||
|
||||
if (slot < 0 || ((sc_desc = cpu_tcdesc(pmax_boardtype)) == NULL))
|
||||
return 0;
|
||||
slotaddr = (void *)(sc_desc->tcd_slots[slot].tcs_addr);
|
||||
|
||||
if (tc_checkdevmem(slotaddr) == 0)
|
||||
return (0);
|
||||
|
||||
if (tc_checkslot(slotaddr, name) == 0)
|
||||
return (0);
|
||||
|
||||
/*
|
||||
* We found an device in the given slot. Now see if it's a
|
||||
* framebuffer for which we have a driver.
|
||||
*/
|
||||
|
||||
/*printf(", trying to init a \"%s\"", name);*/
|
||||
|
||||
#define DRIVER_FOR_SLOT(slotname, drivername) \
|
||||
(strcmp (slotname, drivername) == 0)
|
||||
|
||||
#if NMFB > 0
|
||||
if (DRIVER_FOR_SLOT(name, "PMAG-AA ") &&
|
||||
mfbinit(slotaddr, 0, 1)) {
|
||||
return (1);
|
||||
}
|
||||
#endif /* NMFB */
|
||||
|
||||
#if NSFB > 0
|
||||
if (DRIVER_FOR_SLOT(name, "PMAGB-BA") &&
|
||||
sfbinit(slotaddr, 0, 1)) {
|
||||
return (1);
|
||||
}
|
||||
#endif /* NSFB */
|
||||
|
||||
#if NCFB > 0
|
||||
/*"cfb"*/
|
||||
if (DRIVER_FOR_SLOT(name, "PMAG-BA ") &&
|
||||
cfbinit(NULL, slotaddr, 0, 1)) {
|
||||
return (1);
|
||||
}
|
||||
#endif /* NCFB */
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
/* hack for kn03 ioasic */
|
||||
|
||||
void
|
||||
tc_ds_ioasic_intr_setup ()
|
||||
|
@ -399,14 +550,19 @@ tc_ds_ioasic_intr_setup ()
|
|||
printf("not setting up TC intrs\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* Estabish an interrupt handler, but on what bus -- TC or ioctl asic?
|
||||
*/
|
||||
void
|
||||
tc_ds_ioasic_intr_establish(ca, handler, val)
|
||||
struct confargs *ca;
|
||||
tc_ds_ioasic_intr_establish(dev, cookie, level, handler, val)
|
||||
struct device *dev;
|
||||
void *cookie;
|
||||
int level;
|
||||
intr_handler_t handler;
|
||||
void *val;
|
||||
{
|
||||
int unit = (int) val;
|
||||
|
||||
#ifdef notanymore
|
||||
if (BUS_MATCHNAME(ca, "IOCTL ")) {
|
||||
printf("(no interrupt for asic");
|
||||
return;
|
||||
|
@ -417,23 +573,27 @@ tc_ds_ioasic_intr_establish(ca, handler, val)
|
|||
printf("(no interrupt for proto-asic)\n");
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* Never tested on these processors */
|
||||
if (cputype == DS_3MIN || cputype == DS_MAXINE)
|
||||
printf("tc_enable %s%d slot %d\n",
|
||||
ca->ca_name, (int)unit, ca->ca_slotpri);
|
||||
printf("tc_enable %s sc %x slot %d\n",
|
||||
dev->dv_xname, (int)val, cookie);
|
||||
|
||||
#ifdef DIAGNOSTIC
|
||||
if (tc_enable_interrupt == NULL)
|
||||
panic("tc_intr_establish: tc_enable not set\n");
|
||||
#endif
|
||||
|
||||
(*tc_enable_interrupt) (ca->ca_slotpri, handler, (void*)unit, 1);
|
||||
/* Enable interrupt number "cookie" on this CPU */
|
||||
(*tc_enable_interrupt) ((int)cookie, handler, val, 1);
|
||||
}
|
||||
|
||||
void
|
||||
tc_ds_ioasic_intr_disestablish(args)
|
||||
struct confargs *args;
|
||||
tc_ds_ioasic_intr_disestablish(dev, arg)
|
||||
struct device *dev;
|
||||
void *arg;
|
||||
{
|
||||
/*(*tc_enable_interrupt) (ca->ca_slot, handler, 0);*/
|
||||
printf("cannot dis-establish TC intrs\n");
|
||||
|
@ -443,8 +603,6 @@ void
|
|||
tc_ds_ioasic_iointr (framep, vec)
|
||||
void * framep;
|
||||
int vec;
|
||||
|
||||
|
||||
{
|
||||
printf("bogus interrupt handler\n");
|
||||
printf("bogus interrupt handler fp %x vec %d\n", framep, vec);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue