Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f4f9c1ac authored by Linus Torvalds's avatar Linus Torvalds
Browse files


Pull tty and serial fixes from Greg KH:
 "Here are some tty and serial fixes for 3.4-rc2.

  Most important here is the pl011 fix, which has been reported by about
  100 different people, which means more people use it than I expected
  :)

  There are also some 8250 driver reverts due to some problems reported
  by them.  And other minor fixes as well.

  Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org&gt;">

* tag 'tty-3.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
  pch_uart: Add Kontron COMe-mTT10 uart clock quirk
  pch_uart: Fix MSI setting issue
  serial/8250_pci: add a "force background timer" flag and use it for the "kt" serial port
  Revert "serial/8250_pci: setup-quirk workaround for the kt serial controller"
  Revert "serial/8250_pci: init-quirk msi support for kt serial controller"
  tty/serial/omap: console can only be built-in
  serial: samsung: fix omission initialize ulcon in reset port fn()
  printk(): add KERN_CONT where needed in hpet and vt code
  tty/serial: atmel_serial: fix RS485 half-duplex problem
  tty: serial: altera_uart: Check for NULL platform_data in probe.
  isdn/gigaset: use gig_dbg() for debugging output
  omap-serial: Fix the error handling in the omap_serial probe
  serial: PL011: move interrupt clearing
parents 3dbc35a3 11bbd5b6
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -906,8 +906,8 @@ int hpet_alloc(struct hpet_data *hdp)
		hpetp->hp_which, hdp->hd_phys_address,
		hpetp->hp_ntimer > 1 ? "s" : "");
	for (i = 0; i < hpetp->hp_ntimer; i++)
		printk("%s %d", i > 0 ? "," : "", hdp->hd_irq[i]);
	printk("\n");
		printk(KERN_CONT "%s %d", i > 0 ? "," : "", hdp->hd_irq[i]);
	printk(KERN_CONT "\n");

	temp = hpetp->hp_tick_freq;
	remainder = do_div(temp, 1000000);
+1 −1
Original line number Diff line number Diff line
@@ -176,7 +176,7 @@ static void if_close(struct tty_struct *tty, struct file *filp)
	struct cardstate *cs = tty->driver_data;

	if (!cs) { /* happens if we didn't find cs in open */
		printk(KERN_DEBUG "%s: no cardstate\n", __func__);
		gig_dbg(DEBUG_IF, "%s: no cardstate", __func__);
		return;
	}

+6 −6
Original line number Diff line number Diff line
@@ -1572,13 +1572,11 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id)
	do {
		struct uart_8250_port *up;
		struct uart_port *port;
		bool skip;

		up = list_entry(l, struct uart_8250_port, list);
		port = &up->port;
		skip = pass_counter && up->port.flags & UPF_IIR_ONCE;

		if (!skip && port->handle_irq(port)) {
		if (port->handle_irq(port)) {
			handled = 1;
			end = NULL;
		} else if (end == NULL)
@@ -2037,10 +2035,12 @@ static int serial8250_startup(struct uart_port *port)
		spin_unlock_irqrestore(&port->lock, flags);

		/*
		 * If the interrupt is not reasserted, setup a timer to
		 * kick the UART on a regular basis.
		 * If the interrupt is not reasserted, or we otherwise
		 * don't trust the iir, setup a timer to kick the UART
		 * on a regular basis.
		 */
		if (!(iir1 & UART_IIR_NO_INT) && (iir & UART_IIR_NO_INT)) {
		if ((!(iir1 & UART_IIR_NO_INT) && (iir & UART_IIR_NO_INT)) ||
		    up->port.flags & UPF_BUG_THRE) {
			up->bugs |= UART_BUG_THRE;
			pr_debug("ttyS%d - using backup timer\n",
				 serial_index(port));
+1 −15
Original line number Diff line number Diff line
@@ -1096,7 +1096,7 @@ static int kt_serial_setup(struct serial_private *priv,
			   const struct pciserial_board *board,
			   struct uart_port *port, int idx)
{
	port->flags |= UPF_IIR_ONCE;
	port->flags |= UPF_BUG_THRE;
	return skip_tx_en_setup(priv, board, port, idx);
}

@@ -1118,18 +1118,6 @@ pci_xr17c154_setup(struct serial_private *priv,
	return pci_default_setup(priv, board, port, idx);
}

static int try_enable_msi(struct pci_dev *dev)
{
	/* use msi if available, but fallback to legacy otherwise */
	pci_enable_msi(dev);
	return 0;
}

static void disable_msi(struct pci_dev *dev)
{
	pci_disable_msi(dev);
}

#define PCI_VENDOR_ID_SBSMODULARIO	0x124B
#define PCI_SUBVENDOR_ID_SBSMODULARIO	0x124B
#define PCI_DEVICE_ID_OCTPRO		0x0001
@@ -1249,9 +1237,7 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = {
		.device		= PCI_DEVICE_ID_INTEL_PATSBURG_KT,
		.subvendor	= PCI_ANY_ID,
		.subdevice	= PCI_ANY_ID,
		.init		= try_enable_msi,
		.setup		= kt_serial_setup,
		.exit		= disable_msi,
	},
	/*
	 * ITE
+1 −1
Original line number Diff line number Diff line
@@ -1041,7 +1041,7 @@ config SERIAL_OMAP

config SERIAL_OMAP_CONSOLE
	bool "Console on OMAP serial port"
	depends on SERIAL_OMAP
	depends on SERIAL_OMAP=y
	select SERIAL_CORE_CONSOLE
	help
	  Select this option if you would like to use omap serial port as
Loading