At the moment, if a Fintek UART is detected, there is no printed information about this. The ttyS port is declared as a simple 16550A port, but, especially when we want to use the RS485 mode, it's very important understand if the Fintek UART is correctly detected as expected. Signed-off-by: Flavio Suligoi <f.suligoi@xxxxxxx> --- drivers/tty/serial/8250/8250_fintek.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/8250/8250_fintek.c b/drivers/tty/serial/8250/8250_fintek.c index 31c9e83ea3cb..ef2303cb5176 100644 --- a/drivers/tty/serial/8250/8250_fintek.c +++ b/drivers/tty/serial/8250/8250_fintek.c @@ -97,6 +97,7 @@ struct fintek_8250 { u16 base_port; u8 index; u8 key; + const char *chip_name; }; static u8 sio_read_reg(struct fintek_8250 *pdata, u8 reg) @@ -140,9 +141,11 @@ static void fintek_8250_exit_key(u16 base_port) release_region(base_port + ADDR_PORT, 2); } -static int fintek_8250_check_id(struct fintek_8250 *pdata) +static int fintek_8250_check_id(struct fintek_8250 *pdata, + struct uart_8250_port *uart) { u16 chip; + const char *chip_name; if (sio_read_reg(pdata, VENDOR_ID1) != VENDOR_ID1_VAL) return -ENODEV; @@ -155,17 +158,35 @@ static int fintek_8250_check_id(struct fintek_8250 *pdata) switch (chip) { case CHIP_ID_F81865: + chip_name = "F81865"; + break; case CHIP_ID_F81866: + chip_name = "F81866"; + break; case CHIP_ID_F81966: + chip_name = "F81966"; + break; case CHIP_ID_F81216AD: + chip_name = "F81216AD"; + break; case CHIP_ID_F81216H: + chip_name = "F81216H"; + break; case CHIP_ID_F81216: + chip_name = "F81216"; break; default: return -ENODEV; } pdata->pid = chip; + + pr_info("%s%s%s Fintek %s\n", + uart->port.dev ? dev_name(uart->port.dev) : "", + uart->port.dev ? ": " : "", + uart->port.name, + chip_name); + return 0; } @@ -406,7 +427,7 @@ static int probe_setup_port(struct fintek_8250 *pdata, if (fintek_8250_enter_key(addr[i], keys[j])) continue; - if (fintek_8250_check_id(pdata) || + if (fintek_8250_check_id(pdata, uart) || fintek_8250_get_ldn_range(pdata, &min, &max)) { fintek_8250_exit_key(addr[i]); continue; -- 2.25.1