summaryrefslogtreecommitdiff
path: root/drivers/tty
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2021-06-18 09:14:49 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-06-18 14:10:01 +0300
commit57faa7d6148c2de56f7558eb0d4c837264553ba5 (patch)
tree784840b39ec78369a99be4a9d70ad5b0c7529cf6 /drivers/tty
parentb441eb0f69d19cddf2018ded38a5f3ea7e392836 (diff)
downloadlinux-57faa7d6148c2de56f7558eb0d4c837264553ba5.tar.xz
mxser: move board init into mxser_initbrd
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>
Diffstat (limited to 'drivers/tty')
-rw-r--r--drivers/tty/mxser.c53
1 files changed, 28 insertions, 25 deletions
diff --git a/drivers/tty/mxser.c b/drivers/tty/mxser.c
index ff85a6e15d9d..3b20eb96d788 100644
--- a/drivers/tty/mxser.c
+++ b/drivers/tty/mxser.c
@@ -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)