mxser: move board init into mxser_initbrd
authorJiri Slaby <jslaby@suse.cz>
Fri, 18 Jun 2021 06:14:49 +0000 (08:14 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 18 Jun 2021 11:10:01 +0000 (13:10 +0200)
What's done in ->probe for board is actually its initialization. So move
it to mxser_initbrd where it belongs.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20210618061516.662-44-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/mxser.c

index ff85a6e..3b20eb9 100644 (file)
@@ -1888,9 +1888,36 @@ static int mxser_initbrd(struct mxser_board *brd)
        struct mxser_port *info;
        unsigned int i;
        int retval;
+       bool is_mu860;
+
+       brd->must_hwid = mxser_must_get_hwid(brd->ports[0].ioaddr);
+       is_mu860 = brd->must_hwid == MOXA_MUST_MU860_HWID;
+
+       for (i = 0; i < UART_INFO_NUM; i++) {
+               if (Gpci_uart_info[i].type == brd->must_hwid) {
+                       brd->max_baud = Gpci_uart_info[i].max_baud;
+
+                       /* exception....CP-102 */
+                       if (brd->info->flags & MXSER_HIGHBAUD)
+                               brd->max_baud = 921600;
+                       break;
+               }
+       }
+
+       if (is_mu860) {
+               /* set to RS232 mode by default */
+               outb(0, brd->vector + 4);
+               outb(0, brd->vector + 0x0c);
+       }
 
        for (i = 0; i < brd->info->nports; i++) {
                info = &brd->ports[i];
+               if (is_mu860) {
+                       if (i < 4)
+                               info->opmode_ioaddr = brd->vector + 4;
+                       else
+                               info->opmode_ioaddr = brd->vector + 0x0c;
+               }
                tty_port_init(&info->port);
                info->port.ops = &mxser_port_ops;
                info->board = brd;
@@ -1941,7 +1968,7 @@ static int mxser_probe(struct pci_dev *pdev,
                const struct pci_device_id *ent)
 {
        struct mxser_board *brd;
-       unsigned int i, j;
+       unsigned int i;
        unsigned long ioaddress;
        struct device *tty_dev;
        int retval = -EINVAL;
@@ -1988,30 +2015,6 @@ static int mxser_probe(struct pci_dev *pdev,
        /* irq */
        brd->irq = pdev->irq;
 
-       brd->must_hwid = mxser_must_get_hwid(brd->ports[0].ioaddr);
-
-       for (j = 0; j < UART_INFO_NUM; j++) {
-               if (Gpci_uart_info[j].type == brd->must_hwid) {
-                       brd->max_baud = Gpci_uart_info[j].max_baud;
-
-                       /* exception....CP-102 */
-                       if (brd->info->flags & MXSER_HIGHBAUD)
-                               brd->max_baud = 921600;
-                       break;
-               }
-       }
-
-       if (brd->must_hwid == MOXA_MUST_MU860_HWID) {
-               for (i = 0; i < brd->info->nports; i++) {
-                       if (i < 4)
-                               brd->ports[i].opmode_ioaddr = ioaddress + 4;
-                       else
-                               brd->ports[i].opmode_ioaddr = ioaddress + 0x0c;
-               }
-               outb(0, ioaddress + 4); /* default set to RS232 mode */
-               outb(0, ioaddress + 0x0c);      /* default set to RS232 mode */
-       }
-
        /* mxser_initbrd will hook ISR. */
        retval = mxser_initbrd(brd);
        if (retval)