The SuperIO will be configured at boot time by BIOS, but some BIOS
will not deactivate the SuperIO when the end of configuration. It'll
lead to mismatch for pdata->base_port in probe_setup_port(). So we'll
deactivate all SuperIO before activate special base_port in
fintek_8250_enter_key().

Tested on iBASE MI802.

Cc: sta...@vger.kernel.org
Tested-by: Ji-Ze Hong (Peter Hong) <hpeter+linux_ker...@gmail.com>
Signed-off-by: Ji-Ze Hong (Peter Hong) <hpeter+linux_ker...@gmail.com>
---
 drivers/tty/serial/8250/8250_fintek.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/tty/serial/8250/8250_fintek.c 
b/drivers/tty/serial/8250/8250_fintek.c
index 96cc45f25ee9..b34623914413 100644
--- a/drivers/tty/serial/8250/8250_fintek.c
+++ b/drivers/tty/serial/8250/8250_fintek.c
@@ -128,6 +128,9 @@ static int fintek_8250_enter_key(u16 base_port, u8 key)
        if (!request_muxed_region(base_port, 2, "8250_fintek"))
                return -EBUSY;
 
+       /* Force to deactive all SuperIO in this base_port */
+       outb(EXIT_KEY, base_port + ADDR_PORT);
+
        outb(key, base_port + ADDR_PORT);
        outb(key, base_port + ADDR_PORT);
        return 0;
-- 
2.7.4

Reply via email to