Subject: Fix the Qudra screen wrap [was [Re: Forgive!]]
To: Frederick Bruckman <fb@enteract.com>
From: charlie an <charlie@tradeit.com>
List: port-mac68k
Date: 11/30/1998 10:14:47
Frederick Bruckman wrote:
> 
> On Sat, 28 Nov 1998, Colin Wood wrote:
> 
> > Erik E. Fair wrote:
> > > Why isn't "dt" a package?
> >
> > Ummm....no one's bothered yet? :-)
> >
> > I've got Valtteri's latest code (v1.1.6) if anyone wants to make a package
> > out of it...
> 
> I'm willing to. My build of dt-1.1.5 repeats part of the leftmost
> column on the right side, at 800x600, on Quadra 630. Is this fixed in
> 1.1.6? Or would anyone even notice?

This screen wrap had been bothered me for quiet a while, and eventually
I dig out a mail in the mailing list with some patch posted, and that
fixed the problem, for those who are not quite ready to get the -current
kernel going, try the patch on grf_iv.c and see how it goes.

Also, FYI... I patched it on the kernel release v 1.3.2 and I'm running
it on a Quadra 610 with internal video.

Hope that helps. and hope that goes to FAQ if the next release isn't
gonna come very soon.

Charlie

------------------------ ATTACHMENT
-------------------------------------
http://www.egroups.com/list/port-mac68k/12733.html

Son of Quadra Video Patch 
By Michael R Zucca @cs.rit.edu
                                                                           
Tuesday
                                                                       
April 21, 1998
                                                                       
05:59 AM PST


Ok, no attempts at speeding up video this time! Just honest to goodness
bug fixing!

You only need this patch, no others. It simply patches grf_iv.c to
compute the frame buffer base
address from hardware. If this doesn't work I don't know what will!

Please let me know if this fixes the X "wraparound".

Thanks!

*** grf_iv.c.orig Sat Apr 18 10:04:56 1998

--- grf_iv.c Mon Apr 20 00:05:32 1998
***************
*** 82,87 ****
--- 82,88 ----
bus_space_handle_t bsh;
int found, sense;
u_int base;
+ u_int32_t vbase1, vbase2 ;

found = 1;

***************
*** 121,126 ****
--- 122,133 ----
bus_space_write_4(oa->oa_tag, bsh, 0x10C, 0);
bus_space_write_4(oa->oa_tag, bsh, 0x110, 0);
bus_space_write_4(oa->oa_tag, bsh, 0x114, 0);
+ 
+ /* Compute the current frame buffer base address */
+ vbase1 = bus_space_read_4(oa->oa_tag, bsh, 0x0) & 0xfff ;
+ vbase2 = bus_space_read_4(oa->oa_tag, bsh, 0x4) & 0xf ;
+ mac68k_vidphys = 0xf9000000 | ((vbase1 << 9) | (vbase2 << 5)) ;
+ mac68k_vidlog = mac68k_vidphys ;

bus_space_unmap(oa->oa_tag, bsh, 0x1000);
break;
                                                                         
------------------- END OF ATTACHMENT
--------------------------------------