[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