Subject: Re: wscons
To: None <M.Drochner@fz-juelich.de>
From: Patrick Welche <prlw1@newn.cam.ac.uk>
List: current-users
Date: 12/05/1999 18:01:45
Matthias Drochner wrote:
> 
> > On a side note, I get a rectangular steady cursor which follows the booting
> > text on the bottom line, but I also have a flashing underline cursor which
> > stays put at 0,2 from bottom left hand corner.
> 
> I'd guess this is a bug in the SOFTCURSOR code which went in recently.
> Mostly harmless...

Just to make it clear - this is just with pcdisplay, not with vga

> Anyway - we know now that there is not another driver stepping on
> your ATI card but something in the vga driver it doesn't like.
> If we get it narrowed down, we could eg add an ATI specific quirk.
> Can you try to comment out some suspicious parts in vga.c?
> I'd start with the monochrome detection - you could force
> the "mono" variable in vga_common_probe() and the vh->vh_mono flag
> in vga_init() to zero.
> Besides this, you could replace vga_copyrows() by pcdisplay_copyrows()
> in vga_emulops.
> If this doesn't help, we'd have to kick out the parts dealing
> with "dispoffset", but hopefully this is not necessary.

Unfortunately, it didn't help. I include as a patch what I tried, just in
case I misunderstood, so it's probably time for "dispoffset", but you'll
have to teach me!

Cheers,

Patrick


Index: vga.c
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/ic/vga.c,v
retrieving revision 1.21
diff -c -r1.21 vga.c
*** vga.c	1999/11/03 15:55:27	1.21
--- vga.c	1999/12/05 18:00:31
***************
*** 123,129 ****
--- 123,133 ----
  	pcdisplay_putchar,
  	pcdisplay_copycols,
  	pcdisplay_erasecols,
+ #if 0
  	vga_copyrows,
+ #else
+ 	pcdisplay_copyrows,
+ #endif
  	pcdisplay_eraserows,
  	vga_alloc_attr
  };
***************
*** 263,271 ****
--- 267,279 ----
  		goto bad;
  	gotio_vga = 1;
  
+ #if 0
  	/* read "misc output register" */
  	regval = bus_space_read_1(iot, ioh_vga, 0xc);
  	mono = !(regval & 1);
+ #else
+         mono = 0;
+ #endif
  
  	if (bus_space_map(iot, (mono ? 0x3b0 : 0x3d0), 0x10, 0, &ioh_6845))
  		goto bad;
***************
*** 461,467 ****
--- 469,477 ----
  	bus_space_tag_t iot, memt;
  {
  	struct vga_handle *vh = &vc->hdl;
+ #if 0
  	u_int8_t mor;
+ #endif
  	int i;
  
          vh->vh_iot = iot;
***************
*** 470,478 ****
--- 480,492 ----
          if (bus_space_map(vh->vh_iot, 0x3c0, 0x10, 0, &vh->vh_ioh_vga))
                  panic("vga_common_setup: couldn't map vga io");
  
+ #if 0
  	/* read "misc output register" */
  	mor = bus_space_read_1(vh->vh_iot, vh->vh_ioh_vga, 0xc);
  	vh->vh_mono = !(mor & 1);
+ #else
+         vh->vh_mono = 0;
+ #endif
  
  	if (bus_space_map(vh->vh_iot, (vh->vh_mono ? 0x3b0 : 0x3d0), 0x10, 0,
  			  &vh->vh_ioh_6845))