Lines Matching defs:unit
191 struct fd_drive_type *type; /* type of floppy for this unit */
192 struct fd_data_type *dtype; /* type of floppy for this unit */
203 int status; /* current error code for unit */
213 #define FD_NOUNIT 1 /* unit does not exist */
214 #define FD_UNITBUSY 2 /* unit already active */
215 #define FD_NOTACTIVE 3 /* unit is not active */
216 #define FD_NOTREADY 4 /* unit is not ready (motor not on/no disk) */
226 #define FD_NODRIVE 0x00000000 /* response when no unit is present */
263 /* current info on each unit */
264 static struct amiga_floppy_struct unit[FD_MAX_UNITS];
406 if (unit[drive].track % 2 != 0)
408 if (unit[drive].motor == 1)
461 if (!unit[nr].motor) {
462 unit[nr].motor = 1;
500 unit[drive].motor = 0;
528 for (n = unit[drive].type->tracks/2; n != 0; --n) {
536 ms_delay(unit[drive].type->step_delay);
538 ms_delay (unit[drive].type->settle_time);
540 n = unit[drive].type->tracks + 20;
547 ms_delay(unit[drive].type->step_delay + 1);
553 unit[drive].track = -1;
558 unit[drive].track = 0;
559 ms_delay(unit[drive].type->settle_time);
576 if (unit[drive].track == track) {
584 if (unit[drive].track < 0 && !fd_calibrate(drive)) {
590 cnt = unit[drive].track/2 - track/2;
600 if (track % 2 != unit[drive].track % 2)
601 ms_delay (unit[drive].type->side_time);
602 unit[drive].track = track;
614 ms_delay (unit[drive].type->step_delay);
616 ms_delay (unit[drive].type->settle_time);
705 custom.dsklen = unit[drive].type->read_size/sizeof(short) | DSKLEN_DMAEN;
706 custom.dsklen = unit[drive].type->read_size/sizeof(short) | DSKLEN_DMAEN;
733 if ((ulong)unit[drive].track >= unit[drive].type->precomp2)
735 else if ((ulong)unit[drive].track >= unit[drive].type->precomp1)
741 custom.dsklen = unit[drive].type->write_size/sizeof(short) | DSKLEN_DMAEN|DSKLEN_WRITE;
742 custom.dsklen = unit[drive].type->write_size/sizeof(short) | DSKLEN_DMAEN|DSKLEN_WRITE;
762 unit[drive].dirty = 0;
845 end = raw + unit[drive].type->read_size;
847 for (scnt = 0;scnt < unit[drive].dtype->sects * unit[drive].type->sect_mult; scnt++) {
874 if (hdr.track != unit[drive].track) {
875 printk(KERN_INFO "MFM_TRACK: %d, %d\n", hdr.track, unit[drive].track);
879 raw = decode ((ulong *)(unit[drive].trackbuf + hdr.sect*512),
881 csum = checksum((ulong *)(unit[drive].trackbuf + hdr.sect*512), 512);
888 ((ulong *)(unit[drive].trackbuf+hdr.sect*512))[0],
889 ((ulong *)(unit[drive].trackbuf+hdr.sect*512))[1],
890 ((ulong *)(unit[drive].trackbuf+hdr.sect*512))[2],
891 ((ulong *)(unit[drive].trackbuf+hdr.sect*512))[3]);
942 hdr.track = unit[disk].track;
944 hdr.ord = unit[disk].dtype->sects * unit[disk].type->sect_mult - cnt;
949 hdr.datachk = checksum((ulong *)(unit[disk].trackbuf+cnt*512), 512);
959 encode_block(raw, (ulong *)(unit[disk].trackbuf+cnt*512), 512);
972 for (cnt = 0; cnt < 415 * unit[disk].type->sect_mult; cnt++)
976 for (cnt = 0; cnt < unit[disk].dtype->sects * unit[disk].type->sect_mult; cnt++)
1160 end = raw + unit[drive].type->read_size;
1162 for (scnt=0; scnt < unit[drive].dtype->sects * unit[drive].type->sect_mult; scnt++) {
1166 "track %d, unit %d for sector %d\n",
1167 unit[drive].track,drive,scnt);
1188 if (hdr.track != unit[drive].track/unit[drive].type->heads) {
1191 unit[drive].track/unit[drive].type->heads);
1195 if (hdr.side != unit[drive].track%unit[drive].type->heads) {
1198 unit[drive].track%unit[drive].type->heads);
1212 "%d, unit %d for sector%d, disk sector %d\n",
1213 unit[drive].track, drive, scnt, hdr.sec);
1228 raw = dos_decode((unsigned char *)(unit[drive].trackbuf + (hdr.sec - 1) * 512), (ushort *) raw, 512);
1230 crc = dos_data_crc(unit[drive].trackbuf + (hdr.sec - 1) * 512);
1237 ((ulong *)(unit[drive].trackbuf+(hdr.sec-1)*512))[0],
1238 ((ulong *)(unit[drive].trackbuf+(hdr.sec-1)*512))[1],
1239 ((ulong *)(unit[drive].trackbuf+(hdr.sec-1)*512))[2],
1240 ((ulong *)(unit[drive].trackbuf+(hdr.sec-1)*512))[3]);
1288 hdr.track=unit[drive].track/unit[drive].type->heads;
1289 hdr.side=unit[drive].track%unit[drive].type->heads;
1307 (unsigned char *)unit[drive].trackbuf+cnt*512,512);
1311 crc[0]=dos_data_crc(unit[drive].trackbuf+cnt*512);
1334 if (unit[disk].type->sect_mult==2) /* check for HD-Disks */
1349 for(cnt = 0; cnt < unit[disk].dtype->sects * unit[disk].type->sect_mult; cnt++)
1380 (*unit[nr].dtype->write_fkt)(nr);
1405 (*unit[nr].dtype->write_fkt)(nr);
1428 if (unit[drive].track == track)
1436 if (unit[drive].dirty == 1) {
1445 error = (*unit[drive].dtype->read_fkt)(drive);
1451 unit[drive].track = -1;
1461 int drive = floppy - unit;
1529 geo->heads = unit[drive].type->heads;
1530 geo->sectors = unit[drive].dtype->sects * unit[drive].type->sect_mult;
1531 geo->cylinders = unit[drive].type->tracks;
1539 int drive = p - unit;
1638 unit[drive].type = &drive_types[num_dr_types-1]; /* FD_NODRIVE */
1642 unit[drive].type = drive_types + type;
1643 unit[drive].track = -1;
1645 unit[drive].disk = -1;
1646 unit[drive].motor = 0;
1647 unit[drive].busy = 0;
1648 unit[drive].status = -1;
1671 if (unit[drive].type->code == FD_NODRIVE) {
1697 unit[drive].dtype=&data_types[system];
1698 unit[drive].blocks=unit[drive].type->heads*unit[drive].type->tracks*
1699 data_types[system].sects*unit[drive].type->sect_mult;
1700 set_capacity(unit[drive].gendisk[system], unit[drive].blocks);
1703 unit[drive].type->name, data_types[system].name);
1712 int drive = p - unit;
1715 if (unit[drive].dirty == 1) {
1739 int drive = p - unit;
1782 disk = blk_mq_alloc_disk(&unit[drive].tag_set, NULL);
1796 disk->private_data = &unit[drive];
1799 unit[drive].gendisk[system] = disk;
1808 unit[drive].trackbuf = kmalloc(FLOPPY_MAX_SECTORS * 512, GFP_KERNEL);
1809 if (!unit[drive].trackbuf)
1812 memset(&unit[drive].tag_set, 0, sizeof(unit[drive].tag_set));
1813 unit[drive].tag_set.ops = &amiflop_mq_ops;
1814 unit[drive].tag_set.nr_hw_queues = 1;
1815 unit[drive].tag_set.nr_maps = 1;
1816 unit[drive].tag_set.queue_depth = 2;
1817 unit[drive].tag_set.numa_node = NUMA_NO_NODE;
1818 unit[drive].tag_set.flags = BLK_MQ_F_SHOULD_MERGE;
1819 if (blk_mq_alloc_tag_set(&unit[drive].tag_set))
1829 blk_mq_free_tag_set(&unit[drive].tag_set);
1831 kfree(unit[drive].trackbuf);
1833 unit[drive].type->code = FD_NODRIVE;
1846 if (unit[drive].type->code == FD_NODRIVE)
1904 unit[i].track = -1;