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

Solution for issue with PicassoII and flickering pixels



Hi,

some time ago, I posted a message concerning problems with my PicassoII
video adapter and flickering pixels. It seems that I found a solution.

It turned out that the problem lies in the clgenfb driver. The driver sets
the clock value (mclk) for the video memory chip timing of the Cirrus Logic
chip. The value used in the current version I got from the Sarge CD set
(3.1r1) uses a value of 0x22 (kernel-image-2.4.27). This is definitively
too high for my board (and probably also for other PicassoII boards). The
overclocking of the video memory results in flickering pixels and scrolling
messes up the lines that are scrolled (random inversion of pixels).

By editing clgenfb.c and compiling my own kernel, I tested suitable values
for mclk. Problems start with a value of 0x1f. Currently, I am using 0x1e,
which seems to work fine. According to comments I found in the clgenfb.c
file, a value of 0x1c was used in earlier versions. Maybe this would be a
safer choice.

I attached a diff file to this message showing which code lines have to be
changed to solve the problem for the PicassoII board. Could someone please
forward this file to someone taking care of the clgenfb module or tell me
which steps I should do?

I would highly appreciate if the code in the main debian source repository
was adapted to the new values. By doing so, owners of the PicassoII board
will get a much better display with future kernel versions.

Best Regards,

Peter

209c209
< 		0x22 },
---
> 		0x1e },
1329c1329
< 			vga_wseq (fb_info->regs, CL_SEQR1F, 0x22);		/* ##vorher 22 MCLK select */
---
> 			vga_wseq (fb_info->regs, CL_SEQR1F, 0x1e);		/* ##vorher 22 MCLK select */
1407c1407
< 			vga_wseq (fb_info->regs, CL_SEQR1F, 0x22);		/* ### vorher 1c MCLK select */
---
> 			vga_wseq (fb_info->regs, CL_SEQR1F, 0x1e);		/* ### vorher 1c MCLK select */
1474c1474
< 			vga_wseq (fb_info->regs, CL_SEQR1F, 0x22);		/* MCLK select */
---
> 			vga_wseq (fb_info->regs, CL_SEQR1F, 0x1e);		/* MCLK select */
1557c1557
< 			vga_wseq (fb_info->regs, CL_SEQR1F, 0x22);		/* MCLK select */
---
> 			vga_wseq (fb_info->regs, CL_SEQR1F, 0x1e);		/* MCLK select */

Reply to: