Revert "8250: add support for ASIX devices with a FIFO bug"
commit a82d62f708545d22859584e0e0620da8e3759bbc upstream. This reverts commiteb26dfe8aa
. Commiteb26dfe8aa
("8250: add support for ASIX devices with a FIFO bug") merged on Jul 13, 2012 adds a quirk for PCI_VENDOR_ID_ASIX (0x9710). But that ID is the same as PCI_VENDOR_ID_NETMOS defined in 1f8b061050c7 ("[PATCH] Netmos parallel/serial/combo support") merged on Mar 28, 2005. In pci_serial_quirks array, the NetMos entry always takes precedence over the ASIX entry even since it was initially merged, code in that commit is always unreachable. In my tests, adding the FIFO workaround to pci_netmos_init() makes no difference, and the vendor driver also does not have such workaround. Given that the code was never used for over a decade, it's safe to revert it. Also, the real PCI_VENDOR_ID_ASIX should be 0x125b, which is used on their newer AX99100 PCIe serial controllers released on 2016. The FIFO workaround should not be intended for these newer controllers, and it was never implemented in vendor driver. Fixes:eb26dfe8aa
("8250: add support for ASIX devices with a FIFO bug") Cc: stable <stable@kernel.org> Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20230619155743.827859-1-jiaqing.zhao@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
45e55e9cac
commit
0697a1a592
@ -87,7 +87,6 @@ struct serial8250_config {
|
||||
#define UART_BUG_TXEN (1 << 1) /* UART has buggy TX IIR status */
|
||||
#define UART_BUG_NOMSR (1 << 2) /* UART has buggy MSR status bits (Au1x00) */
|
||||
#define UART_BUG_THRE (1 << 3) /* UART has buggy THRE reassertion */
|
||||
#define UART_BUG_PARITY (1 << 4) /* UART mishandles parity if FIFO enabled */
|
||||
|
||||
|
||||
#ifdef CONFIG_SERIAL_8250_SHARE_IRQ
|
||||
|
@ -1068,14 +1068,6 @@ static int pci_oxsemi_tornado_init(struct pci_dev *dev)
|
||||
return number_uarts;
|
||||
}
|
||||
|
||||
static int pci_asix_setup(struct serial_private *priv,
|
||||
const struct pciserial_board *board,
|
||||
struct uart_8250_port *port, int idx)
|
||||
{
|
||||
port->bugs |= UART_BUG_PARITY;
|
||||
return pci_default_setup(priv, board, port, idx);
|
||||
}
|
||||
|
||||
/* Quatech devices have their own extra interface features */
|
||||
|
||||
struct quatech_feature {
|
||||
@ -1872,7 +1864,6 @@ pci_moxa_setup(struct serial_private *priv,
|
||||
#define PCI_DEVICE_ID_WCH_CH355_4S 0x7173
|
||||
#define PCI_VENDOR_ID_AGESTAR 0x5372
|
||||
#define PCI_DEVICE_ID_AGESTAR_9375 0x6872
|
||||
#define PCI_VENDOR_ID_ASIX 0x9710
|
||||
#define PCI_DEVICE_ID_BROADCOM_TRUMANAGE 0x160a
|
||||
#define PCI_DEVICE_ID_AMCC_ADDIDATA_APCI7800 0x818e
|
||||
|
||||
@ -2671,16 +2662,6 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
|
||||
.subdevice = PCI_ANY_ID,
|
||||
.setup = pci_wch_ch38x_setup,
|
||||
},
|
||||
/*
|
||||
* ASIX devices with FIFO bug
|
||||
*/
|
||||
{
|
||||
.vendor = PCI_VENDOR_ID_ASIX,
|
||||
.device = PCI_ANY_ID,
|
||||
.subvendor = PCI_ANY_ID,
|
||||
.subdevice = PCI_ANY_ID,
|
||||
.setup = pci_asix_setup,
|
||||
},
|
||||
/*
|
||||
* Broadcom TruManage (NetXtreme)
|
||||
*/
|
||||
|
@ -2535,11 +2535,8 @@ static unsigned char serial8250_compute_lcr(struct uart_8250_port *up,
|
||||
|
||||
if (c_cflag & CSTOPB)
|
||||
cval |= UART_LCR_STOP;
|
||||
if (c_cflag & PARENB) {
|
||||
if (c_cflag & PARENB)
|
||||
cval |= UART_LCR_PARITY;
|
||||
if (up->bugs & UART_BUG_PARITY)
|
||||
up->fifo_bug = true;
|
||||
}
|
||||
if (!(c_cflag & PARODD))
|
||||
cval |= UART_LCR_EPAR;
|
||||
#ifdef CMSPAR
|
||||
@ -2646,8 +2643,7 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios,
|
||||
up->lcr = cval; /* Save computed LCR */
|
||||
|
||||
if (up->capabilities & UART_CAP_FIFO && port->fifosize > 1) {
|
||||
/* NOTE: If fifo_bug is not set, a user can set RX_trigger. */
|
||||
if ((baud < 2400 && !up->dma) || up->fifo_bug) {
|
||||
if (baud < 2400 && !up->dma) {
|
||||
up->fcr &= ~UART_FCR_TRIGGER_MASK;
|
||||
up->fcr |= UART_FCR_TRIGGER_1;
|
||||
}
|
||||
@ -2983,8 +2979,7 @@ static int do_set_rxtrig(struct tty_port *port, unsigned char bytes)
|
||||
struct uart_8250_port *up = up_to_u8250p(uport);
|
||||
int rxtrig;
|
||||
|
||||
if (!(up->capabilities & UART_CAP_FIFO) || uport->fifosize <= 1 ||
|
||||
up->fifo_bug)
|
||||
if (!(up->capabilities & UART_CAP_FIFO) || uport->fifosize <= 1)
|
||||
return -EINVAL;
|
||||
|
||||
rxtrig = bytes_to_fcr_rxtrig(up, bytes);
|
||||
|
@ -95,7 +95,6 @@ struct uart_8250_port {
|
||||
struct list_head list; /* ports on this IRQ */
|
||||
u32 capabilities; /* port capabilities */
|
||||
unsigned short bugs; /* port bugs */
|
||||
bool fifo_bug; /* min RX trigger if enabled */
|
||||
unsigned int tx_loadsz; /* transmit fifo load size */
|
||||
unsigned char acr;
|
||||
unsigned char fcr;
|
||||
|
Loading…
Reference in New Issue
Block a user