]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
ide-cd: convert to using the new atapi_flags
authorBorislav Petkov <petkovbb@googlemail.com>
Wed, 23 Jul 2008 17:56:02 +0000 (19:56 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Wed, 23 Jul 2008 17:56:02 +0000 (19:56 +0200)
There should be no functionality change resulting from this patch.

[bart: IDE_FLAG_* -> IDE_AFLAG_*, dev_flags -> atapi_flags]

Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-cd.c
drivers/ide/ide-cd.h
drivers/ide/ide-cd_ioctl.c

index d9798ca433bab16619c3f52c490d11081be1aca7..52fe3b95dc9267850868de7cdd8f9e00430d8d11 100644 (file)
@@ -85,10 +85,8 @@ static void ide_cd_put(struct cdrom_info *cd)
 /* Mark that we've seen a media change and invalidate our internal buffers. */
 static void cdrom_saw_media_change(ide_drive_t *drive)
 {
-       struct cdrom_info *cd = drive->driver_data;
-
-       cd->cd_flags |= IDE_CD_FLAG_MEDIA_CHANGED;
-       cd->cd_flags &= ~IDE_CD_FLAG_TOC_VALID;
+       drive->atapi_flags |= IDE_AFLAG_MEDIA_CHANGED;
+       drive->atapi_flags &= ~IDE_AFLAG_TOC_VALID;
 }
 
 static int cdrom_log_sense(ide_drive_t *drive, struct request *rq,
@@ -529,7 +527,7 @@ static ide_startstop_t cdrom_start_packet_command(ide_drive_t *drive,
        ide_pktcmd_tf_load(drive, IDE_TFLAG_OUT_NSECT | IDE_TFLAG_OUT_LBAL,
                           xferlen, info->dma);
 
-       if (info->cd_flags & IDE_CD_FLAG_DRQ_INTERRUPT) {
+       if (drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT) {
                /* waiting for CDB interrupt, not DMA yet. */
                if (info->dma)
                        drive->waiting_for_dma = 0;
@@ -561,7 +559,7 @@ static ide_startstop_t cdrom_transfer_packet_command(ide_drive_t *drive,
        struct cdrom_info *info = drive->driver_data;
        ide_startstop_t startstop;
 
-       if (info->cd_flags & IDE_CD_FLAG_DRQ_INTERRUPT) {
+       if (drive->atapi_flags & IDE_AFLAG_DRQ_INTERRUPT) {
                /*
                 * Here we should have been called after receiving an interrupt
                 * from the device.  DRQ should how be set.
@@ -648,20 +646,18 @@ static int ide_cd_check_ireason(ide_drive_t *drive, struct request *rq,
  */
 static int ide_cd_check_transfer_size(ide_drive_t *drive, int len)
 {
-       struct cdrom_info *cd = drive->driver_data;
-
        if ((len % SECTOR_SIZE) == 0)
                return 0;
 
        printk(KERN_ERR "%s: %s: Bad transfer size %d\n",
                        drive->name, __func__, len);
 
-       if (cd->cd_flags & IDE_CD_FLAG_LIMIT_NFRAMES)
+       if (drive->atapi_flags & IDE_AFLAG_LIMIT_NFRAMES)
                printk(KERN_ERR "  This drive is not supported by "
                                "this version of the driver\n");
        else {
                printk(KERN_ERR "  Trying to limit transfer sizes\n");
-               cd->cd_flags |= IDE_CD_FLAG_LIMIT_NFRAMES;
+               drive->atapi_flags |= IDE_AFLAG_LIMIT_NFRAMES;
        }
 
        return 1;
@@ -738,7 +734,7 @@ static ide_startstop_t cdrom_seek_intr(ide_drive_t *drive)
        if (cdrom_decode_status(drive, 0, &stat))
                return ide_stopped;
 
-       info->cd_flags |= IDE_CD_FLAG_SEEKING;
+       drive->atapi_flags |= IDE_AFLAG_SEEKING;
 
        if (retry && time_after(jiffies, info->start_seek + IDECD_SEEK_TIMER)) {
                if (--retry == 0)
@@ -1197,7 +1193,7 @@ static ide_startstop_t ide_cd_do_request(ide_drive_t *drive, struct request *rq,
        int xferlen;
 
        if (blk_fs_request(rq)) {
-               if (info->cd_flags & IDE_CD_FLAG_SEEKING) {
+               if (drive->atapi_flags & IDE_AFLAG_SEEKING) {
                        ide_hwif_t *hwif = drive->hwif;
                        unsigned long elapsed = jiffies - info->start_seek;
                        int stat = hwif->tp_ops->read_status(hwif);
@@ -1211,7 +1207,7 @@ static ide_startstop_t ide_cd_do_request(ide_drive_t *drive, struct request *rq,
                                printk(KERN_ERR "%s: DSC timeout\n",
                                                drive->name);
                        }
-                       info->cd_flags &= ~IDE_CD_FLAG_SEEKING;
+                       drive->atapi_flags &= ~IDE_AFLAG_SEEKING;
                }
                if (rq_data_dir(rq) == READ &&
                    IDE_LARGE_SEEK(info->last_block, block,
@@ -1369,7 +1365,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
         */
        (void) cdrom_check_status(drive, sense);
 
-       if (info->cd_flags & IDE_CD_FLAG_TOC_VALID)
+       if (drive->atapi_flags & IDE_AFLAG_TOC_VALID)
                return 0;
 
        /* try to get the total cdrom capacity and sector size */
@@ -1391,7 +1387,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
        if (stat)
                return stat;
 
-       if (info->cd_flags & IDE_CD_FLAG_TOCTRACKS_AS_BCD) {
+       if (drive->atapi_flags & IDE_AFLAG_TOCTRACKS_AS_BCD) {
                toc->hdr.first_track = BCD2BIN(toc->hdr.first_track);
                toc->hdr.last_track  = BCD2BIN(toc->hdr.last_track);
        }
@@ -1432,7 +1428,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
                if (stat)
                        return stat;
 
-               if (info->cd_flags & IDE_CD_FLAG_TOCTRACKS_AS_BCD) {
+               if (drive->atapi_flags & IDE_AFLAG_TOCTRACKS_AS_BCD) {
                        toc->hdr.first_track = (u8)BIN2BCD(CDROM_LEADOUT);
                        toc->hdr.last_track = (u8)BIN2BCD(CDROM_LEADOUT);
                } else {
@@ -1446,14 +1442,14 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
 
        toc->hdr.toc_length = be16_to_cpu(toc->hdr.toc_length);
 
-       if (info->cd_flags & IDE_CD_FLAG_TOCTRACKS_AS_BCD) {
+       if (drive->atapi_flags & IDE_AFLAG_TOCTRACKS_AS_BCD) {
                toc->hdr.first_track = BCD2BIN(toc->hdr.first_track);
                toc->hdr.last_track  = BCD2BIN(toc->hdr.last_track);
        }
 
        for (i = 0; i <= ntracks; i++) {
-               if (info->cd_flags & IDE_CD_FLAG_TOCADDR_AS_BCD) {
-                       if (info->cd_flags & IDE_CD_FLAG_TOCTRACKS_AS_BCD)
+               if (drive->atapi_flags & IDE_AFLAG_TOCADDR_AS_BCD) {
+                       if (drive->atapi_flags & IDE_AFLAG_TOCTRACKS_AS_BCD)
                                toc->ent[i].track = BCD2BIN(toc->ent[i].track);
                        msf_from_bcd(&toc->ent[i].addr.msf);
                }
@@ -1476,7 +1472,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
                toc->last_session_lba = msf_to_lba(0, 2, 0); /* 0m 2s 0f */
        }
 
-       if (info->cd_flags & IDE_CD_FLAG_TOCADDR_AS_BCD) {
+       if (drive->atapi_flags & IDE_AFLAG_TOCADDR_AS_BCD) {
                /* re-read multisession information using MSF format */
                stat = cdrom_read_tocentry(drive, 0, 1, 1, (char *)&ms_tmp,
                                           sizeof(ms_tmp), sense);
@@ -1500,7 +1496,7 @@ int ide_cd_read_toc(ide_drive_t *drive, struct request_sense *sense)
        }
 
        /* Remember that we've read this stuff. */
-       info->cd_flags |= IDE_CD_FLAG_TOC_VALID;
+       drive->atapi_flags |= IDE_AFLAG_TOC_VALID;
 
        return 0;
 }
@@ -1512,7 +1508,7 @@ int ide_cdrom_get_capabilities(ide_drive_t *drive, u8 *buf)
        struct packet_command cgc;
        int stat, attempts = 3, size = ATAPI_CAPABILITIES_PAGE_SIZE;
 
-       if ((info->cd_flags & IDE_CD_FLAG_FULL_CAPS_PAGE) == 0)
+       if ((drive->atapi_flags & IDE_AFLAG_FULL_CAPS_PAGE) == 0)
                size -= ATAPI_CAPABILITIES_PAGE_PAD_SIZE;
 
        init_cdrom_command(&cgc, buf, size, CGC_DATA_UNKNOWN);
@@ -1533,7 +1529,7 @@ void ide_cdrom_update_speed(ide_drive_t *drive, u8 *buf)
        curspeed = *(u16 *)&buf[8 + 14];
        maxspeed = *(u16 *)&buf[8 +  8];
 
-       if (cd->cd_flags & IDE_CD_FLAG_LE_SPEED_FIELDS) {
+       if (drive->atapi_flags & IDE_AFLAG_LE_SPEED_FIELDS) {
                curspeed = le16_to_cpu(curspeed);
                maxspeed = le16_to_cpu(maxspeed);
        } else {
@@ -1579,7 +1575,7 @@ static int ide_cdrom_register(ide_drive_t *drive, int nslots)
        devinfo->handle = drive;
        strcpy(devinfo->name, drive->name);
 
-       if (info->cd_flags & IDE_CD_FLAG_NO_SPEED_SELECT)
+       if (drive->atapi_flags & IDE_AFLAG_NO_SPEED_SELECT)
                devinfo->mask |= CDC_SELECT_SPEED;
 
        devinfo->disk = info->disk;
@@ -1605,8 +1601,8 @@ static int ide_cdrom_probe_capabilities(ide_drive_t *drive)
                return nslots;
        }
 
-       if (cd->cd_flags & IDE_CD_FLAG_PRE_ATAPI12) {
-               cd->cd_flags &= ~IDE_CD_FLAG_NO_EJECT;
+       if (drive->atapi_flags & IDE_AFLAG_PRE_ATAPI12) {
+               drive->atapi_flags &= ~IDE_AFLAG_NO_EJECT;
                cdi->mask &= ~CDC_PLAY_AUDIO;
                return nslots;
        }
@@ -1624,9 +1620,9 @@ static int ide_cdrom_probe_capabilities(ide_drive_t *drive)
                return 0;
 
        if ((buf[8 + 6] & 0x01) == 0)
-               cd->cd_flags |= IDE_CD_FLAG_NO_DOORLOCK;
+               drive->atapi_flags |= IDE_AFLAG_NO_DOORLOCK;
        if (buf[8 + 6] & 0x08)
-               cd->cd_flags &= ~IDE_CD_FLAG_NO_EJECT;
+               drive->atapi_flags &= ~IDE_AFLAG_NO_EJECT;
        if (buf[8 + 3] & 0x01)
                cdi->mask &= ~CDC_CD_R;
        if (buf[8 + 3] & 0x02)
@@ -1637,7 +1633,7 @@ static int ide_cdrom_probe_capabilities(ide_drive_t *drive)
                cdi->mask &= ~(CDC_DVD_RAM | CDC_RAM);
        if (buf[8 + 3] & 0x10)
                cdi->mask &= ~CDC_DVD_R;
-       if ((buf[8 + 4] & 0x01) || (cd->cd_flags & IDE_CD_FLAG_PLAY_AUDIO_OK))
+       if ((buf[8 + 4] & 0x01) || (drive->atapi_flags & IDE_AFLAG_PLAY_AUDIO_OK))
                cdi->mask &= ~CDC_PLAY_AUDIO;
 
        mechtype = buf[8 + 6] >> 5;
@@ -1802,43 +1798,43 @@ static inline void ide_cdrom_add_settings(ide_drive_t *drive) { ; }
 
 static const struct cd_list_entry ide_cd_quirks_list[] = {
        /* Limit transfer size per interrupt. */
-       { "SAMSUNG CD-ROM SCR-2430", NULL,   IDE_CD_FLAG_LIMIT_NFRAMES      },
-       { "SAMSUNG CD-ROM SCR-2432", NULL,   IDE_CD_FLAG_LIMIT_NFRAMES      },
+       { "SAMSUNG CD-ROM SCR-2430", NULL,   IDE_AFLAG_LIMIT_NFRAMES         },
+       { "SAMSUNG CD-ROM SCR-2432", NULL,   IDE_AFLAG_LIMIT_NFRAMES         },
        /* SCR-3231 doesn't support the SET_CD_SPEED command. */
-       { "SAMSUNG CD-ROM SCR-3231", NULL,   IDE_CD_FLAG_NO_SPEED_SELECT    },
+       { "SAMSUNG CD-ROM SCR-3231", NULL,   IDE_AFLAG_NO_SPEED_SELECT       },
        /* Old NEC260 (not R) was released before ATAPI 1.2 spec. */
-       { "NEC CD-ROM DRIVE:260",    "1.01", IDE_CD_FLAG_TOCADDR_AS_BCD |
-                                            IDE_CD_FLAG_PRE_ATAPI12,       },
+       { "NEC CD-ROM DRIVE:260",    "1.01", IDE_AFLAG_TOCADDR_AS_BCD |
+                                            IDE_AFLAG_PRE_ATAPI12,          },
        /* Vertos 300, some versions of this drive like to talk BCD. */
-       { "V003S0DS",                NULL,   IDE_CD_FLAG_VERTOS_300_SSD,    },
+       { "V003S0DS",                NULL,   IDE_AFLAG_VERTOS_300_SSD,       },
        /* Vertos 600 ESD. */
-       { "V006E0DS",                NULL,   IDE_CD_FLAG_VERTOS_600_ESD,    },
+       { "V006E0DS",                NULL,   IDE_AFLAG_VERTOS_600_ESD,       },
        /*
         * Sanyo 3 CD changer uses a non-standard command for CD changing
         * (by default standard ATAPI support for CD changers is used).
         */
-       { "CD-ROM CDR-C3 G",         NULL,   IDE_CD_FLAG_SANYO_3CD          },
-       { "CD-ROM CDR-C3G",          NULL,   IDE_CD_FLAG_SANYO_3CD          },
-       { "CD-ROM CDR_C36",          NULL,   IDE_CD_FLAG_SANYO_3CD          },
+       { "CD-ROM CDR-C3 G",         NULL,   IDE_AFLAG_SANYO_3CD             },
+       { "CD-ROM CDR-C3G",          NULL,   IDE_AFLAG_SANYO_3CD             },
+       { "CD-ROM CDR_C36",          NULL,   IDE_AFLAG_SANYO_3CD             },
        /* Stingray 8X CD-ROM. */
-       { "STINGRAY 8422 IDE 8X CD-ROM 7-27-95", NULL, IDE_CD_FLAG_PRE_ATAPI12},
+       { "STINGRAY 8422 IDE 8X CD-ROM 7-27-95", NULL, IDE_AFLAG_PRE_ATAPI12 },
        /*
         * ACER 50X CD-ROM and WPI 32X CD-ROM require the full spec length
         * mode sense page capabilities size, but older drives break.
         */
-       { "ATAPI CD ROM DRIVE 50X MAX", NULL,   IDE_CD_FLAG_FULL_CAPS_PAGE  },
-       { "WPI CDS-32X",                NULL,   IDE_CD_FLAG_FULL_CAPS_PAGE  },
+       { "ATAPI CD ROM DRIVE 50X MAX", NULL,   IDE_AFLAG_FULL_CAPS_PAGE     },
+       { "WPI CDS-32X",                NULL,   IDE_AFLAG_FULL_CAPS_PAGE     },
        /* ACER/AOpen 24X CD-ROM has the speed fields byte-swapped. */
-       { "",                        "241N", IDE_CD_FLAG_LE_SPEED_FIELDS    },
+       { "",                        "241N", IDE_AFLAG_LE_SPEED_FIELDS       },
        /*
         * Some drives used by Apple don't advertise audio play
         * but they do support reading TOC & audio datas.
         */
-       { "MATSHITADVD-ROM SR-8187", NULL,   IDE_CD_FLAG_PLAY_AUDIO_OK      },
-       { "MATSHITADVD-ROM SR-8186", NULL,   IDE_CD_FLAG_PLAY_AUDIO_OK      },
-       { "MATSHITADVD-ROM SR-8176", NULL,   IDE_CD_FLAG_PLAY_AUDIO_OK      },
-       { "MATSHITADVD-ROM SR-8174", NULL,   IDE_CD_FLAG_PLAY_AUDIO_OK      },
-       { "Optiarc DVD RW AD-5200A", NULL,   IDE_CD_FLAG_PLAY_AUDIO_OK      },
+       { "MATSHITADVD-ROM SR-8187", NULL,   IDE_AFLAG_PLAY_AUDIO_OK         },
+       { "MATSHITADVD-ROM SR-8186", NULL,   IDE_AFLAG_PLAY_AUDIO_OK         },
+       { "MATSHITADVD-ROM SR-8176", NULL,   IDE_AFLAG_PLAY_AUDIO_OK         },
+       { "MATSHITADVD-ROM SR-8174", NULL,   IDE_AFLAG_PLAY_AUDIO_OK         },
+       { "Optiarc DVD RW AD-5200A", NULL,   IDE_AFLAG_PLAY_AUDIO_OK         },
        { NULL, NULL, 0 }
 };
 
@@ -1873,20 +1869,20 @@ static int ide_cdrom_setup(ide_drive_t *drive)
 
        drive->special.all      = 0;
 
-       cd->cd_flags = IDE_CD_FLAG_MEDIA_CHANGED | IDE_CD_FLAG_NO_EJECT |
+       drive->atapi_flags = IDE_AFLAG_MEDIA_CHANGED | IDE_AFLAG_NO_EJECT |
                       ide_cd_flags(id);
 
        if ((id->config & 0x0060) == 0x20)
-               cd->cd_flags |= IDE_CD_FLAG_DRQ_INTERRUPT;
+               drive->atapi_flags |= IDE_AFLAG_DRQ_INTERRUPT;
 
-       if ((cd->cd_flags & IDE_CD_FLAG_VERTOS_300_SSD) &&
+       if ((drive->atapi_flags & IDE_AFLAG_VERTOS_300_SSD) &&
            id->fw_rev[4] == '1' && id->fw_rev[6] <= '2')
-               cd->cd_flags |= (IDE_CD_FLAG_TOCTRACKS_AS_BCD |
-                                IDE_CD_FLAG_TOCADDR_AS_BCD);
-       else if ((cd->cd_flags & IDE_CD_FLAG_VERTOS_600_ESD) &&
+               drive->atapi_flags |= (IDE_AFLAG_TOCTRACKS_AS_BCD |
+                                    IDE_AFLAG_TOCADDR_AS_BCD);
+       else if ((drive->atapi_flags & IDE_AFLAG_VERTOS_600_ESD) &&
                 id->fw_rev[4] == '1' && id->fw_rev[6] <= '2')
-               cd->cd_flags |= IDE_CD_FLAG_TOCTRACKS_AS_BCD;
-       else if (cd->cd_flags & IDE_CD_FLAG_SANYO_3CD)
+               drive->atapi_flags |= IDE_AFLAG_TOCTRACKS_AS_BCD;
+       else if (drive->atapi_flags & IDE_AFLAG_SANYO_3CD)
                /* 3 => use CD in slot 0 */
                cdi->sanyo_slot = 3;
 
index fe0ea36e4124d1c1ba1cc438d9c8538918122664..61a4599b77dbf3c37528799118c181960a5f5786 100644 (file)
 #define ATAPI_CAPABILITIES_PAGE_SIZE           (8 + 20)
 #define ATAPI_CAPABILITIES_PAGE_PAD_SIZE       4
 
-enum {
-       /* Device sends an interrupt when ready for a packet command. */
-       IDE_CD_FLAG_DRQ_INTERRUPT       = (1 << 0),
-       /* Drive cannot lock the door. */
-       IDE_CD_FLAG_NO_DOORLOCK         = (1 << 1),
-       /* Drive cannot eject the disc. */
-       IDE_CD_FLAG_NO_EJECT            = (1 << 2),
-       /* Drive is a pre ATAPI 1.2 drive. */
-       IDE_CD_FLAG_PRE_ATAPI12         = (1 << 3),
-       /* TOC addresses are in BCD. */
-       IDE_CD_FLAG_TOCADDR_AS_BCD      = (1 << 4),
-       /* TOC track numbers are in BCD. */
-       IDE_CD_FLAG_TOCTRACKS_AS_BCD    = (1 << 5),
-       /*
-        * Drive does not provide data in multiples of SECTOR_SIZE
-        * when more than one interrupt is needed.
-        */
-       IDE_CD_FLAG_LIMIT_NFRAMES       = (1 << 6),
-       /* Seeking in progress. */
-       IDE_CD_FLAG_SEEKING             = (1 << 7),
-       /* Driver has noticed a media change. */
-       IDE_CD_FLAG_MEDIA_CHANGED       = (1 << 8),
-       /* Saved TOC information is current. */
-       IDE_CD_FLAG_TOC_VALID           = (1 << 9),
-       /* We think that the drive door is locked. */
-       IDE_CD_FLAG_DOOR_LOCKED         = (1 << 10),
-       /* SET_CD_SPEED command is unsupported. */
-       IDE_CD_FLAG_NO_SPEED_SELECT     = (1 << 11),
-       IDE_CD_FLAG_VERTOS_300_SSD      = (1 << 12),
-       IDE_CD_FLAG_VERTOS_600_ESD      = (1 << 13),
-       IDE_CD_FLAG_SANYO_3CD           = (1 << 14),
-       IDE_CD_FLAG_FULL_CAPS_PAGE      = (1 << 15),
-       IDE_CD_FLAG_PLAY_AUDIO_OK       = (1 << 16),
-       IDE_CD_FLAG_LE_SPEED_FIELDS     = (1 << 17),
-};
-
 /* Structure of a MSF cdrom address. */
 struct atapi_msf {
        byte reserved;
@@ -128,8 +92,6 @@ struct cdrom_info {
        unsigned long last_block;
        unsigned long start_seek;
 
-       unsigned int cd_flags;
-
        u8 max_speed;           /* Max speed of the drive. */
        u8 current_speed;       /* Current speed of the drive. */
 
index 24d002addf73d5c5b6b1e9af1dcad6ceed15dd7b..085442a47418ef4d4c10420851478cd3cbb8868a 100644 (file)
@@ -27,10 +27,9 @@ int ide_cdrom_open_real(struct cdrom_device_info *cdi, int purpose)
 void ide_cdrom_release_real(struct cdrom_device_info *cdi)
 {
        ide_drive_t *drive = cdi->handle;
-       struct cdrom_info *cd = drive->driver_data;
 
        if (!cdi->use_count)
-               cd->cd_flags &= ~IDE_CD_FLAG_TOC_VALID;
+               drive->atapi_flags &= ~IDE_AFLAG_TOC_VALID;
 }
 
 /*
@@ -83,13 +82,12 @@ int ide_cdrom_check_media_change_real(struct cdrom_device_info *cdi,
                                       int slot_nr)
 {
        ide_drive_t *drive = cdi->handle;
-       struct cdrom_info *cd = drive->driver_data;
        int retval;
 
        if (slot_nr == CDSL_CURRENT) {
                (void) cdrom_check_status(drive, NULL);
-               retval = (cd->cd_flags & IDE_CD_FLAG_MEDIA_CHANGED) ? 1 : 0;
-               cd->cd_flags &= ~IDE_CD_FLAG_MEDIA_CHANGED;
+               retval = (drive->atapi_flags & IDE_AFLAG_MEDIA_CHANGED) ? 1 : 0;
+               drive->atapi_flags &= ~IDE_AFLAG_MEDIA_CHANGED;
                return retval;
        } else {
                return -EINVAL;
@@ -107,11 +105,11 @@ int cdrom_eject(ide_drive_t *drive, int ejectflag,
        char loej = 0x02;
        unsigned char cmd[BLK_MAX_CDB];
 
-       if ((cd->cd_flags & IDE_CD_FLAG_NO_EJECT) && !ejectflag)
+       if ((drive->atapi_flags & IDE_AFLAG_NO_EJECT) && !ejectflag)
                return -EDRIVE_CANT_DO_THIS;
 
        /* reload fails on some drives, if the tray is locked */
-       if ((cd->cd_flags & IDE_CD_FLAG_DOOR_LOCKED) && ejectflag)
+       if ((drive->atapi_flags & IDE_AFLAG_DOOR_LOCKED) && ejectflag)
                return 0;
 
        /* only tell drive to close tray if open, if it can do that */
@@ -131,7 +129,6 @@ static
 int ide_cd_lockdoor(ide_drive_t *drive, int lockflag,
                    struct request_sense *sense)
 {
-       struct cdrom_info *cd = drive->driver_data;
        struct request_sense my_sense;
        int stat;
 
@@ -139,7 +136,7 @@ int ide_cd_lockdoor(ide_drive_t *drive, int lockflag,
                sense = &my_sense;
 
        /* If the drive cannot lock the door, just pretend. */
-       if (cd->cd_flags & IDE_CD_FLAG_NO_DOORLOCK) {
+       if (drive->atapi_flags & IDE_AFLAG_NO_DOORLOCK) {
                stat = 0;
        } else {
                unsigned char cmd[BLK_MAX_CDB];
@@ -160,7 +157,7 @@ int ide_cd_lockdoor(ide_drive_t *drive, int lockflag,
            (sense->asc == 0x24 || sense->asc == 0x20)) {
                printk(KERN_ERR "%s: door locking not supported\n",
                        drive->name);
-               cd->cd_flags |= IDE_CD_FLAG_NO_DOORLOCK;
+               drive->atapi_flags |= IDE_AFLAG_NO_DOORLOCK;
                stat = 0;
        }
 
@@ -170,9 +167,9 @@ int ide_cd_lockdoor(ide_drive_t *drive, int lockflag,
 
        if (stat == 0) {
                if (lockflag)
-                       cd->cd_flags |= IDE_CD_FLAG_DOOR_LOCKED;
+                       drive->atapi_flags |= IDE_AFLAG_DOOR_LOCKED;
                else
-                       cd->cd_flags &= ~IDE_CD_FLAG_DOOR_LOCKED;
+                       drive->atapi_flags &= ~IDE_AFLAG_DOOR_LOCKED;
        }
 
        return stat;
@@ -250,7 +247,7 @@ int ide_cdrom_get_last_session(struct cdrom_device_info *cdi,
        struct request_sense sense;
        int ret;
 
-       if ((info->cd_flags & IDE_CD_FLAG_TOC_VALID) == 0 || !info->toc) {
+       if ((drive->atapi_flags & IDE_AFLAG_TOC_VALID) == 0 || !info->toc) {
                ret = ide_cd_read_toc(drive, &sense);
                if (ret)
                        return ret;
@@ -308,7 +305,7 @@ int ide_cdrom_reset(struct cdrom_device_info *cdi)
         * A reset will unlock the door. If it was previously locked,
         * lock it again.
         */
-       if (cd->cd_flags & IDE_CD_FLAG_DOOR_LOCKED)
+       if (drive->atapi_flags & IDE_AFLAG_DOOR_LOCKED)
                (void)ide_cd_lockdoor(drive, 1, &sense);
 
        return ret;
@@ -324,7 +321,7 @@ static int ide_cd_get_toc_entry(ide_drive_t *drive, int track,
        /*
         * don't serve cached data, if the toc isn't valid
         */
-       if ((info->cd_flags & IDE_CD_FLAG_TOC_VALID) == 0)
+       if ((drive->atapi_flags & IDE_AFLAG_TOC_VALID) == 0)
                return -EINVAL;
 
        /* Check validity of requested track number. */