Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git] / drivers / ide / ide-dma.c
index 2d2eefb..7c3a13e 100644 (file)
@@ -74,7 +74,6 @@
  *
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <asm/io.h>
 #include <asm/irq.h>
 
-struct drive_list_entry {
-       const char *id_model;
-       const char *id_firmware;
-};
-
 static const struct drive_list_entry drive_whitelist [] = {
 
        { "Micropolis 2112A"    ,       "ALL"           },
@@ -132,7 +126,6 @@ static const struct drive_list_entry drive_blacklist [] = {
        { "SAMSUNG CD-ROM SC-148C",     "ALL"           },
        { "SAMSUNG CD-ROM SC",  "ALL"           },
        { "SanDisk SDP3B-64"    ,       "ALL"           },
-       { "SAMSUNG CD-ROM SN-124",      "ALL"           },
        { "ATAPI CD-ROM DRIVE 40X MAXIMUM",     "ALL"           },
        { "_NEC DV5800A",               "ALL"           },  
        { NULL                  ,       NULL            }
@@ -140,7 +133,7 @@ static const struct drive_list_entry drive_blacklist [] = {
 };
 
 /**
- *     in_drive_list   -       look for drive in black/white list
+ *     ide_in_drive_list       -       look for drive in black/white list
  *     @id: drive identifier
  *     @drive_table: list to inspect
  *
@@ -148,7 +141,7 @@ static const struct drive_list_entry drive_blacklist [] = {
  *     Returns 1 if the drive is found in the table.
  */
 
-static int in_drive_list(struct hd_driveid *id, const struct drive_list_entry *drive_table)
+int ide_in_drive_list(struct hd_driveid *id, const struct drive_list_entry *drive_table)
 {
        for ( ; drive_table->id_model ; drive_table++)
                if ((!strcmp(drive_table->id_model, id->model)) &&
@@ -158,6 +151,8 @@ static int in_drive_list(struct hd_driveid *id, const struct drive_list_entry *d
        return 0;
 }
 
+EXPORT_SYMBOL_GPL(ide_in_drive_list);
+
 /**
  *     ide_dma_intr    -       IDE DMA interrupt handler
  *     @drive: the drive the interrupt is for
@@ -179,7 +174,7 @@ ide_startstop_t ide_dma_intr (ide_drive_t *drive)
                        if (rq->rq_disk) {
                                ide_driver_t *drv;
 
-                               drv = *(ide_driver_t **)rq->rq_disk->private_data;;
+                               drv = *(ide_driver_t **)rq->rq_disk->private_data;
                                drv->end_request(drive, 1, rq->nr_sectors);
                        } else
                                ide_end_request(drive, 1, rq->nr_sectors);
@@ -210,8 +205,7 @@ int ide_build_sglist(ide_drive_t *drive, struct request *rq)
        ide_hwif_t *hwif = HWIF(drive);
        struct scatterlist *sg = hwif->sg_table;
 
-       if ((rq->flags & REQ_DRIVE_TASKFILE) && rq->nr_sectors > 256)
-               BUG();
+       BUG_ON((rq->flags & REQ_DRIVE_TASKFILE) && rq->nr_sectors > 256);
 
        ide_map_sg(drive, rq);
 
@@ -664,7 +658,7 @@ int __ide_dma_bad_drive (ide_drive_t *drive)
 {
        struct hd_driveid *id = drive->id;
 
-       int blacklist = in_drive_list(id, drive_blacklist);
+       int blacklist = ide_in_drive_list(id, drive_blacklist);
        if (blacklist) {
                printk(KERN_WARNING "%s: Disabling (U)DMA for %s (blacklisted)\n",
                                    drive->name, id->model);
@@ -678,7 +672,7 @@ EXPORT_SYMBOL(__ide_dma_bad_drive);
 int __ide_dma_good_drive (ide_drive_t *drive)
 {
        struct hd_driveid *id = drive->id;
-       return in_drive_list(id, drive_whitelist);
+       return ide_in_drive_list(id, drive_whitelist);
 }
 
 EXPORT_SYMBOL(__ide_dma_good_drive);
@@ -756,7 +750,7 @@ void ide_dma_verbose(ide_drive_t *drive)
                        goto bug_dma_off;
                printk(", DMA");
        } else if (id->field_valid & 1) {
-               printk(", BUG");
+               goto bug_dma_off;
        }
        return;
 bug_dma_off:
@@ -951,8 +945,7 @@ void ide_setup_dma (ide_hwif_t *hwif, unsigned long dma_base, unsigned int num_p
        }
        printk("\n");
 
-       if (!(hwif->dma_master))
-               BUG();
+       BUG_ON(!hwif->dma_master);
 }
 
 EXPORT_SYMBOL_GPL(ide_setup_dma);