[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: The time has come ...



Hi Jules,

> > Are you using a cgsix framebuffer? The current kernels have a problem with
> > the cgsix, which Davem narrowed down to the cg6_reset function.
> > Do you get booted back to the PROM? If so can you get the results of:
> > .locals .registers ctrace
> > As well as your System.map

> Hmm.  It does sound exactly like that.
> Unfortunately the PROM is rarely readable, since the CLUT has generally made
> background == foreground.  However, I'll try to get those data.
> How come I never read about this on sparclinux@vger?  Did I just miss it?

I found it at http://dm.cobaltmicro.com/~davem/ultra-todo.html

Let me know if this fixes your problem.

Cheers,
Anton

--- linux/drivers/video/cgsixfb_old.c	Thu Nov 26 15:04:28 1998
+++ linux/drivers/video/cgsixfb.c	Thu Nov 26 15:07:37 1998
@@ -534,6 +534,7 @@
 	unsigned int rev, conf;
 	struct cg6_tec *tec = fb->s.cg6.tec;
 	struct cg6_fbc *fbc = fb->s.cg6.fbc;
+	u32 mode;
 	
 	/* Turn off stuff in the Transform Engine. */
 	tec->tec_matrix = 0;
@@ -552,15 +553,20 @@
 		*(fb->s.cg6.fhc) = conf;
 	}
 
-	/* Set things in the FBC. */
-	fbc->mode &= ~(CG6_FBC_BLIT_MASK | CG6_FBC_MODE_MASK |
+	/* Set things in the FBC. Bad things appear to happen if we do
+	 * back to back store/loads on the mode register, so copy it
+	 * out instead. */
+	mode = fbc->mode;
+	mode &= ~(CG6_FBC_BLIT_MASK | CG6_FBC_MODE_MASK |
 		       CG6_FBC_DRAW_MASK | CG6_FBC_BWRITE0_MASK |
 		       CG6_FBC_BWRITE1_MASK | CG6_FBC_BREAD_MASK |
 		       CG6_FBC_BDISP_MASK);
-	fbc->mode |= (CG6_FBC_BLIT_SRC | CG6_FBC_MODE_COLOR8 |
+	mode |= (CG6_FBC_BLIT_SRC | CG6_FBC_MODE_COLOR8 |
 		      CG6_FBC_DRAW_RENDER | CG6_FBC_BWRITE0_ENABLE |
 		      CG6_FBC_BWRITE1_DISABLE | CG6_FBC_BREAD_0 |
 		      CG6_FBC_BDISP_0);
+	fbc->mode = mode;
+
 	fbc->clip = 0;
 	fbc->offx = 0;
 	fbc->offy = 0;


Reply to: