mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel
Conflicts: arch/arm/mach-at91/gpio.c
This commit is contained in:
commit
97fb44eb6b
1121 changed files with 41599 additions and 21839 deletions
|
|
@ -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
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1129,7 +1129,7 @@ static int serial_imx_probe(struct platform_device *pdev)
|
|||
sport->timer.function = imx_timeout;
|
||||
sport->timer.data = (unsigned long)sport;
|
||||
|
||||
sport->clk = clk_get(&pdev->dev, "uart_clk");
|
||||
sport->clk = clk_get(&pdev->dev, "uart");
|
||||
if (IS_ERR(sport->clk)) {
|
||||
ret = PTR_ERR(sport->clk);
|
||||
goto unmap;
|
||||
|
|
|
|||
|
|
@ -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) || \
|
||||
|
|
|
|||
Loading…
Reference in a new issue