mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-06 05:06:29 +00:00
serial: 8250_fintek: Add support for F81216E
The F81216E is a LPC/eSPI to 4 UART Super I/O and is mostly compatible with the F81216H, but does not support RS-485 auto-direction delays on any port. Signed-off-by: Filip Brozovic <fbrozovic@gmail.com> Cc: stable <stable@kernel.org> Link: https://lore.kernel.org/r/20241110111703.15494-1-fbrozovic@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
3791ea69a4
commit
166105c903
@ -21,6 +21,7 @@
|
|||||||
#define CHIP_ID_F81866 0x1010
|
#define CHIP_ID_F81866 0x1010
|
||||||
#define CHIP_ID_F81966 0x0215
|
#define CHIP_ID_F81966 0x0215
|
||||||
#define CHIP_ID_F81216AD 0x1602
|
#define CHIP_ID_F81216AD 0x1602
|
||||||
|
#define CHIP_ID_F81216E 0x1617
|
||||||
#define CHIP_ID_F81216H 0x0501
|
#define CHIP_ID_F81216H 0x0501
|
||||||
#define CHIP_ID_F81216 0x0802
|
#define CHIP_ID_F81216 0x0802
|
||||||
#define VENDOR_ID1 0x23
|
#define VENDOR_ID1 0x23
|
||||||
@ -158,6 +159,7 @@ static int fintek_8250_check_id(struct fintek_8250 *pdata)
|
|||||||
case CHIP_ID_F81866:
|
case CHIP_ID_F81866:
|
||||||
case CHIP_ID_F81966:
|
case CHIP_ID_F81966:
|
||||||
case CHIP_ID_F81216AD:
|
case CHIP_ID_F81216AD:
|
||||||
|
case CHIP_ID_F81216E:
|
||||||
case CHIP_ID_F81216H:
|
case CHIP_ID_F81216H:
|
||||||
case CHIP_ID_F81216:
|
case CHIP_ID_F81216:
|
||||||
break;
|
break;
|
||||||
@ -181,6 +183,7 @@ static int fintek_8250_get_ldn_range(struct fintek_8250 *pdata, int *min,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case CHIP_ID_F81216AD:
|
case CHIP_ID_F81216AD:
|
||||||
|
case CHIP_ID_F81216E:
|
||||||
case CHIP_ID_F81216H:
|
case CHIP_ID_F81216H:
|
||||||
case CHIP_ID_F81216:
|
case CHIP_ID_F81216:
|
||||||
*min = F81216_LDN_LOW;
|
*min = F81216_LDN_LOW;
|
||||||
@ -250,6 +253,7 @@ static void fintek_8250_set_irq_mode(struct fintek_8250 *pdata, bool is_level)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CHIP_ID_F81216AD:
|
case CHIP_ID_F81216AD:
|
||||||
|
case CHIP_ID_F81216E:
|
||||||
case CHIP_ID_F81216H:
|
case CHIP_ID_F81216H:
|
||||||
case CHIP_ID_F81216:
|
case CHIP_ID_F81216:
|
||||||
sio_write_mask_reg(pdata, FINTEK_IRQ_MODE, IRQ_SHARE,
|
sio_write_mask_reg(pdata, FINTEK_IRQ_MODE, IRQ_SHARE,
|
||||||
@ -263,7 +267,8 @@ static void fintek_8250_set_irq_mode(struct fintek_8250 *pdata, bool is_level)
|
|||||||
static void fintek_8250_set_max_fifo(struct fintek_8250 *pdata)
|
static void fintek_8250_set_max_fifo(struct fintek_8250 *pdata)
|
||||||
{
|
{
|
||||||
switch (pdata->pid) {
|
switch (pdata->pid) {
|
||||||
case CHIP_ID_F81216H: /* 128Bytes FIFO */
|
case CHIP_ID_F81216E: /* 128Bytes FIFO */
|
||||||
|
case CHIP_ID_F81216H:
|
||||||
case CHIP_ID_F81966:
|
case CHIP_ID_F81966:
|
||||||
case CHIP_ID_F81866:
|
case CHIP_ID_F81866:
|
||||||
sio_write_mask_reg(pdata, FIFO_CTRL,
|
sio_write_mask_reg(pdata, FIFO_CTRL,
|
||||||
@ -297,6 +302,7 @@ static void fintek_8250_set_termios(struct uart_port *port,
|
|||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
switch (pdata->pid) {
|
switch (pdata->pid) {
|
||||||
|
case CHIP_ID_F81216E:
|
||||||
case CHIP_ID_F81216H:
|
case CHIP_ID_F81216H:
|
||||||
reg = RS485;
|
reg = RS485;
|
||||||
break;
|
break;
|
||||||
@ -346,6 +352,7 @@ static void fintek_8250_set_termios_handler(struct uart_8250_port *uart)
|
|||||||
struct fintek_8250 *pdata = uart->port.private_data;
|
struct fintek_8250 *pdata = uart->port.private_data;
|
||||||
|
|
||||||
switch (pdata->pid) {
|
switch (pdata->pid) {
|
||||||
|
case CHIP_ID_F81216E:
|
||||||
case CHIP_ID_F81216H:
|
case CHIP_ID_F81216H:
|
||||||
case CHIP_ID_F81966:
|
case CHIP_ID_F81966:
|
||||||
case CHIP_ID_F81866:
|
case CHIP_ID_F81866:
|
||||||
@ -438,6 +445,11 @@ static void fintek_8250_set_rs485_handler(struct uart_8250_port *uart)
|
|||||||
uart->port.rs485_supported = fintek_8250_rs485_supported;
|
uart->port.rs485_supported = fintek_8250_rs485_supported;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case CHIP_ID_F81216E: /* F81216E does not support RS485 delays */
|
||||||
|
uart->port.rs485_config = fintek_8250_rs485_config;
|
||||||
|
uart->port.rs485_supported = fintek_8250_rs485_supported;
|
||||||
|
break;
|
||||||
|
|
||||||
default: /* No RS485 Auto direction functional */
|
default: /* No RS485 Auto direction functional */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user