Re: tdfx framebuffer garbles display in 2.6.19.5

Antonino A. Daplas
2007-02-27T23:07:05Z

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

On Mon, 2007-02-26 at 21:32 +0100, DervishD wrote:
> Hi Antonino :)
>
> * Antonino A. Daplas <adaplas@gmail.com> dixit:
> > On Mon, 2007-02-26 at 18:13 +0100, DervishD wrote:
> > That's why tdfxb limits the vyres to a maximum of 4096. As to why the
> > problem disappeared just by changing this parameter, that I too don't
> > know.
>
> Probably setting it back to 4096 will make the problem reappear.
> Right now I cannot test, but I'll make some experiments.
>

Can you try this patch? It might help with the screen corruption.

Tony

[-- Attachment #2: tdfxfb_delay.diff --]
[-- Type: text/x-patch, Size: 699 bytes --]

diff --git a/drivers/video/tdfxfb.c b/drivers/video/tdfxfb.c
index 689ce02..bb3ca71 100644
--- a/drivers/video/tdfxfb.c
+++ b/drivers/video/tdfxfb.c
@@ -284,7 +284,8 @@ static inline void banshee_make_room(str
{
/* Note: The Voodoo3's onboard FIFO has 32 slots. This loop
* won't quit if you ask for more. */
- while((tdfx_inl(par, STATUS) & 0x1f) < size-1);
+ while((tdfx_inl(par, STATUS) & 0x1f) < size-1)
+ mdelay(5);
}

static int banshee_wait_idle(struct fb_info *info)
@@ -297,7 +298,9 @@ static int banshee_wait_idle(struct fb_i

while(1) {
i = (tdfx_inl(par, STATUS) & STATUS_BUSY) ? 0 : i + 1;
- if(i == 3) break;
+ if(i == 3)
+ break;
+ mdelay(5);
}
return 0;
}