Merge commit 'origin/master' into next
This commit is contained in:
@@ -2083,6 +2083,20 @@ static int serial8250_startup(struct uart_port *port)
|
||||
|
||||
serial8250_set_mctrl(&up->port, up->port.mctrl);
|
||||
|
||||
/* Serial over Lan (SoL) hack:
|
||||
Intel 8257x Gigabit ethernet chips have a
|
||||
16550 emulation, to be used for Serial Over Lan.
|
||||
Those chips take a longer time than a normal
|
||||
serial device to signalize that a transmission
|
||||
data was queued. Due to that, the above test generally
|
||||
fails. One solution would be to delay the reading of
|
||||
iir. However, this is not reliable, since the timeout
|
||||
is variable. So, let's just don't test if we receive
|
||||
TX irq. This way, we'll never enable UART_BUG_TXEN.
|
||||
*/
|
||||
if (up->port.flags & UPF_NO_TXEN_TEST)
|
||||
goto dont_test_tx_en;
|
||||
|
||||
/*
|
||||
* Do a quick test to see if we receive an
|
||||
* interrupt when we enable the TX irq.
|
||||
@@ -2102,6 +2116,7 @@ static int serial8250_startup(struct uart_port *port)
|
||||
up->bugs &= ~UART_BUG_TXEN;
|
||||
}
|
||||
|
||||
dont_test_tx_en:
|
||||
spin_unlock_irqrestore(&up->port.lock, flags);
|
||||
|
||||
/*
|
||||
|
@@ -798,6 +798,21 @@ pci_default_setup(struct serial_private *priv,
|
||||
return setup_port(priv, port, bar, offset, board->reg_shift);
|
||||
}
|
||||
|
||||
static int skip_tx_en_setup(struct serial_private *priv,
|
||||
const struct pciserial_board *board,
|
||||
struct uart_port *port, int idx)
|
||||
{
|
||||
port->flags |= UPF_NO_TXEN_TEST;
|
||||
printk(KERN_DEBUG "serial8250: skipping TxEn test for device "
|
||||
"[%04x:%04x] subsystem [%04x:%04x]\n",
|
||||
priv->dev->vendor,
|
||||
priv->dev->device,
|
||||
priv->dev->subsystem_vendor,
|
||||
priv->dev->subsystem_device);
|
||||
|
||||
return pci_default_setup(priv, board, port, idx);
|
||||
}
|
||||
|
||||
/* This should be in linux/pci_ids.h */
|
||||
#define PCI_VENDOR_ID_SBSMODULARIO 0x124B
|
||||
#define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B
|
||||
@@ -864,6 +879,27 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
|
||||
.init = pci_inteli960ni_init,
|
||||
.setup = pci_default_setup,
|
||||
},
|
||||
{
|
||||
.vendor = PCI_VENDOR_ID_INTEL,
|
||||
.device = PCI_DEVICE_ID_INTEL_8257X_SOL,
|
||||
.subvendor = PCI_ANY_ID,
|
||||
.subdevice = PCI_ANY_ID,
|
||||
.setup = skip_tx_en_setup,
|
||||
},
|
||||
{
|
||||
.vendor = PCI_VENDOR_ID_INTEL,
|
||||
.device = PCI_DEVICE_ID_INTEL_82573L_SOL,
|
||||
.subvendor = PCI_ANY_ID,
|
||||
.subdevice = PCI_ANY_ID,
|
||||
.setup = skip_tx_en_setup,
|
||||
},
|
||||
{
|
||||
.vendor = PCI_VENDOR_ID_INTEL,
|
||||
.device = PCI_DEVICE_ID_INTEL_82573E_SOL,
|
||||
.subvendor = PCI_ANY_ID,
|
||||
.subdevice = PCI_ANY_ID,
|
||||
.setup = skip_tx_en_setup,
|
||||
},
|
||||
/*
|
||||
* ITE
|
||||
*/
|
||||
|
@@ -877,6 +877,10 @@ static int atmel_startup(struct uart_port *port)
|
||||
}
|
||||
}
|
||||
|
||||
/* Save current CSR for comparison in atmel_tasklet_func() */
|
||||
atmel_port->irq_status_prev = UART_GET_CSR(port);
|
||||
atmel_port->irq_status = atmel_port->irq_status_prev;
|
||||
|
||||
/*
|
||||
* Finally, enable the serial port
|
||||
*/
|
||||
|
@@ -84,6 +84,8 @@ static int jsm_probe_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
brd->pci_dev = pdev;
|
||||
if (pdev->device == PCIE_DEVICE_ID_NEO_4_IBM)
|
||||
brd->maxports = 4;
|
||||
else if (pdev->device == PCI_DEVICE_ID_DIGI_NEO_8)
|
||||
brd->maxports = 8;
|
||||
else
|
||||
brd->maxports = 2;
|
||||
|
||||
@@ -212,6 +214,7 @@ static struct pci_device_id jsm_pci_tbl[] = {
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_DIGI, PCI_DEVICE_ID_NEO_2RJ45), 0, 0, 2 },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_DIGI, PCI_DEVICE_ID_NEO_2RJ45PRI), 0, 0, 3 },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_DIGI, PCIE_DEVICE_ID_NEO_4_IBM), 0, 0, 4 },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_DIGI, PCI_DEVICE_ID_DIGI_NEO_8), 0, 0, 5 },
|
||||
{ 0, }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pci, jsm_pci_tbl);
|
||||
|
@@ -133,7 +133,7 @@
|
||||
# define SCSPTR3 0xffed0024 /* 16 bit SCIF */
|
||||
# define SCSPTR4 0xffee0024 /* 16 bit SCIF */
|
||||
# define SCSPTR5 0xffef0024 /* 16 bit SCIF */
|
||||
# define SCIF_OPER 0x0001 /* Overrun error bit */
|
||||
# define SCIF_ORER 0x0001 /* Overrun error bit */
|
||||
# define SCSCR_INIT(port) 0x3a /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH7201) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7203) || \
|
||||
|
Reference in New Issue
Block a user