ide-floppy: ->{srfp,wp} -> IDE_AFLAG_{SRFP,WP}
Add IDE_AFLAG_{SRFP,WP} drive->atapi_flags and use them instead of ->{srfp,wp} struct ide_floppy_obj fields. There should be no functional changes caused by this patch. Acked-by: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
2ac07d9206
commit
49cac39e71
2 changed files with 25 additions and 17 deletions
|
@ -110,10 +110,6 @@ typedef struct ide_floppy_obj {
|
||||||
u8 cap_desc[8];
|
u8 cap_desc[8];
|
||||||
/* Copy of the flexible disk page */
|
/* Copy of the flexible disk page */
|
||||||
u8 flexible_disk_page[32];
|
u8 flexible_disk_page[32];
|
||||||
/* Write protect */
|
|
||||||
int wp;
|
|
||||||
/* Supports format progress report */
|
|
||||||
int srfp;
|
|
||||||
} idefloppy_floppy_t;
|
} idefloppy_floppy_t;
|
||||||
|
|
||||||
#define IDEFLOPPY_TICKS_DELAY HZ/20 /* default delay for ZIP 100 (50ms) */
|
#define IDEFLOPPY_TICKS_DELAY HZ/20 /* default delay for ZIP 100 (50ms) */
|
||||||
|
@ -574,8 +570,14 @@ static int ide_floppy_get_flexible_disk_page(ide_drive_t *drive)
|
||||||
" parameters\n");
|
" parameters\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
floppy->wp = !!(pc.buf[3] & 0x80);
|
|
||||||
set_disk_ro(disk, floppy->wp);
|
if (pc.buf[3] & 0x80)
|
||||||
|
drive->atapi_flags |= IDE_AFLAG_WP;
|
||||||
|
else
|
||||||
|
drive->atapi_flags &= ~IDE_AFLAG_WP;
|
||||||
|
|
||||||
|
set_disk_ro(disk, !!(drive->atapi_flags & IDE_AFLAG_WP));
|
||||||
|
|
||||||
page = &pc.buf[8];
|
page = &pc.buf[8];
|
||||||
|
|
||||||
transfer_rate = be16_to_cpup((__be16 *)&pc.buf[8 + 2]);
|
transfer_rate = be16_to_cpup((__be16 *)&pc.buf[8 + 2]);
|
||||||
|
@ -614,7 +616,7 @@ static int idefloppy_get_sfrp_bit(ide_drive_t *drive)
|
||||||
idefloppy_floppy_t *floppy = drive->driver_data;
|
idefloppy_floppy_t *floppy = drive->driver_data;
|
||||||
struct ide_atapi_pc pc;
|
struct ide_atapi_pc pc;
|
||||||
|
|
||||||
floppy->srfp = 0;
|
drive->atapi_flags &= ~IDE_AFLAG_SRFP;
|
||||||
|
|
||||||
idefloppy_create_mode_sense_cmd(&pc, IDEFLOPPY_CAPABILITIES_PAGE);
|
idefloppy_create_mode_sense_cmd(&pc, IDEFLOPPY_CAPABILITIES_PAGE);
|
||||||
pc.flags |= PC_FLAG_SUPPRESS_ERROR;
|
pc.flags |= PC_FLAG_SUPPRESS_ERROR;
|
||||||
|
@ -622,7 +624,9 @@ static int idefloppy_get_sfrp_bit(ide_drive_t *drive)
|
||||||
if (ide_queue_pc_tail(drive, floppy->disk, &pc))
|
if (ide_queue_pc_tail(drive, floppy->disk, &pc))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
floppy->srfp = pc.buf[8 + 2] & 0x40;
|
if (pc.buf[8 + 2] & 0x40)
|
||||||
|
drive->atapi_flags |= IDE_AFLAG_SRFP;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -820,7 +824,7 @@ static int ide_floppy_get_format_progress(ide_drive_t *drive, int __user *arg)
|
||||||
struct ide_atapi_pc pc;
|
struct ide_atapi_pc pc;
|
||||||
int progress_indication = 0x10000;
|
int progress_indication = 0x10000;
|
||||||
|
|
||||||
if (floppy->srfp) {
|
if (drive->atapi_flags & IDE_AFLAG_SRFP) {
|
||||||
idefloppy_create_request_sense_cmd(&pc);
|
idefloppy_create_request_sense_cmd(&pc);
|
||||||
if (ide_queue_pc_tail(drive, floppy->disk, &pc))
|
if (ide_queue_pc_tail(drive, floppy->disk, &pc))
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
@ -1044,7 +1048,7 @@ static int idefloppy_open(struct inode *inode, struct file *filp)
|
||||||
goto out_put_floppy;
|
goto out_put_floppy;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (floppy->wp && (filp->f_mode & 2)) {
|
if ((drive->atapi_flags & IDE_AFLAG_WP) && (filp->f_mode & 2)) {
|
||||||
ret = -EROFS;
|
ret = -EROFS;
|
||||||
goto out_put_floppy;
|
goto out_put_floppy;
|
||||||
}
|
}
|
||||||
|
|
|
@ -356,21 +356,25 @@ enum {
|
||||||
IDE_AFLAG_CLIK_DRIVE = (1 << 19),
|
IDE_AFLAG_CLIK_DRIVE = (1 << 19),
|
||||||
/* Requires BH algorithm for packets */
|
/* Requires BH algorithm for packets */
|
||||||
IDE_AFLAG_ZIP_DRIVE = (1 << 20),
|
IDE_AFLAG_ZIP_DRIVE = (1 << 20),
|
||||||
|
/* Write protect */
|
||||||
|
IDE_AFLAG_WP = (1 << 21),
|
||||||
|
/* Supports format progress report */
|
||||||
|
IDE_AFLAG_SRFP = (1 << 22),
|
||||||
|
|
||||||
/* ide-tape */
|
/* ide-tape */
|
||||||
IDE_AFLAG_IGNORE_DSC = (1 << 21),
|
IDE_AFLAG_IGNORE_DSC = (1 << 23),
|
||||||
/* 0 When the tape position is unknown */
|
/* 0 When the tape position is unknown */
|
||||||
IDE_AFLAG_ADDRESS_VALID = (1 << 22),
|
IDE_AFLAG_ADDRESS_VALID = (1 << 24),
|
||||||
/* Device already opened */
|
/* Device already opened */
|
||||||
IDE_AFLAG_BUSY = (1 << 23),
|
IDE_AFLAG_BUSY = (1 << 25),
|
||||||
/* Attempt to auto-detect the current user block size */
|
/* Attempt to auto-detect the current user block size */
|
||||||
IDE_AFLAG_DETECT_BS = (1 << 24),
|
IDE_AFLAG_DETECT_BS = (1 << 26),
|
||||||
/* Currently on a filemark */
|
/* Currently on a filemark */
|
||||||
IDE_AFLAG_FILEMARK = (1 << 25),
|
IDE_AFLAG_FILEMARK = (1 << 27),
|
||||||
/* 0 = no tape is loaded, so we don't rewind after ejecting */
|
/* 0 = no tape is loaded, so we don't rewind after ejecting */
|
||||||
IDE_AFLAG_MEDIUM_PRESENT = (1 << 26),
|
IDE_AFLAG_MEDIUM_PRESENT = (1 << 28),
|
||||||
|
|
||||||
IDE_AFLAG_NO_AUTOCLOSE = (1 << 27),
|
IDE_AFLAG_NO_AUTOCLOSE = (1 << 29),
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ide_drive_s {
|
struct ide_drive_s {
|
||||||
|
|
Loading…
Add table
Reference in a new issue