mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-24 10:44:53 +00:00
Add a class field to devconf and mst drivers.
For those where it was easy, drivers were also fixed to call dev_attach() during probe rather than attach (in keeping with the new design articulated in a mail message five months ago). For a few that were really easy, correct state tracking was added as well. The `fd' driver was fixed to correctly fill in the description. The CPU identify code was fixed to attach a `cpu' device. The code was also massively reordered to fill in cpu_model with somethingremotely resembling what identifycpu() prints out. A few bytes saved by using %b to format the features list rather than lots of ifs.
This commit is contained in:
parent
fd7e139eed
commit
6c0081e92b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=7780
|
@ -32,7 +32,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)npx.c 7.2 (Berkeley) 5/12/91
|
||||
* $Id: npx.c,v 1.20 1995/02/23 17:32:38 bde Exp $
|
||||
* $Id: npx.c,v 1.21 1995/03/05 04:06:44 wpaul Exp $
|
||||
*/
|
||||
|
||||
#include "npx.h"
|
||||
|
@ -148,6 +148,30 @@ asm
|
|||
iret
|
||||
");
|
||||
|
||||
static struct kern_devconf kdc_npx[NNPX] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"npx", 0, { MDDT_ISA, 0 },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"Floating-point unit",
|
||||
DC_CLS_MISC /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
npx_registerdev(struct isa_device *id)
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_npx[unit] = kdc_npx[0];
|
||||
kdc_npx[unit].kdc_unit = unit;
|
||||
kdc_npx[unit].kdc_isa = id;
|
||||
dev_attach(&kdc_npx[unit]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Probe routine. Initialize cr0 to give correct behaviour for [f]wait
|
||||
* whether the device exists or not (XXX should be elsewhere). Set flags
|
||||
|
@ -171,6 +195,7 @@ npxprobe(dvp)
|
|||
* install suitable handlers and run with interrupts enabled so we
|
||||
* won't need to do so much here.
|
||||
*/
|
||||
npx_registerdev(dvp);
|
||||
npx_intrno = NRSVIDT + ffs(dvp->id_irq) - 1;
|
||||
save_eflags = read_eflags();
|
||||
disable_intr();
|
||||
|
@ -308,29 +333,6 @@ npxprobe1(dvp)
|
|||
return (-1);
|
||||
}
|
||||
|
||||
static struct kern_devconf kdc_npx[NNPX] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"npx", 0, { MDDT_ISA, 0 },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY,
|
||||
"Floating-point unit"
|
||||
} };
|
||||
|
||||
static inline void
|
||||
npx_registerdev(struct isa_device *id)
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_npx[unit] = kdc_npx[0];
|
||||
kdc_npx[unit].kdc_unit = unit;
|
||||
kdc_npx[unit].kdc_isa = id;
|
||||
dev_attach(&kdc_npx[unit]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Attach routine - announce which it is, and wire into system
|
||||
*/
|
||||
|
@ -354,8 +356,9 @@ npxattach(dvp)
|
|||
printf("npx%d: no 387 emulator in kernel!\n", dvp->id_unit);
|
||||
#endif
|
||||
npxinit(__INITIAL_NPXCW__);
|
||||
if (npx_exists)
|
||||
npx_registerdev(dvp);
|
||||
if (npx_exists) {
|
||||
kdc_npx[dvp->id_unit].kdc_state = DC_BUSY;
|
||||
}
|
||||
return (1); /* XXX unused */
|
||||
}
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)machdep.c 7.4 (Berkeley) 6/3/91
|
||||
* $Id: machdep.c,v 1.115 1995/03/17 04:19:19 davidg Exp $
|
||||
* $Id: machdep.c,v 1.116 1995/04/06 07:55:42 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#include "npx.h"
|
||||
|
@ -129,7 +129,18 @@ static void identifycpu(void);
|
|||
static void initcpu(void);
|
||||
|
||||
char machine[] = "i386";
|
||||
char cpu_model[sizeof("Cy486DLC") + 1];
|
||||
char cpu_model[128];
|
||||
|
||||
struct kern_devconf kdc_cpu0 = {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"cpu", 0, { MDDT_CPU },
|
||||
0, 0, 0, CPU_EXTERNALLEN,
|
||||
0, /* CPU has no parent */
|
||||
0, /* no parentdata */
|
||||
DC_BUSY, /* the CPU is always busy */
|
||||
cpu_model, /* no sense in duplication */
|
||||
DC_CLS_CPU /* class */
|
||||
};
|
||||
|
||||
#ifndef PANIC_REBOOT_WAIT_TIME
|
||||
#define PANIC_REBOOT_WAIT_TIME 15 /* default to 15 seconds */
|
||||
|
@ -404,14 +415,80 @@ identifycpu()
|
|||
printf("CPU: ");
|
||||
if (cpu >= 0
|
||||
&& cpu < (sizeof i386_cpus/sizeof(struct cpu_nameclass))) {
|
||||
printf("%s", i386_cpus[cpu].cpu_name);
|
||||
cpu_class = i386_cpus[cpu].cpu_class;
|
||||
strncpy(cpu_model, i386_cpus[cpu].cpu_name, sizeof cpu_model);
|
||||
} else {
|
||||
printf("unknown cpu type %d\n", cpu);
|
||||
panic("startup: bad cpu id");
|
||||
}
|
||||
printf(" (");
|
||||
|
||||
#ifdef I586_CPU
|
||||
if(cpu_class == CPUCLASS_586) {
|
||||
calibrate_cyclecounter();
|
||||
printf("%d-MHz ", pentium_mhz);
|
||||
}
|
||||
#endif
|
||||
if (!strcmp(cpu_vendor,"GenuineIntel")) {
|
||||
if ((cpu_id & 0xf00) > 3) {
|
||||
cpu_model[0] = '\0';
|
||||
|
||||
switch (cpu_id & 0x3000) {
|
||||
case 0x1000:
|
||||
strcpy(cpu_model, "Overdrive ");
|
||||
break;
|
||||
case 0x2000:
|
||||
strcpy(cpu_model, "Dual ");
|
||||
break;
|
||||
}
|
||||
if ((cpu_id & 0xf00) == 0x400) {
|
||||
strcat(cpu_model, "i486 ");
|
||||
} else if ((cpu_id & 0xf00) == 0x500) {
|
||||
strcat(cpu_model, "Pentium ");
|
||||
} else {
|
||||
strcat(cpu_model, "unknown ");
|
||||
}
|
||||
|
||||
switch (cpu_id & 0xff0) {
|
||||
case 0x400:
|
||||
strcat(cpu_model, "DX"); break;
|
||||
case 0x410:
|
||||
strcat(cpu_model, "DX"); break;
|
||||
case 0x420:
|
||||
strcat(cpu_model, "SX"); break;
|
||||
case 0x430:
|
||||
strcat(cpu_model, "DX2"); break;
|
||||
case 0x440:
|
||||
strcat(cpu_model, "SL"); break;
|
||||
case 0x450:
|
||||
strcat(cpu_model, "SX2"); break;
|
||||
case 0x470:
|
||||
strcat(cpu_model, "DX2 Write-Back Enhanced");
|
||||
break;
|
||||
case 0x480:
|
||||
strcat(cpu_model, "DX4"); break;
|
||||
case 0x510:
|
||||
if (pentium_mhz == 60) {
|
||||
strcat(cpu_model, "510\\60");
|
||||
} else if (pentium_mhz == 66) {
|
||||
strcat(cpu_model, "567\\66");
|
||||
} else {
|
||||
strcat(cpu_model,"510\\60 or 567\\66");
|
||||
}
|
||||
break;
|
||||
case 0x520:
|
||||
if (pentium_mhz == 90) {
|
||||
strcat(cpu_model, "735\\90");
|
||||
} else if (pentium_mhz == 100) {
|
||||
strcat(cpu_model, "815\\100");
|
||||
} else {
|
||||
strcat(cpu_model,"735\\90 or 815\\100");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printf("%s (", cpu_model);
|
||||
switch(cpu_class) {
|
||||
case CPUCLASS_286:
|
||||
printf("286");
|
||||
|
@ -428,57 +505,20 @@ identifycpu()
|
|||
default:
|
||||
printf("unknown"); /* will panic below... */
|
||||
}
|
||||
printf("-class CPU)");
|
||||
#ifdef I586_CPU
|
||||
if(cpu_class == CPUCLASS_586) {
|
||||
calibrate_cyclecounter();
|
||||
printf(" %d MHz", pentium_mhz);
|
||||
}
|
||||
#endif
|
||||
printf("-class CPU)\n");
|
||||
if(*cpu_vendor)
|
||||
printf(" Origin = \"%s\"",cpu_vendor);
|
||||
if(cpu_id)
|
||||
printf(" Id = 0x%lx",cpu_id);
|
||||
printf("\n"); /* cpu speed would be nice, but how? */
|
||||
if (!strcmp(cpu_vendor,"GenuineIntel")) {
|
||||
printf(" This is a");
|
||||
if ((cpu_id & 0xf00) > 3) {
|
||||
switch (cpu_id & 0x3000) {
|
||||
case 0x1000: printf("Overdrive "); break;
|
||||
case 0x2000: printf("Dual "); break;
|
||||
}
|
||||
if ((cpu_id & 0xf00) == 0x400)
|
||||
printf("n i486");
|
||||
else if ((cpu_id & 0xf00) == 0x500)
|
||||
printf(" Pentium ");
|
||||
else
|
||||
printf(" unknown CPU");
|
||||
switch (cpu_id & 0xff0) {
|
||||
case 0x400: printf("DX"); break;
|
||||
case 0x410: printf("DX"); break;
|
||||
case 0x420: printf("SX"); break;
|
||||
case 0x430: printf("DX2"); break;
|
||||
case 0x440: printf("SL"); break;
|
||||
case 0x450: printf("SX2"); break;
|
||||
case 0x470: printf("DX2 Write-Back Enhanced");
|
||||
break;
|
||||
case 0x480: printf("DX4"); break;
|
||||
case 0x510: printf("510\\60 or 567\\66"); break;
|
||||
case 0x520: printf("735\\90 or 815\\100"); break;
|
||||
}
|
||||
}
|
||||
printf(" Stepping=%d\n", cpu_id & 0xf);
|
||||
|
||||
if (!strcmp(cpu_vendor, "GenuineIntel")) {
|
||||
printf(" Stepping=%d", cpu_id & 0xf);
|
||||
if (cpu_high > 0) {
|
||||
printf(" Features=0x%lx",cpu_feature);
|
||||
if (cpu_feature & 0x1) printf(" FPU");
|
||||
if (cpu_feature & 0x2) printf(" VME");
|
||||
if (cpu_feature & 0x8) printf(" PSE");
|
||||
if (cpu_feature & 0x80) printf(" MCE");
|
||||
if (cpu_feature & 0x100) printf(" CX8");
|
||||
if (cpu_feature & 0x200) printf(" APIC");
|
||||
printf("\n");
|
||||
#define FEATUREFMT "\020\001FPU\002VME\003PSE\004MCE\005CX8\006APIC"
|
||||
printf(" Features=0x%b", cpu_feature, FEATUREFMT);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
/*
|
||||
* Now that we have told the user what they have,
|
||||
|
@ -502,6 +542,7 @@ identifycpu()
|
|||
default:
|
||||
break;
|
||||
}
|
||||
dev_attach(&kdc_cpu0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)isa.c 7.2 (Berkeley) 5/13/91
|
||||
* $Id: isa.c,v 1.43 1995/04/04 22:48:40 ache Exp $
|
||||
* $Id: isa.c,v 1.44 1995/04/06 13:55:56 ache Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -108,14 +108,17 @@ u_int intr_mask[ICU_LEN];
|
|||
u_int* intr_mptr[ICU_LEN];
|
||||
int intr_unit[ICU_LEN];
|
||||
|
||||
extern struct kern_devconf kdc_cpu0;
|
||||
|
||||
struct kern_devconf kdc_isa0 = {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"isa", 0, { MDDT_BUS, 0 },
|
||||
0, 0, 0, BUS_EXTERNALLEN,
|
||||
0, /* no parent yet; parent should be CPU */
|
||||
&kdc_cpu0, /* parent is the CPU */
|
||||
0, /* no parentdata */
|
||||
DC_BUSY, /* busses are always busy */
|
||||
"ISA or EISA bus"
|
||||
"ISA or EISA bus",
|
||||
DC_CLS_BUS /* class */
|
||||
};
|
||||
|
||||
static inthand_t *fastintr[ICU_LEN] = {
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)npx.c 7.2 (Berkeley) 5/12/91
|
||||
* $Id: npx.c,v 1.20 1995/02/23 17:32:38 bde Exp $
|
||||
* $Id: npx.c,v 1.21 1995/03/05 04:06:44 wpaul Exp $
|
||||
*/
|
||||
|
||||
#include "npx.h"
|
||||
|
@ -148,6 +148,30 @@ asm
|
|||
iret
|
||||
");
|
||||
|
||||
static struct kern_devconf kdc_npx[NNPX] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"npx", 0, { MDDT_ISA, 0 },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"Floating-point unit",
|
||||
DC_CLS_MISC /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
npx_registerdev(struct isa_device *id)
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_npx[unit] = kdc_npx[0];
|
||||
kdc_npx[unit].kdc_unit = unit;
|
||||
kdc_npx[unit].kdc_isa = id;
|
||||
dev_attach(&kdc_npx[unit]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Probe routine. Initialize cr0 to give correct behaviour for [f]wait
|
||||
* whether the device exists or not (XXX should be elsewhere). Set flags
|
||||
|
@ -171,6 +195,7 @@ npxprobe(dvp)
|
|||
* install suitable handlers and run with interrupts enabled so we
|
||||
* won't need to do so much here.
|
||||
*/
|
||||
npx_registerdev(dvp);
|
||||
npx_intrno = NRSVIDT + ffs(dvp->id_irq) - 1;
|
||||
save_eflags = read_eflags();
|
||||
disable_intr();
|
||||
|
@ -308,29 +333,6 @@ npxprobe1(dvp)
|
|||
return (-1);
|
||||
}
|
||||
|
||||
static struct kern_devconf kdc_npx[NNPX] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"npx", 0, { MDDT_ISA, 0 },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY,
|
||||
"Floating-point unit"
|
||||
} };
|
||||
|
||||
static inline void
|
||||
npx_registerdev(struct isa_device *id)
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_npx[unit] = kdc_npx[0];
|
||||
kdc_npx[unit].kdc_unit = unit;
|
||||
kdc_npx[unit].kdc_isa = id;
|
||||
dev_attach(&kdc_npx[unit]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Attach routine - announce which it is, and wire into system
|
||||
*/
|
||||
|
@ -354,8 +356,9 @@ npxattach(dvp)
|
|||
printf("npx%d: no 387 emulator in kernel!\n", dvp->id_unit);
|
||||
#endif
|
||||
npxinit(__INITIAL_NPXCW__);
|
||||
if (npx_exists)
|
||||
npx_registerdev(dvp);
|
||||
if (npx_exists) {
|
||||
kdc_npx[dvp->id_unit].kdc_state = DC_BUSY;
|
||||
}
|
||||
return (1); /* XXX unused */
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
* the SMC Elite Ultra (8216), the 3Com 3c503, the NE1000 and NE2000,
|
||||
* and a variety of similar clones.
|
||||
*
|
||||
* $Id: if_ed.c,v 1.67 1995/02/26 20:03:53 davidg Exp $
|
||||
* $Id: if_ed.c,v 1.68 1995/03/16 18:12:01 bde Exp $
|
||||
*/
|
||||
|
||||
#include "ed.h"
|
||||
|
@ -180,8 +180,9 @@ static struct kern_devconf kdc_ed_template = {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED,
|
||||
"" /* description */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"", /* description */
|
||||
DC_CLS_NETIF /* class */
|
||||
};
|
||||
|
||||
static inline void
|
||||
|
@ -211,7 +212,9 @@ ed_probe(isa_dev)
|
|||
{
|
||||
int nports;
|
||||
|
||||
#ifndef DEV_LKM
|
||||
ed_registerdev(isa_dev, "Ethernet adapter");
|
||||
#endif /* not DEV_LKM */
|
||||
|
||||
nports = ed_probe_WD80x3(isa_dev);
|
||||
if (nports)
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
* $Id: if_ep.c,v 1.13 1995/04/10 07:54:34 root Exp root $
|
||||
* $Id: if_ep.c,v 1.25 1995/04/10 21:24:58 jkh Exp $
|
||||
*
|
||||
* Promiscuous mode added and interrupt logic slightly changed
|
||||
* to reduce the number of adapter failures. Transceiver select
|
||||
|
@ -132,13 +132,14 @@ struct isa_driver epdriver = {
|
|||
};
|
||||
|
||||
static struct kern_devconf kdc_ep[NEP] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"ep", 0, { MDDT_ISA, 0, "net" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* network interfaces are always ``open'' */
|
||||
"3Com 3C509 Ethernet adapter"
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"3Com 3C509 Ethernet adapter",
|
||||
DC_CLS_NETIF /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -305,6 +306,8 @@ epprobe(is)
|
|||
u_short k;
|
||||
int i;
|
||||
|
||||
ep_registerdev(is);
|
||||
|
||||
if (!ep_look_for_board_at(is))
|
||||
return (0);
|
||||
/*
|
||||
|
@ -429,7 +432,7 @@ epattach(is)
|
|||
ifp->if_timer=1;
|
||||
|
||||
if_attach(ifp);
|
||||
ep_registerdev(is);
|
||||
kdc_ep[is->id_unit].kdc_state = DC_BUSY;
|
||||
|
||||
/*
|
||||
* Fill the hardware address into ifa_addr if we find an AF_LINK entry.
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
|
||||
* $Id: fd.c,v 1.55 1995/03/26 19:28:18 rgrimes Exp $
|
||||
* $Id: fd.c,v 1.56 1995/04/06 07:20:15 rgrimes Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -101,7 +101,8 @@ static struct kern_devconf kdc_fd[NFD] = { {
|
|||
0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"floppy disk"
|
||||
"floppy disk",
|
||||
DC_CLS_DISK /* class */
|
||||
} };
|
||||
|
||||
struct kern_devconf kdc_fdc[NFDC] = { {
|
||||
|
@ -111,7 +112,8 @@ struct kern_devconf kdc_fdc[NFDC] = { {
|
|||
0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"floppy disk/tape controller"
|
||||
"floppy disk/tape controller",
|
||||
DC_CLS_MISC /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -522,6 +524,10 @@ fdprobe(struct isa_device *dev)
|
|||
fdcdevs[fdcu] = dev;
|
||||
fdc_data[fdcu].baseport = dev->id_iobase;
|
||||
|
||||
#ifndef DEV_LKM
|
||||
fdc_registerdev(dev);
|
||||
#endif
|
||||
|
||||
/* First - lets reset the floppy controller */
|
||||
outb(dev->id_iobase+FDOUT, 0);
|
||||
DELAY(100);
|
||||
|
@ -553,8 +559,6 @@ fdattach(struct isa_device *dev)
|
|||
struct isa_device *fdup;
|
||||
int ic_type = 0;
|
||||
|
||||
fdc_registerdev(dev);
|
||||
|
||||
fdc->fdcu = fdcu;
|
||||
fdc->flags |= FDC_ATTACHED;
|
||||
fdc->dmachan = dev->id_drq;
|
||||
|
@ -619,14 +623,20 @@ fdattach(struct isa_device *dev)
|
|||
case 0x80:
|
||||
printf("NEC 765\n");
|
||||
fdc->fdct = FDC_NE765;
|
||||
kdc_fdc[fdcu].kdc_description =
|
||||
"NEC 765 floppy disk/tape controller";
|
||||
break;
|
||||
case 0x81:
|
||||
printf("Intel 82077\n");
|
||||
fdc->fdct = FDC_I82077;
|
||||
kdc_fdc[fdcu].kdc_description =
|
||||
"Intel 82077 floppy disk/tape controller";
|
||||
break;
|
||||
case 0x90:
|
||||
printf("NEC 72065B\n");
|
||||
fdc->fdct = FDC_NE72065;
|
||||
kdc_fdc[fdcu].kdc_description =
|
||||
"NEC 72065B floppy disk/tape controller";
|
||||
break;
|
||||
default:
|
||||
printf("unknown IC type %02x\n", ic_type);
|
||||
|
@ -685,33 +695,43 @@ fdattach(struct isa_device *dev)
|
|||
fd->options = 0;
|
||||
printf("fd%d: ", fdsu, fdu);
|
||||
|
||||
fd_registerdev(fdcu, fdu);
|
||||
switch (fdt) {
|
||||
case RTCFDT_12M:
|
||||
printf("1.2MB 5.25in\n");
|
||||
fd->type = FD_1200;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"1.2MB (1200K) 5.25in floppy disk drive";
|
||||
break;
|
||||
case RTCFDT_144M:
|
||||
printf("1.44MB 3.5in\n");
|
||||
fd->type = FD_1440;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"1.44MB (1440K) 3.5in floppy disk drive";
|
||||
break;
|
||||
case RTCFDT_288M:
|
||||
printf("2.88MB 3.5in - 1.44MB mode\n");
|
||||
fd->type = FD_1440;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"2.88MB (2880K) 3.5in floppy disk drive in 1.44 mode";
|
||||
break;
|
||||
case RTCFDT_360K:
|
||||
printf("360KB 5.25in\n");
|
||||
fd->type = FD_360;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"360KB 5.25in floppy disk drive";
|
||||
break;
|
||||
case RTCFDT_720K:
|
||||
printf("720KB 3.5in\n");
|
||||
fd->type = FD_720;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"720KB 3.5in floppy disk drive";
|
||||
break;
|
||||
default:
|
||||
printf("unknown\n");
|
||||
fd->type = NO_TYPE;
|
||||
break;
|
||||
}
|
||||
fd_registerdev(fdcu, fdu);
|
||||
kdc_fd[fdu].kdc_state = DC_IDLE;
|
||||
if (dk_ndrive < DK_NDRIVE) {
|
||||
sprintf(dk_names[dk_ndrive], "fd%d", fdu);
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: if_ie.c,v 1.21 1995/03/19 14:28:45 davidg Exp $
|
||||
* $Id: if_ie.c,v 1.22 1995/03/28 07:55:31 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -314,18 +314,18 @@ static struct kern_devconf kdc_ie[NIE] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* network interfaces are always ``busy'' */
|
||||
""
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"Ethernet adapter", /* description */
|
||||
DC_CLS_NETIF /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
ie_registerdev(struct isa_device *id, const char *descr)
|
||||
ie_registerdev(struct isa_device *id)
|
||||
{
|
||||
if(id->id_unit)
|
||||
kdc_ie[id->id_unit] = kdc_ie[0];
|
||||
kdc_ie[id->id_unit].kdc_unit = id->id_unit;
|
||||
kdc_ie[id->id_unit].kdc_isa = id;
|
||||
kdc_ie[id->id_unit].kdc_description = descr;
|
||||
dev_attach(&kdc_ie[id->id_unit]);
|
||||
}
|
||||
|
||||
|
@ -335,6 +335,8 @@ int ieprobe(dvp)
|
|||
{
|
||||
int ret;
|
||||
|
||||
ie_registerdev(dvp);
|
||||
|
||||
ret = sl_probe(dvp);
|
||||
if(!ret) ret = el_probe(dvp);
|
||||
if(!ret) ret = ni_probe(dvp);
|
||||
|
@ -591,7 +593,7 @@ ieattach(dvp)
|
|||
#endif
|
||||
|
||||
if_attach(ifp);
|
||||
ie_registerdev(dvp, ie_hardware_names[ie_softc[unit].hard_type]);
|
||||
kdc_ie[unit].kdc_description = ie_hardware_names[ie_softc[unit].hard_type];
|
||||
|
||||
{
|
||||
struct ifaddr *ifa = ifp->if_addrlist;
|
||||
|
|
|
@ -150,7 +150,8 @@ static struct kern_devconf kdc_lnc = {
|
|||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED,
|
||||
""
|
||||
"",
|
||||
DC_CLS_NETIF
|
||||
};
|
||||
|
||||
inline void
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: mcd.c,v 1.39 1995/02/23 17:40:16 ache Exp $
|
||||
* $Id: mcd.c,v 1.40 1995/03/28 07:55:42 bde Exp $
|
||||
*/
|
||||
static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
|
||||
|
||||
|
@ -223,8 +223,9 @@ static struct kern_devconf kdc_mcd[NMCD] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_IDLE, /* status */
|
||||
"Mitsumi CD-ROM controller" /* properly filled later */
|
||||
DC_UNCONFIGURED, /* status */
|
||||
"Mitsumi CD-ROM controller", /* properly filled later */
|
||||
DC_CLS_RDISK
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -250,7 +251,7 @@ int mcd_attach(struct isa_device *dev)
|
|||
/* wire controller for interrupts and dma */
|
||||
mcd_configure(cd);
|
||||
#endif
|
||||
mcd_registerdev(dev);
|
||||
kdc_mcd[dev->id_unit].kdc_state = DC_IDLE;
|
||||
/* name filled in probe */
|
||||
kdc_mcd[dev->id_unit].kdc_description = mcd_data[dev->id_unit].name;
|
||||
|
||||
|
@ -702,6 +703,7 @@ mcd_probe(struct isa_device *dev)
|
|||
int status;
|
||||
unsigned char stbytes[3];
|
||||
|
||||
mcd_registerdev(dev);
|
||||
mcd_data[unit].flags = MCDPROBING;
|
||||
|
||||
#ifdef NOTDEF
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
* this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*
|
||||
* $Id: mse.c,v 1.9 1994/11/08 05:41:34 jkh Exp $
|
||||
* $Id: mse.c,v 1.10 1995/03/28 07:55:44 bde Exp $
|
||||
*/
|
||||
/*
|
||||
* Driver for the Logitech and ATI Inport Bus mice for use with 386bsd and
|
||||
|
@ -181,6 +181,27 @@ struct mse_types {
|
|||
{ 0, },
|
||||
};
|
||||
|
||||
static struct kern_devconf kdc_mse[NMSE] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"mse", 0, { MDDT_ISA, 0, "tty" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"ATI or Logitech bus mouse adapter",
|
||||
DC_CLS_MISC /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
mse_registerdev(struct isa_device *id)
|
||||
{
|
||||
if(id->id_unit)
|
||||
kdc_mse[id->id_unit] = kdc_mse[0];
|
||||
kdc_mse[id->id_unit].kdc_unit = id->id_unit;
|
||||
kdc_mse[id->id_unit].kdc_isa = id;
|
||||
dev_attach(&kdc_mse[id->id_unit]);
|
||||
}
|
||||
|
||||
int
|
||||
mseprobe(idp)
|
||||
register struct isa_device *idp;
|
||||
|
@ -188,6 +209,7 @@ mseprobe(idp)
|
|||
register struct mse_softc *sc = &mse_sc[idp->id_unit];
|
||||
register int i;
|
||||
|
||||
mse_registerdev(idp);
|
||||
/*
|
||||
* Check for each mouse type in the table.
|
||||
*/
|
||||
|
@ -205,26 +227,6 @@ mseprobe(idp)
|
|||
return (0);
|
||||
}
|
||||
|
||||
static struct kern_devconf kdc_mse[NMSE] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"mse", 0, { MDDT_ISA, 0, "tty" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNKNOWN, /* not supported */
|
||||
"ATI or Logitech bus mouse adapter"
|
||||
} };
|
||||
|
||||
static inline void
|
||||
mse_registerdev(struct isa_device *id)
|
||||
{
|
||||
if(id->id_unit)
|
||||
kdc_mse[id->id_unit] = kdc_mse[0];
|
||||
kdc_mse[id->id_unit].kdc_unit = id->id_unit;
|
||||
kdc_mse[id->id_unit].kdc_isa = id;
|
||||
dev_attach(&kdc_mse[id->id_unit]);
|
||||
}
|
||||
|
||||
int
|
||||
mseattach(idp)
|
||||
struct isa_device *idp;
|
||||
|
@ -232,7 +234,7 @@ mseattach(idp)
|
|||
struct mse_softc *sc = &mse_sc[idp->id_unit];
|
||||
|
||||
sc->sc_port = idp->id_iobase;
|
||||
mse_registerdev(idp);
|
||||
kdc_mse[idp->id_unit].kdc_state = DC_IDLE;
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
@ -253,6 +255,7 @@ mseopen(dev, flag)
|
|||
if (sc->sc_flags & MSESC_OPEN)
|
||||
return (EBUSY);
|
||||
sc->sc_flags |= MSESC_OPEN;
|
||||
kdc_mse[MSE_UNIT(dev)].kdc_state = DC_BUSY;
|
||||
sc->sc_obuttons = sc->sc_buttons = 0x7;
|
||||
sc->sc_deltax = sc->sc_deltay = 0;
|
||||
sc->sc_bytesread = PROTOBYTES;
|
||||
|
@ -280,6 +283,7 @@ mseclose(dev, flag)
|
|||
s = spltty();
|
||||
(*sc->sc_disablemouse)(sc->sc_port);
|
||||
sc->sc_flags &= ~MSESC_OPEN;
|
||||
kdc_mse[MSE_UNIT(dev)].kdc_state = DC_IDLE;
|
||||
splx(s);
|
||||
return(0);
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
*/
|
||||
|
||||
|
||||
/* $Id: scd.c,v 1.1 1995/03/24 18:33:00 jkh Exp $ */
|
||||
/* $Id: scd.c,v 1.2 1995/03/25 18:14:37 bde Exp $ */
|
||||
|
||||
/* Please send any comments to micke@dynas.se */
|
||||
|
||||
|
@ -194,8 +194,9 @@ static struct kern_devconf kdc_scd[NSCD] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_IDLE, /* status */
|
||||
"Sony CD-ROM drive" /* properly filled later */
|
||||
DC_UNCONFIGURED, /* status */
|
||||
"Sony CD-ROM drive", /* properly filled later */
|
||||
DC_CLS_RDISK /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -215,7 +216,7 @@ int scd_attach(struct isa_device *dev)
|
|||
|
||||
cd->iobase = dev->id_iobase; /* Already set by probe, but ... */
|
||||
|
||||
scd_registerdev(dev);
|
||||
kdc_scd[dev->id_unit].kdc_state = DC_IDLE;
|
||||
/* name filled in probe */
|
||||
kdc_scd[dev->id_unit].kdc_description = scd_data[dev->id_unit].name;
|
||||
printf("scd%d: <%s>\n", dev->id_unit, scd_data[dev->id_unit].name);
|
||||
|
@ -709,6 +710,8 @@ scd_probe(struct isa_device *dev)
|
|||
|
||||
bzero(&drive_config, sizeof(drive_config));
|
||||
|
||||
scd_registerdev(dev);
|
||||
|
||||
again:
|
||||
/* Reset drive */
|
||||
write_control(dev->id_iobase, CBIT_RESET_DRIVE);
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
|
||||
* $Id: sio.c,v 1.88 1995/04/04 16:26:04 ache Exp $
|
||||
* $Id: sio.c,v 1.89 1995/04/11 17:58:09 ache Exp $
|
||||
*/
|
||||
|
||||
#include "sio.h"
|
||||
|
@ -347,6 +347,31 @@ static struct speedtab comspeedtab[] = {
|
|||
/* XXX - configure this list */
|
||||
static Port_t likely_com_ports[] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, };
|
||||
|
||||
static struct kern_devconf kdc_sio[NSIO] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"sio", 0, { MDDT_ISA, 0, "tty" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED,
|
||||
"RS-232 serial port"
|
||||
} };
|
||||
|
||||
static void
|
||||
sioregisterdev(id)
|
||||
struct isa_device *id;
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_sio[unit] = kdc_sio[0];
|
||||
kdc_sio[unit].kdc_unit = unit;
|
||||
kdc_sio[unit].kdc_isa = id;
|
||||
kdc_sio[unit].kdc_state = DC_IDLE;
|
||||
dev_attach(&kdc_sio[unit]);
|
||||
}
|
||||
|
||||
static int
|
||||
sioprobe(dev)
|
||||
struct isa_device *dev;
|
||||
|
@ -360,6 +385,8 @@ sioprobe(dev)
|
|||
u_char mcr_image;
|
||||
int result;
|
||||
|
||||
sioregisterdev(dev);
|
||||
|
||||
if (!already_init) {
|
||||
/*
|
||||
* Turn off MCR_IENABLE for all likely serial ports. An unused
|
||||
|
@ -535,31 +562,6 @@ sioprobe(dev)
|
|||
return (result);
|
||||
}
|
||||
|
||||
static struct kern_devconf kdc_sio[NSIO] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"sio", 0, { MDDT_ISA, 0, "tty" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED,
|
||||
"RS-232 serial port"
|
||||
} };
|
||||
|
||||
static void
|
||||
sioregisterdev(id)
|
||||
struct isa_device *id;
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_sio[unit] = kdc_sio[0];
|
||||
kdc_sio[unit].kdc_unit = unit;
|
||||
kdc_sio[unit].kdc_isa = id;
|
||||
kdc_sio[unit].kdc_state = DC_IDLE;
|
||||
dev_attach(&kdc_sio[unit]);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
sioattach(isdp)
|
||||
|
@ -634,6 +636,8 @@ sioattach(isdp)
|
|||
#ifdef DSI_SOFT_MODEM
|
||||
if((inb(iobase+7) ^ inb(iobase+7)) & 0x80) {
|
||||
printf(" Digicom Systems, Inc. SoftModem");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: Digicom Systems SoftModem";
|
||||
goto determined_type;
|
||||
}
|
||||
#endif /* DSI_SOFT_MODEM */
|
||||
|
@ -654,6 +658,8 @@ sioattach(isdp)
|
|||
outb(iobase + com_scr, scr);
|
||||
if (scr1 != 0xa5 || scr2 != 0x5a) {
|
||||
printf(" 8250");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 8250 or compatible";
|
||||
goto determined_type;
|
||||
}
|
||||
}
|
||||
|
@ -662,21 +668,31 @@ sioattach(isdp)
|
|||
switch (inb(com->int_id_port) & IIR_FIFO_MASK) {
|
||||
case FIFO_TRIGGER_1:
|
||||
printf(" 16450");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 16450 or compatible";
|
||||
break;
|
||||
case FIFO_TRIGGER_4:
|
||||
printf(" 16450?");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: maybe National 16450";
|
||||
break;
|
||||
case FIFO_TRIGGER_8:
|
||||
printf(" 16550?");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: maybe National 16550";
|
||||
break;
|
||||
case FIFO_TRIGGER_14:
|
||||
printf(" 16550A");
|
||||
if (COM_NOFIFO(isdp))
|
||||
if (COM_NOFIFO(isdp)) {
|
||||
printf(" fifo disabled");
|
||||
else {
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 16550A, FIFO disabled";
|
||||
} else {
|
||||
com->hasfifo = TRUE;
|
||||
com->ftl_init = FIFO_TRIGGER_14;
|
||||
com->tx_fifo_size = 16;
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 16550A or compatible";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -696,7 +712,8 @@ determined_type: ;
|
|||
#endif /* COM_MULTIPORT */
|
||||
printf("\n");
|
||||
|
||||
sioregisterdev(isdp);
|
||||
kdc_sio[unit].kdc_state =
|
||||
(unit == comconsole) ? DC_BUSY : DC_IDLE;
|
||||
|
||||
#ifdef KGDB
|
||||
if (kgdb_dev == makedev(commajor, unit)) {
|
||||
|
@ -718,6 +735,7 @@ determined_type: ;
|
|||
outb(iobase + com_cfcr, CFCR_8BITS);
|
||||
outb(com->modem_status_port,
|
||||
com->mcr_image |= MCR_DTR | MCR_RTS);
|
||||
kdc_sio[unit].kdc_state = DC_BUSY;
|
||||
|
||||
if (kgdb_debug_init) {
|
||||
/*
|
||||
|
@ -891,6 +909,7 @@ sioopen(dev, flag, mode, p)
|
|||
disc_optim(tp, &(tp->t_termios), com);
|
||||
if (tp->t_state & TS_ISOPEN && mynor & CALLOUT_MASK)
|
||||
com->active_out = TRUE;
|
||||
kdc_sio[unit].kdc_state = DC_BUSY;
|
||||
out:
|
||||
splx(s);
|
||||
if (!(tp->t_state & TS_ISOPEN) && com->wopeners == 0)
|
||||
|
@ -910,11 +929,13 @@ sioclose(dev, flag, mode, p)
|
|||
int mynor;
|
||||
int s;
|
||||
struct tty *tp;
|
||||
int unit;
|
||||
|
||||
mynor = minor(dev);
|
||||
if (mynor & CONTROL_MASK)
|
||||
return (0);
|
||||
com = com_addr(MINOR_TO_UNIT(mynor));
|
||||
unit = MINOR_TO_UNIT(mynor);
|
||||
com = com_addr(unit);
|
||||
tp = com->tp;
|
||||
s = spltty();
|
||||
(*linesw[tp->t_line].l_close)(tp, flag);
|
||||
|
@ -922,6 +943,7 @@ sioclose(dev, flag, mode, p)
|
|||
siostop(tp, FREAD | FWRITE);
|
||||
comhardclose(com);
|
||||
ttyclose(tp);
|
||||
kdc_sio[unit].kdc_state = DC_IDLE;
|
||||
splx(s);
|
||||
return (0);
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: syscons.c,v 1.107 1995/03/03 08:37:07 sos Exp $
|
||||
* $Id: syscons.c,v 1.111 1995/04/04 20:06:26 sos Exp $
|
||||
*/
|
||||
|
||||
#include "sc.h"
|
||||
|
@ -203,7 +203,8 @@ static struct kern_devconf kdc_sc[NSC] = {
|
|||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* the console is almost always busy */
|
||||
"Graphics console"
|
||||
"Graphics console",
|
||||
DC_CLS_DISPLAY /* class */
|
||||
};
|
||||
|
||||
static inline void
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*
|
||||
* commenced: Sun Sep 27 18:14:01 PDT 1992
|
||||
*
|
||||
* $Id: aha1742.c,v 1.29 1995/03/23 09:00:18 rgrimes Exp $
|
||||
* $Id: aha1742.c,v 1.30 1995/03/28 07:55:23 bde Exp $
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -325,8 +325,9 @@ static struct kern_devconf kdc_ahb[NAHB] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* host adapters are always ``in use'' */
|
||||
"Adaptec 174x-series SCSI host adapter"
|
||||
DC_UNCONFIGURED, /* always start out here in probe */
|
||||
"Adaptec 174x-series SCSI host adapter",
|
||||
DC_CLS_MISC /* host adapters aren't special */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -506,6 +507,10 @@ ahbprobe1(dev)
|
|||
bzero(ahb, sizeof(struct ahb_data));
|
||||
ahbdata[unit] = ahb;
|
||||
ahb->baseport = dev->id_iobase;
|
||||
#ifndef DEV_LKM
|
||||
ahb_registerdev(dev);
|
||||
#endif /* DEV_LKM */
|
||||
|
||||
/*
|
||||
* Try initialise a unit at this location
|
||||
* sets up dma and bus speed, loads ahb->vect
|
||||
|
@ -543,7 +548,7 @@ ahb_attach(dev)
|
|||
ahb->sc_link.adapter = &ahb_switch;
|
||||
ahb->sc_link.device = &ahb_dev;
|
||||
|
||||
ahb_registerdev(dev);
|
||||
kdc_ahb[unit].kdc_state = DC_BUSY; /* host adapters are always busy */
|
||||
/*
|
||||
* ask the adapter what subunits are present
|
||||
*/
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
* 4. Modifications may be freely made to this file if the above conditions
|
||||
* are met.
|
||||
*
|
||||
* $Id: aic7770.c,v 1.11 1995/03/07 08:58:22 gibbs Exp $
|
||||
* $Id: aic7770.c,v 1.12 1995/03/31 13:36:57 gibbs Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
@ -65,8 +65,9 @@ static struct kern_devconf kdc_aic7770[NAHC] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* host adapters are always ``in use'' */
|
||||
"Adaptec aic7770 based SCSI host adapter"
|
||||
DC_UNCONFIGURED, /* always start out here */
|
||||
"Adaptec aic7770 based SCSI host adapter",
|
||||
DC_CLS_MISC /* host adapters aren't special */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -120,6 +121,9 @@ aic7770probe(struct isa_device *dev)
|
|||
if ( sig_id[3] == valid_ids[i].id ) {
|
||||
int unit = dev->id_unit;
|
||||
dev->id_iobase = port;
|
||||
#ifndef DEV_LKM
|
||||
aic7770_registerdev(dev);
|
||||
#endif /* DEV_LKM */
|
||||
if(ahcprobe(unit, port,
|
||||
valid_ids[i].type)){
|
||||
/*
|
||||
|
@ -144,7 +148,7 @@ aic7770_attach(dev)
|
|||
struct isa_device *dev;
|
||||
{
|
||||
int unit = dev->id_unit;
|
||||
aic7770_registerdev(dev);
|
||||
kdc_aic7770[unit].kdc_state = DC_BUSY; /* host adapters always busy */
|
||||
return ahc_attach(unit);
|
||||
}
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)machdep.c 7.4 (Berkeley) 6/3/91
|
||||
* $Id: machdep.c,v 1.115 1995/03/17 04:19:19 davidg Exp $
|
||||
* $Id: machdep.c,v 1.116 1995/04/06 07:55:42 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#include "npx.h"
|
||||
|
@ -129,7 +129,18 @@ static void identifycpu(void);
|
|||
static void initcpu(void);
|
||||
|
||||
char machine[] = "i386";
|
||||
char cpu_model[sizeof("Cy486DLC") + 1];
|
||||
char cpu_model[128];
|
||||
|
||||
struct kern_devconf kdc_cpu0 = {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"cpu", 0, { MDDT_CPU },
|
||||
0, 0, 0, CPU_EXTERNALLEN,
|
||||
0, /* CPU has no parent */
|
||||
0, /* no parentdata */
|
||||
DC_BUSY, /* the CPU is always busy */
|
||||
cpu_model, /* no sense in duplication */
|
||||
DC_CLS_CPU /* class */
|
||||
};
|
||||
|
||||
#ifndef PANIC_REBOOT_WAIT_TIME
|
||||
#define PANIC_REBOOT_WAIT_TIME 15 /* default to 15 seconds */
|
||||
|
@ -404,14 +415,80 @@ identifycpu()
|
|||
printf("CPU: ");
|
||||
if (cpu >= 0
|
||||
&& cpu < (sizeof i386_cpus/sizeof(struct cpu_nameclass))) {
|
||||
printf("%s", i386_cpus[cpu].cpu_name);
|
||||
cpu_class = i386_cpus[cpu].cpu_class;
|
||||
strncpy(cpu_model, i386_cpus[cpu].cpu_name, sizeof cpu_model);
|
||||
} else {
|
||||
printf("unknown cpu type %d\n", cpu);
|
||||
panic("startup: bad cpu id");
|
||||
}
|
||||
printf(" (");
|
||||
|
||||
#ifdef I586_CPU
|
||||
if(cpu_class == CPUCLASS_586) {
|
||||
calibrate_cyclecounter();
|
||||
printf("%d-MHz ", pentium_mhz);
|
||||
}
|
||||
#endif
|
||||
if (!strcmp(cpu_vendor,"GenuineIntel")) {
|
||||
if ((cpu_id & 0xf00) > 3) {
|
||||
cpu_model[0] = '\0';
|
||||
|
||||
switch (cpu_id & 0x3000) {
|
||||
case 0x1000:
|
||||
strcpy(cpu_model, "Overdrive ");
|
||||
break;
|
||||
case 0x2000:
|
||||
strcpy(cpu_model, "Dual ");
|
||||
break;
|
||||
}
|
||||
if ((cpu_id & 0xf00) == 0x400) {
|
||||
strcat(cpu_model, "i486 ");
|
||||
} else if ((cpu_id & 0xf00) == 0x500) {
|
||||
strcat(cpu_model, "Pentium ");
|
||||
} else {
|
||||
strcat(cpu_model, "unknown ");
|
||||
}
|
||||
|
||||
switch (cpu_id & 0xff0) {
|
||||
case 0x400:
|
||||
strcat(cpu_model, "DX"); break;
|
||||
case 0x410:
|
||||
strcat(cpu_model, "DX"); break;
|
||||
case 0x420:
|
||||
strcat(cpu_model, "SX"); break;
|
||||
case 0x430:
|
||||
strcat(cpu_model, "DX2"); break;
|
||||
case 0x440:
|
||||
strcat(cpu_model, "SL"); break;
|
||||
case 0x450:
|
||||
strcat(cpu_model, "SX2"); break;
|
||||
case 0x470:
|
||||
strcat(cpu_model, "DX2 Write-Back Enhanced");
|
||||
break;
|
||||
case 0x480:
|
||||
strcat(cpu_model, "DX4"); break;
|
||||
case 0x510:
|
||||
if (pentium_mhz == 60) {
|
||||
strcat(cpu_model, "510\\60");
|
||||
} else if (pentium_mhz == 66) {
|
||||
strcat(cpu_model, "567\\66");
|
||||
} else {
|
||||
strcat(cpu_model,"510\\60 or 567\\66");
|
||||
}
|
||||
break;
|
||||
case 0x520:
|
||||
if (pentium_mhz == 90) {
|
||||
strcat(cpu_model, "735\\90");
|
||||
} else if (pentium_mhz == 100) {
|
||||
strcat(cpu_model, "815\\100");
|
||||
} else {
|
||||
strcat(cpu_model,"735\\90 or 815\\100");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
printf("%s (", cpu_model);
|
||||
switch(cpu_class) {
|
||||
case CPUCLASS_286:
|
||||
printf("286");
|
||||
|
@ -428,57 +505,20 @@ identifycpu()
|
|||
default:
|
||||
printf("unknown"); /* will panic below... */
|
||||
}
|
||||
printf("-class CPU)");
|
||||
#ifdef I586_CPU
|
||||
if(cpu_class == CPUCLASS_586) {
|
||||
calibrate_cyclecounter();
|
||||
printf(" %d MHz", pentium_mhz);
|
||||
}
|
||||
#endif
|
||||
printf("-class CPU)\n");
|
||||
if(*cpu_vendor)
|
||||
printf(" Origin = \"%s\"",cpu_vendor);
|
||||
if(cpu_id)
|
||||
printf(" Id = 0x%lx",cpu_id);
|
||||
printf("\n"); /* cpu speed would be nice, but how? */
|
||||
if (!strcmp(cpu_vendor,"GenuineIntel")) {
|
||||
printf(" This is a");
|
||||
if ((cpu_id & 0xf00) > 3) {
|
||||
switch (cpu_id & 0x3000) {
|
||||
case 0x1000: printf("Overdrive "); break;
|
||||
case 0x2000: printf("Dual "); break;
|
||||
}
|
||||
if ((cpu_id & 0xf00) == 0x400)
|
||||
printf("n i486");
|
||||
else if ((cpu_id & 0xf00) == 0x500)
|
||||
printf(" Pentium ");
|
||||
else
|
||||
printf(" unknown CPU");
|
||||
switch (cpu_id & 0xff0) {
|
||||
case 0x400: printf("DX"); break;
|
||||
case 0x410: printf("DX"); break;
|
||||
case 0x420: printf("SX"); break;
|
||||
case 0x430: printf("DX2"); break;
|
||||
case 0x440: printf("SL"); break;
|
||||
case 0x450: printf("SX2"); break;
|
||||
case 0x470: printf("DX2 Write-Back Enhanced");
|
||||
break;
|
||||
case 0x480: printf("DX4"); break;
|
||||
case 0x510: printf("510\\60 or 567\\66"); break;
|
||||
case 0x520: printf("735\\90 or 815\\100"); break;
|
||||
}
|
||||
}
|
||||
printf(" Stepping=%d\n", cpu_id & 0xf);
|
||||
|
||||
if (!strcmp(cpu_vendor, "GenuineIntel")) {
|
||||
printf(" Stepping=%d", cpu_id & 0xf);
|
||||
if (cpu_high > 0) {
|
||||
printf(" Features=0x%lx",cpu_feature);
|
||||
if (cpu_feature & 0x1) printf(" FPU");
|
||||
if (cpu_feature & 0x2) printf(" VME");
|
||||
if (cpu_feature & 0x8) printf(" PSE");
|
||||
if (cpu_feature & 0x80) printf(" MCE");
|
||||
if (cpu_feature & 0x100) printf(" CX8");
|
||||
if (cpu_feature & 0x200) printf(" APIC");
|
||||
printf("\n");
|
||||
#define FEATUREFMT "\020\001FPU\002VME\003PSE\004MCE\005CX8\006APIC"
|
||||
printf(" Features=0x%b", cpu_feature, FEATUREFMT);
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
/*
|
||||
* Now that we have told the user what they have,
|
||||
|
@ -502,6 +542,7 @@ identifycpu()
|
|||
default:
|
||||
break;
|
||||
}
|
||||
dev_attach(&kdc_cpu0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
* on the understanding that TFS is not responsible for the correct
|
||||
* functioning of this software in any circumstances.
|
||||
*
|
||||
* $Id: aha1542.c,v 1.41 1995/01/31 11:41:36 dufault Exp $
|
||||
* $Id: aha1542.c,v 1.42 1995/03/28 07:55:22 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -361,8 +361,9 @@ static struct kern_devconf kdc_aha[NAHA] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* host adapters are always busy */
|
||||
"Adaptec 154x-series SCSI host adapter"
|
||||
DC_UNCONFIGURED, /* always start out here */
|
||||
"Adaptec 154x-series SCSI host adapter",
|
||||
DC_CLS_MISC /* SCSI host adapters aren't special */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -573,6 +574,11 @@ ahaprobe(dev)
|
|||
bzero(aha, sizeof(struct aha_data));
|
||||
ahadata[unit] = aha;
|
||||
aha->aha_base = dev->id_iobase;
|
||||
|
||||
#ifndef DEV_LKM
|
||||
aha_registerdev(dev);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Try initialise a unit at this location
|
||||
* sets up dma and bus speed, loads aha->aha_int
|
||||
|
@ -628,7 +634,7 @@ ahaattach(dev)
|
|||
/*
|
||||
* ask the adapter what subunits are present
|
||||
*/
|
||||
aha_registerdev(dev);
|
||||
kdc_aha[unit].kdc_state = DC_BUSY; /* host adapters are always busy */
|
||||
scsi_attachdevs(&(aha->sc_link));
|
||||
|
||||
return 1;
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
*
|
||||
* commenced: Sun Sep 27 18:14:01 PDT 1992
|
||||
*
|
||||
* $Id: aha1742.c,v 1.29 1995/03/23 09:00:18 rgrimes Exp $
|
||||
* $Id: aha1742.c,v 1.30 1995/03/28 07:55:23 bde Exp $
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -325,8 +325,9 @@ static struct kern_devconf kdc_ahb[NAHB] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* host adapters are always ``in use'' */
|
||||
"Adaptec 174x-series SCSI host adapter"
|
||||
DC_UNCONFIGURED, /* always start out here in probe */
|
||||
"Adaptec 174x-series SCSI host adapter",
|
||||
DC_CLS_MISC /* host adapters aren't special */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -506,6 +507,10 @@ ahbprobe1(dev)
|
|||
bzero(ahb, sizeof(struct ahb_data));
|
||||
ahbdata[unit] = ahb;
|
||||
ahb->baseport = dev->id_iobase;
|
||||
#ifndef DEV_LKM
|
||||
ahb_registerdev(dev);
|
||||
#endif /* DEV_LKM */
|
||||
|
||||
/*
|
||||
* Try initialise a unit at this location
|
||||
* sets up dma and bus speed, loads ahb->vect
|
||||
|
@ -543,7 +548,7 @@ ahb_attach(dev)
|
|||
ahb->sc_link.adapter = &ahb_switch;
|
||||
ahb->sc_link.device = &ahb_dev;
|
||||
|
||||
ahb_registerdev(dev);
|
||||
kdc_ahb[unit].kdc_state = DC_BUSY; /* host adapters are always busy */
|
||||
/*
|
||||
* ask the adapter what subunits are present
|
||||
*/
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
* $Id: aic6360.c,v 1.6 1995/03/01 22:30:47 dufault Exp $
|
||||
* $Id: aic6360.c,v 1.7 1995/03/28 07:55:24 bde Exp $
|
||||
*
|
||||
* Acknowledgements: Many of the algorithms used in this driver are
|
||||
* inspired by the work of Julian Elischer (julian@tfs.com) and
|
||||
|
@ -756,8 +756,9 @@ static struct kern_devconf kdc_aic[NAIC] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* host adapters are always busy */
|
||||
"Adaptec AIC-6360 SCSI host adapter chipset"
|
||||
DC_UNCONFIGURED, /* start out in unconfig state */
|
||||
"Adaptec AIC-6360 SCSI host adapter chipset",
|
||||
DC_CLS_MISC /* host adapters aren't special */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -818,6 +819,9 @@ aicprobe(parent, self, aux)
|
|||
bzero(aic, sizeof(struct aic_data));
|
||||
aicdata[unit] = aic;
|
||||
aic->iobase = dev->id_iobase;
|
||||
#ifndef DEV_LKM
|
||||
aic_registerdev(dev);
|
||||
#endif /* not DEV_LKM */
|
||||
|
||||
if (aic_find(aic) != 0) {
|
||||
aicdata[unit] = NULL;
|
||||
|
@ -825,7 +829,6 @@ aicprobe(parent, self, aux)
|
|||
return 0;
|
||||
}
|
||||
aicunit++;
|
||||
aic_registerdev(dev);
|
||||
return 0x20;
|
||||
#else
|
||||
#ifdef NEWCONFIG
|
||||
|
@ -963,6 +966,7 @@ aicattach(parent, self, aux)
|
|||
/*
|
||||
* ask the adapter what subunits are present
|
||||
*/
|
||||
kdc_aic[unit].kdc_state = DC_BUSY; /* host adapters are always busy */
|
||||
scsi_attachdevs(&(aic->sc_link));
|
||||
|
||||
return 1;
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
* 4. Modifications may be freely made to this file if the above conditions
|
||||
* are met.
|
||||
*
|
||||
* $Id: aic7770.c,v 1.11 1995/03/07 08:58:22 gibbs Exp $
|
||||
* $Id: aic7770.c,v 1.12 1995/03/31 13:36:57 gibbs Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
|
@ -65,8 +65,9 @@ static struct kern_devconf kdc_aic7770[NAHC] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* host adapters are always ``in use'' */
|
||||
"Adaptec aic7770 based SCSI host adapter"
|
||||
DC_UNCONFIGURED, /* always start out here */
|
||||
"Adaptec aic7770 based SCSI host adapter",
|
||||
DC_CLS_MISC /* host adapters aren't special */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -120,6 +121,9 @@ aic7770probe(struct isa_device *dev)
|
|||
if ( sig_id[3] == valid_ids[i].id ) {
|
||||
int unit = dev->id_unit;
|
||||
dev->id_iobase = port;
|
||||
#ifndef DEV_LKM
|
||||
aic7770_registerdev(dev);
|
||||
#endif /* DEV_LKM */
|
||||
if(ahcprobe(unit, port,
|
||||
valid_ids[i].type)){
|
||||
/*
|
||||
|
@ -144,7 +148,7 @@ aic7770_attach(dev)
|
|||
struct isa_device *dev;
|
||||
{
|
||||
int unit = dev->id_unit;
|
||||
aic7770_registerdev(dev);
|
||||
kdc_aic7770[unit].kdc_state = DC_BUSY; /* host adapters always busy */
|
||||
return ahc_attach(unit);
|
||||
}
|
||||
|
||||
|
|
|
@ -65,6 +65,17 @@
|
|||
|
||||
#include "b004.h"
|
||||
|
||||
static struct kern_devconf kdc_bqu[NBQU] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"bqu", 0, { MDDT_ISA, 0 },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* always start here */
|
||||
"B004-compatible Transputer board",
|
||||
DC_CLS_MISC
|
||||
} };
|
||||
|
||||
#define IOCTL_OUT(arg, ret) *(int*)arg = ret
|
||||
|
||||
#define B004PRI (PZERO+8)
|
||||
|
@ -433,6 +444,7 @@ bquopen(dev_t dev, int flag)
|
|||
return EBUSY;
|
||||
}
|
||||
B004_F(dev_min) |= B004_BUSY;
|
||||
kdc_bqu[dev_min].kdc_state = DC_BUSY;
|
||||
B004_TIMEOUT(dev_min) = 0;
|
||||
DEB(printf( "B004 opened, minor = %d.\n", dev_min );)
|
||||
return 0;
|
||||
|
@ -453,6 +465,7 @@ bquclose(dev_t dev, int flag)
|
|||
return ENXIO;
|
||||
}
|
||||
B004_F(dev_min) &= ~B004_BUSY;
|
||||
kdc_bqu[dev_min].kdc_state = DC_IDLE;
|
||||
DEB(printf("B004(%d) released.\n", dev_min );)
|
||||
return 0;
|
||||
}
|
||||
|
@ -518,16 +531,6 @@ bquioctl(dev_t dev, int cmd, caddr_t addr, int flag, struct proc *p)
|
|||
} /* bquioctl() */
|
||||
|
||||
|
||||
static struct kern_devconf kdc_bqu[NBQU] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"bqu", 0, { MDDT_ISA, 0 },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNKNOWN, /* we don't support this yet */
|
||||
"B004-compatible Transputer board"
|
||||
} };
|
||||
|
||||
static inline void
|
||||
bqu_registerdev(struct isa_device *id)
|
||||
{
|
||||
|
@ -541,7 +544,7 @@ bqu_registerdev(struct isa_device *id)
|
|||
int
|
||||
bquattach(struct isa_device *idp)
|
||||
{
|
||||
bqu_registerdev(idp);
|
||||
kdc_bqu[idp->id_unit].kdc_state = DC_IDLE;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -573,6 +576,10 @@ printf("bquprobe::\nIOBASE 0x%x\nIRQ %d\nDRQ %d\nMSIZE %d\nUNIT %d\nFLAGS x0%x\n
|
|||
if(dev_min >= NBQU) return (0); /* No more descriptors */
|
||||
if ((idp->id_iobase < 0x100) || (idp->id_iobase >= 0x1000))
|
||||
idp->id_iobase=0; /* Dangerous isa addres ) */
|
||||
#ifndef DEV_LKM
|
||||
bqu_registerdev(idp);
|
||||
#endif /* not DEV_LKM */
|
||||
|
||||
for (test = 0; (test < B004_CHANCE); test++) {
|
||||
if((idp->id_iobase==0)&&((!b004_base_addresses[test])||
|
||||
detected(b004_base_addresses[test])))
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
* on the understanding that TFS is not responsible for the correct
|
||||
* functioning of this software in any circumstances.
|
||||
*
|
||||
* $Id: bt742a.c,v 1.30 1994/11/08 02:53:42 jkh Exp $
|
||||
* $Id: bt742a.c,v 1.31 1995/03/16 18:11:56 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -446,8 +446,9 @@ static struct kern_devconf kdc_bt[NBT] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* host adapters are always busy */
|
||||
"Buslogic 742-compatible SCSI host adapter"
|
||||
DC_UNCONFIGURED, /* always start here */
|
||||
"Buslogic 742-compatible SCSI host adapter",
|
||||
DC_CLS_MISC /* host adapters aren't special */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -643,6 +644,10 @@ btprobe(dev)
|
|||
btdata[unit] = bt;
|
||||
bt->bt_base = dev->id_iobase;
|
||||
|
||||
#ifndef DEV_LKM
|
||||
bt_registerdev(dev);
|
||||
#endif /* not DEV_LKM */
|
||||
|
||||
/*
|
||||
* Try initialise a unit at this location
|
||||
* sets up dma and bus speed, loads bt->bt_int
|
||||
|
@ -683,7 +688,8 @@ btattach(dev)
|
|||
bt->sc_link.device = &bt_dev;
|
||||
bt->sc_link.flags = SDEV_BOUNCE;
|
||||
|
||||
bt_registerdev(dev);
|
||||
kdc_bt[unit].kdc_state = DC_BUSY; /* host adapters are always busy */
|
||||
|
||||
/*
|
||||
* ask the adapter what subunits are present
|
||||
*/
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
* of this software, nor does the author assume any responsibility
|
||||
* for damages incurred with its use.
|
||||
*
|
||||
* $Id: ctx.c,v 1.3 1994/10/21 01:19:05 wollman Exp $
|
||||
* $Id: ctx.c,v 1.4 1994/10/23 21:27:11 wollman Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -160,8 +160,9 @@ static struct kern_devconf kdc_ctx[NCTX] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNKNOWN, /* not supported */
|
||||
"CORTEX-I frame grabber"
|
||||
DC_UNCONFIGURED, /* always start out here */
|
||||
"CORTEX-I frame grabber",
|
||||
DC_CLS_MISC
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -179,6 +180,8 @@ ctxprobe(struct isa_device * devp)
|
|||
{
|
||||
int status;
|
||||
|
||||
ctx_registerdev(devp);
|
||||
|
||||
if (inb(devp->id_iobase) == 0xff) /* 0xff only if board absent */
|
||||
status = 0;
|
||||
else
|
||||
|
@ -198,7 +201,7 @@ ctxattach(struct isa_device * devp)
|
|||
sr->iobase = devp->id_iobase;
|
||||
sr->maddr = devp->id_maddr;
|
||||
sr->msize = devp->id_msize;
|
||||
ctx_registerdev(devp);
|
||||
kdc_ctx[devp->id_unit].kdc_state = DC_IDLE;
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
@ -227,6 +230,7 @@ ctxopen(dev_t dev, int flag)
|
|||
return (ENOMEM);
|
||||
|
||||
sr->flag = OPEN;
|
||||
kdc_ctx[unit].kdc_state = DC_BUSY;
|
||||
|
||||
/*
|
||||
Set up the shadow registers. We don't actually write these
|
||||
|
@ -264,6 +268,7 @@ ctxclose(dev_t dev, int flag)
|
|||
|
||||
unit = UNIT(minor(dev));
|
||||
ctx_sr[unit].flag = 0;
|
||||
kdc_ctx[unit].kdc_state = DC_IDLE;
|
||||
free(ctx_sr[unit].lutp, M_DEVBUF);
|
||||
ctx_sr[unit].lutp = NULL;
|
||||
return (0);
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
|
||||
* $Id: fd.c,v 1.55 1995/03/26 19:28:18 rgrimes Exp $
|
||||
* $Id: fd.c,v 1.56 1995/04/06 07:20:15 rgrimes Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -101,7 +101,8 @@ static struct kern_devconf kdc_fd[NFD] = { {
|
|||
0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"floppy disk"
|
||||
"floppy disk",
|
||||
DC_CLS_DISK /* class */
|
||||
} };
|
||||
|
||||
struct kern_devconf kdc_fdc[NFDC] = { {
|
||||
|
@ -111,7 +112,8 @@ struct kern_devconf kdc_fdc[NFDC] = { {
|
|||
0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"floppy disk/tape controller"
|
||||
"floppy disk/tape controller",
|
||||
DC_CLS_MISC /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -522,6 +524,10 @@ fdprobe(struct isa_device *dev)
|
|||
fdcdevs[fdcu] = dev;
|
||||
fdc_data[fdcu].baseport = dev->id_iobase;
|
||||
|
||||
#ifndef DEV_LKM
|
||||
fdc_registerdev(dev);
|
||||
#endif
|
||||
|
||||
/* First - lets reset the floppy controller */
|
||||
outb(dev->id_iobase+FDOUT, 0);
|
||||
DELAY(100);
|
||||
|
@ -553,8 +559,6 @@ fdattach(struct isa_device *dev)
|
|||
struct isa_device *fdup;
|
||||
int ic_type = 0;
|
||||
|
||||
fdc_registerdev(dev);
|
||||
|
||||
fdc->fdcu = fdcu;
|
||||
fdc->flags |= FDC_ATTACHED;
|
||||
fdc->dmachan = dev->id_drq;
|
||||
|
@ -619,14 +623,20 @@ fdattach(struct isa_device *dev)
|
|||
case 0x80:
|
||||
printf("NEC 765\n");
|
||||
fdc->fdct = FDC_NE765;
|
||||
kdc_fdc[fdcu].kdc_description =
|
||||
"NEC 765 floppy disk/tape controller";
|
||||
break;
|
||||
case 0x81:
|
||||
printf("Intel 82077\n");
|
||||
fdc->fdct = FDC_I82077;
|
||||
kdc_fdc[fdcu].kdc_description =
|
||||
"Intel 82077 floppy disk/tape controller";
|
||||
break;
|
||||
case 0x90:
|
||||
printf("NEC 72065B\n");
|
||||
fdc->fdct = FDC_NE72065;
|
||||
kdc_fdc[fdcu].kdc_description =
|
||||
"NEC 72065B floppy disk/tape controller";
|
||||
break;
|
||||
default:
|
||||
printf("unknown IC type %02x\n", ic_type);
|
||||
|
@ -685,33 +695,43 @@ fdattach(struct isa_device *dev)
|
|||
fd->options = 0;
|
||||
printf("fd%d: ", fdsu, fdu);
|
||||
|
||||
fd_registerdev(fdcu, fdu);
|
||||
switch (fdt) {
|
||||
case RTCFDT_12M:
|
||||
printf("1.2MB 5.25in\n");
|
||||
fd->type = FD_1200;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"1.2MB (1200K) 5.25in floppy disk drive";
|
||||
break;
|
||||
case RTCFDT_144M:
|
||||
printf("1.44MB 3.5in\n");
|
||||
fd->type = FD_1440;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"1.44MB (1440K) 3.5in floppy disk drive";
|
||||
break;
|
||||
case RTCFDT_288M:
|
||||
printf("2.88MB 3.5in - 1.44MB mode\n");
|
||||
fd->type = FD_1440;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"2.88MB (2880K) 3.5in floppy disk drive in 1.44 mode";
|
||||
break;
|
||||
case RTCFDT_360K:
|
||||
printf("360KB 5.25in\n");
|
||||
fd->type = FD_360;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"360KB 5.25in floppy disk drive";
|
||||
break;
|
||||
case RTCFDT_720K:
|
||||
printf("720KB 3.5in\n");
|
||||
fd->type = FD_720;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"720KB 3.5in floppy disk drive";
|
||||
break;
|
||||
default:
|
||||
printf("unknown\n");
|
||||
fd->type = NO_TYPE;
|
||||
break;
|
||||
}
|
||||
fd_registerdev(fdcu, fdu);
|
||||
kdc_fd[fdu].kdc_state = DC_IDLE;
|
||||
if (dk_ndrive < DK_NDRIVE) {
|
||||
sprintf(dk_names[dk_ndrive], "fd%d", fdu);
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* ft.c - QIC-40/80 floppy tape driver
|
||||
* $Id: ft.c,v 1.18 1995/04/06 07:20:16 rgrimes Exp $
|
||||
* $Id: ft.c,v 1.19 1995/04/09 06:23:12 rgrimes Exp $
|
||||
*
|
||||
* 01/19/95 ++sg
|
||||
* Cleaned up recalibrate/seek code at attach time for FreeBSD 2.x.
|
||||
|
@ -408,8 +408,9 @@ static struct kern_devconf kdc_ft[NFT] = { {
|
|||
ft_externalize, 0, 0, DISK_EXTERNALLEN,
|
||||
0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNKNOWN, /* state */
|
||||
"floppy tape"
|
||||
DC_IDLE, /* state */
|
||||
"floppy tape",
|
||||
DC_CLS_TAPE /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -512,43 +513,55 @@ ftattach(isadev, fdup, unithasfd)
|
|||
tape_end(ftu);
|
||||
if (ft->type != NO_TYPE) {
|
||||
fdc->flags |= FDC_HASFTAPE;
|
||||
ft_registerdev(fdcu, ftu);
|
||||
switch(hw.hw_make) {
|
||||
case 0x0000:
|
||||
if (ft->type == FT_COLORADO)
|
||||
if (ft->type == FT_COLORADO) {
|
||||
manu = "Colorado";
|
||||
else if (ft->type == FT_INSIGHT)
|
||||
kdc_ft[ftu].kdc_description = "Colorado floppy tape";
|
||||
} else if (ft->type == FT_INSIGHT) {
|
||||
manu = "Insight";
|
||||
else if (ft->type == FT_MOUNTAIN && hw.hw_model == 0x05)
|
||||
kdc_ft[ftu].kdc_description = "Insight floppy tape";
|
||||
} else if (ft->type == FT_MOUNTAIN && hw.hw_model == 0x05) {
|
||||
manu = "Archive";
|
||||
else if (ft->type == FT_MOUNTAIN)
|
||||
kdc_ft[ftu].kdc_description = "Archive floppy tape";
|
||||
} else if (ft->type == FT_MOUNTAIN) {
|
||||
manu = "Mountain";
|
||||
else
|
||||
kdc_ft[ftu].kdc_description = "Mountain floppy tape";
|
||||
} else {
|
||||
manu = "Unknown";
|
||||
}
|
||||
break;
|
||||
case 0x0001:
|
||||
manu = "Colorado";
|
||||
kdc_ft[ftu].kdc_description = "Colorado floppy tape";
|
||||
break;
|
||||
case 0x0005:
|
||||
if (hw.hw_model >= 0x09)
|
||||
if (hw.hw_model >= 0x09) {
|
||||
manu = "Conner";
|
||||
else
|
||||
kdc_ft[ftu].kdc_description = "Conner floppy tape";
|
||||
} else {
|
||||
manu = "Archive";
|
||||
kdc_ft[ftu].kdc_description = "Archive floppy tape";
|
||||
}
|
||||
break;
|
||||
case 0x0006:
|
||||
manu = "Mountain";
|
||||
kdc_ft[ftu].kdc_description = "Mountain floppy tape";
|
||||
break;
|
||||
case 0x0007:
|
||||
manu = "Wangtek";
|
||||
kdc_ft[ftu].kdc_description = "Wangtek floppy tape";
|
||||
break;
|
||||
case 0x0222:
|
||||
manu = "IOMega";
|
||||
kdc_ft[ftu].kdc_description = "IOMega floppy tape";
|
||||
break;
|
||||
default:
|
||||
manu = "Unknown";
|
||||
break;
|
||||
}
|
||||
printf("ft%d: %s tape\n", fdup->id_unit, manu);
|
||||
ft_registerdev(fdcu, ftu);
|
||||
}
|
||||
ft->attaching = 0;
|
||||
return(ft->type);
|
||||
|
@ -2078,6 +2091,7 @@ ftopen(dev_t dev, int arg2) {
|
|||
return(ENODEV);
|
||||
fdc->fdu = ftu;
|
||||
fdc->flags |= FDC_TAPE_BUSY;
|
||||
kdc_ft[ftu].kdc_state = DC_BUSY;
|
||||
return(set_fdcmode(dev, FDC_TAPE_MODE)); /* try to switch to tape */
|
||||
}
|
||||
|
||||
|
@ -2099,6 +2113,7 @@ ftclose(dev_t dev, int flags)
|
|||
tape_cmd(ftu, QC_PRIMARY);
|
||||
tape_state(ftu, 0, QS_READY, 60);
|
||||
ftreq_rewind(ftu);
|
||||
kdc_ft[ftu].kdc_state = DC_IDLE;
|
||||
return(set_fdcmode(dev, FDC_DISK_MODE)); /* Otherwise, close tape */
|
||||
}
|
||||
|
||||
|
|
|
@ -128,7 +128,7 @@ static char cxdescription [80];
|
|||
struct kern_devconf kdc_cx [NCX] = { {
|
||||
0, 0, 0, "cx", 0, { MDDT_ISA, 0, "net" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN, &kdc_isa0, 0,
|
||||
DC_IDLE, cxdescription,
|
||||
DC_IDLE, cxdescription, DC_CLS_SERIAL
|
||||
} };
|
||||
#endif
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
* the SMC Elite Ultra (8216), the 3Com 3c503, the NE1000 and NE2000,
|
||||
* and a variety of similar clones.
|
||||
*
|
||||
* $Id: if_ed.c,v 1.67 1995/02/26 20:03:53 davidg Exp $
|
||||
* $Id: if_ed.c,v 1.68 1995/03/16 18:12:01 bde Exp $
|
||||
*/
|
||||
|
||||
#include "ed.h"
|
||||
|
@ -180,8 +180,9 @@ static struct kern_devconf kdc_ed_template = {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED,
|
||||
"" /* description */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"", /* description */
|
||||
DC_CLS_NETIF /* class */
|
||||
};
|
||||
|
||||
static inline void
|
||||
|
@ -211,7 +212,9 @@ ed_probe(isa_dev)
|
|||
{
|
||||
int nports;
|
||||
|
||||
#ifndef DEV_LKM
|
||||
ed_registerdev(isa_dev, "Ethernet adapter");
|
||||
#endif /* not DEV_LKM */
|
||||
|
||||
nports = ed_probe_WD80x3(isa_dev);
|
||||
if (nports)
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: if_eg.c,v 1.1 1995/04/08 09:39:34 phk Exp $
|
||||
* $Id: if_eg.c,v 1.2 1995/04/12 07:50:44 phk Exp $
|
||||
*/
|
||||
|
||||
/* To do:
|
||||
|
@ -125,7 +125,8 @@ static struct kern_devconf kdc_eg_template = {
|
|||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED,
|
||||
"" /* description */
|
||||
"", /* description */
|
||||
DC_CLS_NETIF /* class */
|
||||
};
|
||||
|
||||
static inline void
|
||||
|
@ -306,7 +307,9 @@ egprobe(struct isa_device * id)
|
|||
struct eg_softc *sc = &eg_softc[id->id_unit];
|
||||
int i;
|
||||
|
||||
#ifndef DEV_LKM
|
||||
eg_registerdev(id, "Ethernet adapter");
|
||||
#endif /* not DEV_LKM */
|
||||
|
||||
if (id->id_iobase & ~0x07f0 != 0) {
|
||||
dprintf(("eg#: Weird iobase %x\n", id->id_iobase));
|
||||
|
@ -390,6 +393,8 @@ egattach (struct isa_device *id)
|
|||
ether_sprintf(sc->sc_arpcom.ac_enaddr),
|
||||
sc->eg_rom_major, sc->eg_rom_minor, sc->eg_ram);
|
||||
|
||||
sc->kdc.kdc_description = "Ethernet adapter: 3Com 3C505";
|
||||
|
||||
sc->eg_pcb[0] = EG_CMD_SETEADDR; /* Set station address */
|
||||
if (egwritePCB(sc) != 0) {
|
||||
dprintf(("eg#: write error2\n"));
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
* Questions, comments, bug reports and fixes to kimmel@cs.umass.edu.
|
||||
*
|
||||
* $Id: if_el.c,v 1.10 1994/12/22 21:56:06 wollman Exp $
|
||||
* $Id: if_el.c,v 1.11 1995/03/28 07:55:29 bde Exp $
|
||||
*/
|
||||
/* Except of course for the portions of code lifted from other FreeBSD
|
||||
* drivers (mainly elread, elget and el_ioctl)
|
||||
|
@ -106,8 +106,9 @@ static struct kern_devconf kdc_el[NEL] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* network interfaces are always busy */
|
||||
"3Com 3C501 Ethernet adapter"
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"Ethernet adapter: 3Com 3C501",
|
||||
DC_CLS_NETIF /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -133,6 +134,10 @@ int el_probe(struct isa_device *idev)
|
|||
sc->el_base = idev->id_iobase;
|
||||
base = sc->el_base;
|
||||
|
||||
#ifndef DEV_LKM
|
||||
el_registerdev(idev);
|
||||
#endif
|
||||
|
||||
/* First check the base */
|
||||
if((base < 0x280) || (base > 0x3f0)) {
|
||||
printf("el%d: ioaddr must be between 0x280 and 0x3f0\n",
|
||||
|
@ -212,7 +217,7 @@ int el_attach(struct isa_device *idev)
|
|||
/* Now we can attach the interface */
|
||||
dprintf(("Attaching interface...\n"));
|
||||
if_attach(ifp);
|
||||
el_registerdev(idev);
|
||||
kdc_el[idev->id_unit].kdc_state = DC_BUSY;
|
||||
|
||||
/* Put the station address in the ifa address list's AF_LINK
|
||||
* entry, if any.
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
*/
|
||||
|
||||
/*
|
||||
* $Id: if_ep.c,v 1.13 1995/04/10 07:54:34 root Exp root $
|
||||
* $Id: if_ep.c,v 1.25 1995/04/10 21:24:58 jkh Exp $
|
||||
*
|
||||
* Promiscuous mode added and interrupt logic slightly changed
|
||||
* to reduce the number of adapter failures. Transceiver select
|
||||
|
@ -132,13 +132,14 @@ struct isa_driver epdriver = {
|
|||
};
|
||||
|
||||
static struct kern_devconf kdc_ep[NEP] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"ep", 0, { MDDT_ISA, 0, "net" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* network interfaces are always ``open'' */
|
||||
"3Com 3C509 Ethernet adapter"
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"3Com 3C509 Ethernet adapter",
|
||||
DC_CLS_NETIF /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -305,6 +306,8 @@ epprobe(is)
|
|||
u_short k;
|
||||
int i;
|
||||
|
||||
ep_registerdev(is);
|
||||
|
||||
if (!ep_look_for_board_at(is))
|
||||
return (0);
|
||||
/*
|
||||
|
@ -429,7 +432,7 @@ epattach(is)
|
|||
ifp->if_timer=1;
|
||||
|
||||
if_attach(ifp);
|
||||
ep_registerdev(is);
|
||||
kdc_ep[is->id_unit].kdc_state = DC_BUSY;
|
||||
|
||||
/*
|
||||
* Fill the hardware address into ifa_addr if we find an AF_LINK entry.
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: if_ie.c,v 1.21 1995/03/19 14:28:45 davidg Exp $
|
||||
* $Id: if_ie.c,v 1.22 1995/03/28 07:55:31 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -314,18 +314,18 @@ static struct kern_devconf kdc_ie[NIE] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* network interfaces are always ``busy'' */
|
||||
""
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"Ethernet adapter", /* description */
|
||||
DC_CLS_NETIF /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
ie_registerdev(struct isa_device *id, const char *descr)
|
||||
ie_registerdev(struct isa_device *id)
|
||||
{
|
||||
if(id->id_unit)
|
||||
kdc_ie[id->id_unit] = kdc_ie[0];
|
||||
kdc_ie[id->id_unit].kdc_unit = id->id_unit;
|
||||
kdc_ie[id->id_unit].kdc_isa = id;
|
||||
kdc_ie[id->id_unit].kdc_description = descr;
|
||||
dev_attach(&kdc_ie[id->id_unit]);
|
||||
}
|
||||
|
||||
|
@ -335,6 +335,8 @@ int ieprobe(dvp)
|
|||
{
|
||||
int ret;
|
||||
|
||||
ie_registerdev(dvp);
|
||||
|
||||
ret = sl_probe(dvp);
|
||||
if(!ret) ret = el_probe(dvp);
|
||||
if(!ret) ret = ni_probe(dvp);
|
||||
|
@ -591,7 +593,7 @@ ieattach(dvp)
|
|||
#endif
|
||||
|
||||
if_attach(ifp);
|
||||
ie_registerdev(dvp, ie_hardware_names[ie_softc[unit].hard_type]);
|
||||
kdc_ie[unit].kdc_description = ie_hardware_names[ie_softc[unit].hard_type];
|
||||
|
||||
{
|
||||
struct ifaddr *ifa = ifp->if_addrlist;
|
||||
|
|
|
@ -21,50 +21,7 @@
|
|||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: if_le.c,v 1.12 1994/12/22 21:56:11 wollman Exp $
|
||||
*
|
||||
* $Log: if_le.c,v $
|
||||
* Revision 1.12 1994/12/22 21:56:11 wollman
|
||||
* Move ARP interface initialization into if_ether.c:arp_ifinit().
|
||||
*
|
||||
* Revision 1.10 1994/11/24 14:29:24 davidg
|
||||
* Moved conversion of ether_type to host byte order out of ethernet drivers
|
||||
* and into ether_input(). It was silly to have bpf want this one way and
|
||||
* ether_input want it another way. Ripped out trailer support from the few
|
||||
* remaining drivers that still had it.
|
||||
*
|
||||
* Revision 1.9 1994/10/23 21:27:22 wollman
|
||||
* Finished device configuration database work for all ISA devices (except `ze')
|
||||
* and all SCSI devices (except that it's not done quite the way I want). New
|
||||
* information added includes:
|
||||
*
|
||||
* - A text description of the device
|
||||
* - A ``state''---unknown, unconfigured, idle, or busy
|
||||
* - A generic parent device (with support in the m.i. code)
|
||||
* - An interrupt mask type field (which will hopefully go away) so that
|
||||
* . ``doconfig'' can be written
|
||||
*
|
||||
* This requires a new version of the `lsdev' program as well (next commit).
|
||||
*
|
||||
* Revision 1.8 1994/10/19 01:59:03 wollman
|
||||
* Add support for devconf to a large number of device drivers, and do
|
||||
* the right thing in dev_goawayall() when kdc_goaway is null.
|
||||
*
|
||||
* Revision 1.7 1994/10/12 11:39:37 se
|
||||
* Submitted by: Matt Thomas <thomas@lkg.dec.com>
|
||||
* #ifdef MULTICAST removed.
|
||||
*
|
||||
* Revision 1.9 1994/08/16 20:40:56 thomas
|
||||
* New README files (one per driver)
|
||||
* Minor updates to drivers (DEPCA support and add pass to attach
|
||||
* output)
|
||||
*
|
||||
* Revision 1.8 1994/08/05 20:20:54 thomas
|
||||
* Enable change log
|
||||
*
|
||||
* Revision 1.7 1994/08/05 20:20:14 thomas
|
||||
* *** empty log message ***
|
||||
*
|
||||
* $Id: if_le.c,v 1.13 1995/03/28 07:55:32 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -369,8 +326,9 @@ static struct kern_devconf kdc_le[NLE] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* network interfaces are always busy */
|
||||
"DEC EtherWorks II or EtherWorks III Ethernet adapter"
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"Ethernet adapter: DEC EtherWorks II or EtherWorks III",
|
||||
DC_CLS_NETIF /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -397,6 +355,8 @@ le_probe(
|
|||
return 0;
|
||||
}
|
||||
|
||||
le_registerdev(dvp);
|
||||
|
||||
sc->le_iobase = dvp->id_iobase;
|
||||
sc->le_membase = (u_char *) dvp->id_maddr;
|
||||
sc->le_irq = dvp->id_irq;
|
||||
|
@ -434,10 +394,7 @@ le_attach(
|
|||
ether_sprintf(sc->le_ac.ac_enaddr));
|
||||
|
||||
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_NOTRAILERS;
|
||||
#ifdef MULTICAST
|
||||
ifp->if_flags |= IFF_MULTICAST;
|
||||
#endif /* MULTICAST */
|
||||
|
||||
ifp->if_output = ether_output;
|
||||
ifp->if_ioctl = le_ioctl;
|
||||
ifp->if_type = IFT_ETHER;
|
||||
|
@ -449,7 +406,7 @@ le_attach(
|
|||
#endif
|
||||
|
||||
if_attach(ifp);
|
||||
le_registerdev(dvp);
|
||||
kdc_le[dvp->id_unit].kdc_state = DC_IDLE;
|
||||
|
||||
while (ifa && ifa->ifa_addr && ifa->ifa_addr->sa_family != AF_LINK)
|
||||
ifa = ifa->ifa_next;
|
||||
|
@ -649,7 +606,6 @@ le_ioctl(
|
|||
break;
|
||||
}
|
||||
|
||||
#ifdef MULTICAST
|
||||
case SIOCADDMULTI:
|
||||
case SIOCDELMULTI: {
|
||||
/*
|
||||
|
@ -668,14 +624,14 @@ le_ioctl(
|
|||
break;
|
||||
}
|
||||
|
||||
#endif /* MULTICAST */
|
||||
|
||||
default: {
|
||||
error = EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
splx(s);
|
||||
kdc_le[ifp->if_unit].kdc_state = (ifp->if_flags & IFF_UP)
|
||||
? DC_BUSY : DC_IDLE;
|
||||
return error;
|
||||
}
|
||||
|
||||
|
@ -745,10 +701,8 @@ static void
|
|||
le_multi_filter(
|
||||
le_softc_t *sc)
|
||||
{
|
||||
#ifdef MULTICAST
|
||||
struct ether_multistep step;
|
||||
struct ether_multi *enm;
|
||||
#endif
|
||||
#ifdef ISO
|
||||
extern char all_es_snpa[];
|
||||
#endif
|
||||
|
@ -768,7 +722,6 @@ le_multi_filter(
|
|||
le_multi_op(sc, all_es_snpa, TRUE);
|
||||
#endif
|
||||
|
||||
#ifdef MULTICAST
|
||||
ETHER_FIRST_MULTI(step, &sc->le_ac, enm);
|
||||
if (enm != NULL)
|
||||
sc->le_flags |= IFF_MULTICAST;
|
||||
|
@ -782,7 +735,6 @@ le_multi_filter(
|
|||
sc->le_flags &= ~LE_BRDCSTONLY;
|
||||
}
|
||||
sc->le_flags &= ~IFF_ALLMULTI;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -150,7 +150,8 @@ static struct kern_devconf kdc_lnc = {
|
|||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED,
|
||||
""
|
||||
"",
|
||||
DC_CLS_NETIF
|
||||
};
|
||||
|
||||
inline void
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)isa.c 7.2 (Berkeley) 5/13/91
|
||||
* $Id: isa.c,v 1.43 1995/04/04 22:48:40 ache Exp $
|
||||
* $Id: isa.c,v 1.44 1995/04/06 13:55:56 ache Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -108,14 +108,17 @@ u_int intr_mask[ICU_LEN];
|
|||
u_int* intr_mptr[ICU_LEN];
|
||||
int intr_unit[ICU_LEN];
|
||||
|
||||
extern struct kern_devconf kdc_cpu0;
|
||||
|
||||
struct kern_devconf kdc_isa0 = {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"isa", 0, { MDDT_BUS, 0 },
|
||||
0, 0, 0, BUS_EXTERNALLEN,
|
||||
0, /* no parent yet; parent should be CPU */
|
||||
&kdc_cpu0, /* parent is the CPU */
|
||||
0, /* no parentdata */
|
||||
DC_BUSY, /* busses are always busy */
|
||||
"ISA or EISA bus"
|
||||
"ISA or EISA bus",
|
||||
DC_CLS_BUS /* class */
|
||||
};
|
||||
|
||||
static inthand_t *fastintr[ICU_LEN] = {
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: unknown origin, 386BSD 0.1
|
||||
* $Id: lpt.c,v 1.26 1995/02/26 21:41:41 phk Exp $
|
||||
* $Id: lpt.c,v 1.27 1995/03/16 18:12:03 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -262,8 +262,9 @@ static struct kern_devconf kdc_lpt[NLPT] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNKNOWN, /* not supported */
|
||||
"Parallel printer adapter"
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"Parallel printer adapter",
|
||||
DC_CLS_PARALLEL | DC_CLS_NETIF /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -353,6 +354,8 @@ lptprobe(struct isa_device *dvp)
|
|||
u_char mask;
|
||||
int i;
|
||||
|
||||
lpt_registerdev(dvp);
|
||||
|
||||
/*
|
||||
* Make sure there is some way for lptopen to see that
|
||||
* the port is not configured
|
||||
|
@ -429,8 +432,7 @@ lptattach(struct isa_device *isdp)
|
|||
}
|
||||
lprintf("irq %x\n", sc->sc_irq);
|
||||
|
||||
lpt_registerdev(isdp);
|
||||
|
||||
kdc_lpt[isdp->id_unit].kdc_state = DC_IDLE;
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
@ -524,6 +526,7 @@ lptopen(dev_t dev, int flag)
|
|||
outb(port+lpt_control, sc->sc_control);
|
||||
|
||||
sc->sc_state = OPEN;
|
||||
kdc_lpt[unit].kdc_state = DC_BUSY;
|
||||
sc->sc_inbuf = geteblk(BUFSIZE);
|
||||
sc->sc_xfercnt = 0;
|
||||
splx(s);
|
||||
|
@ -579,6 +582,7 @@ lptclose(dev_t dev, int flag)
|
|||
goto end_close;
|
||||
|
||||
sc->sc_state &= ~OPEN;
|
||||
kdc_lpt[minor(dev)].kdc_state = DC_IDLE;
|
||||
|
||||
/* if the last write was interrupted, don't complete it */
|
||||
if((!(sc->sc_state & INTERRUPTED)) && (sc->sc_irq & LP_USE_IRQ))
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: mcd.c,v 1.39 1995/02/23 17:40:16 ache Exp $
|
||||
* $Id: mcd.c,v 1.40 1995/03/28 07:55:42 bde Exp $
|
||||
*/
|
||||
static char COPYRIGHT[] = "mcd-driver (C)1993 by H.Veit & B.Moore";
|
||||
|
||||
|
@ -223,8 +223,9 @@ static struct kern_devconf kdc_mcd[NMCD] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_IDLE, /* status */
|
||||
"Mitsumi CD-ROM controller" /* properly filled later */
|
||||
DC_UNCONFIGURED, /* status */
|
||||
"Mitsumi CD-ROM controller", /* properly filled later */
|
||||
DC_CLS_RDISK
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -250,7 +251,7 @@ int mcd_attach(struct isa_device *dev)
|
|||
/* wire controller for interrupts and dma */
|
||||
mcd_configure(cd);
|
||||
#endif
|
||||
mcd_registerdev(dev);
|
||||
kdc_mcd[dev->id_unit].kdc_state = DC_IDLE;
|
||||
/* name filled in probe */
|
||||
kdc_mcd[dev->id_unit].kdc_description = mcd_data[dev->id_unit].name;
|
||||
|
||||
|
@ -702,6 +703,7 @@ mcd_probe(struct isa_device *dev)
|
|||
int status;
|
||||
unsigned char stbytes[3];
|
||||
|
||||
mcd_registerdev(dev);
|
||||
mcd_data[unit].flags = MCDPROBING;
|
||||
|
||||
#ifdef NOTDEF
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
* this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*
|
||||
* $Id: mse.c,v 1.9 1994/11/08 05:41:34 jkh Exp $
|
||||
* $Id: mse.c,v 1.10 1995/03/28 07:55:44 bde Exp $
|
||||
*/
|
||||
/*
|
||||
* Driver for the Logitech and ATI Inport Bus mice for use with 386bsd and
|
||||
|
@ -181,6 +181,27 @@ struct mse_types {
|
|||
{ 0, },
|
||||
};
|
||||
|
||||
static struct kern_devconf kdc_mse[NMSE] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"mse", 0, { MDDT_ISA, 0, "tty" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"ATI or Logitech bus mouse adapter",
|
||||
DC_CLS_MISC /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
mse_registerdev(struct isa_device *id)
|
||||
{
|
||||
if(id->id_unit)
|
||||
kdc_mse[id->id_unit] = kdc_mse[0];
|
||||
kdc_mse[id->id_unit].kdc_unit = id->id_unit;
|
||||
kdc_mse[id->id_unit].kdc_isa = id;
|
||||
dev_attach(&kdc_mse[id->id_unit]);
|
||||
}
|
||||
|
||||
int
|
||||
mseprobe(idp)
|
||||
register struct isa_device *idp;
|
||||
|
@ -188,6 +209,7 @@ mseprobe(idp)
|
|||
register struct mse_softc *sc = &mse_sc[idp->id_unit];
|
||||
register int i;
|
||||
|
||||
mse_registerdev(idp);
|
||||
/*
|
||||
* Check for each mouse type in the table.
|
||||
*/
|
||||
|
@ -205,26 +227,6 @@ mseprobe(idp)
|
|||
return (0);
|
||||
}
|
||||
|
||||
static struct kern_devconf kdc_mse[NMSE] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"mse", 0, { MDDT_ISA, 0, "tty" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNKNOWN, /* not supported */
|
||||
"ATI or Logitech bus mouse adapter"
|
||||
} };
|
||||
|
||||
static inline void
|
||||
mse_registerdev(struct isa_device *id)
|
||||
{
|
||||
if(id->id_unit)
|
||||
kdc_mse[id->id_unit] = kdc_mse[0];
|
||||
kdc_mse[id->id_unit].kdc_unit = id->id_unit;
|
||||
kdc_mse[id->id_unit].kdc_isa = id;
|
||||
dev_attach(&kdc_mse[id->id_unit]);
|
||||
}
|
||||
|
||||
int
|
||||
mseattach(idp)
|
||||
struct isa_device *idp;
|
||||
|
@ -232,7 +234,7 @@ mseattach(idp)
|
|||
struct mse_softc *sc = &mse_sc[idp->id_unit];
|
||||
|
||||
sc->sc_port = idp->id_iobase;
|
||||
mse_registerdev(idp);
|
||||
kdc_mse[idp->id_unit].kdc_state = DC_IDLE;
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
@ -253,6 +255,7 @@ mseopen(dev, flag)
|
|||
if (sc->sc_flags & MSESC_OPEN)
|
||||
return (EBUSY);
|
||||
sc->sc_flags |= MSESC_OPEN;
|
||||
kdc_mse[MSE_UNIT(dev)].kdc_state = DC_BUSY;
|
||||
sc->sc_obuttons = sc->sc_buttons = 0x7;
|
||||
sc->sc_deltax = sc->sc_deltay = 0;
|
||||
sc->sc_bytesread = PROTOBYTES;
|
||||
|
@ -280,6 +283,7 @@ mseclose(dev, flag)
|
|||
s = spltty();
|
||||
(*sc->sc_disablemouse)(sc->sc_port);
|
||||
sc->sc_flags &= ~MSESC_OPEN;
|
||||
kdc_mse[MSE_UNIT(dev)].kdc_state = DC_IDLE;
|
||||
splx(s);
|
||||
return(0);
|
||||
}
|
||||
|
|
|
@ -246,6 +246,14 @@ static struct scsi_adapter nca_switch = {
|
|||
static struct scsi_device nca_dev = { NULL, NULL, NULL, NULL, "nca", 0, {0} };
|
||||
struct isa_driver ncadriver = { nca_probe, nca_attach, "nca" };
|
||||
|
||||
static char nca_description [80];
|
||||
static struct kern_devconf nca_kdc[NNCA] = {{
|
||||
0, 0, 0, "nca", 0, { MDDT_ISA, 0, "bio" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN, &kdc_isa0, 0,
|
||||
DC_UNCONFIGURED, nca_description,
|
||||
DC_CLS_MISC /* host adapters aren't special */
|
||||
}};
|
||||
|
||||
/*
|
||||
* Check if the device can be found at the port given and if so,
|
||||
* detect the type of board. Set it up ready for further work.
|
||||
|
@ -257,6 +265,12 @@ int nca_probe (struct isa_device *dev)
|
|||
adapter_t *z = &ncadata[dev->id_unit];
|
||||
int i;
|
||||
|
||||
if (dev->id_unit)
|
||||
nca_kdc[dev->id_unit] = nca_kdc[0];
|
||||
nca_kdc[dev->id_unit].kdc_unit = dev->id_unit;
|
||||
nca_kdc[dev->id_unit].kdc_isa = dev;
|
||||
dev_attach (&nca_kdc[dev->id_unit]);
|
||||
|
||||
/* Init fields used by our routines */
|
||||
z->parity = (dev->id_flags & FLAG_NOPARITY) ? 0 :
|
||||
MR_ENABLE_PARITY_CHECKING;
|
||||
|
@ -474,13 +488,6 @@ int nca_init (adapter_t *z)
|
|||
return (0);
|
||||
}
|
||||
|
||||
static char nca_description [80];
|
||||
static struct kern_devconf nca_kdc[NNCA] = {{
|
||||
0, 0, 0, "nca", 0, { MDDT_ISA, 0, "bio" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN, &kdc_isa0, 0,
|
||||
DC_BUSY, nca_description,
|
||||
}};
|
||||
|
||||
/*
|
||||
* Attach all sub-devices we can find.
|
||||
*/
|
||||
|
@ -500,13 +507,9 @@ int nca_attach (struct isa_device *dev)
|
|||
z->sc_link.device = &nca_dev;
|
||||
|
||||
/* ask the adapter what subunits are present */
|
||||
nca_kdc[unit].kdc_state = DC_BUSY;
|
||||
scsi_attachdevs (&(z->sc_link));
|
||||
|
||||
if (dev->id_unit)
|
||||
nca_kdc[dev->id_unit] = nca_kdc[0];
|
||||
nca_kdc[dev->id_unit].kdc_unit = dev->id_unit;
|
||||
nca_kdc[dev->id_unit].kdc_isa = dev;
|
||||
dev_attach (&nca_kdc[dev->id_unit]);
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)npx.c 7.2 (Berkeley) 5/12/91
|
||||
* $Id: npx.c,v 1.20 1995/02/23 17:32:38 bde Exp $
|
||||
* $Id: npx.c,v 1.21 1995/03/05 04:06:44 wpaul Exp $
|
||||
*/
|
||||
|
||||
#include "npx.h"
|
||||
|
@ -148,6 +148,30 @@ asm
|
|||
iret
|
||||
");
|
||||
|
||||
static struct kern_devconf kdc_npx[NNPX] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"npx", 0, { MDDT_ISA, 0 },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"Floating-point unit",
|
||||
DC_CLS_MISC /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
npx_registerdev(struct isa_device *id)
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_npx[unit] = kdc_npx[0];
|
||||
kdc_npx[unit].kdc_unit = unit;
|
||||
kdc_npx[unit].kdc_isa = id;
|
||||
dev_attach(&kdc_npx[unit]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Probe routine. Initialize cr0 to give correct behaviour for [f]wait
|
||||
* whether the device exists or not (XXX should be elsewhere). Set flags
|
||||
|
@ -171,6 +195,7 @@ npxprobe(dvp)
|
|||
* install suitable handlers and run with interrupts enabled so we
|
||||
* won't need to do so much here.
|
||||
*/
|
||||
npx_registerdev(dvp);
|
||||
npx_intrno = NRSVIDT + ffs(dvp->id_irq) - 1;
|
||||
save_eflags = read_eflags();
|
||||
disable_intr();
|
||||
|
@ -308,29 +333,6 @@ npxprobe1(dvp)
|
|||
return (-1);
|
||||
}
|
||||
|
||||
static struct kern_devconf kdc_npx[NNPX] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"npx", 0, { MDDT_ISA, 0 },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY,
|
||||
"Floating-point unit"
|
||||
} };
|
||||
|
||||
static inline void
|
||||
npx_registerdev(struct isa_device *id)
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_npx[unit] = kdc_npx[0];
|
||||
kdc_npx[unit].kdc_unit = unit;
|
||||
kdc_npx[unit].kdc_isa = id;
|
||||
dev_attach(&kdc_npx[unit]);
|
||||
}
|
||||
|
||||
/*
|
||||
* Attach routine - announce which it is, and wire into system
|
||||
*/
|
||||
|
@ -354,8 +356,9 @@ npxattach(dvp)
|
|||
printf("npx%d: no 387 emulator in kernel!\n", dvp->id_unit);
|
||||
#endif
|
||||
npxinit(__INITIAL_NPXCW__);
|
||||
if (npx_exists)
|
||||
npx_registerdev(dvp);
|
||||
if (npx_exists) {
|
||||
kdc_npx[dvp->id_unit].kdc_state = DC_BUSY;
|
||||
}
|
||||
return (1); /* XXX unused */
|
||||
}
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
*/
|
||||
|
||||
|
||||
/* $Id: scd.c,v 1.1 1995/03/24 18:33:00 jkh Exp $ */
|
||||
/* $Id: scd.c,v 1.2 1995/03/25 18:14:37 bde Exp $ */
|
||||
|
||||
/* Please send any comments to micke@dynas.se */
|
||||
|
||||
|
@ -194,8 +194,9 @@ static struct kern_devconf kdc_scd[NSCD] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_IDLE, /* status */
|
||||
"Sony CD-ROM drive" /* properly filled later */
|
||||
DC_UNCONFIGURED, /* status */
|
||||
"Sony CD-ROM drive", /* properly filled later */
|
||||
DC_CLS_RDISK /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -215,7 +216,7 @@ int scd_attach(struct isa_device *dev)
|
|||
|
||||
cd->iobase = dev->id_iobase; /* Already set by probe, but ... */
|
||||
|
||||
scd_registerdev(dev);
|
||||
kdc_scd[dev->id_unit].kdc_state = DC_IDLE;
|
||||
/* name filled in probe */
|
||||
kdc_scd[dev->id_unit].kdc_description = scd_data[dev->id_unit].name;
|
||||
printf("scd%d: <%s>\n", dev->id_unit, scd_data[dev->id_unit].name);
|
||||
|
@ -709,6 +710,8 @@ scd_probe(struct isa_device *dev)
|
|||
|
||||
bzero(&drive_config, sizeof(drive_config));
|
||||
|
||||
scd_registerdev(dev);
|
||||
|
||||
again:
|
||||
/* Reset drive */
|
||||
write_control(dev->id_iobase, CBIT_RESET_DRIVE);
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
* delays, device flags, polling mode, generic cleanup
|
||||
* vak 950115 Added request-sense ops
|
||||
*
|
||||
* $Id: seagate.c,v 1.5 1995/01/10 11:41:28 jkh Exp $
|
||||
* $Id: seagate.c,v 1.6 1995/03/28 07:55:50 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -340,6 +340,14 @@ static struct scsi_adapter sea_switch = {
|
|||
static struct scsi_device sea_dev = { NULL, NULL, NULL, NULL, "sea", 0, {0} };
|
||||
struct isa_driver seadriver = { sea_probe, sea_attach, "sea" };
|
||||
|
||||
static char sea_description [80]; /* XXX BOGUS!!! */
|
||||
static struct kern_devconf sea_kdc[NSEA] = {{
|
||||
0, 0, 0, "sea", 0, { MDDT_ISA, 0, "bio" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN, &kdc_isa0, 0,
|
||||
DC_UNCONFIGURED, sea_description,
|
||||
DC_CLS_MISC /* host adapters aren't special */
|
||||
} };
|
||||
|
||||
/*
|
||||
* Check if the device can be found at the port given and if so,
|
||||
* detect the type of board. Set it up ready for further work.
|
||||
|
@ -354,6 +362,12 @@ int sea_probe (struct isa_device *dev)
|
|||
};
|
||||
int i;
|
||||
|
||||
if (dev->id_unit)
|
||||
sea_kdc[dev->id_unit] = sea_kdc[0];
|
||||
sea_kdc[dev->id_unit].kdc_unit = dev->id_unit;
|
||||
sea_kdc[dev->id_unit].kdc_isa = dev;
|
||||
dev_attach (&sea_kdc[dev->id_unit]);
|
||||
|
||||
/* Init fields used by our routines */
|
||||
z->parity = (dev->id_flags & FLAG_NOPARITY) ? 0 : CMD_EN_PARITY;
|
||||
z->scsi_addr = HOST_SCSI_ADDR;
|
||||
|
@ -498,13 +512,6 @@ int sea_init (adapter_t *z)
|
|||
return (0);
|
||||
}
|
||||
|
||||
static char sea_description [80];
|
||||
static struct kern_devconf sea_kdc[NSEA] = {{
|
||||
0, 0, 0, "sea", 0, { MDDT_ISA, 0, "bio" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN, &kdc_isa0, 0,
|
||||
DC_BUSY, sea_description,
|
||||
}};
|
||||
|
||||
/*
|
||||
* Attach all sub-devices we can find.
|
||||
*/
|
||||
|
@ -513,6 +520,7 @@ int sea_attach (struct isa_device *dev)
|
|||
int unit = dev->id_unit;
|
||||
adapter_t *z = &seadata[unit];
|
||||
|
||||
sea_kdc[unit].kdc_state = DC_BUSY; /* host adapters are always busy */
|
||||
sprintf (sea_description, "%s SCSI controller", z->name);
|
||||
printf ("\nsea%d: type %s%s\n", unit, z->name,
|
||||
(dev->id_flags & FLAG_NOPARITY) ? ", no parity" : "");
|
||||
|
@ -522,15 +530,10 @@ int sea_attach (struct isa_device *dev)
|
|||
z->sc_link.adapter_targ = z->scsi_addr;
|
||||
z->sc_link.adapter = &sea_switch;
|
||||
z->sc_link.device = &sea_dev;
|
||||
|
||||
|
||||
/* ask the adapter what subunits are present */
|
||||
scsi_attachdevs (&(z->sc_link));
|
||||
|
||||
if (dev->id_unit)
|
||||
sea_kdc[dev->id_unit] = sea_kdc[0];
|
||||
sea_kdc[dev->id_unit].kdc_unit = dev->id_unit;
|
||||
sea_kdc[dev->id_unit].kdc_isa = dev;
|
||||
dev_attach (&sea_kdc[dev->id_unit]);
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
|
||||
* $Id: sio.c,v 1.88 1995/04/04 16:26:04 ache Exp $
|
||||
* $Id: sio.c,v 1.89 1995/04/11 17:58:09 ache Exp $
|
||||
*/
|
||||
|
||||
#include "sio.h"
|
||||
|
@ -347,6 +347,31 @@ static struct speedtab comspeedtab[] = {
|
|||
/* XXX - configure this list */
|
||||
static Port_t likely_com_ports[] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, };
|
||||
|
||||
static struct kern_devconf kdc_sio[NSIO] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"sio", 0, { MDDT_ISA, 0, "tty" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED,
|
||||
"RS-232 serial port"
|
||||
} };
|
||||
|
||||
static void
|
||||
sioregisterdev(id)
|
||||
struct isa_device *id;
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_sio[unit] = kdc_sio[0];
|
||||
kdc_sio[unit].kdc_unit = unit;
|
||||
kdc_sio[unit].kdc_isa = id;
|
||||
kdc_sio[unit].kdc_state = DC_IDLE;
|
||||
dev_attach(&kdc_sio[unit]);
|
||||
}
|
||||
|
||||
static int
|
||||
sioprobe(dev)
|
||||
struct isa_device *dev;
|
||||
|
@ -360,6 +385,8 @@ sioprobe(dev)
|
|||
u_char mcr_image;
|
||||
int result;
|
||||
|
||||
sioregisterdev(dev);
|
||||
|
||||
if (!already_init) {
|
||||
/*
|
||||
* Turn off MCR_IENABLE for all likely serial ports. An unused
|
||||
|
@ -535,31 +562,6 @@ sioprobe(dev)
|
|||
return (result);
|
||||
}
|
||||
|
||||
static struct kern_devconf kdc_sio[NSIO] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"sio", 0, { MDDT_ISA, 0, "tty" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED,
|
||||
"RS-232 serial port"
|
||||
} };
|
||||
|
||||
static void
|
||||
sioregisterdev(id)
|
||||
struct isa_device *id;
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_sio[unit] = kdc_sio[0];
|
||||
kdc_sio[unit].kdc_unit = unit;
|
||||
kdc_sio[unit].kdc_isa = id;
|
||||
kdc_sio[unit].kdc_state = DC_IDLE;
|
||||
dev_attach(&kdc_sio[unit]);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
sioattach(isdp)
|
||||
|
@ -634,6 +636,8 @@ sioattach(isdp)
|
|||
#ifdef DSI_SOFT_MODEM
|
||||
if((inb(iobase+7) ^ inb(iobase+7)) & 0x80) {
|
||||
printf(" Digicom Systems, Inc. SoftModem");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: Digicom Systems SoftModem";
|
||||
goto determined_type;
|
||||
}
|
||||
#endif /* DSI_SOFT_MODEM */
|
||||
|
@ -654,6 +658,8 @@ sioattach(isdp)
|
|||
outb(iobase + com_scr, scr);
|
||||
if (scr1 != 0xa5 || scr2 != 0x5a) {
|
||||
printf(" 8250");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 8250 or compatible";
|
||||
goto determined_type;
|
||||
}
|
||||
}
|
||||
|
@ -662,21 +668,31 @@ sioattach(isdp)
|
|||
switch (inb(com->int_id_port) & IIR_FIFO_MASK) {
|
||||
case FIFO_TRIGGER_1:
|
||||
printf(" 16450");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 16450 or compatible";
|
||||
break;
|
||||
case FIFO_TRIGGER_4:
|
||||
printf(" 16450?");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: maybe National 16450";
|
||||
break;
|
||||
case FIFO_TRIGGER_8:
|
||||
printf(" 16550?");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: maybe National 16550";
|
||||
break;
|
||||
case FIFO_TRIGGER_14:
|
||||
printf(" 16550A");
|
||||
if (COM_NOFIFO(isdp))
|
||||
if (COM_NOFIFO(isdp)) {
|
||||
printf(" fifo disabled");
|
||||
else {
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 16550A, FIFO disabled";
|
||||
} else {
|
||||
com->hasfifo = TRUE;
|
||||
com->ftl_init = FIFO_TRIGGER_14;
|
||||
com->tx_fifo_size = 16;
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 16550A or compatible";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -696,7 +712,8 @@ determined_type: ;
|
|||
#endif /* COM_MULTIPORT */
|
||||
printf("\n");
|
||||
|
||||
sioregisterdev(isdp);
|
||||
kdc_sio[unit].kdc_state =
|
||||
(unit == comconsole) ? DC_BUSY : DC_IDLE;
|
||||
|
||||
#ifdef KGDB
|
||||
if (kgdb_dev == makedev(commajor, unit)) {
|
||||
|
@ -718,6 +735,7 @@ determined_type: ;
|
|||
outb(iobase + com_cfcr, CFCR_8BITS);
|
||||
outb(com->modem_status_port,
|
||||
com->mcr_image |= MCR_DTR | MCR_RTS);
|
||||
kdc_sio[unit].kdc_state = DC_BUSY;
|
||||
|
||||
if (kgdb_debug_init) {
|
||||
/*
|
||||
|
@ -891,6 +909,7 @@ sioopen(dev, flag, mode, p)
|
|||
disc_optim(tp, &(tp->t_termios), com);
|
||||
if (tp->t_state & TS_ISOPEN && mynor & CALLOUT_MASK)
|
||||
com->active_out = TRUE;
|
||||
kdc_sio[unit].kdc_state = DC_BUSY;
|
||||
out:
|
||||
splx(s);
|
||||
if (!(tp->t_state & TS_ISOPEN) && com->wopeners == 0)
|
||||
|
@ -910,11 +929,13 @@ sioclose(dev, flag, mode, p)
|
|||
int mynor;
|
||||
int s;
|
||||
struct tty *tp;
|
||||
int unit;
|
||||
|
||||
mynor = minor(dev);
|
||||
if (mynor & CONTROL_MASK)
|
||||
return (0);
|
||||
com = com_addr(MINOR_TO_UNIT(mynor));
|
||||
unit = MINOR_TO_UNIT(mynor);
|
||||
com = com_addr(unit);
|
||||
tp = com->tp;
|
||||
s = spltty();
|
||||
(*linesw[tp->t_line].l_close)(tp, flag);
|
||||
|
@ -922,6 +943,7 @@ sioclose(dev, flag, mode, p)
|
|||
siostop(tp, FREAD | FWRITE);
|
||||
comhardclose(com);
|
||||
ttyclose(tp);
|
||||
kdc_sio[unit].kdc_state = DC_IDLE;
|
||||
splx(s);
|
||||
return (0);
|
||||
}
|
||||
|
|
|
@ -82,7 +82,7 @@ int spigot_attach(struct isa_device *id);
|
|||
|
||||
struct isa_driver spigotdriver = {spigot_probe, spigot_attach, "spigot"};
|
||||
|
||||
static struct kern_devconf kdc_spigot[NSPIGOT] = {
|
||||
static struct kern_devconf kdc_spigot[NSPIGOT] = { {
|
||||
0, /* kdc_next -> filled in by dev_attach() */
|
||||
0, /* kdc_rlink -> filled in by dev_attach() */
|
||||
0, /* kdc_number -> filled in by dev_attach() */
|
||||
|
@ -99,9 +99,10 @@ static struct kern_devconf kdc_spigot[NSPIGOT] = {
|
|||
ISA_EXTERNALLEN, /* kdc_datalen */
|
||||
&kdc_isa0, /* kdc_parent */
|
||||
0, /* kdc_parentdata */
|
||||
DC_UNKNOWN, /* kdc_state - not supported */
|
||||
"Video Spigot frame grabber" /* kdc_description */
|
||||
};
|
||||
DC_UNCONFIGURED, /* kdc_state - not supported */
|
||||
"Video Spigot frame grabber", /* kdc_description */
|
||||
DC_CLS_MISC /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
spigot_registerdev(struct isa_device *id)
|
||||
|
@ -118,7 +119,9 @@ spigot_probe(struct isa_device *devp)
|
|||
{
|
||||
int status;
|
||||
|
||||
if(inb(0xad9) == 0xff) /* ff if board isn't there??? */
|
||||
spigot_registerdev(devp);
|
||||
|
||||
if(devp->id_iobase != 0xad6 || inb(0xad9) == 0xff) /* ff if board isn't there??? */
|
||||
status = 0;
|
||||
else
|
||||
status = 1;
|
||||
|
@ -129,13 +132,12 @@ int status;
|
|||
int
|
||||
spigot_attach(struct isa_device *devp)
|
||||
{
|
||||
struct spigot_softc *ss=(struct spigot_softc *)&spigot_softc[devp->id_unit];
|
||||
struct spigot_softc *ss=(struct spigot_softc *)&spigot_softc[devp->id_unit];
|
||||
kdc_spigot[devp->id_unit].kdc_state = DC_UNKNOWN;
|
||||
|
||||
ss->flags = 0;
|
||||
ss->maddr = devp->id_maddr;
|
||||
|
||||
spigot_registerdev(devp);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: syscons.c,v 1.107 1995/03/03 08:37:07 sos Exp $
|
||||
* $Id: syscons.c,v 1.111 1995/04/04 20:06:26 sos Exp $
|
||||
*/
|
||||
|
||||
#include "sc.h"
|
||||
|
@ -203,7 +203,8 @@ static struct kern_devconf kdc_sc[NSC] = {
|
|||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* the console is almost always busy */
|
||||
"Graphics console"
|
||||
"Graphics console",
|
||||
DC_CLS_DISPLAY /* class */
|
||||
};
|
||||
|
||||
static inline void
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
* today: Fri Jun 2 17:21:03 EST 1994
|
||||
* added 24F support ++sg
|
||||
*
|
||||
* $Id: ultra14f.c,v 1.28 1995/03/16 18:12:06 bde Exp $
|
||||
* $Id: ultra14f.c,v 1.29 1995/03/23 09:00:20 rgrimes Exp $
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -326,8 +326,9 @@ static struct kern_devconf kdc_uha[NUHA] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* host adapters are always busy */
|
||||
"UltraStore 14F or 34F SCSI host adapter"
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"UltraStore 14F or 34F SCSI host adapter",
|
||||
DC_CLS_MISC /* host adapters aren't special */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -467,7 +468,7 @@ uhaprobe(dev)
|
|||
struct uha_reg *ur;
|
||||
struct uha_bits *ub;
|
||||
|
||||
dev->id_unit = unit;
|
||||
dev->id_unit = unit; /* XXX */
|
||||
|
||||
/*
|
||||
* find unit and check we have that many defined
|
||||
|
@ -506,6 +507,8 @@ uhaprobe(dev)
|
|||
}
|
||||
bzero(ub, sizeof(struct uha_bits));
|
||||
|
||||
uha_registerdev(dev);
|
||||
|
||||
uhareg[unit] = ur;
|
||||
uhabits[unit] = ub;
|
||||
uhadata[unit] = uha;
|
||||
|
@ -549,7 +552,7 @@ uha_attach(dev)
|
|||
uha->sc_link.device = &uha_dev;
|
||||
uha->sc_link.flags = SDEV_BOUNCE;
|
||||
|
||||
uha_registerdev(dev);
|
||||
kdc_uha[unit].kdc_state = DC_BUSY;
|
||||
/*
|
||||
* ask the adapter what subunits are present
|
||||
*/
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)wd.c 7.2 (Berkeley) 5/9/91
|
||||
* $Id: wd.c,v 1.70 1995/03/22 05:22:59 davidg Exp $
|
||||
* $Id: wd.c,v 1.71 1995/04/09 06:09:31 davidg Exp $
|
||||
*/
|
||||
|
||||
/* TODO:
|
||||
|
@ -121,8 +121,9 @@ static struct kern_devconf kdc_wd[NWD] = { {
|
|||
wd_externalize, 0, wd_goaway, DISK_EXTERNALLEN,
|
||||
0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNKNOWN, /* don't support state yet */
|
||||
"ST506/ESDI/IDE disk"
|
||||
DC_UNKNOWN, /* state */
|
||||
"ST506/ESDI/IDE disk", /* description */
|
||||
DC_CLS_DISK /* class */
|
||||
} };
|
||||
|
||||
static struct kern_devconf kdc_wdc[NWDC] = { {
|
||||
|
@ -131,8 +132,9 @@ static struct kern_devconf kdc_wdc[NWDC] = { {
|
|||
isa_generic_externalize, 0, wdc_goaway, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNKNOWN, /* state */
|
||||
"ST506/ESDI/IDE disk controller"
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"ST506/ESDI/IDE disk controller",
|
||||
DC_CLS_MISC /* just an ordinary device */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -296,6 +298,8 @@ wdprobe(struct isa_device *dvp)
|
|||
du->dk_ctrlr = dvp->id_unit;
|
||||
du->dk_port = dvp->id_iobase;
|
||||
|
||||
wdc_registerdev(dvp);
|
||||
|
||||
/* check if we have registers that work */
|
||||
outb(du->dk_port + wd_cyl_lo, 0xa5); /* wd_cyl_lo is read/write */
|
||||
if (inb(du->dk_port + wd_cyl_lo) == 0xff)
|
||||
|
@ -367,7 +371,7 @@ wdattach(struct isa_device *dvp)
|
|||
if (dvp->id_unit >= NWDC)
|
||||
return (0);
|
||||
|
||||
wdc_registerdev(dvp);
|
||||
kdc_wdc[dvp->id_unit].kdc_state = DC_UNKNOWN; /* XXX */
|
||||
|
||||
for (wdup = isa_biotab_wdc; wdup->id_driver != 0; wdup++) {
|
||||
if (wdup->id_iobase != dvp->id_iobase)
|
||||
|
|
|
@ -76,8 +76,9 @@ static struct kern_devconf kdc_wds[NWDS] = { {
|
|||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0,
|
||||
0,
|
||||
DC_BUSY,
|
||||
"Western Digital WD-7000 SCSI host adapter"
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"Western Digital WD-7000 SCSI host adapter",
|
||||
DC_CLS_MISC /* class */
|
||||
} };
|
||||
|
||||
struct scsi_device wds_dev =
|
||||
|
@ -258,9 +259,15 @@ wdsprobe(struct isa_device *dev)
|
|||
if(wdsunit > NWDS)
|
||||
return 0;
|
||||
|
||||
dev->id_unit = wdsunit;
|
||||
dev->id_unit = wdsunit; /* XXX WRONG! */
|
||||
wds[wdsunit].addr = dev->id_iobase;
|
||||
|
||||
if(dev->id_unit)
|
||||
kdc_wds[dev->id_unit] = kdc_wds[0];
|
||||
kdc_wds[dev->id_unit].kdc_unit = dev->id_unit;
|
||||
kdc_wds[dev->id_unit].kdc_parentdata = dev;
|
||||
dev_attach(&kdc_wds[dev->id_unit]);
|
||||
|
||||
if(wds_init(dev) != 0)
|
||||
return 0;
|
||||
wdsunit++;
|
||||
|
@ -621,18 +628,14 @@ wdsattach(struct isa_device *dev)
|
|||
|
||||
printf("wds%d: using %d bytes for dma buffer\n",unit,BUFSIZ);
|
||||
|
||||
if(dev->id_unit)
|
||||
kdc_wds[dev->id_unit] = kdc_wds[0];
|
||||
kdc_wds[dev->id_unit].kdc_unit = dev->id_unit;
|
||||
kdc_wds[dev->id_unit].kdc_parentdata = dev;
|
||||
dev_attach(&kdc_wds[dev->id_unit]);
|
||||
|
||||
wds[unit].sc_link.adapter_unit = unit;
|
||||
wds[unit].sc_link.adapter_targ = 7;
|
||||
wds[unit].sc_link.adapter = &wds_switch;
|
||||
wds[unit].sc_link.device = &wds_dev;
|
||||
wds[unit].sc_link.flags = SDEV_BOUNCE;
|
||||
|
||||
kdc_wds[unit].kdc_state = DC_BUSY;
|
||||
|
||||
scsi_attachdevs(&wds[unit].sc_link);
|
||||
|
||||
return 1;
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
* the original CMU copyright notice.
|
||||
*
|
||||
* Version 1.3, Thu Nov 11 12:09:13 MSK 1993
|
||||
* $Id: wt.c,v 1.14 1995/01/09 17:55:10 joerg Exp $
|
||||
* $Id: wt.c,v 1.15 1995/03/28 07:55:56 bde Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -170,6 +170,28 @@ static int wtreadfm (wtinfo_t *t);
|
|||
static int wtwritefm (wtinfo_t *t);
|
||||
static int wtpoll (wtinfo_t *t, int mask, int bits);
|
||||
|
||||
static struct kern_devconf kdc_wt[NWT] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"wt", 0, { MDDT_ISA, 0, "bio" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"Archive or Wangtek QIC-02/QIC-36 tape controller",
|
||||
DC_CLS_TAPE /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
wt_registerdev(struct isa_device *id)
|
||||
{
|
||||
if(id->id_unit)
|
||||
kdc_wt[id->id_unit] = kdc_wt[0];
|
||||
kdc_wt[id->id_unit].kdc_unit = id->id_unit;
|
||||
kdc_wt[id->id_unit].kdc_parentdata = id;
|
||||
dev_attach(&kdc_wt[id->id_unit]);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Probe for the presence of the device.
|
||||
*/
|
||||
|
@ -177,6 +199,8 @@ int wtprobe (struct isa_device *id)
|
|||
{
|
||||
wtinfo_t *t = wttab + id->id_unit;
|
||||
|
||||
wt_registerdev(id);
|
||||
|
||||
t->unit = id->id_unit;
|
||||
t->chan = id->id_drq;
|
||||
t->port = id->id_iobase;
|
||||
|
@ -214,27 +238,6 @@ int wtprobe (struct isa_device *id)
|
|||
return (0);
|
||||
}
|
||||
|
||||
static struct kern_devconf kdc_wt[NWT] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"wt", 0, { MDDT_ISA, 0, "bio" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNKNOWN, /* host adapters are always busy */
|
||||
"Archive or Wangtek QIC-02/QIC-36 tape controller"
|
||||
} };
|
||||
|
||||
static inline void
|
||||
wt_registerdev(struct isa_device *id)
|
||||
{
|
||||
if(id->id_unit)
|
||||
kdc_wt[id->id_unit] = kdc_wt[0];
|
||||
kdc_wt[id->id_unit].kdc_unit = id->id_unit;
|
||||
kdc_wt[id->id_unit].kdc_parentdata = id;
|
||||
dev_attach(&kdc_wt[id->id_unit]);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Device is found, configure it.
|
||||
*/
|
||||
|
@ -249,7 +252,7 @@ int wtattach (struct isa_device *id)
|
|||
printf ("wt%d: type <Wangtek>\n", t->unit);
|
||||
t->flags = TPSTART; /* tape is rewound */
|
||||
t->dens = -1; /* unknown density */
|
||||
wt_registerdev(id);
|
||||
kdc_wt[id->id_unit].kdc_state = DC_IDLE;
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
@ -336,6 +339,8 @@ int wtopen (int dev, int flag)
|
|||
return (EAGAIN);
|
||||
|
||||
t->flags = TPINUSE;
|
||||
kdc_wt[u].kdc_state = DC_BUSY;
|
||||
|
||||
if (flag & FREAD)
|
||||
t->flags |= TPREAD;
|
||||
if (flag & FWRITE)
|
||||
|
@ -383,6 +388,7 @@ int wtclose (int dev)
|
|||
wtreadfm (t);
|
||||
done:
|
||||
t->flags &= TPREW | TPRMARK | TPSTART | TPTIMER;
|
||||
kdc_wt[u].kdc_state = DC_IDLE;
|
||||
free (t->buf, M_TEMP);
|
||||
return (0);
|
||||
}
|
||||
|
|
32
sys/isa/fd.c
32
sys/isa/fd.c
|
@ -43,7 +43,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)fd.c 7.4 (Berkeley) 5/25/91
|
||||
* $Id: fd.c,v 1.55 1995/03/26 19:28:18 rgrimes Exp $
|
||||
* $Id: fd.c,v 1.56 1995/04/06 07:20:15 rgrimes Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -101,7 +101,8 @@ static struct kern_devconf kdc_fd[NFD] = { {
|
|||
0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"floppy disk"
|
||||
"floppy disk",
|
||||
DC_CLS_DISK /* class */
|
||||
} };
|
||||
|
||||
struct kern_devconf kdc_fdc[NFDC] = { {
|
||||
|
@ -111,7 +112,8 @@ struct kern_devconf kdc_fdc[NFDC] = { {
|
|||
0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED, /* state */
|
||||
"floppy disk/tape controller"
|
||||
"floppy disk/tape controller",
|
||||
DC_CLS_MISC /* class */
|
||||
} };
|
||||
|
||||
static inline void
|
||||
|
@ -522,6 +524,10 @@ fdprobe(struct isa_device *dev)
|
|||
fdcdevs[fdcu] = dev;
|
||||
fdc_data[fdcu].baseport = dev->id_iobase;
|
||||
|
||||
#ifndef DEV_LKM
|
||||
fdc_registerdev(dev);
|
||||
#endif
|
||||
|
||||
/* First - lets reset the floppy controller */
|
||||
outb(dev->id_iobase+FDOUT, 0);
|
||||
DELAY(100);
|
||||
|
@ -553,8 +559,6 @@ fdattach(struct isa_device *dev)
|
|||
struct isa_device *fdup;
|
||||
int ic_type = 0;
|
||||
|
||||
fdc_registerdev(dev);
|
||||
|
||||
fdc->fdcu = fdcu;
|
||||
fdc->flags |= FDC_ATTACHED;
|
||||
fdc->dmachan = dev->id_drq;
|
||||
|
@ -619,14 +623,20 @@ fdattach(struct isa_device *dev)
|
|||
case 0x80:
|
||||
printf("NEC 765\n");
|
||||
fdc->fdct = FDC_NE765;
|
||||
kdc_fdc[fdcu].kdc_description =
|
||||
"NEC 765 floppy disk/tape controller";
|
||||
break;
|
||||
case 0x81:
|
||||
printf("Intel 82077\n");
|
||||
fdc->fdct = FDC_I82077;
|
||||
kdc_fdc[fdcu].kdc_description =
|
||||
"Intel 82077 floppy disk/tape controller";
|
||||
break;
|
||||
case 0x90:
|
||||
printf("NEC 72065B\n");
|
||||
fdc->fdct = FDC_NE72065;
|
||||
kdc_fdc[fdcu].kdc_description =
|
||||
"NEC 72065B floppy disk/tape controller";
|
||||
break;
|
||||
default:
|
||||
printf("unknown IC type %02x\n", ic_type);
|
||||
|
@ -685,33 +695,43 @@ fdattach(struct isa_device *dev)
|
|||
fd->options = 0;
|
||||
printf("fd%d: ", fdsu, fdu);
|
||||
|
||||
fd_registerdev(fdcu, fdu);
|
||||
switch (fdt) {
|
||||
case RTCFDT_12M:
|
||||
printf("1.2MB 5.25in\n");
|
||||
fd->type = FD_1200;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"1.2MB (1200K) 5.25in floppy disk drive";
|
||||
break;
|
||||
case RTCFDT_144M:
|
||||
printf("1.44MB 3.5in\n");
|
||||
fd->type = FD_1440;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"1.44MB (1440K) 3.5in floppy disk drive";
|
||||
break;
|
||||
case RTCFDT_288M:
|
||||
printf("2.88MB 3.5in - 1.44MB mode\n");
|
||||
fd->type = FD_1440;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"2.88MB (2880K) 3.5in floppy disk drive in 1.44 mode";
|
||||
break;
|
||||
case RTCFDT_360K:
|
||||
printf("360KB 5.25in\n");
|
||||
fd->type = FD_360;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"360KB 5.25in floppy disk drive";
|
||||
break;
|
||||
case RTCFDT_720K:
|
||||
printf("720KB 3.5in\n");
|
||||
fd->type = FD_720;
|
||||
kdc_fd[fdu].kdc_description =
|
||||
"720KB 3.5in floppy disk drive";
|
||||
break;
|
||||
default:
|
||||
printf("unknown\n");
|
||||
fd->type = NO_TYPE;
|
||||
break;
|
||||
}
|
||||
fd_registerdev(fdcu, fdu);
|
||||
kdc_fd[fdu].kdc_state = DC_IDLE;
|
||||
if (dk_ndrive < DK_NDRIVE) {
|
||||
sprintf(dk_names[dk_ndrive], "fd%d", fdu);
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
|
||||
* $Id: sio.c,v 1.88 1995/04/04 16:26:04 ache Exp $
|
||||
* $Id: sio.c,v 1.89 1995/04/11 17:58:09 ache Exp $
|
||||
*/
|
||||
|
||||
#include "sio.h"
|
||||
|
@ -347,6 +347,31 @@ static struct speedtab comspeedtab[] = {
|
|||
/* XXX - configure this list */
|
||||
static Port_t likely_com_ports[] = { 0x3f8, 0x2f8, 0x3e8, 0x2e8, };
|
||||
|
||||
static struct kern_devconf kdc_sio[NSIO] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"sio", 0, { MDDT_ISA, 0, "tty" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED,
|
||||
"RS-232 serial port"
|
||||
} };
|
||||
|
||||
static void
|
||||
sioregisterdev(id)
|
||||
struct isa_device *id;
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_sio[unit] = kdc_sio[0];
|
||||
kdc_sio[unit].kdc_unit = unit;
|
||||
kdc_sio[unit].kdc_isa = id;
|
||||
kdc_sio[unit].kdc_state = DC_IDLE;
|
||||
dev_attach(&kdc_sio[unit]);
|
||||
}
|
||||
|
||||
static int
|
||||
sioprobe(dev)
|
||||
struct isa_device *dev;
|
||||
|
@ -360,6 +385,8 @@ sioprobe(dev)
|
|||
u_char mcr_image;
|
||||
int result;
|
||||
|
||||
sioregisterdev(dev);
|
||||
|
||||
if (!already_init) {
|
||||
/*
|
||||
* Turn off MCR_IENABLE for all likely serial ports. An unused
|
||||
|
@ -535,31 +562,6 @@ sioprobe(dev)
|
|||
return (result);
|
||||
}
|
||||
|
||||
static struct kern_devconf kdc_sio[NSIO] = { {
|
||||
0, 0, 0, /* filled in by dev_attach */
|
||||
"sio", 0, { MDDT_ISA, 0, "tty" },
|
||||
isa_generic_externalize, 0, 0, ISA_EXTERNALLEN,
|
||||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_UNCONFIGURED,
|
||||
"RS-232 serial port"
|
||||
} };
|
||||
|
||||
static void
|
||||
sioregisterdev(id)
|
||||
struct isa_device *id;
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = id->id_unit;
|
||||
if (unit != 0)
|
||||
kdc_sio[unit] = kdc_sio[0];
|
||||
kdc_sio[unit].kdc_unit = unit;
|
||||
kdc_sio[unit].kdc_isa = id;
|
||||
kdc_sio[unit].kdc_state = DC_IDLE;
|
||||
dev_attach(&kdc_sio[unit]);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
sioattach(isdp)
|
||||
|
@ -634,6 +636,8 @@ sioattach(isdp)
|
|||
#ifdef DSI_SOFT_MODEM
|
||||
if((inb(iobase+7) ^ inb(iobase+7)) & 0x80) {
|
||||
printf(" Digicom Systems, Inc. SoftModem");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: Digicom Systems SoftModem";
|
||||
goto determined_type;
|
||||
}
|
||||
#endif /* DSI_SOFT_MODEM */
|
||||
|
@ -654,6 +658,8 @@ sioattach(isdp)
|
|||
outb(iobase + com_scr, scr);
|
||||
if (scr1 != 0xa5 || scr2 != 0x5a) {
|
||||
printf(" 8250");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 8250 or compatible";
|
||||
goto determined_type;
|
||||
}
|
||||
}
|
||||
|
@ -662,21 +668,31 @@ sioattach(isdp)
|
|||
switch (inb(com->int_id_port) & IIR_FIFO_MASK) {
|
||||
case FIFO_TRIGGER_1:
|
||||
printf(" 16450");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 16450 or compatible";
|
||||
break;
|
||||
case FIFO_TRIGGER_4:
|
||||
printf(" 16450?");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: maybe National 16450";
|
||||
break;
|
||||
case FIFO_TRIGGER_8:
|
||||
printf(" 16550?");
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: maybe National 16550";
|
||||
break;
|
||||
case FIFO_TRIGGER_14:
|
||||
printf(" 16550A");
|
||||
if (COM_NOFIFO(isdp))
|
||||
if (COM_NOFIFO(isdp)) {
|
||||
printf(" fifo disabled");
|
||||
else {
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 16550A, FIFO disabled";
|
||||
} else {
|
||||
com->hasfifo = TRUE;
|
||||
com->ftl_init = FIFO_TRIGGER_14;
|
||||
com->tx_fifo_size = 16;
|
||||
kdc_sio[isdp->id_unit].kdc_description =
|
||||
"Serial port: National 16550A or compatible";
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -696,7 +712,8 @@ determined_type: ;
|
|||
#endif /* COM_MULTIPORT */
|
||||
printf("\n");
|
||||
|
||||
sioregisterdev(isdp);
|
||||
kdc_sio[unit].kdc_state =
|
||||
(unit == comconsole) ? DC_BUSY : DC_IDLE;
|
||||
|
||||
#ifdef KGDB
|
||||
if (kgdb_dev == makedev(commajor, unit)) {
|
||||
|
@ -718,6 +735,7 @@ determined_type: ;
|
|||
outb(iobase + com_cfcr, CFCR_8BITS);
|
||||
outb(com->modem_status_port,
|
||||
com->mcr_image |= MCR_DTR | MCR_RTS);
|
||||
kdc_sio[unit].kdc_state = DC_BUSY;
|
||||
|
||||
if (kgdb_debug_init) {
|
||||
/*
|
||||
|
@ -891,6 +909,7 @@ sioopen(dev, flag, mode, p)
|
|||
disc_optim(tp, &(tp->t_termios), com);
|
||||
if (tp->t_state & TS_ISOPEN && mynor & CALLOUT_MASK)
|
||||
com->active_out = TRUE;
|
||||
kdc_sio[unit].kdc_state = DC_BUSY;
|
||||
out:
|
||||
splx(s);
|
||||
if (!(tp->t_state & TS_ISOPEN) && com->wopeners == 0)
|
||||
|
@ -910,11 +929,13 @@ sioclose(dev, flag, mode, p)
|
|||
int mynor;
|
||||
int s;
|
||||
struct tty *tp;
|
||||
int unit;
|
||||
|
||||
mynor = minor(dev);
|
||||
if (mynor & CONTROL_MASK)
|
||||
return (0);
|
||||
com = com_addr(MINOR_TO_UNIT(mynor));
|
||||
unit = MINOR_TO_UNIT(mynor);
|
||||
com = com_addr(unit);
|
||||
tp = com->tp;
|
||||
s = spltty();
|
||||
(*linesw[tp->t_line].l_close)(tp, flag);
|
||||
|
@ -922,6 +943,7 @@ sioclose(dev, flag, mode, p)
|
|||
siostop(tp, FREAD | FWRITE);
|
||||
comhardclose(com);
|
||||
ttyclose(tp);
|
||||
kdc_sio[unit].kdc_state = DC_IDLE;
|
||||
splx(s);
|
||||
return (0);
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* $Id: syscons.c,v 1.107 1995/03/03 08:37:07 sos Exp $
|
||||
* $Id: syscons.c,v 1.111 1995/04/04 20:06:26 sos Exp $
|
||||
*/
|
||||
|
||||
#include "sc.h"
|
||||
|
@ -203,7 +203,8 @@ static struct kern_devconf kdc_sc[NSC] = {
|
|||
&kdc_isa0, /* parent */
|
||||
0, /* parentdata */
|
||||
DC_BUSY, /* the console is almost always busy */
|
||||
"Graphics console"
|
||||
"Graphics console",
|
||||
DC_CLS_DISPLAY /* class */
|
||||
};
|
||||
|
||||
static inline void
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: devconf.h,v 1.3 1994/10/23 21:28:03 wollman Exp $
|
||||
* $Id: devconf.h,v 1.4 1995/03/17 04:18:07 davidg Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -46,6 +46,32 @@ enum dc_state {
|
|||
DC_BUSY /* driver supports state and is currently busy */
|
||||
};
|
||||
|
||||
#define DC_STATENAMES \
|
||||
{ \
|
||||
"unknown", "unconfigured", "idle", "busy" \
|
||||
}
|
||||
|
||||
enum dc_class {
|
||||
DC_CLS_UNKNOWN = 0, /* old drivers don't set class */
|
||||
DC_CLS_CPU = 1, /* CPU devices */
|
||||
DC_CLS_BUS = 2, /* busses */
|
||||
DC_CLS_DISK = 4, /* disks */
|
||||
DC_CLS_TAPE = 8, /* tapes */
|
||||
DC_CLS_RDISK = 16, /* read-only disks */
|
||||
DC_CLS_DISPLAY = 32, /* display devices */
|
||||
DC_CLS_SERIAL = 64, /* serial I/O devices */
|
||||
DC_CLS_PARALLEL = 128, /* parallel I/O devices */
|
||||
DC_CLS_NETIF = 256, /* network interfaces */
|
||||
DC_CLS_MISC = 512 /* anything else */
|
||||
};
|
||||
|
||||
#define DC_CLASSNAMES \
|
||||
{ \
|
||||
"unknown", "CPU", "bus", "disk", "tape", "read-only disk", \
|
||||
"display", "serial", "parallel", "network interface", \
|
||||
"miscellaneous" \
|
||||
}
|
||||
|
||||
struct devconf {
|
||||
char dc_name[MAXDEVNAME]; /* name */
|
||||
char dc_descr[MAXDEVDESCR]; /* description */
|
||||
|
@ -56,6 +82,7 @@ struct devconf {
|
|||
int dc_pnumber; /* unique id of the parent */
|
||||
struct machdep_devconf dc_md; /* machine-dependent stuff */
|
||||
enum dc_state dc_state; /* state of the device (see above) */
|
||||
enum dc_class dc_class; /* type of device (see above) */
|
||||
size_t dc_datalen; /* length of data */
|
||||
char dc_data[1]; /* variable-length data */
|
||||
};
|
||||
|
@ -100,6 +127,7 @@ struct kern_devconf {
|
|||
void *kdc_parentdata; /* filled in by driver */
|
||||
enum dc_state kdc_state; /* filled in by driver dynamically */
|
||||
const char *kdc_description; /* filled in by driver; maybe dyn. */
|
||||
enum dc_class kdc_class; /* filled in by driver */
|
||||
};
|
||||
|
||||
int dev_attach(struct kern_devconf *);
|
||||
|
|
Loading…
Reference in a new issue