[kernel] r10051 - in dists/sid/linux-2.6/debian: . patches/bugfix/mips patches/series
Martin Michlmayr
tbm at alioth.debian.org
Sun Jan 6 21:25:06 UTC 2008
Author: tbm
Date: Sun Jan 6 21:25:06 2008
New Revision: 10051
Log:
[mips/r5k-ip32] Add serial console fix from Thomas Bogendoerfer.
Added:
dists/sid/linux-2.6/debian/patches/bugfix/mips/ip32-serial.patch
dists/sid/linux-2.6/debian/patches/series/3
Modified:
dists/sid/linux-2.6/debian/changelog
Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog (original)
+++ dists/sid/linux-2.6/debian/changelog Sun Jan 6 21:25:06 2008
@@ -1,3 +1,9 @@
+linux-2.6 (2.6.23-3) UNRELEASED; urgency=low
+
+ * [mips/r5k-ip32] Add serial console fix from Thomas Bogendoerfer.
+
+ -- Martin Michlmayr <tbm at cyrius.com> Sun, 06 Jan 2008 19:11:32 +0000
+
linux-2.6 (2.6.23-2) unstable; urgency=low
[ dann frazier ]
Added: dists/sid/linux-2.6/debian/patches/bugfix/mips/ip32-serial.patch
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6/debian/patches/bugfix/mips/ip32-serial.patch Sun Jan 6 21:25:06 2008
@@ -0,0 +1,104 @@
+diff --git a/arch/mips/pci/ops-mace.c b/arch/mips/pci/ops-mace.c
+index fe54514..e958818 100644
+--- a/arch/mips/pci/ops-mace.c
++++ b/arch/mips/pci/ops-mace.c
+@@ -42,6 +42,10 @@ static int
+ mace_pci_read_config(struct pci_bus *bus, unsigned int devfn,
+ int reg, int size, u32 *val)
+ {
++ u32 control = mace->pci.control;
++
++ /* disable master aborts interrupts during config read */
++ mace->pci.control = control & ~MACEPCI_CONTROL_MAR_INT;
+ mace->pci.config_addr = mkaddr(bus, devfn, reg);
+ switch (size) {
+ case 1:
+@@ -54,6 +58,9 @@ mace_pci_read_config(struct pci_bus *bus, unsigned int devfn,
+ *val = mace->pci.config_data.l;
+ break;
+ }
++ /* ack possible master abort */
++ mace->pci.error &= ~MACEPCI_ERROR_MASTER_ABORT;
++ mace->pci.control = control;
+
+ DPRINTK("read%d: reg=%08x,val=%02x\n", size * 8, reg, *val);
+
+diff --git a/arch/mips/pci/pci-ip32.c b/arch/mips/pci/pci-ip32.c
+index 618ea7d..532b561 100644
+--- a/arch/mips/pci/pci-ip32.c
++++ b/arch/mips/pci/pci-ip32.c
+@@ -119,6 +119,7 @@ static struct pci_controller mace_pci_controller = {
+ .iommu = 0,
+ .mem_offset = MACE_PCI_MEM_OFFSET,
+ .io_offset = 0,
++ .io_map_base = CKSEG1ADDR(MACEPCI_LOW_IO),
+ };
+
+ static int __init mace_init(void)
+@@ -135,7 +136,8 @@ static int __init mace_init(void)
+ BUG_ON(request_irq(MACE_PCI_BRIDGE_IRQ, macepci_error, 0,
+ "MACE PCI error", NULL));
+
+- iomem_resource = mace_pci_mem_resource;
++ /* extend memory resources */
++ iomem_resource.end = mace_pci_mem_resource.end;
+ ioport_resource = mace_pci_io_resource;
+
+ register_pci_controller(&mace_pci_controller);
+diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c
+index fb9da9a..6eb982f 100644
+--- a/arch/mips/sgi-ip32/ip32-irq.c
++++ b/arch/mips/sgi-ip32/ip32-irq.c
+@@ -416,7 +416,6 @@ static void ip32_irq0(void)
+
+ crime_int = crime->istat & crime_mask;
+ irq = __ffs(crime_int);
+- crime_int = 1 << irq;
+
+ if (crime_int & CRIME_MACEISA_INT_MASK) {
+ unsigned long mace_int = mace->perif.ctrl.istat;
+diff --git a/arch/mips/sgi-ip32/ip32-platform.c b/arch/mips/sgi-ip32/ip32-platform.c
+index 7309e48..89a71f4 100644
+--- a/arch/mips/sgi-ip32/ip32-platform.c
++++ b/arch/mips/sgi-ip32/ip32-platform.c
+@@ -13,21 +13,22 @@
+ #include <asm/ip32/mace.h>
+ #include <asm/ip32/ip32_ints.h>
+
+-/*
+- * .iobase isn't a constant (in the sense of C) so we fill it in at runtime.
+- */
+-#define MACE_PORT(int) \
++#define MACEISA_SERIAL1_OFFS offsetof(struct sgi_mace, isa.serial1)
++#define MACEISA_SERIAL2_OFFS offsetof(struct sgi_mace, isa.serial2)
++
++#define MACE_PORT(offset,_irq) \
+ { \
+- .irq = int, \
++ .mapbase = MACE_BASE + offset, \
++ .irq = _irq, \
+ .uartclk = 1843200, \
+ .iotype = UPIO_MEM, \
+- .flags = UPF_SKIP_TEST, \
++ .flags = UPF_SKIP_TEST|UPF_IOREMAP, \
+ .regshift = 8, \
+ }
+
+ static struct plat_serial8250_port uart8250_data[] = {
+- MACE_PORT(MACEISA_SERIAL1_IRQ),
+- MACE_PORT(MACEISA_SERIAL2_IRQ),
++ MACE_PORT(MACEISA_SERIAL1_OFFS, MACEISA_SERIAL1_IRQ),
++ MACE_PORT(MACEISA_SERIAL2_OFFS, MACEISA_SERIAL2_IRQ),
+ { },
+ };
+
+@@ -41,9 +42,6 @@ static struct platform_device uart8250_device = {
+
+ static int __init uart8250_init(void)
+ {
+- uart8250_data[0].membase = (void __iomem *) &mace->isa.serial1;
+- uart8250_data[1].membase = (void __iomem *) &mace->isa.serial1;
+-
+ return platform_device_register(&uart8250_device);
+ }
+
Added: dists/sid/linux-2.6/debian/patches/series/3
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6/debian/patches/series/3 Sun Jan 6 21:25:06 2008
@@ -0,0 +1 @@
++ bugfix/mips/ip32-serial.patch
More information about the Kernel-svn-changes
mailing list