OSDN Git Service

floppy: cleanup: make get_fdc_version() not rely on current_fdc anymore
authorWilly Tarreau <w@1wt.eu>
Tue, 31 Mar 2020 09:40:52 +0000 (11:40 +0200)
committerDenis Efremov <efremov@linux.com>
Tue, 12 May 2020 16:34:55 +0000 (19:34 +0300)
Now the fdc is passed in argument so that the function does not
use current_fdc anymore.

Link: https://lore.kernel.org/r/20200331094054.24441-22-w@1wt.eu
Signed-off-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Denis Efremov <efremov@linux.com>
drivers/block/floppy.c

index f53810b..8850baa 100644 (file)
@@ -4297,79 +4297,79 @@ static const struct block_device_operations floppy_fops = {
 
 /* Determine the floppy disk controller type */
 /* This routine was written by David C. Niemi */
-static char __init get_fdc_version(void)
+static char __init get_fdc_version(int fdc)
 {
        int r;
 
-       output_byte(current_fdc, FD_DUMPREGS);  /* 82072 and better know DUMPREGS */
-       if (fdc_state[current_fdc].reset)
+       output_byte(fdc, FD_DUMPREGS);  /* 82072 and better know DUMPREGS */
+       if (fdc_state[fdc].reset)
                return FDC_NONE;
-       r = result(current_fdc);
+       r = result(fdc);
        if (r <= 0x00)
                return FDC_NONE;        /* No FDC present ??? */
        if ((r == 1) && (reply_buffer[0] == 0x80)) {
-               pr_info("FDC %d is an 8272A\n", current_fdc);
+               pr_info("FDC %d is an 8272A\n", fdc);
                return FDC_8272A;       /* 8272a/765 don't know DUMPREGS */
        }
        if (r != 10) {
                pr_info("FDC %d init: DUMPREGS: unexpected return of %d bytes.\n",
-                       current_fdc, r);
+                       fdc, r);
                return FDC_UNKNOWN;
        }
 
-       if (!fdc_configure(current_fdc)) {
-               pr_info("FDC %d is an 82072\n", current_fdc);
+       if (!fdc_configure(fdc)) {
+               pr_info("FDC %d is an 82072\n", fdc);
                return FDC_82072;       /* 82072 doesn't know CONFIGURE */
        }
 
-       output_byte(current_fdc, FD_PERPENDICULAR);
-       if (need_more_output(current_fdc) == MORE_OUTPUT) {
-               output_byte(current_fdc, 0);
+       output_byte(fdc, FD_PERPENDICULAR);
+       if (need_more_output(fdc) == MORE_OUTPUT) {
+               output_byte(fdc, 0);
        } else {
-               pr_info("FDC %d is an 82072A\n", current_fdc);
+               pr_info("FDC %d is an 82072A\n", fdc);
                return FDC_82072A;      /* 82072A as found on Sparcs. */
        }
 
-       output_byte(current_fdc, FD_UNLOCK);
-       r = result(current_fdc);
+       output_byte(fdc, FD_UNLOCK);
+       r = result(fdc);
        if ((r == 1) && (reply_buffer[0] == 0x80)) {
-               pr_info("FDC %d is a pre-1991 82077\n", current_fdc);
+               pr_info("FDC %d is a pre-1991 82077\n", fdc);
                return FDC_82077_ORIG;  /* Pre-1991 82077, doesn't know
                                         * LOCK/UNLOCK */
        }
        if ((r != 1) || (reply_buffer[0] != 0x00)) {
                pr_info("FDC %d init: UNLOCK: unexpected return of %d bytes.\n",
-                       current_fdc, r);
+                       fdc, r);
                return FDC_UNKNOWN;
        }
-       output_byte(current_fdc, FD_PARTID);
-       r = result(current_fdc);
+       output_byte(fdc, FD_PARTID);
+       r = result(fdc);
        if (r != 1) {
                pr_info("FDC %d init: PARTID: unexpected return of %d bytes.\n",
-                       current_fdc, r);
+                       fdc, r);
                return FDC_UNKNOWN;
        }
        if (reply_buffer[0] == 0x80) {
-               pr_info("FDC %d is a post-1991 82077\n", current_fdc);
+               pr_info("FDC %d is a post-1991 82077\n", fdc);
                return FDC_82077;       /* Revised 82077AA passes all the tests */
        }
        switch (reply_buffer[0] >> 5) {
        case 0x0:
                /* Either a 82078-1 or a 82078SL running at 5Volt */
-               pr_info("FDC %d is an 82078.\n", current_fdc);
+               pr_info("FDC %d is an 82078.\n", fdc);
                return FDC_82078;
        case 0x1:
-               pr_info("FDC %d is a 44pin 82078\n", current_fdc);
+               pr_info("FDC %d is a 44pin 82078\n", fdc);
                return FDC_82078;
        case 0x2:
-               pr_info("FDC %d is a S82078B\n", current_fdc);
+               pr_info("FDC %d is a S82078B\n", fdc);
                return FDC_S82078B;
        case 0x3:
-               pr_info("FDC %d is a National Semiconductor PC87306\n", current_fdc);
+               pr_info("FDC %d is a National Semiconductor PC87306\n", fdc);
                return FDC_87306;
        default:
                pr_info("FDC %d init: 82078 variant with unknown PARTID=%d.\n",
-                       current_fdc, reply_buffer[0] >> 5);
+                       fdc, reply_buffer[0] >> 5);
                return FDC_82078_UNKN;
        }
 }                              /* get_fdc_version */
@@ -4711,7 +4711,7 @@ static int __init do_floppy_init(void)
                        continue;
                }
                /* Try to determine the floppy controller type */
-               fdc_state[current_fdc].version = get_fdc_version();
+               fdc_state[current_fdc].version = get_fdc_version(current_fdc);
                if (fdc_state[current_fdc].version == FDC_NONE) {
                        /* free ioports reserved by floppy_grab_irq_and_dma() */
                        floppy_release_regions(current_fdc);