ide: add device flags
Add 'unsigned long dev_flags' to ide_drive_t and convert bitfields to IDE_DFLAG_* flags. While at it: - IDE_DFLAG_ADDRESSING -> IDE_DFLAG_LBA48 - fixup some comments - remove needless g->flags zeroing from ide*_probe() There should be no functional changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Esse commit está contido em:
@@ -62,7 +62,7 @@ static int ide_get_identity_ioctl(ide_drive_t *drive, unsigned int cmd,
|
||||
int size = (cmd == HDIO_GET_IDENTITY) ? (ATA_ID_WORDS * 2) : 142;
|
||||
int rc = 0;
|
||||
|
||||
if (drive->id_read == 0) {
|
||||
if ((drive->dev_flags & IDE_DFLAG_ID_READ) == 0) {
|
||||
rc = -ENOMSG;
|
||||
goto out;
|
||||
}
|
||||
@@ -86,8 +86,10 @@ out:
|
||||
|
||||
static int ide_get_nice_ioctl(ide_drive_t *drive, unsigned long arg)
|
||||
{
|
||||
return put_user((drive->dsc_overlap << IDE_NICE_DSC_OVERLAP) |
|
||||
(drive->nice1 << IDE_NICE_1), (long __user *)arg);
|
||||
return put_user((!!(drive->dev_flags & IDE_DFLAG_DSC_OVERLAP)
|
||||
<< IDE_NICE_DSC_OVERLAP) |
|
||||
(!!(drive->dev_flags & IDE_DFLAG_NICE1)
|
||||
<< IDE_NICE_1), (long __user *)arg);
|
||||
}
|
||||
|
||||
static int ide_set_nice_ioctl(ide_drive_t *drive, unsigned long arg)
|
||||
@@ -97,11 +99,18 @@ static int ide_set_nice_ioctl(ide_drive_t *drive, unsigned long arg)
|
||||
|
||||
if (((arg >> IDE_NICE_DSC_OVERLAP) & 1) &&
|
||||
(drive->media == ide_disk || drive->media == ide_floppy ||
|
||||
drive->scsi))
|
||||
(drive->dev_flags & IDE_DFLAG_SCSI)))
|
||||
return -EPERM;
|
||||
|
||||
drive->dsc_overlap = (arg >> IDE_NICE_DSC_OVERLAP) & 1;
|
||||
drive->nice1 = (arg >> IDE_NICE_1) & 1;
|
||||
if ((arg >> IDE_NICE_DSC_OVERLAP) & 1)
|
||||
drive->dev_flags |= IDE_DFLAG_DSC_OVERLAP;
|
||||
else
|
||||
drive->dev_flags &= ~IDE_DFLAG_DSC_OVERLAP;
|
||||
|
||||
if ((arg >> IDE_NICE_1) & 1)
|
||||
drive->dev_flags |= IDE_DFLAG_NICE1;
|
||||
else
|
||||
drive->dev_flags &= ~IDE_DFLAG_NICE1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Referência em uma nova issue
Block a user