Linux Serial subsystem development
 help / color / mirror / Atom feed
* Re: [PATCH 6/6] serial: add amba-pl011-pci
From: Arnd Bergmann @ 2012-05-26  7:39 UTC (permalink / raw)
  To: Alessandro Rubini
  Cc: linux-kernel, Giancarlo Asnaghi, Alan Cox, Russell King, x86,
	Greg Kroah-Hartman, linux-arm-kernel, linux-serial, linux-arch
In-Reply-To: <b166cb0fce2a67b24da5808604553b4196258f45.1337959750.git.rubini@gnudd.com>

On Friday 25 May 2012, Alessandro Rubini wrote:
> 
> This is a simple PCI driver that registers an amba device
> in its probe function. It successfully drives the 4 serial
> ports of the sta2x11 I/O Hub.
> 
> Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
> Acked-by: Giancarlo Asnaghi <giancarlo.asnaghi@st.com>

Aside from the dma mask, this looks almost entirely generic. Would it
be possible to make this a generic pci-amba driver that lives under
drivers/amba/ and does not care about the type of device behind it?

	Arnd

^ permalink raw reply

* [PATCH 11/15] serial: mxs-auart: Use clk_prepare_enable/clk_disable_unprepare
From: Fabio Estevam @ 2012-05-25 23:14 UTC (permalink / raw)
  To: kernel; +Cc: shawn.guo, Fabio Estevam, Alan Cox, Greg Kroah-Hartman,
	linux-serial
In-Reply-To: <1337987696-31728-1-git-send-email-festevam@gmail.com>

From: Fabio Estevam <fabio.estevam@freescale.com>

Prepare the clock before enabling it.

Cc: Alan Cox <alan@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: <linux-serial@vger.kernel.org>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
 drivers/tty/serial/mxs-auart.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index ec56d83..c109642 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -552,7 +552,7 @@ auart_console_write(struct console *co, const char *str, unsigned int count)
 	s = auart_port[co->index];
 	port = &s->port;
 
-	clk_enable(s->clk);
+	clk_prepare_enable(s->clk);
 
 	/* First save the CR then disable the interrupts */
 	old_ctrl2 = readl(port->membase + AUART_CTRL2);
@@ -578,7 +578,7 @@ auart_console_write(struct console *co, const char *str, unsigned int count)
 	writel(old_ctrl0, port->membase + AUART_CTRL0);
 	writel(old_ctrl2, port->membase + AUART_CTRL2);
 
-	clk_disable(s->clk);
+	clk_disable_unprepare(s->clk);
 }
 
 static void __init
-- 
1.7.1


^ permalink raw reply related

* [PATCH 6/6] serial: add amba-pl011-pci
From: Alessandro Rubini @ 2012-05-25 15:48 UTC (permalink / raw)
  To: linux-kernel
  Cc: Giancarlo Asnaghi, Alan Cox, Russell King, x86,
	Greg Kroah-Hartman, Arnd Bergmann, linux-arm-kernel, linux-serial,
	linux-arch
In-Reply-To: <cover.1337959750.git.rubini@gnudd.com>

This is a simple PCI driver that registers an amba device
in its probe function. It successfully drives the 4 serial
ports of the sta2x11 I/O Hub.

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
Acked-by: Giancarlo Asnaghi <giancarlo.asnaghi@st.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/tty/serial/Kconfig          |   10 +++-
 drivers/tty/serial/Makefile         |    1 +
 drivers/tty/serial/amba-pl011-pci.c |  101 +++++++++++++++++++++++++++++++++++
 3 files changed, 111 insertions(+), 1 deletions(-)
 create mode 100644 drivers/tty/serial/amba-pl011-pci.c

diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
index 070b442..e5e5ef6 100644
--- a/drivers/tty/serial/Kconfig
+++ b/drivers/tty/serial/Kconfig
@@ -39,14 +39,22 @@ config SERIAL_AMBA_PL010_CONSOLE
 config SERIAL_AMBA_PL011
 	tristate "ARM AMBA PL011 serial port support"
 	depends on ARM_AMBA
+	default y if STA2X11
 	select SERIAL_CORE
 	help
 	  This selects the ARM(R) AMBA(R) PrimeCell PL011 UART.  If you have
 	  an Integrator/PP2, Integrator/CP or Versatile platform, say Y or M
-	  here.
+	  here. This is also needed to use the sta2x11 I/O Hub for Atom.
 
 	  If unsure, say N.
 
+config SERIAL_AMBA_PL011_PCI
+	tristate "ARM AMBA PL011 behind a PCI-to-AMBA bridge"
+	depends on SERIAL_AMBA_PL011 && PCI
+	default y if STA2X11
+	help
+	  Say Y if your AMBA bus is behind a PCI bridge (e.g.: sta2x11)
+
 config SERIAL_AMBA_PL011_CONSOLE
 	bool "Support for console on AMBA serial port"
 	depends on SERIAL_AMBA_PL011=y
diff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile
index 7257c5d..b8cd14b 100644
--- a/drivers/tty/serial/Makefile
+++ b/drivers/tty/serial/Makefile
@@ -19,6 +19,7 @@ obj-$(CONFIG_SERIAL_8250) += 8250/
 
 obj-$(CONFIG_SERIAL_AMBA_PL010) += amba-pl010.o
 obj-$(CONFIG_SERIAL_AMBA_PL011) += amba-pl011.o
+obj-$(CONFIG_SERIAL_AMBA_PL011_PCI) += amba-pl011-pci.o
 obj-$(CONFIG_SERIAL_CLPS711X) += clps711x.o
 obj-$(CONFIG_SERIAL_PXA) += pxa.o
 obj-$(CONFIG_SERIAL_PNX8XXX) += pnx8xxx_uart.o
diff --git a/drivers/tty/serial/amba-pl011-pci.c b/drivers/tty/serial/amba-pl011-pci.c
new file mode 100644
index 0000000..b3aa0f1
--- /dev/null
+++ b/drivers/tty/serial/amba-pl011-pci.c
@@ -0,0 +1,101 @@
+/*
+ * Support for AMBA pl011 uart behind a PCI bridge
+ * Copyright 2012 ST Microelectronics (Alessandro Rubini)
+ * GNU GPL version 2.
+ */
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/amba/bus.h>
+#include <linux/pci.h>
+#include <linux/pci_ids.h>
+#include <linux/slab.h>
+#include <linux/irq.h>
+#include <linux/sizes.h>
+#include <linux/amba/serial.h>
+
+/* This is a template, copied every time a new pci device appears */
+static AMBA_APB_DEVICE(pl011_pci_template, "pl011-pci", 0,
+		       0 /* base */, {0} /* irqs */, NULL /* data */);
+
+static int __devinit pl011_pci_probe(struct pci_dev *pdev,
+				     const struct pci_device_id *id)
+{
+	struct amba_device *adev;
+	struct amba_pl011_data *data;
+	int ret;
+
+	/* Simply build an amba device and register it */
+	adev = kmemdup(&pl011_pci_template_device,
+			 sizeof(pl011_pci_template_device), GFP_KERNEL);
+	data = kzalloc(sizeof(*data), GFP_KERNEL);
+	if (!adev || !data) {
+		kfree(adev);
+		kfree(data);
+		return -ENOMEM;
+	}
+	pci_set_master(pdev);
+	pci_enable_msi(pdev);
+	adev->irq[0] = pdev->irq;
+	if (pdev->vendor == PCI_VENDOR_ID_STMICRO) {
+		/* Under sta2x11, DMA is there but limited to 512M */
+		adev->dma_mask = SZ_512M - 1;
+		adev->dev.coherent_dma_mask = SZ_512M - 1;
+	}
+
+	/* Link the pci to amba and the amba to pci */
+	adev->dev.platform_data = data;
+	//data->pdev = pdev;
+	pci_set_drvdata(pdev, adev);
+
+	/* Create a new resource, to be registered as child of the PCI one */
+	adev->res.flags = pdev->resource[0].flags;
+	adev->res.start = pdev->resource[0].start;
+	adev->res.end = adev->res.start + SZ_4K - 1;
+
+	/* change name */
+	adev->dev.init_name = kasprintf(GFP_ATOMIC, "pl011-pci-%02x:%04x",
+				       pdev->bus->number, pdev->devfn);
+
+	printk(KERN_INFO "%s %i\n", __func__, __LINE__);
+	if ((ret = amba_device_register(adev, &pdev->resource[0])) < 0) {
+		kfree(adev);
+		return ret;
+	}
+	return 0;
+};
+
+static void __devexit pl011_pci_remove(struct pci_dev *pdev)
+{
+	struct amba_device *adev = pci_get_drvdata(pdev);
+	amba_device_unregister(adev);
+	kfree(adev->dev.platform_data);
+	kfree(adev);
+}
+
+static DEFINE_PCI_DEVICE_TABLE(pl011_pci_table) = {
+	{PCI_VDEVICE(STMICRO, PCI_DEVICE_ID_STMICRO_UART_HWFC)},
+	{PCI_VDEVICE(STMICRO, PCI_DEVICE_ID_STMICRO_UART_NO_HWFC)},
+	{0,}
+};
+
+static struct pci_driver pl011_pci_driver = {
+	.name		= "pl011-pci",
+	.id_table	= pl011_pci_table,
+	.probe		= pl011_pci_probe,
+	.remove		= __devexit_p(pl011_pci_remove),
+};
+
+static int __init pl011_pci_init(void)
+{
+	return pci_register_driver(&pl011_pci_driver);
+}
+
+static void __exit pl011_pci_exit(void)
+{
+	pci_unregister_driver(&pl011_pci_driver);
+}
+
+module_init(pl011_pci_init);
+module_exit(pl011_pci_exit);
+
-- 
1.7.7.2

^ permalink raw reply related

* [PATCH 5/6] x86: add CONFIG_ARM_AMBA, selected by STA2X11
From: Alessandro Rubini @ 2012-05-25 15:48 UTC (permalink / raw)
  To: linux-kernel
  Cc: Giancarlo Asnaghi, Alan Cox, Russell King, x86,
	Greg Kroah-Hartman, Arnd Bergmann, linux-arm-kernel, linux-serial,
	linux-arch
In-Reply-To: <cover.1337959750.git.rubini@gnudd.com>

The sta2x11 I/O Hub is a bridge from PCIe to AMBA. It reuses a number
of amba drivers and needs to activate core bus support.

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
Acked-by: Giancarlo Asnaghi <giancarlo.asnaghi@st.com>
---
 arch/x86/Kconfig |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 4732997..1f3938a 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -499,6 +499,7 @@ config STA2X11
 	select SWIOTLB
 	select MFD_STA2X11
 	select ARCH_REQUIRE_GPIOLIB
+	select ARM_AMBA
 	default n
 	---help---
 	  This adds support for boards based on the STA2X11 IO-Hub,
@@ -2154,6 +2155,9 @@ config GEOS
 
 endif # X86_32
 
+config ARM_AMBA
+        bool
+
 config AMD_NB
 	def_bool y
 	depends on CPU_SUP_AMD && PCI
-- 
1.7.7.2

^ permalink raw reply related

* [PATCH 4/6] pl011: use the new linux/sizes.h
From: Alessandro Rubini @ 2012-05-25 15:48 UTC (permalink / raw)
  To: linux-kernel
  Cc: Giancarlo Asnaghi, Alan Cox, Russell King, x86,
	Greg Kroah-Hartman, Arnd Bergmann, linux-arm-kernel, linux-serial,
	linux-arch
In-Reply-To: <cover.1337959750.git.rubini@gnudd.com>

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
Acked-by: Giancarlo Asnaghi <giancarlo.asnaghi@st.com>
Cc: Russell King <linux@arm.linux.org.uk>
---
 drivers/tty/serial/amba-pl011.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
index 4ad721f..d394b93 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -53,9 +53,9 @@
 #include <linux/delay.h>
 #include <linux/types.h>
 #include <linux/pinctrl/consumer.h>
+#include <linux/sizes.h>
 
 #include <asm/io.h>
-#include <asm/sizes.h>
 
 #define UART_NR			14
 
-- 
1.7.7.2

^ permalink raw reply related

* [PATCH 0/6] Bridging PCI to amba
From: Alessandro Rubini @ 2012-05-25 15:47 UTC (permalink / raw)
  To: linux-kernel
  Cc: Giancarlo Asnaghi, Alan Cox, Russell King, x86,
	Greg Kroah-Hartman, Arnd Bergmann, linux-arm-kernel, linux-serial,
	linux-arch

This patch set introduces use of the pl011 AMBA serial port under a
PCI bridge.  To compile AMBA under x86, though I need <asm/sizes.h>,
which is moved to <linux/sizes.h> as suggested earlier.

I'm hereby volunteering to handle the moving of the various users
of <asm/sizes.h> to <linux/sizes.h>; this set only moves the ARM core
files and the ones that I need under x86.

The whole patch set is sent to the same set of recipients:
all relevant lists, Russell King (for arm), Greg-KH (for uart) and
Arnd Bergmann (for generic include).

With this set in place (plus a clok API not included here) I have
4 serial ports working. We have a number of other devices that can
use existing drivers, but we definitely need <linux/sizes.h> first.

  spusa.root# uname -r
  3.4.0-next-20120524-00014-gae0c129

  spusa.root# dmesg | grep ttyA
  pl011-pci-03:0005: ttyAMA0 at MMIO 0xcf400000 (irq = 46) is a PL011 rev3
  pl011-pci-03:0006: ttyAMA1 at MMIO 0xcec00000 (irq = 47) is a PL011 rev3
  pl011-pci-03:0007: ttyAMA2 at MMIO 0xce400000 (irq = 48) is a PL011 rev3
  pl011-pci-04:0005: ttyAMA3 at MMIO 0xd3400000 (irq = 49) is a PL011 rev3

  spusa.root# grep -C1 pl011 /proc/iomem
          ce400000-ce7fffff : 0000:03:00.7
            ce400000-ce400fff : pl011-pci-03:0007
            ce400000-ce400fff : uart-pl011
          ce800000-cebfffff : 0000:03:00.6
          cec00000-ceffffff : 0000:03:00.6
            cec00000-cec00fff : pl011-pci-03:0006
            cec00000-cec00fff : uart-pl011
          cf000000-cf3fffff : 0000:03:00.5
          cf400000-cf7fffff : 0000:03:00.5
            cf400000-cf400fff : pl011-pci-03:0005
            cf400000-cf400fff : uart-pl011
          cf800000-cfbfffff : 0000:03:00.4
  --
          d3400000-d37fffff : 0000:04:00.5
            d3400000-d3400fff : pl011-pci-04:0005
            d3400000-d3400fff : uart-pl011
          d3800000-d3bfffff : 0000:04:00.4


Alessandro Rubini (6):
  sizes.h: move from asm-generic to <linux/sizes.h>
  amba: use the new linux/sizes.h
  ARM: use the new linux/sizes.h
  serial: use the new linux/sizes.h
  x86: add CONFIG_ARM_AMBA, selected by STA2X11
  serial: add amba-pl011-pci

 arch/arm/include/asm/memory.h       |    2 +-
 arch/arm/mm/dma-mapping.c           |    2 +-
 arch/arm/mm/init.c                  |    2 +-
 arch/arm/mm/ioremap.c               |    2 +-
 arch/arm/mm/mmu.c                   |    2 +-
 arch/x86/Kconfig                    |    4 ++
 drivers/amba/bus.c                  |    2 +-
 drivers/tty/serial/Kconfig          |   10 +++-
 drivers/tty/serial/Makefile         |    1 +
 drivers/tty/serial/amba-pl011-pci.c |  101 +++++++++++++++++++++++++++++++++++
 drivers/tty/serial/amba-pl011.c     |    2 +-
 include/asm-generic/sizes.h         |   49 +----------------
 include/linux/sizes.h               |   47 ++++++++++++++++
 13 files changed, 171 insertions(+), 55 deletions(-)
 create mode 100644 drivers/tty/serial/amba-pl011-pci.c
 create mode 100644 include/linux/sizes.h

-- 
1.7.7.2

^ permalink raw reply

* [PATCH 3/6] ARM: use the new linux/sizes.h
From: Alessandro Rubini @ 2012-05-25 15:48 UTC (permalink / raw)
  To: linux-kernel
  Cc: Giancarlo Asnaghi, Alan Cox, Russell King, x86,
	Greg Kroah-Hartman, Arnd Bergmann, linux-arm-kernel, linux-serial,
	linux-arch
In-Reply-To: <cover.1337959750.git.rubini@gnudd.com>

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
Acked-by: Giancarlo Asnaghi <giancarlo.asnaghi@st.com>
Cc: Russell King <linux@arm.linux.org.uk>
---
 arch/arm/include/asm/memory.h |    2 +-
 arch/arm/mm/dma-mapping.c     |    2 +-
 arch/arm/mm/init.c            |    2 +-
 arch/arm/mm/ioremap.c         |    2 +-
 arch/arm/mm/mmu.c             |    2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h
index fcb5757..e965f1b 100644
--- a/arch/arm/include/asm/memory.h
+++ b/arch/arm/include/asm/memory.h
@@ -16,7 +16,7 @@
 #include <linux/compiler.h>
 #include <linux/const.h>
 #include <linux/types.h>
-#include <asm/sizes.h>
+#include <linux/sizes.h>
 
 #ifdef CONFIG_NEED_MACH_MEMORY_H
 #include <mach/memory.h>
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index ea6b431..30a031c 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -23,12 +23,12 @@
 #include <linux/slab.h>
 #include <linux/iommu.h>
 #include <linux/vmalloc.h>
+#include <linux/sizes.h>
 
 #include <asm/memory.h>
 #include <asm/highmem.h>
 #include <asm/cacheflush.h>
 #include <asm/tlbflush.h>
-#include <asm/sizes.h>
 #include <asm/mach/arch.h>
 #include <asm/dma-iommu.h>
 #include <asm/mach/map.h>
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index c21d06c..ad7fd8a 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -21,13 +21,13 @@
 #include <linux/gfp.h>
 #include <linux/memblock.h>
 #include <linux/dma-contiguous.h>
+#include <linux/sizes.h>
 
 #include <asm/mach-types.h>
 #include <asm/memblock.h>
 #include <asm/prom.h>
 #include <asm/sections.h>
 #include <asm/setup.h>
-#include <asm/sizes.h>
 #include <asm/tlb.h>
 #include <asm/fixmap.h>
 
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
index 4f55f50..566750f 100644
--- a/arch/arm/mm/ioremap.c
+++ b/arch/arm/mm/ioremap.c
@@ -25,6 +25,7 @@
 #include <linux/mm.h>
 #include <linux/vmalloc.h>
 #include <linux/io.h>
+#include <linux/sizes.h>
 
 #include <asm/cp15.h>
 #include <asm/cputype.h>
@@ -32,7 +33,6 @@
 #include <asm/mmu_context.h>
 #include <asm/pgalloc.h>
 #include <asm/tlbflush.h>
-#include <asm/sizes.h>
 #include <asm/system_info.h>
 
 #include <asm/mach/map.h>
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index e5dad60..2196116 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -16,13 +16,13 @@
 #include <linux/memblock.h>
 #include <linux/fs.h>
 #include <linux/vmalloc.h>
+#include <linux/sizes.h>
 
 #include <asm/cp15.h>
 #include <asm/cputype.h>
 #include <asm/sections.h>
 #include <asm/cachetype.h>
 #include <asm/setup.h>
-#include <asm/sizes.h>
 #include <asm/smp_plat.h>
 #include <asm/tlb.h>
 #include <asm/highmem.h>
-- 
1.7.7.2

^ permalink raw reply related

* [PATCH 2/6] amba: use the new linux/sizes.h
From: Alessandro Rubini @ 2012-05-25 15:48 UTC (permalink / raw)
  To: linux-kernel
  Cc: Giancarlo Asnaghi, Alan Cox, Russell King, x86,
	Greg Kroah-Hartman, Arnd Bergmann, linux-arm-kernel, linux-serial,
	linux-arch
In-Reply-To: <cover.1337959750.git.rubini@gnudd.com>

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
Acked-by: Giancarlo Asnaghi <giancarlo.asnaghi@st.com>
Cc: Russell King <linux@arm.linux.org.uk>
---
 drivers/amba/bus.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
index b7e7285..e29bfa7 100644
--- a/drivers/amba/bus.c
+++ b/drivers/amba/bus.c
@@ -18,7 +18,7 @@
 #include <linux/amba/bus.h>
 
 #include <asm/irq.h>
-#include <asm/sizes.h>
+#include <linux/sizes.h>
 
 #define to_amba_driver(d)	container_of(d, struct amba_driver, drv)
 
-- 
1.7.7.2

^ permalink raw reply related

* [PATCH 1/6] sizes.h: move from asm-generic to <linux/sizes.h>
From: Alessandro Rubini @ 2012-05-25 15:48 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-arch, Giancarlo Asnaghi, Russell King, Arnd Bergmann,
	Greg Kroah-Hartman, x86, linux-serial, linux-arm-kernel, Alan Cox
In-Reply-To: <cover.1337959750.git.rubini@gnudd.com>

sizes.h is used throughout the AMBA code and drivers, so the header
should be available to everyone in order to driver AMBA/PrimeCell
peripherals behind a PCI bridge where the host can be any platform
(I'm doing it under x86).

At this step <asm-generic/sizes.h> includes <linux/sizes.h>,
to allow a grace period for both in-tree and out-of-tree drivers.

Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
Acked-by: Giancarlo Asnaghi <giancarlo.asnaghi@st.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Arnd Bergmann <arnd@arndb.de>
---
 include/asm-generic/sizes.h |   49 +-----------------------------------------
 include/linux/sizes.h       |   47 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+), 47 deletions(-)
 create mode 100644 include/linux/sizes.h

diff --git a/include/asm-generic/sizes.h b/include/asm-generic/sizes.h
index ea5d4ef..1dcfad9 100644
--- a/include/asm-generic/sizes.h
+++ b/include/asm-generic/sizes.h
@@ -1,47 +1,2 @@
-/*
- * linux/include/asm-generic/sizes.h
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#ifndef __ASM_GENERIC_SIZES_H__
-#define __ASM_GENERIC_SIZES_H__
-
-#define SZ_1				0x00000001
-#define SZ_2				0x00000002
-#define SZ_4				0x00000004
-#define SZ_8				0x00000008
-#define SZ_16				0x00000010
-#define SZ_32				0x00000020
-#define SZ_64				0x00000040
-#define SZ_128				0x00000080
-#define SZ_256				0x00000100
-#define SZ_512				0x00000200
-
-#define SZ_1K				0x00000400
-#define SZ_2K				0x00000800
-#define SZ_4K				0x00001000
-#define SZ_8K				0x00002000
-#define SZ_16K				0x00004000
-#define SZ_32K				0x00008000
-#define SZ_64K				0x00010000
-#define SZ_128K				0x00020000
-#define SZ_256K				0x00040000
-#define SZ_512K				0x00080000
-
-#define SZ_1M				0x00100000
-#define SZ_2M				0x00200000
-#define SZ_4M				0x00400000
-#define SZ_8M				0x00800000
-#define SZ_16M				0x01000000
-#define SZ_32M				0x02000000
-#define SZ_64M				0x04000000
-#define SZ_128M				0x08000000
-#define SZ_256M				0x10000000
-#define SZ_512M				0x20000000
-
-#define SZ_1G				0x40000000
-#define SZ_2G				0x80000000
-
-#endif /* __ASM_GENERIC_SIZES_H__ */
+/* This is a placeholder, to be removed over time */
+#include <linux/sizes.h>
diff --git a/include/linux/sizes.h b/include/linux/sizes.h
new file mode 100644
index 0000000..ce3e815
--- /dev/null
+++ b/include/linux/sizes.h
@@ -0,0 +1,47 @@
+/*
+ * include/linux/sizes.h
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef __LINUX_SIZES_H__
+#define __LINUX_SIZES_H__
+
+#define SZ_1				0x00000001
+#define SZ_2				0x00000002
+#define SZ_4				0x00000004
+#define SZ_8				0x00000008
+#define SZ_16				0x00000010
+#define SZ_32				0x00000020
+#define SZ_64				0x00000040
+#define SZ_128				0x00000080
+#define SZ_256				0x00000100
+#define SZ_512				0x00000200
+
+#define SZ_1K				0x00000400
+#define SZ_2K				0x00000800
+#define SZ_4K				0x00001000
+#define SZ_8K				0x00002000
+#define SZ_16K				0x00004000
+#define SZ_32K				0x00008000
+#define SZ_64K				0x00010000
+#define SZ_128K				0x00020000
+#define SZ_256K				0x00040000
+#define SZ_512K				0x00080000
+
+#define SZ_1M				0x00100000
+#define SZ_2M				0x00200000
+#define SZ_4M				0x00400000
+#define SZ_8M				0x00800000
+#define SZ_16M				0x01000000
+#define SZ_32M				0x02000000
+#define SZ_64M				0x04000000
+#define SZ_128M				0x08000000
+#define SZ_256M				0x10000000
+#define SZ_512M				0x20000000
+
+#define SZ_1G				0x40000000
+#define SZ_2G				0x80000000
+
+#endif /* __LINUX_SIZES_H__ */
-- 
1.7.7.2

^ permalink raw reply related

* Re: [PATCH] serial/amba-pl011: move custom pin control to driver
From: Shawn Guo @ 2012-05-25  6:26 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Greg Kroah-Hartman, linux-serial, linux-arm-kernel, Lee Jones,
	Linus Walleij, Russell King
In-Reply-To: <1337800726-4076-1-git-send-email-linus.walleij@stericsson.com>

On Wed, May 23, 2012 at 09:18:46PM +0200, Linus Walleij wrote:
> From: Linus Walleij <linus.walleij@linaro.org>
> 
> We had a boot regression in Ux500 in the merge window because
> two orthogonal pin control schemes for the PL011 were merged
> at the same time:
> 
> - One using the .init() and .exit() hooks into the platform
>   for Ux500 putting the pins into default vs sleep state
>   respectively as the port was started/stopped.
>   commit a09806607fd20bed2f8c41fe22793386790a14aa
>   "ARM: ux500: switch to using pinctrl for uart0"
> 
> - One hogging the default setting at PL011 probe()
>   commit 258e055111d3cde2607e0d04eb91da2f7a59b591
>   "serial: amba-pl011: adopt pinctrl support"
> 
> To get a solution that works for both let's scrap the stuff
> in the platform callbacks, instead have the driver itself
> select default and sleep states when the port is
> started/stopped. Hopefully this works for all clients.
> Platform callbacks are bad for device tree migration anyway,
> so this rids us of another problem in Ux500.
> 
> Cc: linux-serial@vger.kernel.org
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Shawn Guo <shawn.guo@linaro.org>
> Cc: Russell King <rmk+kernel@arm.linux.org.uk>
> Reported-by: Lee Jones <lee.jones@linaro.org>
> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

On imx28:

Tested-by: Shawn Guo <shawn.guo@linaro.org>

^ permalink raw reply

* Re: struct tty_flip_buffer replacement in newer kernels
From: Alan Cox @ 2012-05-24 16:00 UTC (permalink / raw)
  To: Dmitriy Alekseev; +Cc: linux-serial@vger.kernel.org
In-Reply-To: <1337871912.83081.YahooMailNeo@web44916.mail.sp1.yahoo.com>

On Thu, 24 May 2012 08:05:12 -0700 (PDT)
Dmitriy Alekseev <alexeev6@yahoo.com> wrote:

> The link I gave is original source, which I afterwards changed according to my parameters - clock and processor memory map.
> 
> You right about offset 0x8, this is offset between ports in my 68 mode, I corrected, but it doesn't give any result.

You may have to stick some traces into drivers/tty/8250.c at this point
and see what is going on. It's clearly trying to do the set up right, and
created the ports but didn't believe the hardware. That usually implies
that a parameter is wrong somewhere.

--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: struct tty_flip_buffer replacement in newer kernels
From: Dmitriy Alekseev @ 2012-05-24 15:05 UTC (permalink / raw)
  To: Alan Cox, linux-serial@vger.kernel.org
In-Reply-To: <20120524142219.6606e57a@pyramind.ukuu.org.uk>

The link I gave is original source, which I afterwards changed according to my parameters - clock and processor memory map.

You right about offset 0x8, this is offset between ports in my 68 mode, I corrected, but it doesn't give any result.

 
Best regards,
Dmitriy Alekseev


----- Original Message -----
From: Alan Cox <alan@lxorguk.ukuu.org.uk>
To: Dmitriy Alekseev <alexeev6@yahoo.com>
Cc: 
Sent: Thursday, May 24, 2012 5:22 PM
Subject: Re: struct tty_flip_buffer replacement in newer kernels

On Thu, 24 May 2012 03:38:42 -0700 (PDT)
Dmitriy Alekseev <alexeev6@yahoo.com> wrote:

> Hi, Alan.
> 
> Thank You very much for the answer!
> So, if I understand correctly, I took for example this: arch/arm/mach-omap1/board-voiceblue.c
> And made in my board specific file:
> static struct plat_serial8250_port exar_ports[] = {
>         {
>                 .mapbase        = (unsigned long)(0x30000300), // according to at91rm9200 CS2 memory map
>                 .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP, // I don't know, what kind of flags is suitable for me

That looks reasonable - UPF_IOREMAP tells the kernel to do the ioremap
for you, UPF_BOOT_AUTOCONF tries to autoconfigure the chip type

>                 .iotype         = UPIO_MEM, // similar problem
>                 .regshift       = 1, 

And this guides the register spacing (1 = byte spaced, 2 = word spaced, 3
= dword spaced etc)

>                 .uartclk        = 14745600, // Our chip clock frequency

UPIO_MEM is for MMIO, UPIO_PORT for port I/O

However the values don't look the same as the old driver you linked to -
that seems to be using 0x2800000 and then 8 byte spacing plus a 1843200
clock.

Alan

--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Fw: struct tty_flip_buffer replacement in newer kernels
From: Dmitriy Alekseev @ 2012-05-24 10:38 UTC (permalink / raw)
  To: linux-serial@vger.kernel.org
In-Reply-To: <1337855090.9672.YahooMailNeo@web44908.mail.sp1.yahoo.com>

Hi, Alan.

Thank You very much for the answer!
So, if I understand correctly, I took for example this: arch/arm/mach-omap1/board-voiceblue.c
And made in my board specific file:
static struct plat_serial8250_port exar_ports[] = {
        {
                .mapbase        = (unsigned long)(0x30000300), // according to at91rm9200 CS2 memory map
                .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP, // I don't know, what kind of flags is suitable for me
                .iotype         = UPIO_MEM, // similar problem
                .regshift       = 1, 
                .uartclk        = 14745600, // Our chip clock frequency
        },
        {
                .mapbase        = (unsigned long)(0x30000200),
                .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
                .iotype         = UPIO_MEM,
                .regshift       = 1,
                .uartclk        = 14745600,
        },
        {
                .mapbase        = (unsigned long)(0x30000100),
                .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
                .iotype         = UPIO_MEM,
                .regshift       = 1,
                .uartclk        = 14745600,
        },
        {
                .mapbase        = (unsigned long)(0x30000000),
                .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
                .iotype         = UPIO_MEM,
                .regshift       = 1,
                .uartclk        = 14745600,
        },
        { },
};
static struct platform_device serial_device = {
.name                   = "serial8250",
        .id                     = PLAT8250_DEV_EXAR_ST16C554,
        .dev                    = {
                 .platform_data  = exar_ports,
         },
};

in my board __init func:
platform_device_register(&serial_device);

at .config I made:
#
# Serial drivers
#
CONFIG_SERIAL_8250=y
# CONFIG_SERIAL_8250_CONSOLE is not set
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
# CONFIG_SERIAL_8250_SHARE_IRQ is not set
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
# CONFIG_SERIAL_8250_RSA is not set


dmesg gives:
[    0.695312] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled         


New devices in filesystem has been registered, but they didn't related with hardware chip yet.
#cat /proc/tty/driver/serial                                 
serinfo:1.0 driver revision:                                                    
0: uart:unknown mmio:0x30000000 irq:0                                           
1: uart:unknown port:00000000 irq:0                                             
2: uart:unknown port:00000000 irq:0                                             
3: uart:unknown port:00000000 irq:0    

What shoud I check, learn, do for solving this problem?


Very grateful,
Dmitriy Alekseev


----- Original Message -----
From: Alan Cox <alan@lxorguk.ukuu.org.uk>
To: Dmitriy Alekseev <alexeev6@yahoo.com>
Cc: "linux-serial@vger.kernel.org"
<linux-serial@vger.kernel.org>
Sent: Tuesday, May 22, 2012 8:27 PM
Subject: Re: struct tty_flip_buffer replacement in newer kernels

On Tue, 22 May 2012 07:38:28 -0700 (PDT)
Dmitriy Alekseev <alexeev6@yahoo.com> wrote:

> This is driver source I found:
> http://www.codeforge.com/read/118181/st16c554_serial.c__html
> 
> It was written for quad uart st16c554 for arm chip s3c2410, which I tried to adapt for at91rm9200 board and newer kernel version.

Why not use the in kernel 8250 driver (which will drive a stamdard
16540/550/554 as well ?)

To ressurect one you'll need to add kref handling, rework the termios code
and maybe some other bits too.

Take a look how other arm boards use struct plat_serial8250_port and the
serial8250 platform driver. You should just be able to declare the
structures and register the platform device.

Alan

--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a
message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* RE: [PATCH 1/2] serial: samsung: Remove NULL checking for baud clock
From: Kyoungil Kim @ 2012-05-24  8:39 UTC (permalink / raw)
  To: 'Kyoungil Kim', linux-arm-kernel, linux-samsung-soc,
	linux-serial
  Cc: 'Kukjin Kim', 'Alan Cox', 'Russell King'

Kyoungil Kim wrote:

I missed following.

Russell King suggested:

As I said, drivers have no business interpreting anything but IS_ERR(clk) as being an error.  They should not make any other
assumptions.

Suggested-by: Russell King <rmk+kernel@arm.linux.org.uk>

> Signed-off-by: Kyoungil Kim <ki0351.kim@samsung.com>
> ---
>  drivers/tty/serial/samsung.c |   21 ++++++++++++---------
>  1 files changed, 12 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c
> index d8b0aee..5668538 100644
> --- a/drivers/tty/serial/samsung.c
> +++ b/drivers/tty/serial/samsung.c
> @@ -529,7 +529,7 @@ static void s3c24xx_serial_pm(struct uart_port *port, unsigned int level,
> 
>  	switch (level) {
>  	case 3:
> -		if (!IS_ERR(ourport->baudclk) && ourport->baudclk != NULL)
> +		if (!IS_ERR(ourport->baudclk))
>  			clk_disable(ourport->baudclk);
> 
>  		clk_disable(ourport->clk);
> @@ -538,7 +538,7 @@ static void s3c24xx_serial_pm(struct uart_port *port, unsigned int level,
>  	case 0:
>  		clk_enable(ourport->clk);
> 
> -		if (!IS_ERR(ourport->baudclk) && ourport->baudclk != NULL)
> +		if (!IS_ERR(ourport->baudclk))
>  			clk_enable(ourport->baudclk);
> 
>  		break;
> @@ -604,7 +604,6 @@ static unsigned int s3c24xx_serial_getclk(struct s3c24xx_uart_port *ourport,
>  	char clkname[MAX_CLK_NAME_LENGTH];
>  	int calc_deviation, deviation = (1 << 30) - 1;
> 
> -	*best_clk = NULL;
>  	clk_sel = (ourport->cfg->clk_sel) ? ourport->cfg->clk_sel :
>  			ourport->info->def_clk_sel;
>  	for (cnt = 0; cnt < info->num_clks; cnt++) {
> @@ -613,7 +612,7 @@ static unsigned int s3c24xx_serial_getclk(struct s3c24xx_uart_port *ourport,
> 
>  		sprintf(clkname, "clk_uart_baud%d", cnt);
>  		clk = clk_get(ourport->port.dev, clkname);
> -		if (IS_ERR_OR_NULL(clk))
> +		if (IS_ERR(clk))
>  			continue;
> 
>  		rate = clk_get_rate(clk);
> @@ -684,7 +683,7 @@ static void s3c24xx_serial_set_termios(struct uart_port *port,
>  {
>  	struct s3c2410_uartcfg *cfg = s3c24xx_port_to_cfg(port);
>  	struct s3c24xx_uart_port *ourport = to_ourport(port);
> -	struct clk *clk = NULL;
> +	struct clk *clk = ERR_PTR(-EINVAL);
>  	unsigned long flags;
>  	unsigned int baud, quot, clk_sel = 0;
>  	unsigned int ulcon;
> @@ -705,7 +704,7 @@ static void s3c24xx_serial_set_termios(struct uart_port *port,
>  	quot = s3c24xx_serial_getclk(ourport, baud, &clk, &clk_sel);
>  	if (baud == 38400 && (port->flags & UPF_SPD_MASK) == UPF_SPD_CUST)
>  		quot = port->custom_divisor;
> -	if (!clk)
> +	if (IS_ERR(clk))
>  		return;
> 
>  	/* check to see if we need  to change clock source */
> @@ -713,9 +712,9 @@ static void s3c24xx_serial_set_termios(struct uart_port *port,
>  	if (ourport->baudclk != clk) {
>  		s3c24xx_serial_setsource(port, clk_sel);
> 
> -		if (ourport->baudclk != NULL && !IS_ERR(ourport->baudclk)) {
> +		if (!IS_ERR(ourport->baudclk)) {
>  			clk_disable(ourport->baudclk);
> -			ourport->baudclk  = NULL;
> +			ourport->baudclk = ERR_PTR(-EINVAL);
>  		}
> 
>  		clk_enable(clk);
> @@ -1160,6 +1159,9 @@ static ssize_t s3c24xx_serial_show_clksrc(struct device *dev,
>  	struct uart_port *port = s3c24xx_dev_to_port(dev);
>  	struct s3c24xx_uart_port *ourport = to_ourport(port);
> 
> +	if (IS_ERR(ourport->baudclk))
> +		return -EINVAL;
> +
>  	return snprintf(buf, PAGE_SIZE, "* %s\n", ourport->baudclk->name);
>  }
> 
> @@ -1200,6 +1202,7 @@ static int s3c24xx_serial_probe(struct platform_device *pdev)
>  		return -ENODEV;
>  	}
> 
> +	ourport->baudclk = ERR_PTR(-EINVAL);
>  	ourport->info = ourport->drv_data->info;
>  	ourport->cfg = (pdev->dev.platform_data) ?
>  			(struct s3c2410_uartcfg *)pdev->dev.platform_data :
> @@ -1387,7 +1390,7 @@ s3c24xx_serial_get_options(struct uart_port *port, int *baud,
>  		sprintf(clk_name, "clk_uart_baud%d", clk_sel);
> 
>  		clk = clk_get(port->dev, clk_name);
> -		if (!IS_ERR(clk) && clk != NULL)
> +		if (!IS_ERR(clk))
>  			rate = clk_get_rate(clk);
>  		else
>  			rate = 1;
> --
> 1.7.1



^ permalink raw reply

* [PATCH] serial/amba-pl011: move custom pin control to driver
From: Linus Walleij @ 2012-05-23 19:18 UTC (permalink / raw)
  To: Greg Kroah-Hartman, linux-serial
  Cc: linux-arm-kernel, Lee Jones, Linus Walleij, Shawn Guo,
	Russell King

From: Linus Walleij <linus.walleij@linaro.org>

We had a boot regression in Ux500 in the merge window because
two orthogonal pin control schemes for the PL011 were merged
at the same time:

- One using the .init() and .exit() hooks into the platform
  for Ux500 putting the pins into default vs sleep state
  respectively as the port was started/stopped.
  commit a09806607fd20bed2f8c41fe22793386790a14aa
  "ARM: ux500: switch to using pinctrl for uart0"

- One hogging the default setting at PL011 probe()
  commit 258e055111d3cde2607e0d04eb91da2f7a59b591
  "serial: amba-pl011: adopt pinctrl support"

To get a solution that works for both let's scrap the stuff
in the platform callbacks, instead have the driver itself
select default and sleep states when the port is
started/stopped. Hopefully this works for all clients.
Platform callbacks are bad for device tree migration anyway,
so this rids us of another problem in Ux500.

Cc: linux-serial@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Shawn Guo <shawn.guo@linaro.org>
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Reported-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
---
 arch/arm/mach-ux500/board-mop500.c |   54 +-----------------------------------
 drivers/tty/serial/amba-pl011.c    |   45 +++++++++++++++++++++++++++---
 2 files changed, 42 insertions(+), 57 deletions(-)

diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index 4bc0cbc..e7af625 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -540,43 +540,12 @@ static void ux500_uart0_reset(void)
 	udelay(1);
 }
 
-/* This needs to be referenced by callbacks */
-struct pinctrl *u0_p;
-struct pinctrl_state *u0_def;
-struct pinctrl_state *u0_sleep;
-
-static void ux500_uart0_init(void)
-{
-	int ret;
-
-	if (IS_ERR(u0_p) || IS_ERR(u0_def))
-		return;
-
-	ret = pinctrl_select_state(u0_p, u0_def);
-	if (ret)
-		pr_err("could not set UART0 defstate\n");
-}
-
-static void ux500_uart0_exit(void)
-{
-	int ret;
-
-	if (IS_ERR(u0_p) || IS_ERR(u0_sleep))
-		return;
-
-	ret = pinctrl_select_state(u0_p, u0_sleep);
-	if (ret)
-		pr_err("could not set UART0 idlestate\n");
-}
-
 static struct amba_pl011_data uart0_plat = {
 #ifdef CONFIG_STE_DMA40
 	.dma_filter = stedma40_filter,
 	.dma_rx_param = &uart0_dma_cfg_rx,
 	.dma_tx_param = &uart0_dma_cfg_tx,
 #endif
-	.init = ux500_uart0_init,
-	.exit = ux500_uart0_exit,
 	.reset = ux500_uart0_reset,
 };
 
@@ -598,28 +567,7 @@ static struct amba_pl011_data uart2_plat = {
 
 static void __init mop500_uart_init(struct device *parent)
 {
-	struct amba_device *uart0_device;
-
-	uart0_device = db8500_add_uart0(parent, &uart0_plat);
-	if (uart0_device) {
-		u0_p = pinctrl_get(&uart0_device->dev);
-		if (IS_ERR(u0_p))
-			dev_err(&uart0_device->dev,
-				"could not get UART0 pinctrl\n");
-		else {
-			u0_def = pinctrl_lookup_state(u0_p,
-						      PINCTRL_STATE_DEFAULT);
-			if (IS_ERR(u0_def)) {
-				dev_err(&uart0_device->dev,
-					"could not get UART0 defstate\n");
-			}
-			u0_sleep = pinctrl_lookup_state(u0_p,
-							PINCTRL_STATE_SLEEP);
-			if (IS_ERR(u0_sleep))
-				dev_err(&uart0_device->dev,
-					"could not get UART0 idlestate\n");
-		}
-	}
+	db8500_add_uart0(parent, &uart0_plat);
 	db8500_add_uart1(parent, &uart1_plat);
 	db8500_add_uart2(parent, &uart2_plat);
 }
diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
index 4ad721f..c17923e 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -133,6 +133,10 @@ struct pl011_dmatx_data {
 struct uart_amba_port {
 	struct uart_port	port;
 	struct clk		*clk;
+	/* Two optional pin states - default & sleep */
+	struct pinctrl		*pinctrl;
+	struct pinctrl_state	*pins_default;
+	struct pinctrl_state	*pins_sleep;
 	const struct vendor_data *vendor;
 	unsigned int		dmacr;		/* dma control reg */
 	unsigned int		im;		/* interrupt mask */
@@ -1312,6 +1316,14 @@ static int pl011_startup(struct uart_port *port)
 	unsigned int cr;
 	int retval;
 
+	/* Optionaly enable pins to be muxed in and configured */
+	if (!IS_ERR(uap->pins_default)) {
+		retval = pinctrl_select_state(uap->pinctrl, uap->pins_default);
+		if (retval)
+			dev_err(port->dev,
+				"could not set default pins\n");
+	}
+
 	retval = clk_prepare(uap->clk);
 	if (retval)
 		goto out;
@@ -1420,6 +1432,7 @@ static void pl011_shutdown(struct uart_port *port)
 {
 	struct uart_amba_port *uap = (struct uart_amba_port *)port;
 	unsigned int cr;
+	int retval;
 
 	/*
 	 * disable all interrupts
@@ -1462,6 +1475,14 @@ static void pl011_shutdown(struct uart_port *port)
 	 */
 	clk_disable(uap->clk);
 	clk_unprepare(uap->clk);
+	/* Optionally let pins go into sleep states */
+	if (!IS_ERR(uap->pins_sleep)) {
+		retval = pinctrl_select_state(uap->pinctrl, uap->pins_sleep);
+		if (retval)
+			dev_err(port->dev,
+				"could not set pins to sleep state\n");
+	}
+
 
 	if (uap->port.dev->platform_data) {
 		struct amba_pl011_data *plat;
@@ -1792,6 +1813,14 @@ static int __init pl011_console_setup(struct console *co, char *options)
 	if (!uap)
 		return -ENODEV;
 
+	/* Allow pins to be muxed in and configured */
+	if (!IS_ERR(uap->pins_default)) {
+		ret = pinctrl_select_state(uap->pinctrl, uap->pins_default);
+		if (ret)
+			dev_err(uap->port.dev,
+				"could not set default pins\n");
+	}
+
 	ret = clk_prepare(uap->clk);
 	if (ret)
 		return ret;
@@ -1844,7 +1873,6 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
 {
 	struct uart_amba_port *uap;
 	struct vendor_data *vendor = id->data;
-	struct pinctrl *pinctrl;
 	void __iomem *base;
 	int i, ret;
 
@@ -1869,11 +1897,20 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
 		goto free;
 	}
 
-	pinctrl = devm_pinctrl_get_select_default(&dev->dev);
-	if (IS_ERR(pinctrl)) {
-		ret = PTR_ERR(pinctrl);
+	uap->pinctrl = devm_pinctrl_get(&dev->dev);
+	if (IS_ERR(uap->pinctrl)) {
+		ret = PTR_ERR(uap->pinctrl);
 		goto unmap;
 	}
+	uap->pins_default = pinctrl_lookup_state(uap->pinctrl,
+						 PINCTRL_STATE_DEFAULT);
+	if (IS_ERR(uap->pins_default))
+		dev_err(&dev->dev, "could not get default pinstate\n");
+
+	uap->pins_sleep = pinctrl_lookup_state(uap->pinctrl,
+					       PINCTRL_STATE_SLEEP);
+	if (IS_ERR(uap->pins_sleep))
+		dev_dbg(&dev->dev, "could not get sleep pinstate\n");
 
 	uap->clk = clk_get(&dev->dev, NULL);
 	if (IS_ERR(uap->clk)) {
-- 
1.7.9.2


^ permalink raw reply related

* Re: [PATCH 1/1] serial_core: Update buffer overrun statistics.
From: Corbin @ 2012-05-23 14:37 UTC (permalink / raw)
  To: Jiri Slaby
  Cc: Jason Smith, Alan Cox, Corbin Atkinson, Greg Kroah-Hartman,
	linux-serial
In-Reply-To: <4FBBF93B.1000206@suse.cz>

On Tue, May 22, 2012 at 3:38 PM, Jiri Slaby <jslaby@suse.cz> wrote:

> That it is perfectly concealed.
>
> (I'm not subscribed to linux-serial and cannot find it anywhere. A link
> would be appreciated...)

Oh, sorry about that. Here is an archived version of the email thread:
http://www.spinics.net/lists/linux-serial/msg06104.html
I'll also copy and paste my patch here:

Currently, serial drivers don't report buffer overruns. When a buffer overrun
occurs, tty_insert_flip_char returns 0, and no attempt is made to insert that
same character again (i.e. it is lost). This patch reports buffer overruns via
the buf_overrun field in the port's icount structure.

Signed-off-by: Corbin Atkinson <corbin.atkinson@xxxxxx>
---
 drivers/tty/serial/serial_core.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c
index 9c4c05b..59fb3ba 100644
--- a/drivers/tty/serial/serial_core.c
+++ b/drivers/tty/serial/serial_core.c
@@ -2526,14 +2526,16 @@ void uart_insert_char(struct uart_port *port,
unsigned int status,
 	struct tty_struct *tty = port->state->port.tty;

 	if ((status & port->ignore_status_mask & ~overrun) == 0)
-		tty_insert_flip_char(tty, ch, flag);
+		if (tty_insert_flip_char(tty, ch, flag) == 0)
+			++port->icount.buf_overrun;

 	/*
 	 * Overrun is special.  Since it's reported immediately,
 	 * it doesn't affect the current character.
 	 */
 	if (status & ~port->ignore_status_mask & overrun)
-		tty_insert_flip_char(tty, 0, TTY_OVERRUN);
+		if (tty_insert_flip_char(tty, 0, TTY_OVERRUN) == 0)
+			++port->icount.buf_overrun;
 }
 EXPORT_SYMBOL_GPL(uart_insert_char);

-- 
1.7.5.4

^ permalink raw reply related

* Re: [PATCH 1/1] serial_core: Update buffer overrun statistics.
From: Jiri Slaby @ 2012-05-22 20:38 UTC (permalink / raw)
  To: Corbin
  Cc: Jason Smith, Alan Cox, Corbin Atkinson, Greg Kroah-Hartman,
	linux-serial
In-Reply-To: <CAA0x6__sgnqhCXiSR29qnqKhGZrLuOa7siQcBJM7-UnkSn2Jtw@mail.gmail.com>

On 05/22/2012 10:31 PM, Corbin wrote:
> On Mon, May 21, 2012 at 11:05 AM, Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
>> I was hopng Jiri would chip in.
> 
> Jiri,
> 
> What do you think of my patch?

That it is perfectly concealed.

(I'm not subscribed to linux-serial and cannot find it anywhere. A link
would be appreciated...)

thanks,
-- 
js
suse labs



^ permalink raw reply

* Re: [PATCH 1/1] serial_core: Update buffer overrun statistics.
From: Corbin @ 2012-05-22 20:31 UTC (permalink / raw)
  To: Jiri Slaby
  Cc: Jason Smith, Alan Cox, Corbin Atkinson, Greg Kroah-Hartman,
	linux-serial
In-Reply-To: <20120521170553.7822c01c@pyramind.ukuu.org.uk>

On Mon, May 21, 2012 at 11:05 AM, Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
> I was hopng Jiri would chip in.

Jiri,

What do you think of my patch?

^ permalink raw reply

* [PATCH] mct_u232: Fix incorrect TIOCMSET return
From: Alan Cox @ 2012-05-22 19:45 UTC (permalink / raw)
  To: linux-serial-u79uwXL29TY76Z2rM5mHXA,
	linux-usb-u79uwXL29TY76Z2rM5mHXA, greg-U8xfFu+wG4EAvxtiuMwx3w

From: Alan Cox <alan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>

The low level helper returns 1 on success. The ioctl should however return
0. As this is the only user of the helper return, make the helper return 0 or
an error code.

Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=43009
Signed-off-by: Alan Cox <alan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
---

 drivers/usb/serial/mct_u232.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/usb/serial/mct_u232.c b/drivers/usb/serial/mct_u232.c
index d0ec1aa..a71fa0a 100644
--- a/drivers/usb/serial/mct_u232.c
+++ b/drivers/usb/serial/mct_u232.c
@@ -309,13 +309,16 @@ static int mct_u232_set_modem_ctrl(struct usb_serial *serial,
 			MCT_U232_SET_REQUEST_TYPE,
 			0, 0, buf, MCT_U232_SET_MODEM_CTRL_SIZE,
 			WDR_TIMEOUT);
-	if (rc < 0)
-		dev_err(&serial->dev->dev,
-			"Set MODEM CTRL 0x%x failed (error = %d)\n", mcr, rc);
+	kfree(buf);
+
 	dbg("set_modem_ctrl: state=0x%x ==> mcr=0x%x", control_state, mcr);
 
-	kfree(buf);
-	return rc;
+	if (rc < 0) {
+		dev_err(&serial->dev->dev,
+			"Set MODEM CTRL 0x%x failed (error = %d)\n", mcr, rc);
+		return rc;
+	}
+	return 0;
 } /* mct_u232_set_modem_ctrl */
 
 static int mct_u232_get_modem_stat(struct usb_serial *serial,

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related

* Re: struct tty_flip_buffer replacement in newer kernels
From: Alan Cox @ 2012-05-22 16:27 UTC (permalink / raw)
  To: Dmitriy Alekseev; +Cc: linux-serial@vger.kernel.org
In-Reply-To: <1337697508.72614.YahooMailNeo@web44911.mail.sp1.yahoo.com>

On Tue, 22 May 2012 07:38:28 -0700 (PDT)
Dmitriy Alekseev <alexeev6@yahoo.com> wrote:

> This is driver source I found:
> http://www.codeforge.com/read/118181/st16c554_serial.c__html
> 
> It was written for quad uart st16c554 for arm chip s3c2410, which I tried to adapt for at91rm9200 board and newer kernel version.

Why not use the in kernel 8250 driver (which will drive a stamdard
16540/550/554 as well ?)

To ressurect one you'll need to add kref handling, rework the termios code
and maybe some other bits too.

Take a look how other arm boards use struct plat_serial8250_port and the
serial8250 platform driver. You should just be able to declare the
structures and register the platform device.

Alan


^ permalink raw reply

* [GIT PATCH] TTY/serial patches for 3.5-rc1 - try 2
From: Greg KH @ 2012-05-22 15:15 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel, linux-serial

The following changes since commit 66f75a5d028beaf67c931435fdc3e7823125730c:

  Linux 3.4-rc4 (2012-04-21 14:47:52 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git/ tags/tty-3.5-rc1

for you to fetch changes up to 59bd234b72fc29887839d792b7d6c7e8d2a577a6:

  serial: bfin_uart: Make MMR access compatible with 32 bits bf609 style controller. (2012-05-17 13:25:56 -0700)

----------------------------------------------------------------
TTY pull request for 3.5-rc1

Here's the big TTY/serial driver pull request for the 3.5-rc1 merge window.

Nothing major in here, just lots of incremental changes from Alan and
Jiri reworking some tty core things to behave better and to get a more
solid grasp on some of the nasty tty locking issues.

There are a few tty and serial driver updates in here as well.

All of this has been in the linux-next releases for a while with no problems.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

----------------------------------------------------------------
Alan Cox (7):
      vt: push the tty_lock down into the map handling
      tty_lock: undo the old tty_lock use on the ctty
      pty: Lock the devpts bits privately
      tty_lock: Localise the lock
      tty: drop the pty lock during hangup
      tty: Allow uart_register/unregister/register
      tty: Fix LED error return

Arnaud Patard (1):
      8250_pci: fix pch uart matching

Christian Melki (1):
      8250.c: less than 2400 baud fix.

Corbin Atkinson (1):
      serial_core: Update buffer overrun statistics.

Dan Carpenter (1):
      tty: hvc_xen: NULL dereference on allocation failure

Dan Williams (2):
      tegra, serial8250: add ->handle_break() uart_port op
      serial/8250_pci: fix suspend/resume vs init/exit quirks

Geert Uytterhoeven (1):
      tty/amiserial: Add missing argument for tty_unlock()

Govindraj.R (1):
      OMAP2+: UART: Remove cpu checks for populating errata flags

Greg Kroah-Hartman (3):
      Merge 3.4-rc3 into tty-next
      Merge 3.4-rc4 into tty-next
      Revert "serial_core: Update buffer overrun statistics."

H Hartley Sweeten (1):
      tty: mxser: local variables should not be exposed globally

Heiko Carstens (1):
      tty: add missing tty_port_tty_get() call to raw3215_wakeup

Ivo Sieben (1):
      tty: move global ldisc idle waitqueue to the individual ldisc

Jiri Slaby (71):
      TTY: crisv10, remove unused tmp_buf
      TTY: crisv10, initialize tty_port
      TTY: deprecate linux/generic_serial.h
      ISDN: i4l, remove cvs crap
      TTY: isdn, remove callout
      TTY: isdn, remove ISDN_ASYNC_* flags
      TTY: isdn, do not play with module refcounts
      TTY: isdn, make some functions readable
      TTY: isdn, remove unused members from modem_info
      TTY: isdn, add tty_port
      TTY: isdn, use open/close_wait from tty_port
      TTY: isdn, use counts from tty_port
      TTY: isdn, use tty from tty_port
      TTY: isdn, use xmit_buf from tty_port
      TTY: isdn, define local tty_port
      TTY: isdn, use tty_port_close_end helper
      TTY: isdn, define tty_port_operations
      TTY: isdn, use tty_port_block_til_ready helper
      TTY: hso, do not set TTY MAGIC
      TTY: hso, free tty_driver
      TTY: hso, add tty_port
      TTY: hso, remove tty NULL checks fro tty->ops
      TTY: hso, use tty from tty_port
      TTY: con3215, centralize allocation
      TTY: sclp_tty, add tty_port
      TTY: sclp_vt220, add tty_port
      TTY: sclp_vt220, remove unused allocation
      TTY: tty3270, move initialization to allocation
      TTY: tty3270, get rid of ugly aliasing
      TTY: tty3270, push tty down to tty3270_do_write
      TTY: tty3270, add tty_port
      TTY: bfin_jtag_comm, add tty_port
      TTY: bfin_jtag_comm, use tty from tty_port
      TTY: HVC, add tty_port
      TTY: HVC, use tty from tty_port
      TTY: HVC, use count from tty_port
      TTY: hvcs, add tty_port
      TTY: hvcs, use kref from tty_port
      TTY: hvcs, use tty from tty_port
      TTY: hvsi, CLOCAL is not in tty->flags
      TTY: hvsi, add tty_port
      TTY: hvsi, sanitize uses of tty
      TTY: hvsi, use tty from tty_port
      TTY: ipwireless, use synchronous hangup
      TTY: ipwireless, move prints to appropriate places
      TTY: ipwireless, add tty_port
      TTY: ipwireless, use tty from tty_port
      TTY: 68328serial, remove serial_state and friends
      TTY: 68328serial, remove unused stuff from m68k_serial
      TTY: 68328serial, remove garbage
      TTY: 68328serial, use ulong flags for interrupts status
      TTY: 68328serial, remove 68328serial.h
      TTY: 68328serial, add tty_port
      TTY: 68328serial, use open/close_wait from tty_port
      TTY: 68328serial, use close_delay/closing_wait from tty_port
      TTY: 68328serial, use flags from tty_port
      TTY: 68328serial, propagate tty
      TTY: 68328serial, use tty from tty_port
      TTY: 68328serial, use tty_port_block_til_ready
      TTY: usb/u_serial, add tty_port
      TTY: usb/u_serial, use tty from tty_port
      TTY: usb/u_serial use close_wait from tty_port
      TTY: rfcomm/tty, add tty_port
      TTY: rfcomm/tty, use tty_port refcounting
      TTY: rfcomm/tty, remove work for tty_wakeup
      TTY: rfcomm/tty, use count from tty_port
      ISDN: remove uses of isdn_tty_revision
      TTY: hvc, fix TTY refcounting
      TTY: con3215, add tty_port
      TTY: con3215, use tty from tty_port
      TTY: n_tty, do not dereference user buffer

Lothar Waßmann (1):
      Add missing call to uart_update_timeout()

Magnus Damm (8):
      serial8250: Add dl_read()/dl_write() callbacks
      serial8250: Use dl_read()/dl_write() on Alchemy
      serial8250: Use dl_read()/dl_write() on RM9K
      serial8250: Clean up default map and dl code
      serial8250: Introduce serial8250_register_8250_port()
      serial8250-em: Emma Mobile UART driver V2
      serial8250-em: clk_get() IS_ERR() error handling fix
      serial8250-em: Add DT support

Michael Gehring (1):
      tty/vt: handle bad user buffer in {G,P}IO_CMAP ioctl

Paul Gortmaker (1):
      cris: fix missing tty arg in wait_event_interruptible_tty call

Rajanikanth H.V (1):
      serial: pl011: implement workaround for CTS clear event issue

Sonic Zhang (4):
      serial: bfin_uart: Adapt bf5xx serial driver to bf60x serial4 controller.
      serial: bfin_uart: narrow the reboot condition in DMA tx interrupt
      serial: bfin_uart: RTS and CTS MMRs can be either 16-bit width or 32-bit width.
      serial: bfin_uart: Make MMR access compatible with 32 bits bf609 style controller.

Sudhakar Mamillapalli (1):
      serial/8250_pci: Clear FIFOs for Intel ME Serial Over Lan device on BI

Tomoya MORINAGA (7):
      pch_uart: Delete unused structure member
      pch_uart: change type to u8
      pch_uart: change type to %d to %02x
      pch_uart: Support modem status interrupt
      pch_uart: delete unused data structure
      pch_uart: Fix return value issue
      pch_uart: Fix duplicate memory release issue

Xiaobing Tu (1):
      tty: hold lock across tty buffer finding and buffer filling

 arch/arm/mach-omap2/serial.c                  |    8 -
 arch/arm/mach-tegra/board-harmony.c           |    2 +
 arch/arm/mach-tegra/board-paz00.c             |    3 +
 arch/arm/mach-tegra/board-seaboard.c          |    2 +
 arch/arm/mach-tegra/board-trimslice.c         |    2 +
 arch/arm/plat-omap/include/plat/omap-serial.h |    1 -
 drivers/isdn/i4l/isdn_common.c                |    5 -
 drivers/isdn/i4l/isdn_tty.c                   |  466 ++++++++++---------------
 drivers/net/usb/hso.c                         |  105 +++---
 drivers/s390/char/con3215.c                   |  142 ++++----
 drivers/s390/char/keyboard.c                  |   30 +-
 drivers/s390/char/keyboard.h                  |   14 +-
 drivers/s390/char/sclp_tty.c                  |   33 +-
 drivers/s390/char/sclp_vt220.c                |   33 +-
 drivers/s390/char/tty3270.c                   |  121 +++----
 drivers/staging/serial/68360serial.c          |    4 +-
 drivers/tty/amiserial.c                       |   14 +-
 drivers/tty/bfin_jtag_comm.c                  |   44 +--
 drivers/tty/cyclades.c                        |    2 +-
 drivers/tty/hvc/hvc_console.c                 |   96 +++--
 drivers/tty/hvc/hvc_console.h                 |    4 +-
 drivers/tty/hvc/hvc_xen.c                     |    4 +-
 drivers/tty/hvc/hvcs.c                        |   74 ++--
 drivers/tty/hvc/hvsi.c                        |  128 +++----
 drivers/tty/hvc/hvsi_lib.c                    |    2 +-
 drivers/tty/ipwireless/tty.c                  |   81 ++---
 drivers/tty/mxser.c                           |    2 +-
 drivers/tty/n_r3964.c                         |   11 +-
 drivers/tty/n_tty.c                           |    9 +-
 drivers/tty/pty.c                             |   40 ++-
 drivers/tty/serial/68328serial.c              |  383 ++++++++------------
 drivers/tty/serial/68328serial.h              |  186 ----------
 drivers/tty/serial/8250/8250.c                |  312 ++++++++---------
 drivers/tty/serial/8250/8250.h                |   16 +
 drivers/tty/serial/8250/8250_em.c             |  186 ++++++++++
 drivers/tty/serial/8250/8250_pci.c            |   63 ++++
 drivers/tty/serial/8250/Kconfig               |    8 +
 drivers/tty/serial/8250/Makefile              |    1 +
 drivers/tty/serial/amba-pl011.c               |  109 +-----
 drivers/tty/serial/bfin_uart.c                |   74 ++--
 drivers/tty/serial/crisv10.c                  |   36 +-
 drivers/tty/serial/mxs-auart.c                |    2 +
 drivers/tty/serial/of_serial.c                |   26 ++
 drivers/tty/serial/omap-serial.c              |   74 +++-
 drivers/tty/serial/pch_uart.c                 |   53 +--
 drivers/tty/serial/serial_core.c              |    1 +
 drivers/tty/synclink.c                        |    4 +-
 drivers/tty/synclink_gt.c                     |    4 +-
 drivers/tty/synclinkmp.c                      |    4 +-
 drivers/tty/tty_buffer.c                      |   85 +++--
 drivers/tty/tty_io.c                          |   76 ++--
 drivers/tty/tty_ldisc.c                       |   37 +-
 drivers/tty/tty_mutex.c                       |   60 +++-
 drivers/tty/tty_port.c                        |    6 +-
 drivers/tty/vt/consolemap.c                   |  123 +++++--
 drivers/tty/vt/keyboard.c                     |    2 +-
 drivers/tty/vt/vt.c                           |   68 ++--
 drivers/tty/vt/vt_ioctl.c                     |   25 +-
 drivers/usb/gadget/u_serial.c                 |   51 ++-
 include/linux/generic_serial.h                |   64 +---
 include/linux/isdn.h                          |   26 +-
 include/linux/of_serial.h                     |   17 +
 include/linux/serial_8250.h                   |    2 +
 include/linux/serial_core.h                   |    5 +
 include/linux/tty.h                           |   23 +-
 include/linux/tty_ldisc.h                     |    2 +
 include/linux/vt_kern.h                       |    1 -
 net/bluetooth/rfcomm/tty.c                    |  137 ++++----
 68 files changed, 1877 insertions(+), 1957 deletions(-)
 delete mode 100644 drivers/tty/serial/68328serial.h
 create mode 100644 drivers/tty/serial/8250/8250_em.c
 create mode 100644 include/linux/of_serial.h
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: struct tty_flip_buffer replacement in newer kernels
From: Jack Stone @ 2012-05-22 14:44 UTC (permalink / raw)
  To: Alan Cox; +Cc: gregkh, alan, linux-serial, Linux Kernel, deathonfuneral
In-Reply-To: <20120522151033.33ef577a@pyramind.ukuu.org.uk>

[Re-adding original poster an LKML after I accidentally dropped them.
 Sorry about that]

On 05/22/2012 03:10 PM, Alan Cox wrote:
>> I'm newbie, working under existed serial driver, adapting it for 2.6.32.
>> During the compilation I have had several problems, which I
>> succesfully solved except this one:
>> error: 'struct tty_struct' has no member named 'flip'
>> In particular, cound you advice correct replacement of "tty->flip.count"
> 
> Your driver shouldn't be looking in those areas. There isn't a correct
> replacement. You will need to update it to use the flip buffers properly
> not poke its nose in places it shouldn't have.
> 
> Perhaps the best thing would be to post a link to the driver ?
> 
> Alan


^ permalink raw reply

* Re: struct tty_flip_buffer replacement in newer kernels
From: Dmitriy Alekseev @ 2012-05-22 14:38 UTC (permalink / raw)
  To: Alan Cox; +Cc: linux-serial@vger.kernel.org
In-Reply-To: <20120522151033.33ef577a@pyramind.ukuu.org.uk>

This is driver source I found:
http://www.codeforge.com/read/118181/st16c554_serial.c__html

It was written for quad uart st16c554 for arm chip s3c2410, which I tried to adapt for at91rm9200 board and newer kernel version.

Best regards,
Dmitriy Alekseev


----- Original Message -----
From: Alan Cox <alan@lxorguk.ukuu.org.uk>
To: Jack Stone <jwjstone@fastmail.fm>
Cc: gregkh@linuxfoundation.org; alan@linux.intel.com; linux-serial@vger.kernel.org
Sent: Tuesday, May 22, 2012 6:10 PM
Subject: Re: struct tty_flip_buffer replacement in newer kernels

> I'm newbie, working under existed serial driver, adapting it for 2.6.32.
> During the compilation I have had several problems, which I
> succesfully solved except this one:
> error: 'struct tty_struct' has no member named 'flip'
> In particular, cound you advice correct replacement of "tty->flip.count"

Your driver shouldn't be looking in those areas. There isn't a correct
replacement. You will need to update it to use the flip buffers properly
not poke its nose in places it shouldn't have.

Perhaps the best thing would be to post a link to the driver ?

Alan
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: struct tty_flip_buffer replacement in newer kernels
From: Alan Cox @ 2012-05-22 14:10 UTC (permalink / raw)
  To: Jack Stone; +Cc: gregkh, alan, linux-serial
In-Reply-To: <4FBB8742.7050504@fastmail.fm>

> I'm newbie, working under existed serial driver, adapting it for 2.6.32.
> During the compilation I have had several problems, which I
> succesfully solved except this one:
> error: 'struct tty_struct' has no member named 'flip'
> In particular, cound you advice correct replacement of "tty->flip.count"

Your driver shouldn't be looking in those areas. There isn't a correct
replacement. You will need to update it to use the flip buffers properly
not poke its nose in places it shouldn't have.

Perhaps the best thing would be to post a link to the driver ?

Alan

^ permalink raw reply

* [GIT PATCH] TTY/serial patches for 3.5-rc1
From: Greg KH @ 2012-05-22 13:20 UTC (permalink / raw)
  To: Linus Torvalds, Andrew Morton; +Cc: linux-kernel, linux-serial

The following changes since commit d48b97b403d23f6df0b990cee652bdf9a52337a3:

  Linux 3.4-rc6 (2012-05-06 15:07:32 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git/ tags/tty-3.5-rc1

for you to fetch changes up to d48b97b403d23f6df0b990cee652bdf9a52337a3:

  Linux 3.4-rc6 (2012-05-06 15:07:32 -0700)

----------------------------------------------------------------
TTY pull request for 3.5-rc1

Here's the big TTY/serial driver pull request for the 3.5-rc1 merge window.

Nothing major in here, just lots of incremental changes from Alan and
Jiri reworking some tty core things to behave better and to get a more
solid grasp on some of the nasty tty locking issues.

There are a few tty and serial driver updates in here as well.

All of this has been in the linux-next releases for a while with no problems.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

----------------------------------------------------------------

 Documentation/ABI/testing/sysfs-bus-hsi            |   19 -
 .../ata/{ahci-platform.txt => calxeda-sata.txt}    |    5 +-
 .../devicetree/bindings/sound/sgtl5000.txt         |    2 -
 Documentation/networking/ip-sysctl.txt             |    4 +-
 Documentation/power/freezing-of-tasks.txt          |   37 +-
 Documentation/security/keys.txt                    |   14 +-
 MAINTAINERS                                        |   12 +-
 Makefile                                           |    2 +-
 arch/alpha/Kconfig                                 |    2 +-
 arch/alpha/include/asm/rtc.h                       |    8 +-
 arch/alpha/kernel/core_tsunami.c                   |    1 -
 arch/alpha/kernel/sys_marvel.c                     |    2 +-
 arch/arm/Kconfig                                   |    9 -
 arch/arm/boot/dts/msm8660-surf.dts                 |    4 +-
 arch/arm/boot/dts/versatile-ab.dts                 |    2 +-
 arch/arm/boot/dts/versatile-pb.dts                 |    2 +-
 arch/arm/configs/mini2440_defconfig                |    2 -
 arch/arm/include/asm/thread_info.h                 |    7 -
 arch/arm/include/asm/tls.h                         |    4 -
 arch/arm/kernel/irq.c                              |    6 +-
 arch/arm/kernel/signal.c                           |   55 ++-
 arch/arm/kernel/smp.c                              |   28 +-
 arch/arm/kernel/smp_twd.c                          |    6 +-
 arch/arm/mach-exynos/clock-exynos4.c               |   24 +-
 arch/arm/mach-exynos/clock-exynos5.c               |   24 +-
 arch/arm/mach-exynos/common.c                      |   14 +-
 arch/arm/mach-exynos/dev-dwmci.c                   |   13 +-
 arch/arm/mach-exynos/mach-nuri.c                   |    1 -
 arch/arm/mach-exynos/mach-universal_c210.c         |    1 -
 arch/arm/mach-msm/board-msm8x60.c                  |   25 +-
 arch/arm/mach-omap2/serial.c                       |    8 -
 arch/arm/mach-pxa/include/mach/mfp-pxa2xx.h        |    7 -
 arch/arm/mach-pxa/mfp-pxa2xx.c                     |   21 +-
 arch/arm/mach-pxa/pxa27x.c                         |    6 +-
 arch/arm/mach-s3c24xx/Kconfig                      |    8 +-
 arch/arm/mach-s5pv210/mach-goni.c                  |    2 -
 arch/arm/mach-sa1100/generic.c                     |    2 +-
 arch/arm/mach-tegra/board-harmony.c                |    2 +
 arch/arm/mach-tegra/board-paz00.c                  |    3 +
 arch/arm/mach-tegra/board-seaboard.c               |    2 +
 arch/arm/mach-tegra/board-trimslice.c              |    2 +
 arch/arm/mach-u300/core.c                          |    6 +-
 arch/arm/mach-u300/i2c.c                           |    9 +-
 arch/arm/mach-u300/include/mach/irqs.h             |  150 +++----
 arch/arm/mach-ux500/mbox-db5500.c                  |    2 +-
 arch/arm/mm/abort-ev6.S                            |   17 +-
 arch/arm/mm/cache-l2x0.c                           |   25 +-
 arch/arm/mm/init.c                                 |    4 +-
 arch/arm/mm/mmu.c                                  |    4 +-
 arch/arm/plat-omap/dma.c                           |   14 -
 arch/arm/plat-omap/include/plat/omap-serial.h      |    1 -
 arch/arm/plat-samsung/include/plat/sdhci.h         |   28 --
 arch/arm/vfp/vfpmodule.c                           |   99 -----
 arch/blackfin/mach-bf538/boards/ezkit.c            |   53 +--
 arch/hexagon/kernel/dma.c                          |    1 -
 arch/hexagon/kernel/process.c                      |    6 +-
 arch/hexagon/kernel/ptrace.c                       |    1 -
 arch/hexagon/kernel/smp.c                          |    8 +-
 arch/hexagon/kernel/time.c                         |    1 -
 arch/hexagon/kernel/vdso.c                         |    1 -
 arch/mips/ath79/dev-wmac.c                         |    2 +-
 arch/mips/include/asm/mach-jz4740/irq.h            |    2 +-
 arch/mips/include/asm/mmu_context.h                |    6 +
 arch/mips/kernel/signal.c                          |   27 +-
 arch/mips/kernel/signal32.c                        |   20 +-
 arch/mips/kernel/signal_n32.c                      |   10 +-
 arch/parisc/kernel/pdc_cons.c                      |    2 +-
 arch/powerpc/boot/dts/fsl/pq3-mpic-message-B.dtsi  |   43 --
 arch/powerpc/boot/dts/fsl/pq3-mpic.dtsi            |   10 -
 arch/powerpc/include/asm/irq.h                     |    4 +
 arch/powerpc/include/asm/mpic.h                    |   18 +
 arch/powerpc/include/asm/mpic_msgr.h               |    1 -
 arch/powerpc/include/asm/reg_booke.h               |    5 +
 arch/powerpc/kernel/irq.c                          |    6 +-
 arch/powerpc/kernel/machine_kexec.c                |    7 +-
 arch/powerpc/kernel/setup_32.c                     |    3 -
 arch/powerpc/net/bpf_jit.h                         |    8 +-
 arch/powerpc/net/bpf_jit_64.S                      |  108 +----
 arch/powerpc/net/bpf_jit_comp.c                    |   26 +-
 arch/powerpc/platforms/85xx/common.c               |    6 -
 arch/powerpc/platforms/85xx/mpc85xx_mds.c          |   11 +-
 arch/powerpc/platforms/85xx/p1022_ds.c             |   13 +-
 arch/powerpc/platforms/cell/axon_msi.c             |    8 +-
 arch/powerpc/platforms/cell/beat_interrupt.c       |    2 +-
 arch/powerpc/platforms/powermac/low_i2c.c          |    9 -
 arch/powerpc/platforms/powermac/pic.c              |    6 +-
 arch/powerpc/platforms/pseries/Kconfig             |    4 +-
 arch/powerpc/platforms/pseries/eeh.c               |    2 +-
 arch/powerpc/sysdev/cpm2_pic.c                     |    3 +-
 arch/powerpc/sysdev/mpc8xx_pic.c                   |   61 ++-
 arch/powerpc/sysdev/mpic.c                         |   54 +--
 arch/powerpc/sysdev/mpic_msgr.c                    |   12 +-
 arch/powerpc/sysdev/scom.c                         |    1 -
 arch/powerpc/sysdev/xics/xics-common.c             |    7 +-
 arch/sh/include/asm/atomic.h                       |    2 +-
 arch/sh/mm/fault_32.c                              |    2 +-
 arch/tile/include/asm/pci.h                        |    4 +-
 arch/tile/kernel/pci.c                             |    4 +-
 arch/x86/Kconfig                                   |    2 +-
 arch/x86/boot/compressed/head_32.S                 |   14 +-
 arch/x86/boot/compressed/head_64.S                 |   22 +-
 arch/x86/boot/compressed/relocs.c                  |    2 +
 arch/x86/boot/tools/build.c                        |   15 +-
 arch/x86/ia32/ia32_aout.c                          |    3 +-
 arch/x86/include/asm/posix_types.h                 |    6 +-
 arch/x86/include/asm/sigcontext.h                  |    2 +-
 arch/x86/include/asm/siginfo.h                     |    8 +-
 arch/x86/include/asm/unistd.h                      |    6 +-
 arch/x86/include/asm/word-at-a-time.h              |   33 --
 arch/x86/include/asm/x86_init.h                    |    1 +
 arch/x86/kernel/acpi/sleep.c                       |    4 -
 arch/x86/kernel/acpi/sleep.h                       |    4 -
 arch/x86/kernel/acpi/wakeup_32.S                   |    4 +-
 arch/x86/kernel/acpi/wakeup_64.S                   |    4 +-
 arch/x86/kernel/apic/apic.c                        |   34 +-
 arch/x86/kernel/apic/apic_numachip.c               |    7 +-
 arch/x86/kernel/apic/x2apic_phys.c                 |    6 -
 arch/x86/kernel/cpu/amd.c                          |   29 +-
 arch/x86/kernel/cpu/common.c                       |    9 +
 arch/x86/kernel/cpu/intel_cacheinfo.c              |    8 +-
 arch/x86/kernel/i387.c                             |    1 -
 arch/x86/kernel/microcode_amd.c                    |   12 +-
 arch/x86/kernel/microcode_core.c                   |   10 +-
 arch/x86/kernel/x86_init.c                         |    1 +
 arch/x86/platform/geode/net5501.c                  |    2 +-
 arch/x86/platform/mrst/mrst.c                      |    4 +-
 arch/x86/xen/enlighten.c                           |    4 +-
 arch/x86/xen/smp.c                                 |   15 -
 arch/x86/xen/xen-asm.S                             |    2 +-
 arch/xtensa/include/asm/hardirq.h                  |    3 +
 arch/xtensa/include/asm/io.h                       |    1 -
 arch/xtensa/kernel/signal.c                        |    1 -
 drivers/acpi/power.c                               |    2 +-
 drivers/acpi/scan.c                                |   17 +-
 drivers/acpi/sleep.c                               |   52 +--
 drivers/ata/ahci.c                                 |    2 -
 drivers/ata/ahci_platform.c                        |    1 -
 drivers/ata/libata-core.c                          |    2 +-
 drivers/ata/libata-eh.c                            |    3 +-
 drivers/ata/libata-scsi.c                          |   38 +-
 drivers/ata/pata_arasan_cf.c                       |    4 +-
 drivers/bcma/sprom.c                               |    7 +-
 drivers/bluetooth/ath3k.c                          |    4 -
 drivers/bluetooth/btusb.c                          |    6 -
 drivers/dma/amba-pl08x.c                           |    1 -
 drivers/dma/at_hdmac.c                             |    4 +
 drivers/dma/imx-dma.c                              |    9 +-
 drivers/dma/mxs-dma.c                              |   10 +-
 drivers/dma/pl330.c                                |   25 +-
 drivers/dma/ste_dma40.c                            |  323 +++++---------
 drivers/dma/ste_dma40_ll.h                         |    2 +
 drivers/firmware/efivars.c                         |  196 --------
 drivers/gpio/gpio-pxa.c                            |   21 +-
 drivers/gpu/drm/exynos/exynos_drm_gem.c            |   30 +-
 drivers/gpu/drm/i915/i915_debugfs.c                |    3 -
 drivers/gpu/drm/i915/i915_dma.c                    |   15 +-
 drivers/gpu/drm/i915/i915_gem_execbuffer.c         |    8 +-
 drivers/gpu/drm/i915/i915_reg.h                    |    1 -
 drivers/gpu/drm/i915/intel_crt.c                   |   29 +-
 drivers/gpu/drm/i915/intel_display.c               |    9 +-
 drivers/gpu/drm/i915/intel_hdmi.c                  |    2 +-
 drivers/gpu/drm/i915/intel_lvds.c                  |    4 +-
 drivers/gpu/drm/i915/intel_ringbuffer.c            |    8 -
 drivers/gpu/drm/i915/intel_sdvo.c                  |   34 +-
 drivers/gpu/drm/nouveau/nouveau_acpi.c             |    2 +-
 drivers/gpu/drm/nouveau/nouveau_bios.c             |   10 +-
 drivers/gpu/drm/nouveau/nouveau_hdmi.c             |    4 +-
 drivers/gpu/drm/nouveau/nv10_gpio.c                |    2 +-
 drivers/gpu/drm/nouveau/nvc0_fb.c                  |    5 -
 drivers/gpu/drm/radeon/atombios_crtc.c             |    7 +-
 drivers/gpu/drm/radeon/radeon_device.c             |    4 +-
 drivers/gpu/drm/radeon/radeon_display.c            |    3 +-
 drivers/hsi/clients/hsi_char.c                     |    2 +-
 drivers/hsi/hsi.c                                  |  223 +++++-----
 drivers/hwmon/ad7314.c                             |   12 +-
 drivers/hwmon/coretemp.c                           |    6 +-
 drivers/hwmon/fam15h_power.c                       |    9 +-
 drivers/i2c/busses/i2c-eg20t.c                     |    4 +-
 drivers/i2c/busses/i2c-mxs.c                       |    8 +-
 drivers/i2c/busses/i2c-pnx.c                       |    3 +-
 drivers/i2c/busses/i2c-tegra.c                     |    8 -
 drivers/infiniband/core/mad.c                      |    8 +-
 drivers/infiniband/hw/mlx4/main.c                  |    2 +-
 drivers/input/mouse/synaptics.c                    |    3 +-
 drivers/isdn/i4l/isdn_common.c                     |    5 -
 drivers/isdn/i4l/isdn_tty.c                        |  466 ++++++++------------
 drivers/md/bitmap.c                                |    3 +-
 drivers/md/bitmap.h                                |    3 +
 drivers/md/dm-raid.c                               |    4 +-
 drivers/md/md.c                                    |    7 +-
 drivers/mfd/omap-usb-host.c                        |    1 -
 drivers/mmc/host/mxs-mmc.c                         |    3 -
 drivers/mtd/nand/gpmi-nand/gpmi-nand.c             |    1 -
 drivers/net/arcnet/arc-rimi.c                      |    8 +-
 drivers/net/caif/caif_hsi.c                        |    9 +-
 drivers/net/can/usb/peak_usb/pcan_usb_pro.c        |    2 -
 drivers/net/dummy.c                                |    6 +-
 drivers/net/ethernet/atheros/atlx/atl1.c           |   12 +-
 drivers/net/ethernet/atheros/atlx/atl1.h           |    3 +-
 drivers/net/ethernet/atheros/atlx/atlx.c           |    2 +-
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c   |   12 +-
 drivers/net/ethernet/broadcom/tg3.c                |   18 +-
 drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c    |   92 ++--
 drivers/net/ethernet/dlink/dl2k.c                  |   52 ++-
 drivers/net/ethernet/dlink/dl2k.h                  |    7 +
 drivers/net/ethernet/freescale/ucc_geth.c          |    6 +-
 drivers/net/ethernet/freescale/ucc_geth.h          |    2 +-
 drivers/net/ethernet/ibm/ehea/ehea_main.c          |   60 ++-
 drivers/net/ethernet/ibm/ehea/ehea_phyp.h          |    2 +-
 drivers/net/ethernet/intel/e1000e/ich8lan.c        |   15 +-
 drivers/net/ethernet/intel/e1000e/netdev.c         |    2 +-
 drivers/net/ethernet/intel/e1000e/param.c          |   99 ++---
 drivers/net/ethernet/intel/igbvf/netdev.c          |    4 +-
 drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c      |    1 -
 drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c       |   10 -
 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c      |   29 +-
 drivers/net/ethernet/marvell/sky2.c                |   31 +-
 drivers/net/ethernet/marvell/sky2.h                |    1 +
 drivers/net/ethernet/micrel/ks8851.c               |   21 +-
 drivers/net/ethernet/micrel/ks8851_mll.c           |    2 +-
 drivers/net/ethernet/micrel/ksz884x.c              |    2 +-
 drivers/net/ethernet/realtek/8139cp.c              |   10 +-
 drivers/net/ethernet/smsc/smsc911x.c               |   17 +-
 drivers/net/ethernet/sun/sungem.c                  |    2 +-
 drivers/net/ethernet/ti/davinci_emac.c             |    2 +-
 drivers/net/ethernet/ti/davinci_mdio.c             |    5 -
 drivers/net/ethernet/ti/tlan.c                     |    2 +-
 drivers/net/ethernet/xilinx/xilinx_axienet.h       |    4 +-
 drivers/net/ethernet/xilinx/xilinx_axienet_main.c  |    6 +-
 drivers/net/ethernet/xilinx/xilinx_axienet_mdio.c  |    6 +-
 drivers/net/hyperv/netvsc_drv.c                    |   38 +-
 drivers/net/phy/icplus.c                           |   12 +-
 drivers/net/ppp/ppp_generic.c                      |   15 +-
 drivers/net/usb/asix.c                             |    4 +-
 drivers/net/usb/hso.c                              |  105 ++---
 drivers/net/usb/qmi_wwan.c                         |   30 --
 drivers/net/usb/smsc75xx.c                         |   36 +-
 drivers/net/usb/smsc95xx.c                         |    3 +-
 drivers/net/usb/usbnet.c                           |    5 +-
 drivers/net/virtio_net.c                           |    5 +-
 drivers/net/wan/farsync.c                          |    1 -
 drivers/net/wireless/ath/ath5k/ahb.c               |    8 +-
 drivers/net/wireless/ath/ath9k/ar5008_phy.c        |    2 +-
 drivers/net/wireless/ath/ath9k/ar9003_paprd.c      |    2 +-
 drivers/net/wireless/ath/ath9k/ar9003_phy.c        |    2 +-
 drivers/net/wireless/ath/ath9k/eeprom_9287.c       |    2 -
 drivers/net/wireless/ath/ath9k/hw.c                |    9 +-
 drivers/net/wireless/ath/ath9k/hw.h                |    3 +-
 drivers/net/wireless/ath/ath9k/main.c              |    9 +-
 drivers/net/wireless/ath/ath9k/xmit.c              |   10 +-
 drivers/net/wireless/b43/main.c                    |   10 +-
 .../net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c |    8 +-
 drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c |   63 +--
 drivers/net/wireless/brcm80211/brcmsmac/main.c     |   11 +-
 drivers/net/wireless/ipw2x00/ipw2200.c             |   13 +-
 drivers/net/wireless/iwlwifi/iwl-1000.c            |    8 +-
 drivers/net/wireless/iwlwifi/iwl-2000.c            |   16 +-
 drivers/net/wireless/iwlwifi/iwl-5000.c            |   11 +-
 drivers/net/wireless/iwlwifi/iwl-6000.c            |   10 +-
 drivers/net/wireless/iwlwifi/iwl-agn.c             |    3 +
 drivers/net/wireless/iwlwifi/iwl-fh.h              |   24 +-
 drivers/net/wireless/iwlwifi/iwl-mac80211.c        |   10 +-
 drivers/net/wireless/iwlwifi/iwl-prph.h            |   27 +-
 drivers/net/wireless/libertas/cfg.c                |    9 +-
 drivers/net/wireless/mwifiex/pcie.h                |   18 +-
 drivers/net/wireless/rtlwifi/pci.c                 |    1 -
 drivers/net/wireless/wl1251/main.c                 |    1 -
 drivers/net/wireless/wl1251/sdio.c                 |    2 +-
 drivers/pci/Makefile                               |    1 -
 drivers/pci/pci-acpi.c                             |    4 +-
 drivers/platform/x86/acerhdf.c                     |   67 +--
 drivers/platform/x86/dell-laptop.c                 |    1 -
 drivers/platform/x86/intel_ips.c                   |    2 +-
 drivers/platform/x86/intel_mid_powerbtn.c          |    2 +-
 drivers/rtc/rtc-ds1307.c                           |    1 -
 drivers/rtc/rtc-mpc5121.c                          |    3 +-
 drivers/s390/char/con3215.c                        |  142 +++---
 drivers/s390/char/keyboard.c                       |   30 +-
 drivers/s390/char/keyboard.h                       |   14 +-
 drivers/s390/char/sclp_tty.c                       |   33 +-
 drivers/s390/char/sclp_vt220.c                     |   33 +-
 drivers/s390/char/tty3270.c                        |  121 +++--
 drivers/s390/net/qeth_core_main.c                  |    6 +-
 drivers/scsi/ipr.c                                 |    6 +-
 drivers/scsi/libfc/fc_lport.c                      |   12 +-
 drivers/scsi/libsas/sas_ata.c                      |   33 +-
 drivers/scsi/libsas/sas_discover.c                 |   61 ++-
 drivers/scsi/libsas/sas_event.c                    |   24 +-
 drivers/scsi/libsas/sas_expander.c                 |   56 +--
 drivers/scsi/libsas/sas_init.c                     |   11 +-
 drivers/scsi/libsas/sas_internal.h                 |    6 +-
 drivers/scsi/libsas/sas_phy.c                      |   21 +-
 drivers/scsi/libsas/sas_port.c                     |   17 +-
 drivers/scsi/scsi_lib.c                            |    2 +-
 drivers/spi/Kconfig                                |    2 +-
 drivers/spi/Makefile                               |    2 +-
 drivers/spi/spi-bcm63xx.c                          |  163 +++----
 drivers/spi/spi-bfin-sport.c                       |   21 +-
 drivers/spi/spi-bfin5xx.c                          |   14 +-
 drivers/spi/spi-ep93xx.c                           |   24 +-
 drivers/spi/spi-pl022.c                            |   58 +--
 drivers/staging/octeon/ethernet-rx.c               |    1 -
 drivers/staging/octeon/ethernet-tx.c               |    1 -
 drivers/staging/octeon/ethernet.c                  |    1 -
 drivers/staging/ozwpan/ozpd.c                      |    2 +
 drivers/staging/serial/68360serial.c               |    4 +-
 drivers/staging/tidspbridge/core/tiomap3430.c      |   20 +-
 drivers/staging/tidspbridge/core/wdt.c             |    8 +-
 drivers/staging/zcache/Kconfig                     |    2 +-
 drivers/tty/amiserial.c                            |   14 +-
 drivers/tty/bfin_jtag_comm.c                       |   44 +-
 drivers/tty/cyclades.c                             |    2 +-
 drivers/tty/hvc/hvc_console.c                      |   96 ++--
 drivers/tty/hvc/hvc_console.h                      |    4 +-
 drivers/tty/hvc/hvc_xen.c                          |    4 +-
 drivers/tty/hvc/hvcs.c                             |   74 ++--
 drivers/tty/hvc/hvsi.c                             |  128 +++---
 drivers/tty/hvc/hvsi_lib.c                         |    2 +-
 drivers/tty/ipwireless/tty.c                       |   81 ++--
 drivers/tty/mxser.c                                |    2 +-
 drivers/tty/n_r3964.c                              |   11 +-
 drivers/tty/n_tty.c                                |    9 +-
 drivers/tty/pty.c                                  |   40 +-
 drivers/tty/serial/68328serial.c                   |  383 +++++++---------
 drivers/tty/serial/68328serial.h                   |  186 --------
 drivers/tty/serial/8250/8250.c                     |  312 +++++++------
 drivers/tty/serial/8250/8250.h                     |   16 +
 drivers/tty/serial/8250/8250_em.c                  |  186 ++++++++
 drivers/tty/serial/8250/8250_pci.c                 |   63 +++
 drivers/tty/serial/8250/Kconfig                    |    8 +
 drivers/tty/serial/8250/Makefile                   |    1 +
 drivers/tty/serial/amba-pl011.c                    |  109 +----
 drivers/tty/serial/bfin_uart.c                     |   74 ++--
 drivers/tty/serial/crisv10.c                       |   36 +-
 drivers/tty/serial/mxs-auart.c                     |    2 +
 drivers/tty/serial/of_serial.c                     |   26 ++
 drivers/tty/serial/omap-serial.c                   |   74 +++-
 drivers/tty/serial/pch_uart.c                      |   53 ++-
 drivers/tty/serial/pmac_zilog.c                    |    6 +-
 drivers/tty/serial/serial_core.c                   |    1 +
 drivers/tty/synclink.c                             |    4 +-
 drivers/tty/synclink_gt.c                          |    4 +-
 drivers/tty/synclinkmp.c                           |    4 +-
 drivers/tty/tty_buffer.c                           |   85 +++-
 drivers/tty/tty_io.c                               |   76 ++--
 drivers/tty/tty_ldisc.c                            |   37 +-
 drivers/tty/tty_mutex.c                            |   60 ++-
 drivers/tty/tty_port.c                             |    6 +-
 drivers/tty/vt/consolemap.c                        |  123 ++++--
 drivers/tty/vt/keyboard.c                          |   28 +-
 drivers/tty/vt/vt.c                                |   68 ++-
 drivers/tty/vt/vt_ioctl.c                          |   25 +-
 drivers/usb/class/cdc-wdm.c                        |    7 +-
 drivers/usb/core/hcd-pci.c                         |    9 -
 drivers/usb/gadget/dummy_hcd.c                     |    1 +
 drivers/usb/gadget/f_mass_storage.c                |    2 +-
 drivers/usb/gadget/file_storage.c                  |    2 +-
 drivers/usb/gadget/u_serial.c                      |   51 +--
 drivers/usb/gadget/udc-core.c                      |    4 +-
 drivers/usb/gadget/uvc.h                           |    2 +-
 drivers/usb/gadget/uvc_v4l2.c                      |    2 +-
 drivers/usb/host/ehci-pci.c                        |    8 -
 drivers/usb/host/ehci-tegra.c                      |  376 ++++++++--------
 drivers/usb/musb/davinci.c                         |    3 +-
 drivers/usb/musb/musb_core.h                       |    2 +-
 drivers/usb/otg/gpio_vbus.c                        |   15 +-
 drivers/vhost/net.c                                |    2 +-
 drivers/vhost/vhost.c                              |    5 +-
 drivers/vhost/vhost.h                              |    2 +-
 drivers/video/bfin-lq035q1-fb.c                    |    1 -
 drivers/watchdog/hpwdt.c                           |    6 +-
 drivers/xen/events.c                               |    2 +-
 drivers/xen/xen-acpi-processor.c                   |    5 +-
 fs/autofs4/autofs_i.h                              |   12 +-
 fs/autofs4/dev-ioctl.c                             |    3 +-
 fs/autofs4/inode.c                                 |    4 +-
 fs/autofs4/waitq.c                                 |   22 +-
 fs/btrfs/backref.c                                 |   27 +-
 fs/btrfs/ctree.c                                   |   28 +-
 fs/btrfs/ctree.h                                   |    2 +-
 fs/btrfs/disk-io.c                                 |   40 +-
 fs/btrfs/disk-io.h                                 |    3 +-
 fs/btrfs/extent-tree.c                             |   17 +-
 fs/btrfs/extent_io.c                               |   60 +--
 fs/btrfs/extent_io.h                               |    4 +-
 fs/btrfs/file.c                                    |    9 +-
 fs/btrfs/inode.c                                   |   54 ++-
 fs/btrfs/ioctl.c                                   |    5 +-
 fs/btrfs/ioctl.h                                   |    4 +-
 fs/btrfs/reada.c                                   |   48 +-
 fs/btrfs/relocation.c                              |    4 +-
 fs/btrfs/scrub.c                                   |   22 +-
 fs/btrfs/super.c                                   |    7 +-
 fs/btrfs/transaction.c                             |    6 +-
 fs/btrfs/tree-log.c                                |    2 +-
 fs/btrfs/volumes.c                                 |   13 +-
 fs/buffer.c                                        |    1 +
 fs/cifs/cifsfs.c                                   |   14 +-
 fs/cifs/cifsfs.h                                   |    2 +-
 fs/cifs/cifssmb.c                                  |    6 +-
 fs/cifs/connect.c                                  |   33 +-
 fs/cifs/dir.c                                      |   17 +-
 fs/cifs/file.c                                     |    3 +-
 fs/dcache.c                                        |   26 +-
 fs/dlm/lock.c                                      |   12 -
 fs/eventpoll.c                                     |    4 +-
 fs/ext4/super.c                                    |    2 -
 fs/gfs2/lock_dlm.c                                 |   10 +-
 fs/hfsplus/catalog.c                               |    4 -
 fs/hfsplus/dir.c                                   |   11 -
 fs/hugetlbfs/inode.c                               |    1 -
 fs/jbd2/commit.c                                   |    4 +-
 fs/namei.c                                         |    4 +-
 fs/nfs/blocklayout/blocklayout.c                   |    4 +-
 fs/nfs/client.c                                    |    5 +-
 fs/nfs/dir.c                                       |    4 +-
 fs/nfs/idmap.c                                     |    4 -
 fs/nfs/internal.h                                  |    8 +-
 fs/nfs/namespace.c                                 |   93 ++--
 fs/nfs/nfs4_fs.h                                   |   11 +-
 fs/nfs/nfs4filelayoutdev.c                         |    2 +-
 fs/nfs/nfs4namespace.c                             |   86 +---
 fs/nfs/nfs4proc.c                                  |  186 ++------
 fs/nfs/nfs4state.c                                 |   31 +-
 fs/nfs/nfs4xdr.c                                   |   53 +--
 fs/nfs/objlayout/objlayout.c                       |    2 +
 fs/nfs/pnfs.c                                      |    2 +-
 fs/nfs/read.c                                      |    2 +-
 fs/nfs/super.c                                     |   12 +-
 fs/nfs/write.c                                     |    5 +-
 fs/nfsd/nfs4recover.c                              |    2 +-
 fs/pipe.c                                          |   31 +-
 fs/proc/task_mmu.c                                 |    3 +
 include/acpi/actypes.h                             |    7 +-
 include/asm-generic/siginfo.h                      |   14 +-
 include/asm-generic/statfs.h                       |    2 +-
 include/linux/efi.h                                |   13 +-
 include/linux/generic_serial.h                     |   64 +--
 include/linux/gpio-pxa.h                           |    4 -
 include/linux/hsi/hsi.h                            |   31 +-
 include/linux/irq.h                                |    7 -
 include/linux/isdn.h                               |   26 +-
 include/linux/libata.h                             |    3 +-
 include/linux/netfilter_bridge.h                   |    9 -
 include/linux/nfs_xdr.h                            |    7 +-
 include/linux/of_serial.h                          |   17 +
 include/linux/pipe_fs_i.h                          |    1 -
 include/linux/seqlock.h                            |   23 +-
 include/linux/serial_8250.h                        |    2 +
 include/linux/serial_core.h                        |    5 +
 include/linux/skbuff.h                             |   11 +-
 include/linux/spi/spi.h                            |    2 +-
 include/linux/tty.h                                |   23 +-
 include/linux/tty_ldisc.h                          |    2 +
 include/linux/usb/hcd.h                            |    2 -
 include/linux/vm_event_item.h                      |    5 +-
 include/linux/vt_kern.h                            |    1 -
 include/net/bluetooth/hci_core.h                   |    3 +-
 include/net/dst.h                                  |    7 +-
 include/net/ip6_fib.h                              |   48 --
 include/net/ip_vs.h                                |    4 +-
 include/net/red.h                                  |    6 +-
 include/net/sock.h                                 |    5 +-
 include/scsi/libsas.h                              |   40 +-
 include/scsi/sas_ata.h                             |    4 +-
 init/do_mounts.c                                   |    2 +-
 init/main.c                                        |   25 +-
 kernel/events/core.c                               |    2 +-
 kernel/irq/debug.h                                 |   38 +-
 kernel/power/swap.c                                |   28 +-
 kernel/rcutree.c                                   |    1 +
 kernel/sched/core.c                                |   22 +-
 kernel/sched/fair.c                                |   18 +-
 kernel/sched/features.h                            |    1 -
 kernel/time/tick-broadcast.c                       |   13 +-
 kernel/trace/trace.c                               |    8 +-
 kernel/trace/trace.h                               |    4 +-
 kernel/trace/trace_output.c                        |    5 -
 mm/hugetlb.c                                       |    2 +-
 mm/memcontrol.c                                    |   17 +-
 mm/mempolicy.c                                     |   11 +-
 mm/migrate.c                                       |   16 +-
 mm/nobootmem.c                                     |   10 +-
 mm/swap_state.c                                    |    2 +-
 mm/vmscan.c                                        |   11 +-
 mm/vmstat.c                                        |    4 +-
 net/ax25/af_ax25.c                                 |    9 +-
 net/bluetooth/hci_core.c                           |   27 +-
 net/bluetooth/hci_event.c                          |    3 -
 net/bluetooth/mgmt.c                               |    2 +-
 net/bluetooth/rfcomm/tty.c                         |  137 +++---
 net/bridge/br_forward.c                            |    1 -
 net/bridge/br_netfilter.c                          |    8 +-
 net/caif/chnl_net.c                                |    9 +-
 net/core/dev.c                                     |   20 -
 net/core/drop_monitor.c                            |   89 +---
 net/core/net_namespace.c                           |   33 +-
 net/ieee802154/6lowpan.c                           |   40 +-
 net/ipv4/inet_diag.c                               |    2 +-
 net/ipv4/tcp.c                                     |    9 +-
 net/ipv4/tcp_input.c                               |   14 +-
 net/ipv4/tcp_output.c                              |    1 -
 net/ipv4/udp_diag.c                                |    9 -
 net/ipv6/addrconf.c                                |    9 +-
 net/ipv6/ip6_fib.c                                 |    9 +-
 net/ipv6/ndisc.c                                   |    3 +-
 net/ipv6/route.c                                   |   71 ++-
 net/ipv6/tcp_ipv6.c                                |    4 -
 net/key/af_key.c                                   |    2 +-
 net/l2tp/l2tp_ip.c                                 |    8 +-
 net/mac80211/ibss.c                                |    4 +-
 net/mac80211/ieee80211_i.h                         |    2 +-
 net/mac80211/iface.c                               |    4 +-
 net/mac80211/mlme.c                                |    2 +-
 net/mac80211/rx.c                                  |   10 +-
 net/mac80211/tx.c                                  |    3 +-
 net/netfilter/ipvs/ip_vs_core.c                    |   11 -
 net/netfilter/ipvs/ip_vs_ctl.c                     |   56 +--
 net/netfilter/ipvs/ip_vs_ftp.c                     |    2 -
 net/netfilter/ipvs/ip_vs_lblc.c                    |    3 -
 net/netfilter/ipvs/ip_vs_lblcr.c                   |    3 -
 net/netfilter/ipvs/ip_vs_proto.c                   |   38 +-
 net/netfilter/ipvs/ip_vs_proto_sctp.c              |    5 +-
 net/netfilter/ipvs/ip_vs_proto_tcp.c               |    5 +-
 net/netfilter/ipvs/ip_vs_proto_udp.c               |    5 +-
 net/netfilter/xt_CT.c                              |    2 +-
 net/phonet/pn_dev.c                                |   21 +-
 net/sched/sch_gred.c                               |    7 +-
 net/sched/sch_netem.c                              |    6 +-
 net/sunrpc/clnt.c                                  |   50 +--
 net/sunrpc/rpc_pipe.c                              |    3 +-
 net/sunrpc/sunrpc_syms.c                           |   17 +-
 net/wireless/util.c                                |    2 +-
 scripts/mod/file2alias.c                           |    4 -
 sound/pci/hda/patch_realtek.c                      |    1 -
 sound/soc/blackfin/bf5xx-ssm2602.c                 |    2 -
 sound/soc/codecs/cs42l73.c                         |    2 -
 sound/soc/codecs/tlv320aic23.c                     |    4 +-
 sound/soc/codecs/wm8350.c                          |   11 +-
 sound/soc/codecs/wm8994.c                          |  276 +++---------
 sound/soc/codecs/wm_hubs.c                         |   15 +-
 sound/soc/omap/omap-pcm.c                          |    4 -
 sound/soc/samsung/s3c2412-i2s.c                    |    2 +-
 sound/soc/sh/fsi.c                                 |    7 +-
 sound/soc/soc-core.c                               |    7 +-
 sound/soc/soc-dapm.c                               |    2 -
 tools/perf/Makefile                                |    4 +-
 tools/perf/builtin-report.c                        |   17 +-
 tools/perf/builtin-test.c                          |   30 --
 tools/perf/util/parse-events.l                     |    2 +-
 tools/perf/util/symbol.c                           |   13 +-
 tools/testing/ktest/ktest.pl                       |   12 +-
 552 files changed, 4698 insertions(+), 6763 deletions(-)
 delete mode 100644 Documentation/ABI/testing/sysfs-bus-hsi
 rename Documentation/devicetree/bindings/ata/{ahci-platform.txt => calxeda-sata.txt} (90%)
 delete mode 100644 arch/powerpc/boot/dts/fsl/pq3-mpic-message-B.dtsi
 delete mode 100644 drivers/tty/serial/68328serial.h
 create mode 100644 drivers/tty/serial/8250/8250_em.c
 create mode 100644 include/linux/of_serial.h

---------------

Alan Cox (7):
      vt: push the tty_lock down into the map handling
      tty_lock: undo the old tty_lock use on the ctty
      pty: Lock the devpts bits privately
      tty_lock: Localise the lock
      tty: drop the pty lock during hangup
      tty: Allow uart_register/unregister/register
      tty: Fix LED error return

Arnaud Patard (1):
      8250_pci: fix pch uart matching

Christian Melki (1):
      8250.c: less than 2400 baud fix.

Corbin Atkinson (1):
      serial_core: Update buffer overrun statistics.

Dan Carpenter (1):
      tty: hvc_xen: NULL dereference on allocation failure

Dan Williams (2):
      tegra, serial8250: add ->handle_break() uart_port op
      serial/8250_pci: fix suspend/resume vs init/exit quirks

Geert Uytterhoeven (1):
      tty/amiserial: Add missing argument for tty_unlock()

Govindraj.R (1):
      OMAP2+: UART: Remove cpu checks for populating errata flags

Greg Kroah-Hartman (1):
      Revert "serial_core: Update buffer overrun statistics."

H Hartley Sweeten (1):
      tty: mxser: local variables should not be exposed globally

Heiko Carstens (1):
      tty: add missing tty_port_tty_get() call to raw3215_wakeup

Ivo Sieben (1):
      tty: move global ldisc idle waitqueue to the individual ldisc

Jiri Slaby (71):
      TTY: crisv10, remove unused tmp_buf
      TTY: crisv10, initialize tty_port
      TTY: deprecate linux/generic_serial.h
      ISDN: i4l, remove cvs crap
      TTY: isdn, remove callout
      TTY: isdn, remove ISDN_ASYNC_* flags
      TTY: isdn, do not play with module refcounts
      TTY: isdn, make some functions readable
      TTY: isdn, remove unused members from modem_info
      TTY: isdn, add tty_port
      TTY: isdn, use open/close_wait from tty_port
      TTY: isdn, use counts from tty_port
      TTY: isdn, use tty from tty_port
      TTY: isdn, use xmit_buf from tty_port
      TTY: isdn, define local tty_port
      TTY: isdn, use tty_port_close_end helper
      TTY: isdn, define tty_port_operations
      TTY: isdn, use tty_port_block_til_ready helper
      TTY: hso, do not set TTY MAGIC
      TTY: hso, free tty_driver
      TTY: hso, add tty_port
      TTY: hso, remove tty NULL checks fro tty->ops
      TTY: hso, use tty from tty_port
      TTY: con3215, centralize allocation
      TTY: sclp_tty, add tty_port
      TTY: sclp_vt220, add tty_port
      TTY: sclp_vt220, remove unused allocation
      TTY: tty3270, move initialization to allocation
      TTY: tty3270, get rid of ugly aliasing
      TTY: tty3270, push tty down to tty3270_do_write
      TTY: tty3270, add tty_port
      TTY: bfin_jtag_comm, add tty_port
      TTY: bfin_jtag_comm, use tty from tty_port
      TTY: HVC, add tty_port
      TTY: HVC, use tty from tty_port
      TTY: HVC, use count from tty_port
      TTY: hvcs, add tty_port
      TTY: hvcs, use kref from tty_port
      TTY: hvcs, use tty from tty_port
      TTY: hvsi, CLOCAL is not in tty->flags
      TTY: hvsi, add tty_port
      TTY: hvsi, sanitize uses of tty
      TTY: hvsi, use tty from tty_port
      TTY: ipwireless, use synchronous hangup
      TTY: ipwireless, move prints to appropriate places
      TTY: ipwireless, add tty_port
      TTY: ipwireless, use tty from tty_port
      TTY: 68328serial, remove serial_state and friends
      TTY: 68328serial, remove unused stuff from m68k_serial
      TTY: 68328serial, remove garbage
      TTY: 68328serial, use ulong flags for interrupts status
      TTY: 68328serial, remove 68328serial.h
      TTY: 68328serial, add tty_port
      TTY: 68328serial, use open/close_wait from tty_port
      TTY: 68328serial, use close_delay/closing_wait from tty_port
      TTY: 68328serial, use flags from tty_port
      TTY: 68328serial, propagate tty
      TTY: 68328serial, use tty from tty_port
      TTY: 68328serial, use tty_port_block_til_ready
      TTY: usb/u_serial, add tty_port
      TTY: usb/u_serial, use tty from tty_port
      TTY: usb/u_serial use close_wait from tty_port
      TTY: rfcomm/tty, add tty_port
      TTY: rfcomm/tty, use tty_port refcounting
      TTY: rfcomm/tty, remove work for tty_wakeup
      TTY: rfcomm/tty, use count from tty_port
      ISDN: remove uses of isdn_tty_revision
      TTY: hvc, fix TTY refcounting
      TTY: con3215, add tty_port
      TTY: con3215, use tty from tty_port
      TTY: n_tty, do not dereference user buffer

Lothar Waßmann (1):
      Add missing call to uart_update_timeout()

Magnus Damm (8):
      serial8250: Add dl_read()/dl_write() callbacks
      serial8250: Use dl_read()/dl_write() on Alchemy
      serial8250: Use dl_read()/dl_write() on RM9K
      serial8250: Clean up default map and dl code
      serial8250: Introduce serial8250_register_8250_port()
      serial8250-em: Emma Mobile UART driver V2
      serial8250-em: clk_get() IS_ERR() error handling fix
      serial8250-em: Add DT support

Michael Gehring (1):
      tty/vt: handle bad user buffer in {G,P}IO_CMAP ioctl

Paul Gortmaker (1):
      cris: fix missing tty arg in wait_event_interruptible_tty call

Rajanikanth H.V (1):
      serial: pl011: implement workaround for CTS clear event issue

Sonic Zhang (4):
      serial: bfin_uart: Adapt bf5xx serial driver to bf60x serial4 controller.
      serial: bfin_uart: narrow the reboot condition in DMA tx interrupt
      serial: bfin_uart: RTS and CTS MMRs can be either 16-bit width or 32-bit width.
      serial: bfin_uart: Make MMR access compatible with 32 bits bf609 style controller.

Sudhakar Mamillapalli (1):
      serial/8250_pci: Clear FIFOs for Intel ME Serial Over Lan device on BI

Tomoya MORINAGA (7):
      pch_uart: Delete unused structure member
      pch_uart: change type to u8
      pch_uart: change type to %d to %02x
      pch_uart: Support modem status interrupt
      pch_uart: delete unused data structure
      pch_uart: Fix return value issue
      pch_uart: Fix duplicate memory release issue

Xiaobing Tu (1):
      tty: hold lock across tty buffer finding and buffer filling

--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox