All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: sparc32 git tree
@ 2006-07-17 15:45 Bob Breuer
  2006-07-17 17:57 ` Raymond Burns
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: Bob Breuer @ 2006-07-17 15:45 UTC (permalink / raw)
  To: sparclinux

[-- Attachment #1: Type: text/plain, Size: 207 bytes --]

Ray,

I think I've found the core problem with the prom properties, and a
potential problem with the zilog initialization.  Could you try the
attached patch and let me know if it works for you?

Thanks,
Bob

[-- Attachment #2: sparc32-fix_prom_probing.txt --]
[-- Type: text/plain, Size: 2126 bytes --]

diff --git a/arch/sparc/kernel/prom.c b/arch/sparc/kernel/prom.c
index 4b06dcb..4ca9e5f 100644
--- a/arch/sparc/kernel/prom.c
+++ b/arch/sparc/kernel/prom.c
@@ -444,6 +444,7 @@ static struct property * __init build_on
 	static struct property *tmp = NULL;
 	struct property *p;
 	int len;
+	const char *name;
 
 	if (tmp) {
 		p = tmp;
@@ -456,19 +457,21 @@ static struct property * __init build_on
 
 	p->name = (char *) (p + 1);
 	if (special_name) {
+		strcpy(p->name, special_name);
 		p->length = special_len;
 		p->value = prom_early_alloc(special_len);
 		memcpy(p->value, special_val, special_len);
 	} else {
 		if (prev == NULL) {
-			prom_firstprop(node, p->name);
+			name = prom_firstprop(node, NULL);
 		} else {
-			prom_nextprop(node, prev, p->name);
+			name = prom_nextprop(node, prev, NULL);
 		}
-		if (strlen(p->name) == 0) {
+		if (strlen(name) == 0) {
 			tmp = p;
 			return NULL;
 		}
+		strcpy(p->name, name);
 		p->length = prom_getproplen(node, p->name);
 		if (p->length <= 0) {
 			p->length = 0;
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c
index a1456d9..b88f7de 100644
--- a/drivers/serial/sunzilog.c
+++ b/drivers/serial/sunzilog.c
@@ -524,7 +524,6 @@ static irqreturn_t sunzilog_interrupt(in
 {
 	struct uart_sunzilog_port *up = dev_id;
 
-	while (up) {
 		struct zilog_channel __iomem *channel
 			= ZILOG_CHANNEL_FROM_PORT(&up->port);
 		struct tty_struct *tty;
@@ -575,9 +574,6 @@ static irqreturn_t sunzilog_interrupt(in
 		if (tty)
 			tty_flip_buffer_push(tty);
 
-		up = up->next;
-	}
-
 	return IRQ_HANDLED;
 }
 
@@ -1352,18 +1348,17 @@ static int __devinit zs_probe(struct of_
 
 	rp = sunzilog_chip_regs[inst];
 
-	if (zilog_irq == -1) {
+	up = &sunzilog_port_table[inst * 2];
+	//if (zilog_irq == -1) {
 		zilog_irq = op->irqs[0];
 		err = request_irq(zilog_irq, sunzilog_interrupt, IRQF_SHARED,
-				  "zs", sunzilog_irq_chain);
+				  "zs", up);
 		if (err) {
 			of_iounmap(rp, sizeof(struct zilog_layout));
 
 			return err;
 		}
-	}
-
-	up = &sunzilog_port_table[inst * 2];
+	//}
 
 	/* Channel A */
 	up[0].port.mapbase = op->resource[0].start + 0x00;

^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2006-07-21  3:50 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-17 15:45 sparc32 git tree Bob Breuer
2006-07-17 17:57 ` Raymond Burns
2006-07-18  0:42 ` David Miller
2006-07-18  2:07 ` Bob Breuer
2006-07-18  3:51 ` David Miller
2006-07-18  4:04 ` David Miller
2006-07-18  4:33 ` Raymond Burns
2006-07-18  4:53 ` David Miller
2006-07-18 19:49 ` Raymond Burns
2006-07-18 19:50 ` Raymond Burns
2006-07-19 16:36 ` Raymond Burns
2006-07-20  5:45 ` David Miller
2006-07-21  3:50 ` Raymond Burns

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.