aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-10-13 15:39:43 -0400
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>2008-10-13 15:39:43 -0400
commit4ab3d50224e35811b3351c28e63057595e8406e6 (patch)
treeccd1a729543defa03df97f0dc0b416f53c793dcc
parenta36223b0dc14606b5c80aacbbe6288133693a841 (diff)
ide: set IDE_AFLAG_DRQ_INTERRUPT in do_identify()
Set IDE_AFLAG_DRQ_INTERRUPT in do_identify() instead of ATAPI device drivers *_setup() methods. While at it: - use ata_id_cdb_intr() There should be no functional changes caused by this patch. Cc: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
-rw-r--r--drivers/ide/ide-cd.c3
-rw-r--r--drivers/ide/ide-floppy.c5
-rw-r--r--drivers/ide/ide-probe.c2
-rw-r--r--drivers/ide/ide-tape.c7
-rw-r--r--drivers/scsi/ide-scsi.c2
5 files changed, 2 insertions, 17 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
index 84bc2413312a..e6c2a2e66ed2 100644
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -1891,9 +1891,6 @@ static int ide_cdrom_setup(ide_drive_t *drive)
1891 drive->atapi_flags = IDE_AFLAG_MEDIA_CHANGED | IDE_AFLAG_NO_EJECT | 1891 drive->atapi_flags = IDE_AFLAG_MEDIA_CHANGED | IDE_AFLAG_NO_EJECT |
1892 ide_cd_flags(id); 1892 ide_cd_flags(id);
1893 1893
1894 if ((id[ATA_ID_CONFIG] & 0x0060) == 0x20)
1895 drive->atapi_flags |= IDE_AFLAG_DRQ_INTERRUPT;
1896
1897 if ((drive->atapi_flags & IDE_AFLAG_VERTOS_300_SSD) && 1894 if ((drive->atapi_flags & IDE_AFLAG_VERTOS_300_SSD) &&
1898 fw_rev[4] == '1' && fw_rev[6] <= '2') 1895 fw_rev[4] == '1' && fw_rev[6] <= '2')
1899 drive->atapi_flags |= (IDE_AFLAG_TOCTRACKS_AS_BCD | 1896 drive->atapi_flags |= (IDE_AFLAG_TOCTRACKS_AS_BCD |
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
index 8c2b00941bd8..9f2c6b2af98f 100644
--- a/drivers/ide/ide-floppy.c
+++ b/drivers/ide/ide-floppy.c
@@ -578,16 +578,11 @@ static const struct ide_proc_devset idefloppy_settings[] = {
578static void idefloppy_setup(ide_drive_t *drive, idefloppy_floppy_t *floppy) 578static void idefloppy_setup(ide_drive_t *drive, idefloppy_floppy_t *floppy)
579{ 579{
580 u16 *id = drive->id; 580 u16 *id = drive->id;
581 u8 gcw[2];
582
583 *((u16 *)&gcw) = id[ATA_ID_CONFIG];
584 581
585 drive->pc_callback = ide_floppy_callback; 582 drive->pc_callback = ide_floppy_callback;
586 drive->pc_update_buffers = idefloppy_update_buffers; 583 drive->pc_update_buffers = idefloppy_update_buffers;
587 drive->pc_io_buffers = ide_io_buffers; 584 drive->pc_io_buffers = ide_io_buffers;
588 585
589 if (((gcw[0] & 0x60) >> 5) == 1)
590 drive->atapi_flags |= IDE_AFLAG_DRQ_INTERRUPT;
591 /* 586 /*
592 * We used to check revisions here. At this point however I'm giving up. 587 * We used to check revisions here. At this point however I'm giving up.
593 * Just assume they are all broken, its easier. 588 * Just assume they are all broken, its easier.
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
index 3269cbf0e56d..bce427ee08aa 100644
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -206,6 +206,8 @@ static inline void do_identify (ide_drive_t *drive, u8 cmd)
206 drive->media = type; 206 drive->media = type;
207 /* an ATAPI device ignores DRDY */ 207 /* an ATAPI device ignores DRDY */
208 drive->ready_stat = 0; 208 drive->ready_stat = 0;
209 if (ata_id_cdb_intr(id))
210 drive->atapi_flags |= IDE_AFLAG_DRQ_INTERRUPT;
209 return; 211 return;
210 } 212 }
211 213
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
index 27665e3a41cb..25ac60f53273 100644
--- a/drivers/ide/ide-tape.c
+++ b/drivers/ide/ide-tape.c
@@ -2185,7 +2185,6 @@ static void idetape_setup(ide_drive_t *drive, idetape_tape_t *tape, int minor)
2185 unsigned long t; 2185 unsigned long t;
2186 int speed; 2186 int speed;
2187 int buffer_size; 2187 int buffer_size;
2188 u8 gcw[2];
2189 u16 *ctl = (u16 *)&tape->caps[12]; 2188 u16 *ctl = (u16 *)&tape->caps[12];
2190 2189
2191 drive->pc_callback = ide_tape_callback; 2190 drive->pc_callback = ide_tape_callback;
@@ -2212,12 +2211,6 @@ static void idetape_setup(ide_drive_t *drive, idetape_tape_t *tape, int minor)
2212 tape->name[2] = '0' + minor; 2211 tape->name[2] = '0' + minor;
2213 tape->chrdev_dir = IDETAPE_DIR_NONE; 2212 tape->chrdev_dir = IDETAPE_DIR_NONE;
2214 2213
2215 *((u16 *)&gcw) = drive->id[ATA_ID_CONFIG];
2216
2217 /* Command packet DRQ type */
2218 if (((gcw[0] & 0x60) >> 5) == 1)
2219 set_bit(IDE_AFLAG_DRQ_INTERRUPT, &drive->atapi_flags);
2220
2221 idetape_get_inquiry_results(drive); 2214 idetape_get_inquiry_results(drive);
2222 idetape_get_mode_sense_results(drive); 2215 idetape_get_mode_sense_results(drive);
2223 ide_tape_get_bsize_from_bdesc(drive); 2216 ide_tape_get_bsize_from_bdesc(drive);
diff --git a/drivers/scsi/ide-scsi.c b/drivers/scsi/ide-scsi.c
index c2995972052c..740bad435995 100644
--- a/drivers/scsi/ide-scsi.c
+++ b/drivers/scsi/ide-scsi.c
@@ -385,8 +385,6 @@ static const struct ide_proc_devset idescsi_settings[] = {
385 */ 385 */
386static void idescsi_setup (ide_drive_t *drive, idescsi_scsi_t *scsi) 386static void idescsi_setup (ide_drive_t *drive, idescsi_scsi_t *scsi)
387{ 387{
388 if ((drive->id[ATA_ID_CONFIG] & 0x0060) == 0x20)
389 set_bit(IDE_AFLAG_DRQ_INTERRUPT, &drive->atapi_flags);
390 clear_bit(IDESCSI_SG_TRANSFORM, &scsi->transform); 388 clear_bit(IDESCSI_SG_TRANSFORM, &scsi->transform);
391#if IDESCSI_DEBUG_LOG 389#if IDESCSI_DEBUG_LOG
392 set_bit(IDESCSI_LOG_CMD, &scsi->log); 390 set_bit(IDESCSI_LOG_CMD, &scsi->log);