diff options
Diffstat (limited to 'sys/dev/asr')
-rw-r--r-- | sys/dev/asr/asr.c | 119 |
1 files changed, 10 insertions, 109 deletions
diff --git a/sys/dev/asr/asr.c b/sys/dev/asr/asr.c index bee1099..ae83763 100644 --- a/sys/dev/asr/asr.c +++ b/sys/dev/asr/asr.c @@ -235,14 +235,12 @@ debug_asr_dump_ccb(union ccb *ccb) #define debug_usr_cmd_dump_message(message) #endif /* DEBUG_ASR_USR_CMD */ -#define dsDescription_size 46 /* Snug as a bug in a rug */ #include "dev/asr/dptsig.h" static dpt_sig_S ASR_sig = { { 'd', 'P', 't', 'S', 'i', 'G'}, SIG_VERSION, PROC_INTEL, PROC_386 | PROC_486 | PROC_PENTIUM | PROC_SEXIUM, FT_HBADRVR, 0, - OEM_DPT, OS_FREE_BSD, CAP_ABOVE16MB, DEV_ALL, - ADF_ALL_SC5, + OEM_DPT, OS_FREE_BSD, CAP_ABOVE16MB, DEV_ALL, ADF_ALL_SC5, 0, 0, ASR_VERSION, ASR_REVISION, ASR_SUBREVISION, ASR_MONTH, ASR_DAY, ASR_YEAR, /* 01234567890123456789012345678901234567890123456789 < 50 chars */ @@ -3494,24 +3492,14 @@ static int asr_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td) { Asr_softc_t *sc = dev->si_drv1; - int i, j; - int error = 0; + int i, error = 0; if (sc != NULL) switch(cmd) { case DPT_SIGNATURE: -#if (dsDescription_size != 50) - case DPT_SIGNATURE + ((50 - dsDescription_size) << 16): -#endif - if (cmd & 0xFFFF0000) { - bcopy(&ASR_sig, data, sizeof(dpt_sig_S)); - return (0); - } - /* Traditional version of the ioctl interface */ - case DPT_SIGNATURE & 0x0000FFFF: - return (copyout ((caddr_t)(&ASR_sig), *((caddr_t *)data), - sizeof(dpt_sig_S))); + return (copyout((caddr_t)(&ASR_sig), *((caddr_t *)data), + sizeof(dpt_sig_S))); /* Traditional version of the ioctl interface */ case DPT_CTRLINFO & 0x0000FFFF: @@ -3535,9 +3523,9 @@ asr_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td) CtlrInfo.drvrHBAnum = asr_unit(dev); CtlrInfo.baseAddr = sc->ha_Base; i = ASR_getBlinkLedCode (sc); - if (i == -1) { + if (i == -1) i = 0; - } + CtlrInfo.blinkState = i; CtlrInfo.pciBusNum = sc->ha_pciBusNum; CtlrInfo.pciDeviceNum = sc->ha_pciDeviceNum; @@ -3546,42 +3534,16 @@ asr_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td) #define FLG_OSD_I2O 0x0004 CtlrInfo.hbaFlags = FLG_OSD_PCI_VALID|FLG_OSD_DMA|FLG_OSD_I2O; CtlrInfo.Interrupt = sc->ha_irq; - if (cmd & 0xFFFF0000) { - bcopy(&CtlrInfo, data, sizeof(CtlrInfo)); - } else { - error = copyout(&CtlrInfo, *(caddr_t *)data, sizeof(CtlrInfo)); - } + error = copyout(&CtlrInfo, *(caddr_t *)data, sizeof(CtlrInfo)); } return (error); /* Traditional version of the ioctl interface */ case DPT_SYSINFO & 0x0000FFFF: case DPT_SYSINFO: { sysInfo_S Info; - char * cp; - /* Kernel Specific ptok `hack' */ -#define ptok(a) ((char *)(uintptr_t)(a) + KERNBASE) bzero(&Info, sizeof(Info)); - /* Appears I am the only person in the Kernel doing this */ - outb (0x70, 0x12); - i = inb(0x71); - j = i >> 4; - if (i == 0x0f) { - outb (0x70, 0x19); - j = inb (0x71); - } - Info.drive0CMOS = j; - - j = i & 0x0f; - if (i == 0x0f) { - outb (0x70, 0x1a); - j = inb (0x71); - } - Info.drive1CMOS = j; - - Info.numDrives = *((char *)ptok(0x475)); - Info.processorFamily = ASR_sig.dsProcessorFamily; #if defined(__i386__) switch (cpu) { @@ -3604,66 +3566,9 @@ asr_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td) /* Info.osRevision = 0; */ /* Info.osSubRevision = 0; */ Info.busType = SI_PCI_BUS; - Info.flags = SI_CMOS_Valid | SI_NumDrivesValid - | SI_OSversionValid | SI_BusTypeValid | SI_NO_SmartROM; - - /* Go Out And Look For I2O SmartROM */ - for(j = 0xC8000; j < 0xE0000; j += 2048) { - int k; + Info.flags = SI_OSversionValid|SI_BusTypeValid|SI_NO_SmartROM; - cp = ptok(j); - if (*((unsigned short *)cp) != 0xAA55) { - continue; - } - j += (cp[2] * 512) - 2048; - if ((*((u_long *)(cp + 6)) - != ('S' + (' ' * 256) + (' ' * 65536L))) - || (*((u_long *)(cp + 10)) - != ('I' + ('2' * 256) + ('0' * 65536L)))) { - continue; - } - cp += 0x24; - for (k = 0; k < 64; ++k) { - if (*((unsigned short *)cp) - == (' ' + ('v' * 256))) { - break; - } - } - if (k < 64) { - Info.smartROMMajorVersion - = *((unsigned char *)(cp += 4)) - '0'; - Info.smartROMMinorVersion - = *((unsigned char *)(cp += 2)); - Info.smartROMRevision - = *((unsigned char *)(++cp)); - Info.flags |= SI_SmartROMverValid; - Info.flags &= ~SI_NO_SmartROM; - break; - } - } - /* Get The Conventional Memory Size From CMOS */ - outb (0x70, 0x16); - j = inb (0x71); - j <<= 8; - outb (0x70, 0x15); - j |= inb(0x71); - Info.conventionalMemSize = j; - - /* Get The Extended Memory Found At Power On From CMOS */ - outb (0x70, 0x31); - j = inb (0x71); - j <<= 8; - outb (0x70, 0x30); - j |= inb(0x71); - Info.extendedMemSize = j; - Info.flags |= SI_MemorySizeValid; - - /* Copy Out The Info Structure To The User */ - if (cmd & 0xFFFF0000) { - bcopy(&Info, data, sizeof(Info)); - } else { - error = copyout(&Info, *(caddr_t *)data, sizeof(Info)); - } + error = copyout(&Info, *(caddr_t *)data, sizeof(Info)); return (error); } /* Get The BlinkLED State */ @@ -3672,11 +3577,7 @@ asr_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td) if (i == -1) { i = 0; } - if (cmd & 0xFFFF0000) { - bcopy(&i, data, sizeof(i)); - } else { - error = copyout(&i, *(caddr_t *)data, sizeof(i)); - } + error = copyout(&i, *(caddr_t *)data, sizeof(i)); break; /* Send an I2O command */ |