Lines Matching defs:raw_cmd
403 static struct floppy_raw_cmd *raw_cmd, default_raw_cmd;
906 raw_cmd = NULL;
1069 if (raw_cmd->length == 0) {
1072 raw_cmd->fullcmd, raw_cmd->cmd_count, false);
1077 if (((unsigned long)raw_cmd->kernel_data) % 512) {
1078 pr_info("non aligned address: %p\n", raw_cmd->kernel_data);
1086 if (fd_dma_setup(raw_cmd->kernel_data, raw_cmd->length,
1087 (raw_cmd->flags & FD_RAW_READ) ?
1098 fd_cacheflush(raw_cmd->kernel_data, raw_cmd->length);
1099 fd_set_dma_mode((raw_cmd->flags & FD_RAW_READ) ?
1101 fd_set_dma_addr(raw_cmd->kernel_data);
1102 fd_set_dma_count(raw_cmd->length);
1209 if (raw_cmd->rate & 0x40) {
1210 switch (raw_cmd->rate & 3) {
1296 switch (raw_cmd->rate & 0x03) {
1366 if ((raw_cmd->rate & 3) == fdc_state[current_fdc].dtr)
1370 fdc_outb(raw_cmd->rate & 3, current_fdc, FD_DCR);
1377 fdc_state[current_fdc].dtr = raw_cmd->rate & 3;
1489 flags = raw_cmd->flags;
1516 for (i = 0; i < raw_cmd->cmd_count; i++)
1517 r |= output_byte(current_fdc, raw_cmd->fullcmd[i]);
1602 disk_change(current_drive) && (raw_cmd->flags & FD_RAW_NEED_DISK)) {
1617 (raw_cmd->flags & FD_RAW_NEED_DISK) &&
1618 (drive_state[current_drive].track <= NO_TRACK || drive_state[current_drive].track == raw_cmd->track)) {
1621 if (raw_cmd->track)
1622 track = raw_cmd->track - 1;
1627 raw_cmd->flags |= FD_RAW_NEED_SEEK;
1633 if (raw_cmd->track != drive_state[current_drive].track &&
1634 (raw_cmd->flags & FD_RAW_NEED_SEEK))
1635 track = raw_cmd->track;
1904 if (!(raw_cmd->flags & FD_RAW_NO_MOTOR)) {
1938 if (!(raw_cmd->flags & FD_RAW_NO_MOTOR) &&
1944 if ((raw_cmd->flags & FD_RAW_READ) || (raw_cmd->flags & FD_RAW_WRITE)) {
1946 fd_chose_dma_mode(raw_cmd->kernel_data, raw_cmd->length);
1951 if (raw_cmd->flags & (FD_RAW_NEED_SEEK | FD_RAW_NEED_DISK)) {
1956 if ((raw_cmd->flags & FD_RAW_READ) ||
1957 (raw_cmd->flags & FD_RAW_WRITE))
2148 raw_cmd = &default_raw_cmd;
2149 raw_cmd->track = track;
2151 raw_cmd->flags = (FD_RAW_WRITE | FD_RAW_INTR | FD_RAW_SPIN |
2153 raw_cmd->rate = _floppy->rate & 0x43;
2154 raw_cmd->cmd_count = NR_F;
2155 raw_cmd->cmd[COMMAND] = FM_MODE(_floppy, FD_FORMAT);
2156 raw_cmd->cmd[DR_SELECT] = UNIT(current_drive) + PH_HEAD(_floppy, format_req.head);
2157 raw_cmd->cmd[F_SIZECODE] = FD_SIZECODE(_floppy);
2158 raw_cmd->cmd[F_SECT_PER_TRACK] = _floppy->sect << 2 >> raw_cmd->cmd[F_SIZECODE];
2159 raw_cmd->cmd[F_GAP] = _floppy->fmt_gap;
2160 raw_cmd->cmd[F_FILL] = FD_FILL_BYTE;
2162 raw_cmd->kernel_data = floppy_track_buffer;
2163 raw_cmd->length = 4 * raw_cmd->cmd[F_SECT_PER_TRACK];
2165 if (!raw_cmd->cmd[F_SECT_PER_TRACK])
2169 head_shift = (raw_cmd->cmd[F_SECT_PER_TRACK] + 5) / 6;
2176 % raw_cmd->cmd[F_SECT_PER_TRACK];
2184 for (count = 0; count < raw_cmd->cmd[F_SECT_PER_TRACK]; ++count) {
2188 here[count].size = raw_cmd->cmd[F_SIZECODE];
2191 for (count = 1; count <= raw_cmd->cmd[F_SECT_PER_TRACK]; ++count) {
2193 n = (n + il) % raw_cmd->cmd[F_SECT_PER_TRACK];
2196 if (n >= raw_cmd->cmd[F_SECT_PER_TRACK]) {
2197 n -= raw_cmd->cmd[F_SECT_PER_TRACK];
2204 for (count = 0; count < raw_cmd->cmd[F_SECT_PER_TRACK]; count++)
2332 ssize = DIV_ROUND_UP(1 << raw_cmd->cmd[SIZECODE], 4);
2339 if (raw_cmd->cmd[COMMAND] & 0x80)
2344 nr_sectors = (((reply_buffer[R_TRACK] - raw_cmd->cmd[TRACK]) * heads +
2345 reply_buffer[R_HEAD] - raw_cmd->cmd[HEAD]) * raw_cmd->cmd[SECT_PER_TRACK] +
2346 reply_buffer[R_SECTOR] - raw_cmd->cmd[SECTOR] + eoc) << raw_cmd->cmd[SIZECODE] >> 2;
2353 raw_cmd->cmd[SECTOR]);
2355 raw_cmd->cmd[HEAD]);
2357 raw_cmd->cmd[TRACK]);
2360 raw_cmd->cmd[SECT_PER_TRACK], fsector_t, ssize);
2398 if (CT(raw_cmd->cmd[COMMAND]) != FD_READ) {
2402 buffer_track = raw_cmd->track;
2438 if (current_count_sectors <= 0 && CT(raw_cmd->cmd[COMMAND]) == FD_WRITE &&
2444 if (remaining > blk_rq_bytes(current_req) && CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) {
2477 if (CT(raw_cmd->cmd[COMMAND]) == FD_READ)
2479 if (CT(raw_cmd->cmd[COMMAND]) == FD_WRITE)
2484 if (CT(raw_cmd->cmd[COMMAND]) == FD_READ)
2502 * transfer length: We use raw_cmd->cmd[SECT_PER_TRACK]. Unfortunately, this
2511 if (CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) {
2512 raw_cmd->cmd[COMMAND] &= ~0x80; /* switch off multiple track mode */
2514 hard_sectors = raw_cmd->length >> (7 + raw_cmd->cmd[SIZECODE]);
2515 end_sector = raw_cmd->cmd[SECTOR] + hard_sectors - 1;
2516 if (end_sector > raw_cmd->cmd[SECT_PER_TRACK]) {
2518 end_sector, raw_cmd->cmd[SECT_PER_TRACK]);
2521 raw_cmd->cmd[SECT_PER_TRACK] = end_sector;
2522 /* make sure raw_cmd->cmd[SECT_PER_TRACK]
2550 raw_cmd = &default_raw_cmd;
2551 raw_cmd->flags = FD_RAW_SPIN | FD_RAW_NEED_DISK | FD_RAW_NEED_SEEK;
2552 raw_cmd->cmd_count = NR_RW;
2554 raw_cmd->flags |= FD_RAW_READ;
2555 raw_cmd->cmd[COMMAND] = FM_MODE(_floppy, FD_READ);
2557 raw_cmd->flags |= FD_RAW_WRITE;
2558 raw_cmd->cmd[COMMAND] = FM_MODE(_floppy, FD_WRITE);
2566 raw_cmd->cmd[TRACK] = (int)blk_rq_pos(current_req) / max_sector;
2568 if (_floppy->track && raw_cmd->cmd[TRACK] >= _floppy->track) {
2575 raw_cmd->cmd[HEAD] = fsector_t / _floppy->sect;
2583 if ((_floppy->rate & FD_2M) && (!raw_cmd->cmd[TRACK]) && (!raw_cmd->cmd[HEAD])) {
2591 raw_cmd->cmd[SIZECODE] = 2;
2593 raw_cmd->cmd[SIZECODE] = FD_SIZECODE(_floppy);
2594 raw_cmd->rate = _floppy->rate & 0x43;
2596 (raw_cmd->cmd[TRACK] || raw_cmd->cmd[HEAD]) && raw_cmd->rate == 2)
2597 raw_cmd->rate = 1;
2599 if (raw_cmd->cmd[SIZECODE])
2600 raw_cmd->cmd[SIZECODE2] = 0xff;
2602 raw_cmd->cmd[SIZECODE2] = 0x80;
2603 raw_cmd->track = raw_cmd->cmd[TRACK] << STRETCH(_floppy);
2604 raw_cmd->cmd[DR_SELECT] = UNIT(current_drive) + PH_HEAD(_floppy, raw_cmd->cmd[HEAD]);
2605 raw_cmd->cmd[GAP] = _floppy->gap;
2606 ssize = DIV_ROUND_UP(1 << raw_cmd->cmd[SIZECODE], 4);
2607 raw_cmd->cmd[SECT_PER_TRACK] = _floppy->sect << 2 >> raw_cmd->cmd[SIZECODE];
2608 raw_cmd->cmd[SECTOR] = ((fsector_t % _floppy->sect) << 2 >> raw_cmd->cmd[SIZECODE]) +
2616 raw_cmd->cmd[SECT_PER_TRACK]++;
2618 raw_cmd->cmd[SECTOR]--;
2623 raw_cmd->cmd[SIZECODE]--;
2626 raw_cmd->cmd[SECTOR]++;
2627 raw_cmd->cmd[SECT_PER_TRACK]++;
2630 max_sector = raw_cmd->cmd[HEAD] * _floppy->sect + tracksize;
2631 } else if (!raw_cmd->cmd[TRACK] && !raw_cmd->cmd[HEAD] && !(_floppy->rate & FD_2M) && probing) {
2633 } else if (!raw_cmd->cmd[HEAD] && CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) {
2641 if ((raw_cmd->track == buffer_track) &&
2645 if (CT(raw_cmd->cmd[COMMAND]) == FD_READ) {
2650 if (CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) {
2659 raw_cmd->flags &= ~FD_RAW_WRITE;
2660 raw_cmd->flags |= FD_RAW_READ;
2661 raw_cmd->cmd[COMMAND] = FM_MODE(_floppy, FD_READ);
2664 if (CT(raw_cmd->cmd[COMMAND]) == FD_READ)
2668 if (buffer_track != raw_cmd->track || /* bad track */
2672 ((CT(raw_cmd->cmd[COMMAND]) == FD_READ ||
2681 raw_cmd->kernel_data = floppy_track_buffer +
2684 if (CT(raw_cmd->cmd[COMMAND]) == FD_WRITE) {
2691 buffer_track = raw_cmd->track;
2701 raw_cmd->length = in_sector_offset + current_count_sectors;
2702 raw_cmd->length = ((raw_cmd->length - 1) | (ssize - 1)) + 1;
2703 raw_cmd->length <<= 9;
2704 if ((raw_cmd->length < current_count_sectors << 9) ||
2705 (CT(raw_cmd->cmd[COMMAND]) == FD_WRITE &&
2706 (aligned_sector_t + (raw_cmd->length >> 9) > buffer_max ||
2708 raw_cmd->length % (128 << raw_cmd->cmd[SIZECODE]) ||
2709 raw_cmd->length <= 0 || current_count_sectors <= 0) {
2711 raw_cmd->length, current_count_sectors);
2713 (int)((raw_cmd->kernel_data -
2718 pr_info("ssize=%x SIZECODE=%d\n", ssize, raw_cmd->cmd[SIZECODE]);
2720 raw_cmd->cmd[COMMAND], raw_cmd->cmd[SECTOR],
2721 raw_cmd->cmd[HEAD], raw_cmd->cmd[TRACK]);
2729 if (raw_cmd->kernel_data < floppy_track_buffer ||
2731 raw_cmd->length < 0 ||
2732 raw_cmd->kernel_data + raw_cmd->length >
2736 fsector_t, buffer_min, raw_cmd->length >> 9);
2739 if (CT(raw_cmd->cmd[COMMAND]) == FD_READ)
2741 if (CT(raw_cmd->cmd[COMMAND]) == FD_WRITE)
2745 if (raw_cmd->length == 0) {
2795 raw_cmd = &default_raw_cmd;
2796 raw_cmd->flags = 0;
2892 raw_cmd = &default_raw_cmd;
2893 raw_cmd->flags = flag;
2894 raw_cmd->track = 0;
2895 raw_cmd->cmd_count = 0;
2987 raw_cmd->flags |= FD_RAW_FAILURE;
2988 raw_cmd->flags |= FD_RAW_HARDFAILURE;
2990 raw_cmd->reply_count = inr;
2991 if (raw_cmd->reply_count > FD_RAW_REPLY_SIZE)
2992 raw_cmd->reply_count = 0;
2993 memcpy(raw_cmd->reply, reply_buffer, raw_cmd->reply_count);
2995 if (raw_cmd->flags & (FD_RAW_READ | FD_RAW_WRITE)) {
2998 raw_cmd->length = fd_get_dma_residue();
3002 if ((raw_cmd->flags & FD_RAW_SOFTFAILURE) &&
3003 (!raw_cmd->reply_count || (raw_cmd->reply[0] & 0xc0)))
3004 raw_cmd->flags |= FD_RAW_FAILURE;
3007 raw_cmd->flags |= FD_RAW_DISK_CHANGE;
3009 raw_cmd->flags &= ~FD_RAW_DISK_CHANGE;
3010 if (raw_cmd->flags & FD_RAW_NO_MOTOR_AFTER)
3013 if (raw_cmd->next &&
3014 (!(raw_cmd->flags & FD_RAW_FAILURE) ||
3015 !(raw_cmd->flags & FD_RAW_STOP_IF_FAILURE)) &&
3016 ((raw_cmd->flags & FD_RAW_FAILURE) ||
3017 !(raw_cmd->flags & FD_RAW_STOP_IF_SUCCESS))) {
3018 raw_cmd = raw_cmd->next;
3161 raw_cmd = my_raw_cmd;
3165 "calling disk change from raw_cmd ioctl\n");
3230 /* check for zero in raw_cmd->cmd[F_SECT_PER_TRACK] */
4579 raw_cmd = NULL;