fdc.c (7780) | fdc.c (7945) |
---|---|
1/*- 2 * Copyright (c) 1990 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Don Ahn. 7 * 8 * Copyright (c) 1993, 1994 by --- 29 unchanged lines hidden (view full) --- 38 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 39 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 40 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 41 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 42 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 43 * SUCH DAMAGE. 44 * 45 * from: @(#)fd.c 7.4 (Berkeley) 5/25/91 | 1/*- 2 * Copyright (c) 1990 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Don Ahn. 7 * 8 * Copyright (c) 1993, 1994 by --- 29 unchanged lines hidden (view full) --- 38 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 39 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 40 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 41 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 42 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 43 * SUCH DAMAGE. 44 * 45 * from: @(#)fd.c 7.4 (Berkeley) 5/25/91 |
46 * $Id: fd.c,v 1.56 1995/04/06 07:20:15 rgrimes Exp $ | 46 * $Id: fd.c,v 1.57 1995/04/12 20:47:41 wollman Exp $ |
47 * 48 */ 49 50#include "ft.h" 51#if NFT < 1 52#undef NFDC 53#endif 54#include "fd.h" --- 498 unchanged lines hidden (view full) --- 553 unsigned fdt; 554 fdu_t fdu; 555 fdcu_t fdcu = dev->id_unit; 556 fdc_p fdc = fdc_data + fdcu; 557 fd_p fd; 558 int fdsu, st0, st3, i, unithasfd; 559 struct isa_device *fdup; 560 int ic_type = 0; | 47 * 48 */ 49 50#include "ft.h" 51#if NFT < 1 52#undef NFDC 53#endif 54#include "fd.h" --- 498 unchanged lines hidden (view full) --- 553 unsigned fdt; 554 fdu_t fdu; 555 fdcu_t fdcu = dev->id_unit; 556 fdc_p fdc = fdc_data + fdcu; 557 fd_p fd; 558 int fdsu, st0, st3, i, unithasfd; 559 struct isa_device *fdup; 560 int ic_type = 0; |
561#ifdef DEVFS 562 char name[64]; 563 caddr_t key; 564#endif /* DEVFS */ |
|
561 562 fdc->fdcu = fdcu; 563 fdc->flags |= FDC_ATTACHED; 564 fdc->dmachan = dev->id_drq; 565 fdc->state = DEVIDLE; 566 /* reset controller, turn motor off, clear fdout mirror reg */ 567 outb(fdc->baseport + FDOUT, ((fdc->fdout = 0))); 568 --- 128 unchanged lines hidden (view full) --- 697 698 fd_registerdev(fdcu, fdu); 699 switch (fdt) { 700 case RTCFDT_12M: 701 printf("1.2MB 5.25in\n"); 702 fd->type = FD_1200; 703 kdc_fd[fdu].kdc_description = 704 "1.2MB (1200K) 5.25in floppy disk drive"; | 565 566 fdc->fdcu = fdcu; 567 fdc->flags |= FDC_ATTACHED; 568 fdc->dmachan = dev->id_drq; 569 fdc->state = DEVIDLE; 570 /* reset controller, turn motor off, clear fdout mirror reg */ 571 outb(fdc->baseport + FDOUT, ((fdc->fdout = 0))); 572 --- 128 unchanged lines hidden (view full) --- 701 702 fd_registerdev(fdcu, fdu); 703 switch (fdt) { 704 case RTCFDT_12M: 705 printf("1.2MB 5.25in\n"); 706 fd->type = FD_1200; 707 kdc_fd[fdu].kdc_description = 708 "1.2MB (1200K) 5.25in floppy disk drive"; |
709#ifdef DEVFS 710 sprintf(name,"fd%d.1200",fdu); 711#endif /* DEVFS */ |
|
705 break; 706 case RTCFDT_144M: 707 printf("1.44MB 3.5in\n"); 708 fd->type = FD_1440; 709 kdc_fd[fdu].kdc_description = 710 "1.44MB (1440K) 3.5in floppy disk drive"; | 712 break; 713 case RTCFDT_144M: 714 printf("1.44MB 3.5in\n"); 715 fd->type = FD_1440; 716 kdc_fd[fdu].kdc_description = 717 "1.44MB (1440K) 3.5in floppy disk drive"; |
718#ifdef DEVFS 719 sprintf(name,"fd%d.1440",fdu); 720#endif /* DEVFS */ |
|
711 break; 712 case RTCFDT_288M: 713 printf("2.88MB 3.5in - 1.44MB mode\n"); 714 fd->type = FD_1440; 715 kdc_fd[fdu].kdc_description = 716 "2.88MB (2880K) 3.5in floppy disk drive in 1.44 mode"; | 721 break; 722 case RTCFDT_288M: 723 printf("2.88MB 3.5in - 1.44MB mode\n"); 724 fd->type = FD_1440; 725 kdc_fd[fdu].kdc_description = 726 "2.88MB (2880K) 3.5in floppy disk drive in 1.44 mode"; |
727#ifdef DEVFS 728 sprintf(name,"fd%d.1440",fdu); 729#endif /* DEVFS */ |
|
717 break; 718 case RTCFDT_360K: 719 printf("360KB 5.25in\n"); 720 fd->type = FD_360; 721 kdc_fd[fdu].kdc_description = 722 "360KB 5.25in floppy disk drive"; | 730 break; 731 case RTCFDT_360K: 732 printf("360KB 5.25in\n"); 733 fd->type = FD_360; 734 kdc_fd[fdu].kdc_description = 735 "360KB 5.25in floppy disk drive"; |
736#ifdef DEVFS 737 sprintf(name,"fd%d.360",fdu); 738#endif /* DEVFS */ |
|
723 break; 724 case RTCFDT_720K: 725 printf("720KB 3.5in\n"); 726 fd->type = FD_720; 727 kdc_fd[fdu].kdc_description = 728 "720KB 3.5in floppy disk drive"; | 739 break; 740 case RTCFDT_720K: 741 printf("720KB 3.5in\n"); 742 fd->type = FD_720; 743 kdc_fd[fdu].kdc_description = 744 "720KB 3.5in floppy disk drive"; |
745#ifdef DEVFS 746 sprintf(name,"fd%d.720",fdu); 747#endif /* DEVFS */ |
|
729 break; 730 default: 731 printf("unknown\n"); 732 fd->type = NO_TYPE; | 748 break; 749 default: 750 printf("unknown\n"); 751 fd->type = NO_TYPE; |
752#ifdef DEVFS 753 sprintf(name,"fd%d.xxxx",fdu); 754#endif /* DEVFS */ |
|
733 break; 734 } 735 kdc_fd[fdu].kdc_state = DC_IDLE; | 755 break; 756 } 757 kdc_fd[fdu].kdc_state = DC_IDLE; |
758#ifdef DEVFS 759 key = dev_add("/disks/rfloppy",name,(caddr_t)Fdopen,fdu * 8, 760 0,0,0,0644); 761 key = dev_add("/disks/floppy",name,(caddr_t)Fdopen,fdu * 8, 762 1,0,0,0644); 763#endif /* DEVFS */ |
|
736 if (dk_ndrive < DK_NDRIVE) { 737 sprintf(dk_names[dk_ndrive], "fd%d", fdu); 738 fd->dkunit = dk_ndrive++; 739 /* 740 * XXX assume rate is FDC_500KBPS. 741 */ 742 dk_wpms[dk_ndrive] = 500000 / 8 / 2; 743 } else { --- 1154 unchanged lines hidden --- | 764 if (dk_ndrive < DK_NDRIVE) { 765 sprintf(dk_names[dk_ndrive], "fd%d", fdu); 766 fd->dkunit = dk_ndrive++; 767 /* 768 * XXX assume rate is FDC_500KBPS. 769 */ 770 dk_wpms[dk_ndrive] = 500000 / 8 / 2; 771 } else { --- 1154 unchanged lines hidden --- |