static void ata_dev_disable(struct ata_port *ap, struct ata_device *dev)
 {
-       if (ata_dev_present(dev)) {
+       if (ata_dev_enabled(dev)) {
                printk(KERN_WARNING "ata%u: dev %u disabled\n",
                       ap->id, dev->devno);
                dev->class++;
        unsigned int xfer_mask;
        int i, rc;
 
-       if (!ata_dev_present(dev)) {
+       if (!ata_dev_enabled(dev)) {
                DPRINTK("ENTER/EXIT (host %u, dev %u) -- nodev\n",
                        ap->id, dev->devno);
                return 0;
 
                dev->class = classes[i];
 
-               if (!ata_dev_present(dev))
+               if (!ata_dev_enabled(dev))
                        continue;
 
                WARN_ON(dev->id != NULL);
 struct ata_device *ata_dev_pair(struct ata_port *ap, struct ata_device *adev)
 {
        struct ata_device *pair = &ap->device[1 - adev->devno];
-       if (!ata_dev_present(pair))
+       if (!ata_dev_enabled(pair))
                return NULL;
        return pair;
 }
        for (i = 0; i < ATA_MAX_DEVICES; i++) {
                struct ata_device *dev = &ap->device[i];
 
-               if (!ata_dev_present(dev))
+               if (!ata_dev_enabled(dev))
                        continue;
 
                if (!dev->pio_mode) {
        for (i = 0; i < ATA_MAX_DEVICES; i++) {
                struct ata_device *dev = &ap->device[i];
 
-               if (!ata_dev_present(dev) || !dev->dma_mode)
+               if (!ata_dev_enabled(dev) || !dev->dma_mode)
                        continue;
 
                dev->xfer_mode = dev->dma_mode;
                struct ata_device *dev = &ap->device[i];
                unsigned int pio_mask, dma_mask;
 
-               if (!ata_dev_present(dev))
+               if (!ata_dev_enabled(dev))
                        continue;
 
                ata_dev_xfermask(ap, dev);
        for (i = 0; i < ATA_MAX_DEVICES; i++) {
                struct ata_device *dev = &ap->device[i];
 
-               if (!ata_dev_present(dev))
+               if (!ata_dev_enabled(dev))
                        continue;
 
                rc = ata_dev_set_mode(ap, dev);
        u16 *id;
        int rc;
 
-       if (!ata_dev_present(dev))
+       if (!ata_dev_enabled(dev))
                return -ENODEV;
 
        class = dev->class;
        /* FIXME: Use port-wide xfermask for now */
        for (i = 0; i < ATA_MAX_DEVICES; i++) {
                struct ata_device *d = &ap->device[i];
-               if (!ata_dev_present(d))
+               if (!ata_dev_enabled(d))
                        continue;
                xfer_mask &= ata_pack_xfermask(d->pio_mask, d->mwdma_mask,
                                               d->udma_mask);
                ap->flags &= ~ATA_FLAG_SUSPENDED;
                ata_set_mode(ap);
        }
-       if (!ata_dev_present(dev))
+       if (!ata_dev_enabled(dev))
                return 0;
        if (dev->class == ATA_DEV_ATA)
                ata_start_drive(ap, dev);
  */
 int ata_device_suspend(struct ata_port *ap, struct ata_device *dev, pm_message_t state)
 {
-       if (!ata_dev_present(dev))
+       if (!ata_dev_enabled(dev))
                return 0;
        if (dev->class == ATA_DEV_ATA)
                ata_flush_cache(ap, dev);
 
        return (tag < ATA_MAX_QUEUE) ? 1 : 0;
 }
 
-static inline unsigned int ata_class_present(unsigned int class)
+static inline unsigned int ata_class_enabled(unsigned int class)
 {
        return class == ATA_DEV_ATA || class == ATA_DEV_ATAPI;
 }
 
-static inline unsigned int ata_dev_present(const struct ata_device *dev)
+static inline unsigned int ata_class_disabled(unsigned int class)
 {
-       return ata_class_present(dev->class);
+       return class == ATA_DEV_ATA_UNSUP || class == ATA_DEV_ATAPI_UNSUP;
+}
+
+static inline unsigned int ata_dev_enabled(const struct ata_device *dev)
+{
+       return ata_class_enabled(dev->class);
+}
+
+static inline unsigned int ata_dev_disabled(const struct ata_device *dev)
+{
+       return ata_class_disabled(dev->class);
 }
 
 static inline u8 ata_chk_status(struct ata_port *ap)