include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit...
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / scsi / fd_mcs.c
index dde3edf35c03667ed2762119dca8bcb9344327a7..2ad95aa8f58536a664a4c7d2114c4505d27355fe 100644 (file)
@@ -88,6 +88,7 @@
 #include <linux/delay.h>
 #include <linux/mca.h>
 #include <linux/spinlock.h>
+#include <linux/slab.h>
 #include <scsi/scsicam.h>
 #include <linux/mca-legacy.h>
 
@@ -281,7 +282,7 @@ static struct fd_mcs_adapters_struct fd_mcs_adapters[] = {
 
 #define FD_BRDS ARRAY_SIZE(fd_mcs_adapters)
 
-static irqreturn_t fd_mcs_intr(int irq, void *dev_id, struct pt_regs *regs);
+static irqreturn_t fd_mcs_intr(int irq, void *dev_id);
 
 static unsigned long addresses[] = { 0xc8000, 0xca000, 0xce000, 0xde000 };
 static unsigned short ports[] = { 0x140, 0x150, 0x160, 0x170 };
@@ -294,6 +295,7 @@ static struct Scsi_Host *hosts[FD_MAX_HOSTS + 1] = { NULL };
 static int user_fifo_count = 0;
 static int user_fifo_size = 0;
 
+#ifndef MODULE
 static int __init fd_mcs_setup(char *str)
 {
        static int done_setup = 0;
@@ -311,6 +313,7 @@ static int __init fd_mcs_setup(char *str)
 }
 
 __setup("fd_mcs=", fd_mcs_setup);
+#endif /* !MODULE */
 
 static void print_banner(struct Scsi_Host *shpnt)
 {
@@ -617,7 +620,7 @@ static void my_done(struct Scsi_Host *shpnt, int error)
 }
 
 /* only my_done needs to be protected  */
-static irqreturn_t fd_mcs_intr(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t fd_mcs_intr(int irq, void *dev_id)
 {
        unsigned long flags;
        int status;
@@ -971,7 +974,7 @@ static irqreturn_t fd_mcs_intr(int irq, void *dev_id, struct pt_regs *regs)
                                if (current_SC->SCp.buffers_residual) {
                                        --current_SC->SCp.buffers_residual;
                                        ++current_SC->SCp.buffer;
-                                       current_SC->SCp.ptr = page_address(current_SC->SCp.buffer->page) + current_SC->SCp.buffer->offset;
+                                       current_SC->SCp.ptr = sg_virt(current_SC->SCp.buffer);
                                        current_SC->SCp.this_residual = current_SC->SCp.buffer->length;
                                } else
                                        break;
@@ -1004,7 +1007,7 @@ static irqreturn_t fd_mcs_intr(int irq, void *dev_id, struct pt_regs *regs)
                        if (!current_SC->SCp.this_residual && current_SC->SCp.buffers_residual) {
                                --current_SC->SCp.buffers_residual;
                                ++current_SC->SCp.buffer;
-                               current_SC->SCp.ptr = page_address(current_SC->SCp.buffer->page) + current_SC->SCp.buffer->offset;
+                               current_SC->SCp.ptr = sg_virt(current_SC->SCp.buffer);
                                current_SC->SCp.this_residual = current_SC->SCp.buffer->length;
                        }
                }
@@ -1015,24 +1018,6 @@ static irqreturn_t fd_mcs_intr(int irq, void *dev_id, struct pt_regs *regs)
                printk(" ** IN DONE %d ** ", current_SC->SCp.have_data_in);
 #endif
 
-#if ERRORS_ONLY
-               if (current_SC->cmnd[0] == REQUEST_SENSE && !current_SC->SCp.Status) {
-                       if ((unsigned char) (*((char *) current_SC->request_buffer + 2)) & 0x0f) {
-                               unsigned char key;
-                               unsigned char code;
-                               unsigned char qualifier;
-
-                               key = (unsigned char) (*((char *) current_SC->request_buffer + 2)) & 0x0f;
-                               code = (unsigned char) (*((char *) current_SC->request_buffer + 12));
-                               qualifier = (unsigned char) (*((char *) current_SC->request_buffer + 13));
-
-                               if (key != UNIT_ATTENTION && !(key == NOT_READY && code == 0x04 && (!qualifier || qualifier == 0x02 || qualifier == 0x01))
-                                   && !(key == ILLEGAL_REQUEST && (code == 0x25 || code == 0x24 || !code)))
-
-                                       printk("fd_mcs: REQUEST SENSE " "Key = %x, Code = %x, Qualifier = %x\n", key, code, qualifier);
-                       }
-               }
-#endif
 #if EVERY_ACCESS
                printk("BEFORE MY_DONE. . .");
 #endif
@@ -1095,7 +1080,9 @@ static int fd_mcs_queue(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
                panic("fd_mcs: fd_mcs_queue() NOT REENTRANT!\n");
        }
 #if EVERY_ACCESS
-       printk("queue: target = %d cmnd = 0x%02x pieces = %d size = %u\n", SCpnt->target, *(unsigned char *) SCpnt->cmnd, SCpnt->use_sg, SCpnt->request_bufflen);
+       printk("queue: target = %d cmnd = 0x%02x pieces = %d size = %u\n",
+               SCpnt->target, *(unsigned char *) SCpnt->cmnd,
+               scsi_sg_count(SCpnt), scsi_bufflen(SCpnt));
 #endif
 
        fd_mcs_make_bus_idle(shpnt);
@@ -1105,14 +1092,14 @@ static int fd_mcs_queue(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
 
        /* Initialize static data */
 
-       if (current_SC->use_sg) {
-               current_SC->SCp.buffer = (struct scatterlist *) current_SC->request_buffer;
-               current_SC->SCp.ptr = page_address(current_SC->SCp.buffer->page) + current_SC->SCp.buffer->offset;
+       if (scsi_bufflen(current_SC)) {
+               current_SC->SCp.buffer = scsi_sglist(current_SC);
+               current_SC->SCp.ptr = sg_virt(current_SC->SCp.buffer);
                current_SC->SCp.this_residual = current_SC->SCp.buffer->length;
-               current_SC->SCp.buffers_residual = current_SC->use_sg - 1;
+               current_SC->SCp.buffers_residual = scsi_sg_count(current_SC) - 1;
        } else {
-               current_SC->SCp.ptr = (char *) current_SC->request_buffer;
-               current_SC->SCp.this_residual = current_SC->request_bufflen;
+               current_SC->SCp.ptr = NULL;
+               current_SC->SCp.this_residual = 0;
                current_SC->SCp.buffer = NULL;
                current_SC->SCp.buffers_residual = 0;
        }
@@ -1164,7 +1151,9 @@ static void fd_mcs_print_info(Scsi_Cmnd * SCpnt)
                break;
        }
 
-       printk("(%d), target = %d cmnd = 0x%02x pieces = %d size = %u\n", SCpnt->SCp.phase, SCpnt->device->id, *(unsigned char *) SCpnt->cmnd, SCpnt->use_sg, SCpnt->request_bufflen);
+       printk("(%d), target = %d cmnd = 0x%02x pieces = %d size = %u\n",
+               SCpnt->SCp.phase, SCpnt->device->id, *(unsigned char *) SCpnt->cmnd,
+               scsi_sg_count(SCpnt), scsi_bufflen(SCpnt));
        printk("sent_command = %d, have_data_in = %d, timeout = %d\n", SCpnt->SCp.sent_command, SCpnt->SCp.have_data_in, SCpnt->timeout);
 #if DEBUG_RACE
        printk("in_interrupt_flag = %d\n", in_interrupt_flag);