Lines Matching refs:unit
265 static struct amiga_floppy_struct unit[FD_MAX_UNITS]; variable
407 if (unit[drive].track % 2 != 0) in fd_select()
409 if (unit[drive].motor == 1) in fd_select()
462 if (!unit[nr].motor) { in fd_motor_on()
463 unit[nr].motor = 1; in fd_motor_on()
501 unit[drive].motor = 0; in fd_motor_off()
529 for (n = unit[drive].type->tracks/2; n != 0; --n) { in fd_calibrate()
537 ms_delay(unit[drive].type->step_delay); in fd_calibrate()
539 ms_delay (unit[drive].type->settle_time); in fd_calibrate()
541 n = unit[drive].type->tracks + 20; in fd_calibrate()
548 ms_delay(unit[drive].type->step_delay + 1); in fd_calibrate()
554 unit[drive].track = -1; in fd_calibrate()
559 unit[drive].track = 0; in fd_calibrate()
560 ms_delay(unit[drive].type->settle_time); in fd_calibrate()
577 if (unit[drive].track == track) { in fd_seek()
585 if (unit[drive].track < 0 && !fd_calibrate(drive)) { in fd_seek()
591 cnt = unit[drive].track/2 - track/2; in fd_seek()
601 if (track % 2 != unit[drive].track % 2) in fd_seek()
602 ms_delay (unit[drive].type->side_time); in fd_seek()
603 unit[drive].track = track; in fd_seek()
615 ms_delay (unit[drive].type->step_delay); in fd_seek()
617 ms_delay (unit[drive].type->settle_time); in fd_seek()
706 custom.dsklen = unit[drive].type->read_size/sizeof(short) | DSKLEN_DMAEN; in raw_read()
707 custom.dsklen = unit[drive].type->read_size/sizeof(short) | DSKLEN_DMAEN; in raw_read()
734 if ((ulong)unit[drive].track >= unit[drive].type->precomp2) in raw_write()
736 else if ((ulong)unit[drive].track >= unit[drive].type->precomp1) in raw_write()
742 custom.dsklen = unit[drive].type->write_size/sizeof(short) | DSKLEN_DMAEN|DSKLEN_WRITE; in raw_write()
743 custom.dsklen = unit[drive].type->write_size/sizeof(short) | DSKLEN_DMAEN|DSKLEN_WRITE; in raw_write()
763 unit[drive].dirty = 0; in post_write()
846 end = raw + unit[drive].type->read_size; in amiga_read()
848 for (scnt = 0;scnt < unit[drive].dtype->sects * unit[drive].type->sect_mult; scnt++) { in amiga_read()
875 if (hdr.track != unit[drive].track) { in amiga_read()
876 printk(KERN_INFO "MFM_TRACK: %d, %d\n", hdr.track, unit[drive].track); in amiga_read()
880 raw = decode ((ulong *)(unit[drive].trackbuf + hdr.sect*512), in amiga_read()
882 csum = checksum((ulong *)(unit[drive].trackbuf + hdr.sect*512), 512); in amiga_read()
889 ((ulong *)(unit[drive].trackbuf+hdr.sect*512))[0], in amiga_read()
890 ((ulong *)(unit[drive].trackbuf+hdr.sect*512))[1], in amiga_read()
891 ((ulong *)(unit[drive].trackbuf+hdr.sect*512))[2], in amiga_read()
892 ((ulong *)(unit[drive].trackbuf+hdr.sect*512))[3]); in amiga_read()
943 hdr.track = unit[disk].track; in putsec()
945 hdr.ord = unit[disk].dtype->sects * unit[disk].type->sect_mult - cnt; in putsec()
950 hdr.datachk = checksum((ulong *)(unit[disk].trackbuf+cnt*512), 512); in putsec()
960 encode_block(raw, (ulong *)(unit[disk].trackbuf+cnt*512), 512); in putsec()
973 for (cnt = 0; cnt < 415 * unit[disk].type->sect_mult; cnt++) in amiga_write()
977 for (cnt = 0; cnt < unit[disk].dtype->sects * unit[disk].type->sect_mult; cnt++) in amiga_write()
1161 end = raw + unit[drive].type->read_size; in dos_read()
1163 for (scnt=0; scnt < unit[drive].dtype->sects * unit[drive].type->sect_mult; scnt++) { in dos_read()
1168 unit[drive].track,drive,scnt); in dos_read()
1189 if (hdr.track != unit[drive].track/unit[drive].type->heads) { in dos_read()
1192 unit[drive].track/unit[drive].type->heads); in dos_read()
1196 if (hdr.side != unit[drive].track%unit[drive].type->heads) { in dos_read()
1199 unit[drive].track%unit[drive].type->heads); in dos_read()
1214 unit[drive].track, drive, scnt, hdr.sec); in dos_read()
1229 …raw = dos_decode((unsigned char *)(unit[drive].trackbuf + (hdr.sec - 1) * 512), (ushort *) raw, 51… in dos_read()
1231 crc = dos_data_crc(unit[drive].trackbuf + (hdr.sec - 1) * 512); in dos_read()
1238 ((ulong *)(unit[drive].trackbuf+(hdr.sec-1)*512))[0], in dos_read()
1239 ((ulong *)(unit[drive].trackbuf+(hdr.sec-1)*512))[1], in dos_read()
1240 ((ulong *)(unit[drive].trackbuf+(hdr.sec-1)*512))[2], in dos_read()
1241 ((ulong *)(unit[drive].trackbuf+(hdr.sec-1)*512))[3]); in dos_read()
1289 hdr.track=unit[drive].track/unit[drive].type->heads; in ms_putsec()
1290 hdr.side=unit[drive].track%unit[drive].type->heads; in ms_putsec()
1308 (unsigned char *)unit[drive].trackbuf+cnt*512,512); in ms_putsec()
1312 crc[0]=dos_data_crc(unit[drive].trackbuf+cnt*512); in ms_putsec()
1335 if (unit[disk].type->sect_mult==2) /* check for HD-Disks */ in dos_write()
1350 for(cnt = 0; cnt < unit[disk].dtype->sects * unit[disk].type->sect_mult; cnt++) in dos_write()
1381 (*unit[nr].dtype->write_fkt)(nr); in flush_track_callback()
1406 (*unit[nr].dtype->write_fkt)(nr); in non_int_flush_track()
1429 if (unit[drive].track == track) in get_track()
1437 if (unit[drive].dirty == 1) { in get_track()
1446 error = (*unit[drive].dtype->read_fkt)(drive); in get_track()
1452 unit[drive].track = -1; in get_track()
1462 int drive = floppy - unit; in amiflop_rw_cur_segment()
1530 geo->heads = unit[drive].type->heads; in fd_getgeo()
1531 geo->sectors = unit[drive].dtype->sects * unit[drive].type->sect_mult; in fd_getgeo()
1532 geo->cylinders = unit[drive].type->tracks; in fd_getgeo()
1540 int drive = p - unit; in fd_locked_ioctl()
1640 unit[drive].type = &drive_types[num_dr_types-1]; /* FD_NODRIVE */ in fd_probe()
1644 unit[drive].type = drive_types + type; in fd_probe()
1645 unit[drive].track = -1; in fd_probe()
1647 unit[drive].disk = -1; in fd_probe()
1648 unit[drive].motor = 0; in fd_probe()
1649 unit[drive].busy = 0; in fd_probe()
1650 unit[drive].status = -1; in fd_probe()
1673 if (unit[drive].type->code == FD_NODRIVE) { in floppy_open()
1701 unit[drive].dtype=&data_types[system]; in floppy_open()
1702 unit[drive].blocks=unit[drive].type->heads*unit[drive].type->tracks* in floppy_open()
1703 data_types[system].sects*unit[drive].type->sect_mult; in floppy_open()
1704 set_capacity(unit[drive].gendisk[system], unit[drive].blocks); in floppy_open()
1707 unit[drive].type->name, data_types[system].name); in floppy_open()
1716 int drive = p - unit; in floppy_release()
1719 if (unit[drive].dirty == 1) { in floppy_release()
1743 int drive = p - unit; in amiga_check_events()
1785 disk = blk_mq_alloc_disk(&unit[drive].tag_set, NULL); in fd_alloc_disk()
1798 disk->private_data = &unit[drive]; in fd_alloc_disk()
1801 unit[drive].gendisk[system] = disk; in fd_alloc_disk()
1808 unit[drive].trackbuf = kmalloc(FLOPPY_MAX_SECTORS * 512, GFP_KERNEL); in fd_alloc_drive()
1809 if (!unit[drive].trackbuf) in fd_alloc_drive()
1812 memset(&unit[drive].tag_set, 0, sizeof(unit[drive].tag_set)); in fd_alloc_drive()
1813 unit[drive].tag_set.ops = &amiflop_mq_ops; in fd_alloc_drive()
1814 unit[drive].tag_set.nr_hw_queues = 1; in fd_alloc_drive()
1815 unit[drive].tag_set.nr_maps = 1; in fd_alloc_drive()
1816 unit[drive].tag_set.queue_depth = 2; in fd_alloc_drive()
1817 unit[drive].tag_set.numa_node = NUMA_NO_NODE; in fd_alloc_drive()
1818 unit[drive].tag_set.flags = BLK_MQ_F_SHOULD_MERGE; in fd_alloc_drive()
1819 if (blk_mq_alloc_tag_set(&unit[drive].tag_set)) in fd_alloc_drive()
1829 blk_mq_free_tag_set(&unit[drive].tag_set); in fd_alloc_drive()
1831 kfree(unit[drive].trackbuf); in fd_alloc_drive()
1833 unit[drive].type->code = FD_NODRIVE; in fd_alloc_drive()
1846 if (unit[drive].type->code == FD_NODRIVE) in fd_probe_drives()
1904 unit[i].track = -1; in amiga_floppy_probe()