Lines Matching refs:raw_cmd

409 static struct floppy_raw_cmd *raw_cmd, default_raw_cmd;  variable
912 raw_cmd = NULL; in unlock_fdc()
1071 if (raw_cmd->length == 0) { in setup_DMA()
1074 raw_cmd->fullcmd, raw_cmd->cmd_count, false); in setup_DMA()
1079 if (((unsigned long)raw_cmd->kernel_data) % 512) { in setup_DMA()
1080 pr_info("non aligned address: %p\n", raw_cmd->kernel_data); in setup_DMA()
1088 if (fd_dma_setup(raw_cmd->kernel_data, raw_cmd->length, in setup_DMA()
1089 (raw_cmd->flags & FD_RAW_READ) ? in setup_DMA()
1100 fd_cacheflush(raw_cmd->kernel_data, raw_cmd->length); in setup_DMA()
1101 fd_set_dma_mode((raw_cmd->flags & FD_RAW_READ) ? in setup_DMA()
1103 fd_set_dma_addr(raw_cmd->kernel_data); in setup_DMA()
1104 fd_set_dma_count(raw_cmd->length); in setup_DMA()
1211 if (raw_cmd->rate & 0x40) { in perpendicular_mode()
1212 switch (raw_cmd->rate & 3) { in perpendicular_mode()
1298 switch (raw_cmd->rate & 0x03) { in fdc_specify()
1368 if ((raw_cmd->rate & 3) == fdc_state[current_fdc].dtr) in fdc_dtr()
1372 fdc_outb(raw_cmd->rate & 3, current_fdc, FD_DCR); in fdc_dtr()
1379 fdc_state[current_fdc].dtr = raw_cmd->rate & 3; in fdc_dtr()
1491 flags = raw_cmd->flags; in setup_rw_floppy()
1518 for (i = 0; i < raw_cmd->cmd_count; i++) in setup_rw_floppy()
1519 r |= output_byte(current_fdc, raw_cmd->fullcmd[i]); in setup_rw_floppy()
1604 disk_change(current_drive) && (raw_cmd->flags & FD_RAW_NEED_DISK)) { in seek_floppy()
1619 (raw_cmd->flags & FD_RAW_NEED_DISK) && in seek_floppy()
1620 …(drive_state[current_drive].track <= NO_TRACK || drive_state[current_drive].track == raw_cmd->trac… in seek_floppy()
1623 if (raw_cmd->track) in seek_floppy()
1624 track = raw_cmd->track - 1; in seek_floppy()
1629 raw_cmd->flags |= FD_RAW_NEED_SEEK; in seek_floppy()
1635 if (raw_cmd->track != drive_state[current_drive].track && in seek_floppy()
1636 (raw_cmd->flags & FD_RAW_NEED_SEEK)) in seek_floppy()
1637 track = raw_cmd->track; in seek_floppy()
1906 if (!(raw_cmd->flags & FD_RAW_NO_MOTOR)) { in start_motor()
1940 if (!(raw_cmd->flags & FD_RAW_NO_MOTOR) && in floppy_ready()
1946 if ((raw_cmd->flags & FD_RAW_READ) || (raw_cmd->flags & FD_RAW_WRITE)) { in floppy_ready()
1948 fd_chose_dma_mode(raw_cmd->kernel_data, raw_cmd->length); in floppy_ready()
1953 if (raw_cmd->flags & (FD_RAW_NEED_SEEK | FD_RAW_NEED_DISK)) { in floppy_ready()
1958 if ((raw_cmd->flags & FD_RAW_READ) || in floppy_ready()
1959 (raw_cmd->flags & FD_RAW_WRITE)) in floppy_ready()
2149 raw_cmd = &default_raw_cmd; in setup_format_params()
2150 raw_cmd->track = track; in setup_format_params()
2152 raw_cmd->flags = (FD_RAW_WRITE | FD_RAW_INTR | FD_RAW_SPIN | in setup_format_params()
2154 raw_cmd->rate = _floppy->rate & 0x43; in setup_format_params()
2155 raw_cmd->cmd_count = NR_F; in setup_format_params()
2156 raw_cmd->cmd[COMMAND] = FM_MODE(_floppy, FD_FORMAT); in setup_format_params()
2157 raw_cmd->cmd[DR_SELECT] = UNIT(current_drive) + PH_HEAD(_floppy, format_req.head); in setup_format_params()
2158 raw_cmd->cmd[F_SIZECODE] = FD_SIZECODE(_floppy); in setup_format_params()
2159 raw_cmd->cmd[F_SECT_PER_TRACK] = _floppy->sect << 2 >> raw_cmd->cmd[F_SIZECODE]; in setup_format_params()
2160 raw_cmd->cmd[F_GAP] = _floppy->fmt_gap; in setup_format_params()
2161 raw_cmd->cmd[F_FILL] = FD_FILL_BYTE; in setup_format_params()
2163 raw_cmd->kernel_data = floppy_track_buffer; in setup_format_params()
2164 raw_cmd->length = 4 * raw_cmd->cmd[F_SECT_PER_TRACK]; in setup_format_params()
2166 if (!raw_cmd->cmd[F_SECT_PER_TRACK]) in setup_format_params()
2170 head_shift = (raw_cmd->cmd[F_SECT_PER_TRACK] + 5) / 6; in setup_format_params()
2177 % raw_cmd->cmd[F_SECT_PER_TRACK]; in setup_format_params()
2185 for (count = 0; count < raw_cmd->cmd[F_SECT_PER_TRACK]; ++count) { in setup_format_params()
2189 here[count].size = raw_cmd->cmd[F_SIZECODE]; in setup_format_params()
2192 for (count = 1; count <= raw_cmd->cmd[F_SECT_PER_TRACK]; ++count) { in setup_format_params()
2194 n = (n + il) % raw_cmd->cmd[F_SECT_PER_TRACK]; in setup_format_params()
2197 if (n >= raw_cmd->cmd[F_SECT_PER_TRACK]) { in setup_format_params()
2198 n -= raw_cmd->cmd[F_SECT_PER_TRACK]; in setup_format_params()
2205 for (count = 0; count < raw_cmd->cmd[F_SECT_PER_TRACK]; count++) in setup_format_params()
2335 ssize = DIV_ROUND_UP(1 << raw_cmd->cmd[SIZECODE], 4); in rw_interrupt()
2342 if (raw_cmd->cmd[COMMAND] & 0x80) in rw_interrupt()
2347 nr_sectors = (((reply_buffer[R_TRACK] - raw_cmd->cmd[TRACK]) * heads + in rw_interrupt()
2348 reply_buffer[R_HEAD] - raw_cmd->cmd[HEAD]) * raw_cmd->cmd[SECT_PER_TRACK] + in rw_interrupt()
2349 reply_buffer[R_SECTOR] - raw_cmd->cmd[SECTOR] + eoc) << raw_cmd->cmd[SIZECODE] >> 2; in rw_interrupt()
2356 raw_cmd->cmd[SECTOR]); in rw_interrupt()
2358 raw_cmd->cmd[HEAD]); in rw_interrupt()
2360 raw_cmd->cmd[TRACK]); in rw_interrupt()
2363 raw_cmd->cmd[SECT_PER_TRACK], fsector_t, ssize); in rw_interrupt()
2401 if (CT(raw_cmd->cmd[COMMAND]) != FD_READ || in rw_interrupt()
2402 raw_cmd->kernel_data == bio_data(current_req->bio)) { in rw_interrupt()
2405 } else if (CT(raw_cmd->cmd[COMMAND]) == FD_READ) { in rw_interrupt()
2406 buffer_track = raw_cmd->track; in rw_interrupt()
2464 if (current_count_sectors <= 0 && CT(raw_cmd->cmd[COMMAND]) == FD_WRITE && in copy_buffer()
2470 if (remaining > blk_rq_bytes(current_req) && CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) { in copy_buffer()
2505 if (CT(raw_cmd->cmd[COMMAND]) == FD_READ) in copy_buffer()
2507 if (CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) in copy_buffer()
2514 if (CT(raw_cmd->cmd[COMMAND]) == FD_READ) in copy_buffer()
2541 if (CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) { in virtualdmabug_workaround()
2542 raw_cmd->cmd[COMMAND] &= ~0x80; /* switch off multiple track mode */ in virtualdmabug_workaround()
2544 hard_sectors = raw_cmd->length >> (7 + raw_cmd->cmd[SIZECODE]); in virtualdmabug_workaround()
2545 end_sector = raw_cmd->cmd[SECTOR] + hard_sectors - 1; in virtualdmabug_workaround()
2546 if (end_sector > raw_cmd->cmd[SECT_PER_TRACK]) { in virtualdmabug_workaround()
2548 end_sector, raw_cmd->cmd[SECT_PER_TRACK]); in virtualdmabug_workaround()
2551 raw_cmd->cmd[SECT_PER_TRACK] = end_sector; in virtualdmabug_workaround()
2580 raw_cmd = &default_raw_cmd; in make_raw_rw_request()
2581 raw_cmd->flags = FD_RAW_SPIN | FD_RAW_NEED_DISK | FD_RAW_NEED_SEEK; in make_raw_rw_request()
2582 raw_cmd->cmd_count = NR_RW; in make_raw_rw_request()
2584 raw_cmd->flags |= FD_RAW_READ; in make_raw_rw_request()
2585 raw_cmd->cmd[COMMAND] = FM_MODE(_floppy, FD_READ); in make_raw_rw_request()
2587 raw_cmd->flags |= FD_RAW_WRITE; in make_raw_rw_request()
2588 raw_cmd->cmd[COMMAND] = FM_MODE(_floppy, FD_WRITE); in make_raw_rw_request()
2596 raw_cmd->cmd[TRACK] = (int)blk_rq_pos(current_req) / max_sector; in make_raw_rw_request()
2598 if (_floppy->track && raw_cmd->cmd[TRACK] >= _floppy->track) { in make_raw_rw_request()
2605 raw_cmd->cmd[HEAD] = fsector_t / _floppy->sect; in make_raw_rw_request()
2613 if ((_floppy->rate & FD_2M) && (!raw_cmd->cmd[TRACK]) && (!raw_cmd->cmd[HEAD])) { in make_raw_rw_request()
2621 raw_cmd->cmd[SIZECODE] = 2; in make_raw_rw_request()
2623 raw_cmd->cmd[SIZECODE] = FD_SIZECODE(_floppy); in make_raw_rw_request()
2624 raw_cmd->rate = _floppy->rate & 0x43; in make_raw_rw_request()
2626 (raw_cmd->cmd[TRACK] || raw_cmd->cmd[HEAD]) && raw_cmd->rate == 2) in make_raw_rw_request()
2627 raw_cmd->rate = 1; in make_raw_rw_request()
2629 if (raw_cmd->cmd[SIZECODE]) in make_raw_rw_request()
2630 raw_cmd->cmd[SIZECODE2] = 0xff; in make_raw_rw_request()
2632 raw_cmd->cmd[SIZECODE2] = 0x80; in make_raw_rw_request()
2633 raw_cmd->track = raw_cmd->cmd[TRACK] << STRETCH(_floppy); in make_raw_rw_request()
2634 raw_cmd->cmd[DR_SELECT] = UNIT(current_drive) + PH_HEAD(_floppy, raw_cmd->cmd[HEAD]); in make_raw_rw_request()
2635 raw_cmd->cmd[GAP] = _floppy->gap; in make_raw_rw_request()
2636 ssize = DIV_ROUND_UP(1 << raw_cmd->cmd[SIZECODE], 4); in make_raw_rw_request()
2637 raw_cmd->cmd[SECT_PER_TRACK] = _floppy->sect << 2 >> raw_cmd->cmd[SIZECODE]; in make_raw_rw_request()
2638 raw_cmd->cmd[SECTOR] = ((fsector_t % _floppy->sect) << 2 >> raw_cmd->cmd[SIZECODE]) + in make_raw_rw_request()
2646 raw_cmd->cmd[SECT_PER_TRACK]++; in make_raw_rw_request()
2648 raw_cmd->cmd[SECTOR]--; in make_raw_rw_request()
2653 raw_cmd->cmd[SIZECODE]--; in make_raw_rw_request()
2656 raw_cmd->cmd[SECTOR]++; in make_raw_rw_request()
2657 raw_cmd->cmd[SECT_PER_TRACK]++; in make_raw_rw_request()
2660 max_sector = raw_cmd->cmd[HEAD] * _floppy->sect + tracksize; in make_raw_rw_request()
2661 } else if (!raw_cmd->cmd[TRACK] && !raw_cmd->cmd[HEAD] && !(_floppy->rate & FD_2M) && probing) { in make_raw_rw_request()
2663 } else if (!raw_cmd->cmd[HEAD] && CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) { in make_raw_rw_request()
2671 if ((raw_cmd->track == buffer_track) && in make_raw_rw_request()
2675 if (CT(raw_cmd->cmd[COMMAND]) == FD_READ) { in make_raw_rw_request()
2680 if (CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) { in make_raw_rw_request()
2689 raw_cmd->flags &= ~FD_RAW_WRITE; in make_raw_rw_request()
2690 raw_cmd->flags |= FD_RAW_READ; in make_raw_rw_request()
2691 raw_cmd->cmd[COMMAND] = FM_MODE(_floppy, FD_READ); in make_raw_rw_request()
2729 raw_cmd->kernel_data = bio_data(current_req->bio); in make_raw_rw_request()
2730 raw_cmd->length = current_count_sectors << 9; in make_raw_rw_request()
2731 if (raw_cmd->length == 0) { in make_raw_rw_request()
2742 if (CT(raw_cmd->cmd[COMMAND]) == FD_READ) in make_raw_rw_request()
2746 if (buffer_track != raw_cmd->track || /* bad track */ in make_raw_rw_request()
2750 ((CT(raw_cmd->cmd[COMMAND]) == FD_READ || in make_raw_rw_request()
2759 raw_cmd->kernel_data = floppy_track_buffer + in make_raw_rw_request()
2762 if (CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) { in make_raw_rw_request()
2769 buffer_track = raw_cmd->track; in make_raw_rw_request()
2779 raw_cmd->length = in_sector_offset + current_count_sectors; in make_raw_rw_request()
2780 raw_cmd->length = ((raw_cmd->length - 1) | (ssize - 1)) + 1; in make_raw_rw_request()
2781 raw_cmd->length <<= 9; in make_raw_rw_request()
2782 if ((raw_cmd->length < current_count_sectors << 9) || in make_raw_rw_request()
2783 (raw_cmd->kernel_data != bio_data(current_req->bio) && in make_raw_rw_request()
2784 CT(raw_cmd->cmd[COMMAND]) == FD_WRITE && in make_raw_rw_request()
2785 (aligned_sector_t + (raw_cmd->length >> 9) > buffer_max || in make_raw_rw_request()
2787 raw_cmd->length % (128 << raw_cmd->cmd[SIZECODE]) || in make_raw_rw_request()
2788 raw_cmd->length <= 0 || current_count_sectors <= 0) { in make_raw_rw_request()
2790 raw_cmd->length, current_count_sectors); in make_raw_rw_request()
2791 if (raw_cmd->kernel_data != bio_data(current_req->bio)) in make_raw_rw_request()
2793 (int)((raw_cmd->kernel_data - in make_raw_rw_request()
2798 pr_info("ssize=%x SIZECODE=%d\n", ssize, raw_cmd->cmd[SIZECODE]); in make_raw_rw_request()
2800 raw_cmd->cmd[COMMAND], raw_cmd->cmd[SECTOR], in make_raw_rw_request()
2801 raw_cmd->cmd[HEAD], raw_cmd->cmd[TRACK]); in make_raw_rw_request()
2809 if (raw_cmd->kernel_data != bio_data(current_req->bio)) { in make_raw_rw_request()
2810 if (raw_cmd->kernel_data < floppy_track_buffer || in make_raw_rw_request()
2812 raw_cmd->length < 0 || in make_raw_rw_request()
2813 raw_cmd->kernel_data + raw_cmd->length > in make_raw_rw_request()
2817 fsector_t, buffer_min, raw_cmd->length >> 9); in make_raw_rw_request()
2820 if (CT(raw_cmd->cmd[COMMAND]) == FD_READ) in make_raw_rw_request()
2822 if (CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) in make_raw_rw_request()
2826 } else if (raw_cmd->length > blk_rq_bytes(current_req) || in make_raw_rw_request()
2830 } else if (raw_cmd->length < current_count_sectors << 9) { in make_raw_rw_request()
2832 pr_info("bytes=%ld\n", raw_cmd->length >> 9); in make_raw_rw_request()
2835 if (raw_cmd->length == 0) { in make_raw_rw_request()
2885 raw_cmd = &default_raw_cmd; in redo_fd_request()
2886 raw_cmd->flags = 0; in redo_fd_request()
2983 raw_cmd = &default_raw_cmd; in poll_drive()
2984 raw_cmd->flags = flag; in poll_drive()
2985 raw_cmd->track = 0; in poll_drive()
2986 raw_cmd->cmd_count = 0; in poll_drive()
3078 raw_cmd->flags |= FD_RAW_FAILURE; in raw_cmd_done()
3079 raw_cmd->flags |= FD_RAW_HARDFAILURE; in raw_cmd_done()
3081 raw_cmd->reply_count = inr; in raw_cmd_done()
3082 if (raw_cmd->reply_count > FD_RAW_REPLY_SIZE) in raw_cmd_done()
3083 raw_cmd->reply_count = 0; in raw_cmd_done()
3084 for (i = 0; i < raw_cmd->reply_count; i++) in raw_cmd_done()
3085 raw_cmd->reply[i] = reply_buffer[i]; in raw_cmd_done()
3087 if (raw_cmd->flags & (FD_RAW_READ | FD_RAW_WRITE)) { in raw_cmd_done()
3090 raw_cmd->length = fd_get_dma_residue(); in raw_cmd_done()
3094 if ((raw_cmd->flags & FD_RAW_SOFTFAILURE) && in raw_cmd_done()
3095 (!raw_cmd->reply_count || (raw_cmd->reply[0] & 0xc0))) in raw_cmd_done()
3096 raw_cmd->flags |= FD_RAW_FAILURE; in raw_cmd_done()
3099 raw_cmd->flags |= FD_RAW_DISK_CHANGE; in raw_cmd_done()
3101 raw_cmd->flags &= ~FD_RAW_DISK_CHANGE; in raw_cmd_done()
3102 if (raw_cmd->flags & FD_RAW_NO_MOTOR_AFTER) in raw_cmd_done()
3105 if (raw_cmd->next && in raw_cmd_done()
3106 (!(raw_cmd->flags & FD_RAW_FAILURE) || in raw_cmd_done()
3107 !(raw_cmd->flags & FD_RAW_STOP_IF_FAILURE)) && in raw_cmd_done()
3108 ((raw_cmd->flags & FD_RAW_FAILURE) || in raw_cmd_done()
3109 !(raw_cmd->flags & FD_RAW_STOP_IF_SUCCESS))) { in raw_cmd_done()
3110 raw_cmd = raw_cmd->next; in raw_cmd_done()
3256 raw_cmd = my_raw_cmd; in raw_cmd_ioctl()
4605 raw_cmd = NULL; in do_floppy_init()