| From fd97e66c5529046e989a0879c3bb58fddb592c71 Mon Sep 17 00:00:00 2001 |
| From: "Ji-Ze Hong (Peter Hong)" <hpeter@gmail.com> |
| Date: Tue, 17 Oct 2017 14:23:08 +0800 |
| Subject: serial: 8250_fintek: Fix finding base_port with activated SuperIO |
| |
| From: Ji-Ze Hong (Peter Hong) <hpeter@gmail.com> |
| |
| commit fd97e66c5529046e989a0879c3bb58fddb592c71 upstream. |
| |
| 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. |
| |
| Tested-by: Ji-Ze Hong (Peter Hong) <hpeter+linux_kernel@gmail.com> |
| Signed-off-by: Ji-Ze Hong (Peter Hong) <hpeter+linux_kernel@gmail.com> |
| Reviewd-by: Alan Cox <alan@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/tty/serial/8250/8250_fintek.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/tty/serial/8250/8250_fintek.c |
| +++ b/drivers/tty/serial/8250/8250_fintek.c |
| @@ -118,6 +118,9 @@ static int fintek_8250_enter_key(u16 bas |
| 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; |