Lines Matching +full:0 +full:- +full:dev
1 /* Copyright 1986-1992 Emmet P. Gray.
2 * Copyright 1996-2003,2006,2007,2009 Alain Knaff.
31 #define DEF_ARG1(x) (x), 0x2,0,(char *)0, 0, 0, 0, 0, 0, 0, NULL
32 #define DEF_ARG0(x) 0,DEF_ARG1(x)
34 #define MDEF_ARG 0L,DEF_ARG0(MFORMAT_ONLY_FLAG)
35 #define FDEF_ARG 0L,DEF_ARG0(0)
38 #pragma GCC diagnostic ignored "-Wunused-macros"
40 #define VOLD_DEF_ARG 0L,DEF_ARG0(VOLD_FLAG|MFORMAT_ONLY_FLAG)
42 #define MED312 12,0,80,2,36,0,MDEF_ARG /* 3 1/2 extra density */
43 #define MHD312 12,0,80,2,18,0,MDEF_ARG /* 3 1/2 high density */
44 #define MDD312 12,0,80,2, 9,0,MDEF_ARG /* 3 1/2 double density */
45 #define MHD514 12,0,80,2,15,0,MDEF_ARG /* 5 1/4 high density */
46 #define MDD514 12,0,40,2, 9,0,MDEF_ARG /* 5 1/4 double density (360k) */
47 #define MSS514 12,0,40,1, 9,0,MDEF_ARG /* 5 1/4 single sided DD, (180k) */
48 #define MDDsmall 12,0,40,2, 8,0,MDEF_ARG /* 5 1/4 double density (320k) */
49 #define MSSsmall 12,0,40,1, 8,0,MDEF_ARG /* 5 1/4 single sided DD, (160k) */
51 #define FED312 12,0,80,2,36,0,FDEF_ARG /* 3 1/2 extra density */
52 #define FHD312 12,0,80,2,18,0,FDEF_ARG /* 3 1/2 high density */
53 #define FDD312 12,0,80,2, 9,0,FDEF_ARG /* 3 1/2 double density */
54 #define FHD514 12,0,80,2,15,0,FDEF_ARG /* 5 1/4 high density */
55 #define FDD514 12,0,40,2, 9,0,FDEF_ARG /* 5 1/4 double density (360k) */
56 #define FSS514 12,0,40,1, 9,0,FDEF_ARG /* 5 1/4 single sided DD, (180k) */
57 #define FDDsmall 12,0,40,2, 8,0,FDEF_ARG /* 5 1/4 double density (320k) */
58 #define FSSsmall 12,0,40,1, 8,0,FDEF_ARG /* 5 1/4 single sided DD, (160k) */
60 #define GENHD 16,0, 0,0, 0,0,MDEF_ARG /* Generic 16 bit FAT fs */
61 #define GENFD 12,0,80,2,18,0,MDEF_ARG /* Generic 12 bit FAT fs */
62 #define VOLDFD 12,0,80,2,18,0,VOLD_DEF_ARG /* Generic 12 bit FAT fs with vold */
63 #define GEN 0,0, 0,0, 0,0,MDEF_ARG /* Generic fs of any FAT bits */
65 #define ZIPJAZ(x,c,h,s,y) 16,(x),(c),(h),(s),(s),0L, 4, \
68 #define JAZ(x) ZIPJAZ(x,1021, 64, 32, 0)
70 #define ZIP(x) ZIPJAZ(x,96, 64, 32, 0)
75 #define REMOTE {"$DISPLAY", 'X', 0,0, 0,0, 0,0,0L, DEF_ARG0(FLOPPYD_FLAG)}
80 static int compare_geom(struct device *dev, struct device *orig_dev) in compare_geom() argument
83 return 0; /* geometry only for mformatting ==> ok */ in compare_geom()
84 if(!orig_dev || !orig_dev->tracks || !dev || !dev->tracks) in compare_geom()
85 return 0; /* no original device. This is ok */ in compare_geom()
86 return(orig_dev->tracks != dev->tracks || in compare_geom()
87 orig_dev->heads != dev->heads || in compare_geom()
88 orig_dev->sectors != dev->sectors); in compare_geom()
106 {"/dev/floppy0", 'A', GENFD },
107 {"/dev/rdsk/c104d0s31", 'J', JAZ(O_EXCL) },
108 {"/dev/rdsk/c105d0s31", 'Z', ZIP(O_EXCL) },
117 {"/dev/fd1440.0", 'A', MHD312 },
126 {"/dev/disk/floppy/raw", 'A', MHD312 },
139 {"/dev/floppy/c0t0d0", 'A', MHD312 },
140 {"/dev/floppy/c0t0d1", 'B', MHD312 }, /* guessed by me */
141 {"/dev/rscsi", 'C', GENHD }, /* guessed by me */
144 {"/dev/rfloppy/c201d0s0", 'A', FHD312 },
145 {"/dev/rfloppy/c20Ad0s0", 'A', FHD312 },
146 {"/dev/rfloppy/c201d1s0", 'B', FHD312 },
147 {"/dev/rfloppy/c20Ad1s0", 'B', FHD312 },
148 {"/dev/rscsi", 'C', GENHD },
150 {"/dev/rdsk/c201d4", 'J', RJAZ(O_EXCL) },
151 {"/dev/rdsk/c201d4s0", 'J', RJAZ(O_EXCL) },
152 {"/dev/rdsk/c201d5", 'Z', RZIP(O_EXCL) },
153 {"/dev/rdsk/c201d5s0", 'Z', RZIP(O_EXCL) },
175 if (ioctl(fd, FLOPPY_GET_GEOMETRY, &(floppy->fg)) != 0) { in get_parameters()
180 return 0; in get_parameters()
192 if (ioctl(fd, FLOPPY_SET_GEOMETRY, &(floppy->fg)) != 0) { in set_parameters()
197 return 0; in set_parameters()
208 #ifdef CPU_mips /* for Siemens Nixdorf's SINIX-N/O (mips) 5.4x SVR4 */
209 { "/dev/at/flp/f0t", 'A', FHD312},
210 { "/dev/fd0", 'A', GENFD},
212 #ifdef CPU_i386 /* for Siemens Nixdorf's SINIX-D/L (intel) 5.4x SVR4 */
213 { "/dev/fd0135ds18", 'A', FHD312},
214 { "/dev/fd0135ds9", 'A', FDD312},
215 { "/dev/fd0", 'A', GENFD},
216 { "/dev/fd1135ds15", 'B', FHD514},
217 { "/dev/fd1135ds9", 'B', FDD514},
218 { "/dev/fd1", 'B', GENFD},
228 {"/dev/rfd0a", 'A', GENFD}, /* guessed */
229 {"/dev/rfd0c", 'A', GENFD}, /* guessed */
240 {"/dev/rdsk/f0d9dt", 'A', FDD514},
241 {"/dev/rdsk/f0q15dt", 'A', FHD514},
242 {"/dev/rdsk/f0d8dt", 'A', FDDsmall},
243 {"/dev/rdsk/f13ht", 'B', FHD312},
244 {"/dev/rdsk/f13dt", 'B', FDD312},
245 {"/dev/rdsk/0p1", 'C', GENHD},
246 {"/usr/vpix/defaults/C:",'D',12, 0, 0, 0, 0,8704L,DEF_ARG0},
247 {"$HOME/vpix/C:", 'E', 12, 0, 0, 0, 0,8704L,MDEF_ARG},
253 {"/dev/rfd0", 'A', GEN},
254 {"/dev/rfd1", 'B', GEN},
255 {"/dev/rdsk/0p1", 'C', GEN},
274 off = lseek(fd, 0, SEEK_CUR); in get_parameters()
275 if(off < 0) { in get_parameters()
279 if (off == 0) { in get_parameters()
282 if(lseek(fd, 0, SEEK_SET) < 0) { in get_parameters()
309 {"/dev/rfd0", 'A', GENFD},
318 {"/dev/fd0",'A',GENFD},
328 {"/dev/fd0c",'A',GENFD},
343 char *getVoldName(struct device *dev, char *name) in getVoldName() argument
347 if(!SHOULD_USE_VOLD(dev)) in getVoldName()
376 {"/vol/dev/aliases/floppy0", 'A', GENFD},
377 {"/dev/rdiskette", 'B', GENFD},
379 {"/dev/rdiskette", 'A', GENFD},
380 {"/vol/dev/aliases/floppy0", 'B', GENFD},
382 {"/dev/rdsk/c0t4d0s2", 'J', RJAZ(O_NDELAY)},
383 {"/dev/rdsk/c0t5d0s2", 'Z', RZIP(O_NDELAY)},
409 if (ioctl(fd, FDIOGCHAR, &(floppy->fdchar)) != 0) { in get_parameters()
414 return 0; in get_parameters()
427 if (ioctl(fd, FDIOSCHAR, &(floppy->fdchar)) != 0) { in set_parameters()
432 return 0; in set_parameters()
440 {"/dev/rfdl0c", 'A', FDD312},
441 {"/dev/rfd0c", 'A', FHD312},
449 {"/dev/fd096ds15", 'A', FHD514},
450 {"/dev/fd048ds9", 'A', FDD514},
451 {"/dev/fd1135ds18", 'B', FHD312},
452 {"/dev/fd1135ds9", 'B', FDD312},
453 {"/dev/hd0d", 'C', GENHD},
461 { "/dev/fd0135ds18", 'A', FHD312},
462 { "/dev/fd0135ds9", 'A', FDD312},
463 { "/dev/fd0", 'A', GENFD},
464 { "/dev/fd1135ds15", 'B', FHD514},
465 { "/dev/fd1135ds9", 'B', FDD514},
466 { "/dev/fd1", 'B', GENFD},
467 { "/dev/hd0d", 'C', GENHD},
476 { "/dev/rdsk/fds0d2.3.5hi", 'A', FHD312},
477 { "/dev/rdsk/fds0d2.3.5", 'A', FDD312},
478 { "/dev/rdsk/fds0d2.96", 'A', FHD514},
479 {"/dev/rdsk/fds0d2.48", 'A', FDD514},
491 {"/dev/rfd0c", 'A', GENFD},
492 {"/dev/rsd4c", 'J', RJAZ(O_NDELAY)},
493 {"/dev/rsd5c", 'Z', RZIP(O_NDELAY)},
517 if (ioctl(fd, DKIOCGPART, &(floppy->dkmap)) != 0) { in get_parameters()
523 if (ioctl(fd, FDKIOGCHAR, &( floppy->dkbuf)) != 0) { in get_parameters()
528 return 0; in get_parameters()
541 if (ioctl(fd, FDKIOSCHAR, &(floppy->dkbuf)) != 0) { in set_parameters()
547 if (ioctl(fd, ( unsigned int) DKIOCSPART, &(floppy->dkmap)) != 0) { in set_parameters()
552 return 0; in set_parameters()
561 /* [block device]: DPX1000 has /dev/flbm60, DPX2 has /dev/easyfb */
562 {"/dev/flbm60", 'A', MHD514};
563 {"/dev/flbm60", 'B', MDD514},
564 {"/dev/flbm60", 'C', MDDsmall},
565 {"/dev/flbm60", 'D', MSS},
566 {"/dev/flbm60", 'E', MSSsmall},
574 /* [block device]: DPX1000 has /dev/flbm60, DPX2 has /dev/easyfb */
575 {"/dev/easyfb", 'A', MHD514},
576 {"/dev/easyfb", 'B', MDD514},
577 {"/dev/easyfb", 'C', MDDsmall},
578 {"/dev/easyfb", 'D', MSS},
579 {"/dev/easyfb", 'E', MSSsmall},
594 0,
598 "No Data - unreadable",
599 0,
602 0,
605 0,
606 0,
607 0,
620 for (i=0; i< raw_cmd->cmd_count; i++) in print_message()
622 (int)raw_cmd->cmd[i] ); in print_message()
624 for (i=0; i< raw_cmd->reply_count; i++) in print_message()
626 (int)raw_cmd->reply[i] ); in print_message()
628 code = (raw_cmd->reply[0] <<16) + in print_message()
629 (raw_cmd->reply[1] << 8) + in print_message()
630 raw_cmd->reply[2]; in print_message()
631 for(i=0; i<22; i++){ in print_message()
640 * -1: Fatal error, don't bother retrying.
641 * 0: OK
647 if (ioctl( fd, FDRAWCMD, raw_cmd) >= 0) { in send_one_cmd()
648 if (raw_cmd->reply_count < 7) { in send_one_cmd()
650 return -1; in send_one_cmd()
652 return 0; in send_one_cmd()
662 if(ioctl(fd, FDRESET, 2) < 0){ in send_one_cmd()
664 return -1; in send_one_cmd()
669 return -1; in send_one_cmd()
676 * -1: error
677 * 0: OK, last sector
684 if(raw_cmd->reply_count == 7) { in analyze_one_reply()
687 if (raw_cmd->reply[3] != raw_cmd->cmd[2]) { in analyze_one_reply()
689 end = raw_cmd->cmd[6] + 1; in analyze_one_reply()
691 end = raw_cmd->reply[5]; in analyze_one_reply()
694 *bytes = end - raw_cmd->cmd[4]; in analyze_one_reply()
696 *bytes = *bytes << (7 + raw_cmd->cmd[5]); in analyze_one_reply()
698 *bytes = 0; in analyze_one_reply()
700 switch(raw_cmd->reply[0] & 0xc0){ in analyze_one_reply()
701 case 0x40: in analyze_one_reply()
702 if ((raw_cmd->reply[0] & 0x38) == 0 && in analyze_one_reply()
703 (raw_cmd->reply[1]) == 0x80 && in analyze_one_reply()
704 (raw_cmd->reply[2]) == 0) { in analyze_one_reply()
705 *bytes += 1 << (7 + raw_cmd->cmd[5]); in analyze_one_reply()
709 if ( raw_cmd->reply[1] & ST1_WP ){ in analyze_one_reply()
710 *bytes = 0; in analyze_one_reply()
713 return -1; in analyze_one_reply()
717 return -1; in analyze_one_reply()
718 case 0x80: in analyze_one_reply()
719 *bytes = 0; in analyze_one_reply()
722 return -1; in analyze_one_reply()
723 case 0xc0: in analyze_one_reply()
724 *bytes = 0; in analyze_one_reply()
727 return -1; in analyze_one_reply()
732 if(raw_cmd->flags & FD_RAW_MORE) in analyze_one_reply()
735 return 0; in analyze_one_reply()
740 {"/dev/fd0", 'A', 0, 0, 80,2, 18,0, MDEF_ARG },
741 {"/dev/fd1", 'B', 0, 0, 0,0, 0,0, FDEF_ARG },
743 {"/dev/sdb4",'J', GENHD },
744 {"/dev/sdb4",'Z', GENHD },
745 /* {"/dev/sda4",'D', GENHD },*/
765 #define USE_2M(floppy) ((floppy.rate & FD_2M) ? 0xff : 0x80 )
766 #define SSIZE(floppy) ((((floppy.rate & 0x38) >> 3 ) + 2) % 8)
771 if (value & 0x7f) in set_2m()
774 v = 0; in set_2m()
775 floppy->rate = (floppy->rate & ~FD_2M) | v; in set_2m()
783 floppy->rate = (floppy->rate & ~0x38) | v; in set_ssize()
791 if ( ( MINOR(buf->st_rdev ) & 0x7f ) > 3 ) in set_parameters()
816 if (ioctl(fd, BLKSSZGET, &sec_size) != 0 || sec_size <= 0) { in get_sector_size()
819 return -1; in get_sector_size()
828 static int get_block_geom(int fd, struct device *dev) { in get_block_geom() argument
832 uint16_t heads=dev->heads; in get_block_geom()
833 uint16_t sectors=dev->sectors; in get_block_geom()
836 if (ioctl(fd, HDIO_GETGEO, &geom) < 0) { in get_block_geom()
839 return -1; in get_block_geom()
842 if (ioctl(fd, BLKGETSIZE, &size) < 0) { in get_block_geom()
845 return -1; in get_block_geom()
849 if(sec_size < 0) in get_block_geom()
850 return -1; in get_block_geom()
852 dev->ssize = 0; in get_block_geom()
853 while (dev->ssize < 0x7F && (128 << dev->ssize) < sec_size) in get_block_geom()
854 dev->ssize++; in get_block_geom()
862 if(!dev->hidden) { in get_block_geom()
869 return -1; in get_block_geom()
871 dev->hidden = hidden; in get_block_geom()
873 dev->heads = heads; in get_block_geom()
874 dev->sectors = sectors; in get_block_geom()
875 if(!dev->tracks) in get_block_geom()
876 dev->tracks = ulong_to_sectors((size + dev->hidden % sect_per_track) / sect_per_track); in get_block_geom()
877 return 0; in get_block_geom()
897 /*** /jes -- for D.O.S. 486 BL DX2/80 ***/
898 /*** Jean-Marc Zucconi <jmz@FreeBSD.org> 2001/03/30 ***/
902 {"/dev/fd0.1440", 'A', FHD312},
903 {"/dev/fd0.720", 'A', FDD312},
904 {"/dev/fd1.1200", 'B', MHD514},
905 {"/dev/sd0s1", 'C', GENHD},
910 /*** /jes -- for ALR 486 DX4/100 ***/
914 {"/dev/rfd0a", 'A', FHD312},
915 {"/dev/rfd0f", 'A', FDD312},
916 {"/dev/rfd0f", 'S', MDD312},
917 {"/dev/rfd1a", 'B', FHD514},
918 {"/dev/rfd1d", 'B', FDD514},
919 {"/dev/rfd1d", 'T', MDD514},
920 {"/dev/rwd0d", 'C', 16, 0, 0, 0, 0, 0, 63L*512L, DEF_ARG0(0)},
929 {"/dev/rfd0Bc", 'A', FHD312},
930 {"/dev/rfd0Fc", 'A', FDD312},
931 {"/dev/rfd1Cc", 'B', FHD514},
932 {"/dev/rfd1Dc", 'B', FDD514},
933 {"/dev/rwd0c", 'C', 16, 0, 0, 0, 0, 0, 63L*512L, DEF_ARG0(0)},
945 {"/dev/rfp020", 'A', 12,O_NDELAY,40,2, 9, 0, MDEF_ARG},
951 int init_geom(int fd, struct device *dev, struct device *orig_dev, in init_geom() argument
956 if (ioctl(fd, GDGETA, &gdbuf) == -1) { in init_geom()
960 if((dev->use_2m & 0x7f) || (dev->ssize & 0x7f)) in init_geom()
963 SET_INT(gdbuf.params.cyls,dev->ntracks); in init_geom()
964 SET_INT(gdbuf.params.heads,dev->nheads); in init_geom()
965 SET_INT(gdbuf.params.psectrk,dev->nsect); in init_geom()
966 dev->ntracks = gdbuf.params.cyls; in init_geom()
967 dev->nheads = gdbuf.params.heads; in init_geom()
968 dev->nsect = gdbuf.params.psectrk; in init_geom()
969 dev->use_2m = 0x80; in init_geom()
970 dev->ssize = 0x02; in init_geom()
974 gdbuf.params.step = 0; /* step rate for controller */ in init_geom()
977 if (ioctl(fd, GDSETA, &gdbuf) < 0) { in init_geom()
981 return(0); in init_geom()
991 {"/dev/rfd0c", 'A', GENFD},
1002 {"/dev/fd0a", 'A', MHD312 } };
1012 {"/dev/rfd0b", 'A', MED312 },
1015 {"/dev/rfd0b", 'A', MHD312 },
1026 {"/dev/fpd0", 'A', FHD312},
1027 {"/dev/fpd0", 'A', FDD312},
1033 {"/dev/rdsk/f1q15dt", 'B', FHD514},
1034 {"/dev/rdsk/f1d9dt", 'B', FDD514},
1035 {"/dev/rdsk/f1d8dt", 'B', FDDsmall},
1036 {"/dev/rdsk/f03ht", 'A', FHD312},
1037 {"/dev/rdsk/f03dt", 'A', FDD312},
1038 {"/dev/rdsk/dos", 'C', GENHD},
1054 #define USE_2M(x) 0x80
1058 #define SSIZE(x) 0x02
1062 #define SET_2M(x,y) return -1
1066 #define SET_SSIZE(x,y) return -1
1070 int init_geom(int fd, struct device *dev, struct device *orig_dev, in init_geom() argument
1080 if (S_ISBLK(statbuf->st_mode) && in init_geom()
1081 major(statbuf->st_rdev) != BLOCK_MAJOR) { in init_geom()
1082 get_block_geom(fd, dev); in init_geom()
1083 return compare_geom(dev, orig_dev); in init_geom()
1091 if (!((S_ISBLK(statbuf->st_mode) && in init_geom()
1092 major(statbuf->st_rdev) == BLOCK_MAJOR) in init_geom()
1094 || (S_ISCHR(statbuf->st_mode) && in init_geom()
1095 major(statbuf->st_rdev) == CHAR_MAJOR) in init_geom()
1098 return compare_geom(dev, orig_dev); in init_geom()
1118 * Another cause might be pre-existing wrong parameters. The in init_geom()
1119 * user should do an setfdprm -c to repair this situation. in init_geom()
1134 change = 0; in init_geom()
1135 if(compare(dev->sectors, SECTORS(floppy))){ in init_geom()
1136 SECTORS(floppy) = dev->sectors; in init_geom()
1139 dev->sectors = (uint16_t) SECTORS(floppy); in init_geom()
1141 if(compare(dev->heads, HEADS(floppy))){ in init_geom()
1142 HEADS(floppy) = dev->heads; in init_geom()
1145 dev->heads = (uint16_t) HEADS(floppy); in init_geom()
1147 if(compare(dev->tracks, (unsigned int) TRACKS(floppy))){ in init_geom()
1148 TRACKS(floppy) = dev->tracks; in init_geom()
1151 dev->tracks = TRACKS(floppy); in init_geom()
1154 if(compare(dev->use_2m, USE_2M(floppy))){ in init_geom()
1155 SET_2M(&floppy, dev->use_2m); in init_geom()
1158 dev->use_2m = USE_2M(floppy); in init_geom()
1160 if( ! (dev->ssize & 0x80) ) in init_geom()
1161 dev->ssize = 0; in init_geom()
1162 if(compare(dev->ssize, SSIZE(floppy) + 128)){ in init_geom()
1163 SET_SSIZE(&floppy, dev->ssize); in init_geom()
1166 dev->ssize = SSIZE(floppy); in init_geom()
1170 return 0; in init_geom()
1173 SECTORS_PER_TRACK(floppy) = dev->sectors * dev->heads; in init_geom()
1177 SECTORS_PER_DISK(floppy) = dev->sectors * dev->heads * dev->tracks; in init_geom()
1182 if ( dev->tracks > 41 ) in init_geom()
1183 STRETCH(floppy) = 0; in init_geom()
1193 int init_geom(int fd, struct device *dev, struct device *orig_dev, in init_geom() argument
1196 return compare_geom(dev, orig_dev); in init_geom()
1204 {"/dev/fd0", 'A', 0, O_EXCL, 0,0, 0,0, MDEF_ARG},
1207 const unsigned int nr_const_devices = 0;