aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/cirrusfb.c
diff options
context:
space:
mode:
authorKrzysztof Helt <krzysztof.h1@wp.pl>2009-03-31 18:25:13 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-04-01 11:59:28 -0400
commit527410ff7fc5d45fe41523c0ba061113dea22017 (patch)
treed10016fad7c224f09b572dcab4e3ab46c7ec8f86 /drivers/video/cirrusfb.c
parentbc5d8ac02f24d68efe8e267c96dd75c0531009ab (diff)
cirrusfb: GD5446 fixes
Various fixes to make Cirrus GD5446 chip work. Another Cirrus chip works with the cirrusfb. The gd5446 seems very similar to Alpine chips. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/cirrusfb.c')
-rw-r--r--drivers/video/cirrusfb.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/drivers/video/cirrusfb.c b/drivers/video/cirrusfb.c
index ffc514df2452..6603273f4ce5 100644
--- a/drivers/video/cirrusfb.c
+++ b/drivers/video/cirrusfb.c
@@ -198,9 +198,11 @@ static const struct cirrusfb_board_info_rec {
198 .init_sr07 = true, 198 .init_sr07 = true,
199 .init_sr1f = false, 199 .init_sr1f = false,
200 .scrn_start_bit19 = true, 200 .scrn_start_bit19 = true,
201 .sr07 = 0x20, 201 .sr07 = 0xA0,
202 .sr07_1bpp = 0x20, 202 .sr07_1bpp = 0xA0,
203 .sr07_8bpp = 0x21, 203 .sr07_1bpp_mux = 0xA6,
204 .sr07_8bpp = 0xA1,
205 .sr07_8bpp_mux = 0xA7,
204 .sr1f = 0 206 .sr1f = 0
205 }, 207 },
206 [BT_ALPINE] = { 208 [BT_ALPINE] = {
@@ -213,8 +215,8 @@ static const struct cirrusfb_board_info_rec {
213 .init_sr1f = true, 215 .init_sr1f = true,
214 .scrn_start_bit19 = true, 216 .scrn_start_bit19 = true,
215 .sr07 = 0xA0, 217 .sr07 = 0xA0,
216 .sr07_1bpp = 0xA1, 218 .sr07_1bpp = 0xA0,
217 .sr07_1bpp_mux = 0xA7, 219 .sr07_1bpp_mux = 0xA6,
218 .sr07_8bpp = 0xA1, 220 .sr07_8bpp = 0xA1,
219 .sr07_8bpp_mux = 0xA7, 221 .sr07_8bpp_mux = 0xA7,
220 .sr1f = 0x1C 222 .sr1f = 0x1C
@@ -821,7 +823,7 @@ static int cirrusfb_set_par_foo(struct fb_info *info)
821 /* formula: VClk = (OSC * N) / (D * (1+P)) */ 823 /* formula: VClk = (OSC * N) / (D * (1+P)) */
822 /* Example: VClk = (14.31818 * 91) / (23 * (1+1)) = 28.325 MHz */ 824 /* Example: VClk = (14.31818 * 91) / (23 * (1+1)) = 28.325 MHz */
823 825
824 if (cinfo->btype == BT_ALPINE) { 826 if (cinfo->btype == BT_ALPINE || cinfo->btype == BT_PICASSO4) {
825 /* if freq is close to mclk or mclk/2 select mclk 827 /* if freq is close to mclk or mclk/2 select mclk
826 * as clock source 828 * as clock source
827 */ 829 */
@@ -1044,9 +1046,6 @@ static int cirrusfb_set_par_foo(struct fb_info *info)
1044 /* ### INCOMPLETE!! */ 1046 /* ### INCOMPLETE!! */
1045 vga_wseq(regbase, CL_SEQRF, 0xb8); 1047 vga_wseq(regbase, CL_SEQRF, 0xb8);
1046#endif 1048#endif
1047/* vga_wseq(regbase, CL_SEQR1F, 0x1c); */
1048 break;
1049
1050 case BT_ALPINE: 1049 case BT_ALPINE:
1051 /* We already set SRF and SR1F */ 1050 /* We already set SRF and SR1F */
1052 break; 1051 break;
@@ -1106,10 +1105,6 @@ static int cirrusfb_set_par_foo(struct fb_info *info)
1106 break; 1105 break;
1107 1106
1108 case BT_PICASSO4: 1107 case BT_PICASSO4:
1109 vga_wseq(regbase, CL_SEQR7, 0x27);
1110/* vga_wseq(regbase, CL_SEQR1F, 0x1c); */
1111 break;
1112
1113 case BT_ALPINE: 1108 case BT_ALPINE:
1114 vga_wseq(regbase, CL_SEQR7, 0xa7); 1109 vga_wseq(regbase, CL_SEQR7, 0xa7);
1115 break; 1110 break;
@@ -1177,10 +1172,6 @@ static int cirrusfb_set_par_foo(struct fb_info *info)
1177 break; 1172 break;
1178 1173
1179 case BT_PICASSO4: 1174 case BT_PICASSO4:
1180 vga_wseq(regbase, CL_SEQR7, 0x25);
1181/* vga_wseq(regbase, CL_SEQR1F, 0x1c); */
1182 break;
1183
1184 case BT_ALPINE: 1175 case BT_ALPINE:
1185 vga_wseq(regbase, CL_SEQR7, 0xa9); 1176 vga_wseq(regbase, CL_SEQR7, 0xa9);
1186 break; 1177 break;
@@ -2678,7 +2669,7 @@ static void cirrusfb_set_blitter(u8 __iomem *regbase,
2678 vga_wgfx(regbase, CL_GR32, 0x0d); /* BLT ROP */ 2669 vga_wgfx(regbase, CL_GR32, 0x0d); /* BLT ROP */
2679 2670
2680 /* and finally: GO! */ 2671 /* and finally: GO! */
2681 vga_wgfx(regbase, CL_GR31, 0x82); /* BLT Start/status */ 2672 vga_wgfx(regbase, CL_GR31, 0x02); /* BLT Start/status */
2682} 2673}
2683 2674
2684/******************************************************************* 2675/*******************************************************************