Lines Matching refs:track
10 * - added support for 40 Track 5.25" drives, 80-track hopefully behaves
29 * - usage ioctl(d, RAW_TRACK, ptr); the raw track buffer (MFM-encoded data
93 #define DSKTRACK0 (0x1<<4) /* head at track zero when low */
108 #define DSKSTEP (0x1) /* pulse low to step head 1 track */
154 #define FD_RECALIBRATE 0x07 /* move to track 0 */
155 #define FD_SEEK 0x0F /* seek track */
160 #define FD_FORMAT 0x4D /* format one track */
166 #define FLOPPY_MAX_SECTORS 22 /* Max. Number of sectors per track */
170 int sects; /* sectors per track */
171 int (*read_fkt)(int); /* read whole track */
172 void (*write_fkt)(int); /* write whole track */
180 unsigned int read_size; /* raw read size for one track */
181 unsigned int write_size; /* raw write size for one track */
183 unsigned int precomp1; /* start track for precomp 1 */
184 unsigned int precomp2; /* start track for precomp 2 */
193 int track; /* current track (-1 == unknown) */
194 unsigned char *trackbuf; /* current track (kmaloc()'d */
407 if (unit[drive].track % 2 != 0)
554 unit[drive].track = -1;
559 unit[drive].track = 0;
567 static int fd_seek(int drive, int track)
573 printk("seeking drive %d to track %d\n",drive,track);
577 if (unit[drive].track == track) {
585 if (unit[drive].track < 0 && !fd_calibrate(drive)) {
591 cnt = unit[drive].track/2 - track/2;
594 if (track % 2 != 0)
601 if (track % 2 != unit[drive].track % 2)
603 unit[drive].track = track;
734 if ((ulong)unit[drive].track >= unit[drive].type->precomp2)
736 else if ((ulong)unit[drive].track >= unit[drive].type->precomp1)
828 unsigned char track;
863 hdr.magic, hdr.track, hdr.sect, hdr.ord,
874 /* verify track */
875 if (hdr.track != unit[drive].track) {
876 printk(KERN_INFO "MFM_TRACK: %d, %d\n", hdr.track, unit[drive].track);
886 hdr.magic, hdr.track, hdr.sect, hdr.ord, scnt,
943 hdr.track = unit[disk].track;
984 unsigned char track, /* 0-80 */
1109 return dos_crc(&(hdr->track), 0xb2, 0x30, 3); /* precomputed magic */
1167 "track %d, unit %d for sector %d\n",
1168 unit[drive].track,drive,scnt);
1180 printk("(%3d,%d,%2d,%d) %x\n", hdr.track, hdr.side,
1189 if (hdr.track != unit[drive].track/unit[drive].type->heads) {
1191 hdr.track,
1192 unit[drive].track/unit[drive].type->heads);
1196 if (hdr.side != unit[drive].track%unit[drive].type->heads) {
1199 unit[drive].track%unit[drive].type->heads);
1212 printk(KERN_INFO "dos_read: no data sync on track "
1214 unit[drive].track, drive, scnt, hdr.sec);
1224 hdr.track,hdr.side,hdr.sec,hdr.len_desc,scnt);
1235 "sc=%d, %x %x\n", hdr.track, hdr.side,
1289 hdr.track=unit[drive].track/unit[drive].type->heads;
1290 hdr.side=unit[drive].track%unit[drive].type->heads;
1295 dos_encode_block((ushort *)raw,(unsigned char *) &hdr.track,28);
1364 * which is only true if we complete writing a track within three seconds
1424 static int get_track(int drive, int track)
1429 if (unit[drive].track == track)
1443 if (!fd_seek(drive, track))
1452 unit[drive].track = -1;
1463 unsigned int cnt, block, track, sector;
1473 track = block / (floppy->dtype->sects * floppy->type->sect_mult);
1477 printk("access to track %d, sector %d, with buffer at "
1478 "0x%08lx\n", track, sector, data);
1481 if (get_track(drive, track) == -1)
1493 * setup a callback to write the track buffer
1583 getprm.track=p->type->tracks;
1644 unit[drive].track = -1;
1756 p->track = -1;
1907 unit[i].track = -1;