List Info

Thread: FIX! Re: Upgraded to 3.0.1 -> no console




FIX! Re: Upgraded to 3.0.1 -> no console
user name
2006-08-12 16:19:12
Dave Barnes was kind enough to email me a diff to fix
the rs-232 ports.  Patch wasn't quite smart enough to
automatically apply it to 3.0.1, but with a bit of hand
editing the console is working again.  Thanks, Dave!

Here is a patch for 3.0.1.


============================================================
=======
RCS file: arch/alpha/pci/RCS/sio_pic.c,v
retrieving revision 1.1
diff -u -r1.1 arch/alpha/pci/sio_pic.c
--- arch/alpha/pci/sio_pic.c	2006/08/12 22:39:31	1.1
+++ arch/alpha/pci/sio_pic.c	2006/08/12 22:48:16
 -121,8
+121,15 
  * If prom console is broken, must remember the initial
interrupt
  * settings and enforce them.  WHEE!
  */
-u_int8_t initial_ocw1[2];
-u_int8_t initial_elcr[2];
+#define    INITIALLY_ENABLED(irq)                        \
+    ((initial_ocw1[(irq) / 8] & (1 << ((irq) %
8))) == 0)
+#define    INITIALLY_LEVEL_TRIGGERED(irq)                  
 \
+    ((initial_elcr[(irq) / 8] & (1 << ((irq) %
8))) != 0)
+ u_int8_t initial_ocw1[2];
+ u_int8_t initial_elcr[2];
+#else
+#define    INITIALLY_ENABLED(irq)        ((irq) == 2 ? 1 :
0)
+#define    INITIALLY_LEVEL_TRIGGERED(irq)    0
 #endif
 
 void		sio_setirqstat __P((int, int, int));
 -384,7
+391,9 
 			 * IRQs 0, 1, 8, and 13 must always be
 			 * edge-triggered.
 			 */
-			sio_setirqstat(i, 0, IST_EDGE);
+		        if (INITIALLY_LEVEL_TRIGGERED(i))
+		            printf("sio_intr_setup: %d
level-triggered\n",i);
+		        sio_setirqstat(i, INITIALLY_ENABLED(i),
IST_EDGE);
 			alpha_shared_intr_set_dfltsharetype(sio_intr, i,
 			    IST_EDGE);
 			specific_eoi(i);
 -405,9
+414,12 
 			 * Otherwise, disable the IRQ and set its
 			 * type to (effectively) "unknown."
 			 */
-			sio_setirqstat(i, 0, IST_NONE);
-			alpha_shared_intr_set_dfltsharetype(sio_intr, i,
-			    IST_NONE);
+		         sio_setirqstat(i, INITIALLY_ENABLED(i),
+			     INITIALLY_LEVEL_TRIGGERED(i) ?
+			     IST_LEVEL : IST_NONE);
+			 alpha_shared_intr_set_dfltsharetype(sio_intr, i,
+			     INITIALLY_LEVEL_TRIGGERED(i) ?
+	       		     IST_LEVEL : IST_NONE);
 			specific_eoi(i);
 			break;
 		}
 -519,10
+531,11 
 			break;
 
 		default:
-			ist = IST_NONE;
+		        ist = INITIALLY_LEVEL_TRIGGERED(irq) ?
+		            IST_LEVEL : IST_NONE;
 			break;
 		}
-		sio_setirqstat(irq, 0, ist);
+		sio_setirqstat(irq, INITIALLY_ENABLED(irq), ist);
 		alpha_shared_intr_set_dfltsharetype(sio_intr, irq, ist);
 
 		/* Release our SCB vector. */
[1]

about | contact  Other archives ( Real Estate discussion Medical topics )