aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/tcx.c
diff options
context:
space:
mode:
authorTom 'spot' Callaway <tcallawa@redhat.com>2005-04-24 23:39:15 -0400
committerDavid S. Miller <davem@davemloft.net>2005-04-24 23:39:15 -0400
commit6ee7c15294985e4e722959fd4482df60cefd2cc8 (patch)
tree0fb6f4154aa91bf7ad85d47894bdfe37d6e31552 /drivers/video/tcx.c
parenta271c241a6036d4d583d0f47a02ba5f18b8b92b5 (diff)
[SPARC]: TCX Framebuffer fixes
Using the same logic as the other framebuffer fixes committed in 2.6.11, this is a set of fixes to make TCX functional on the console again. Adds the tcx_pan_display function, sets the all->info.var.{red,green,blue}.length values to 8, and runs fb_set_cmap. Also looks for the correct SUNW,tcx prom value. This patch just slipped through the cracks. Originally by: Georg Chini <georg.chini@triaton-webhosting.com> Signed-off-by: Tom 'spot' Callaway <tcallawa@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/video/tcx.c')
-rw-r--r--drivers/video/tcx.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/video/tcx.c b/drivers/video/tcx.c
index e2fa9e1ddc3b..1986a8b3833c 100644
--- a/drivers/video/tcx.c
+++ b/drivers/video/tcx.c
@@ -36,6 +36,7 @@ static int tcx_blank(int, struct fb_info *);
36static int tcx_mmap(struct fb_info *, struct file *, struct vm_area_struct *); 36static int tcx_mmap(struct fb_info *, struct file *, struct vm_area_struct *);
37static int tcx_ioctl(struct inode *, struct file *, unsigned int, 37static int tcx_ioctl(struct inode *, struct file *, unsigned int,
38 unsigned long, struct fb_info *); 38 unsigned long, struct fb_info *);
39static int tcx_pan_display(struct fb_var_screeninfo *, struct fb_info *);
39 40
40/* 41/*
41 * Frame buffer operations 42 * Frame buffer operations
@@ -45,6 +46,7 @@ static struct fb_ops tcx_ops = {
45 .owner = THIS_MODULE, 46 .owner = THIS_MODULE,
46 .fb_setcolreg = tcx_setcolreg, 47 .fb_setcolreg = tcx_setcolreg,
47 .fb_blank = tcx_blank, 48 .fb_blank = tcx_blank,
49 .fb_pan_display = tcx_pan_display,
48 .fb_fillrect = cfb_fillrect, 50 .fb_fillrect = cfb_fillrect,
49 .fb_copyarea = cfb_copyarea, 51 .fb_copyarea = cfb_copyarea,
50 .fb_imageblit = cfb_imageblit, 52 .fb_imageblit = cfb_imageblit,
@@ -153,6 +155,12 @@ static void tcx_reset (struct fb_info *info)
153 spin_unlock_irqrestore(&par->lock, flags); 155 spin_unlock_irqrestore(&par->lock, flags);
154} 156}
155 157
158static int tcx_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
159{
160 tcx_reset(info);
161 return 0;
162}
163
156/** 164/**
157 * tcx_setcolreg - Optional function. Sets a color register. 165 * tcx_setcolreg - Optional function. Sets a color register.
158 * @regno: boolean, 0 copy local, 1 get_user() function 166 * @regno: boolean, 0 copy local, 1 get_user() function
@@ -366,6 +374,9 @@ static void tcx_init_one(struct sbus_dev *sdev)
366 all->par.lowdepth = prom_getbool(sdev->prom_node, "tcx-8-bit"); 374 all->par.lowdepth = prom_getbool(sdev->prom_node, "tcx-8-bit");
367 375
368 sbusfb_fill_var(&all->info.var, sdev->prom_node, 8); 376 sbusfb_fill_var(&all->info.var, sdev->prom_node, 8);
377 all->info.var.red.length = 8;
378 all->info.var.green.length = 8;
379 all->info.var.blue.length = 8;
369 380
370 linebytes = prom_getintdefault(sdev->prom_node, "linebytes", 381 linebytes = prom_getintdefault(sdev->prom_node, "linebytes",
371 all->info.var.xres); 382 all->info.var.xres);
@@ -439,6 +450,7 @@ static void tcx_init_one(struct sbus_dev *sdev)
439 return; 450 return;
440 } 451 }
441 452
453 fb_set_cmap(&all->info.cmap, &all->info);
442 tcx_init_fix(&all->info, linebytes); 454 tcx_init_fix(&all->info, linebytes);
443 455
444 if (register_framebuffer(&all->info) < 0) { 456 if (register_framebuffer(&all->info) < 0) {
@@ -466,7 +478,7 @@ int __init tcx_init(void)
466 return -ENODEV; 478 return -ENODEV;
467 479
468 for_all_sbusdev(sdev, sbus) { 480 for_all_sbusdev(sdev, sbus) {
469 if (!strcmp(sdev->prom_name, "tcx")) 481 if (!strcmp(sdev->prom_name, "SUNW,tcx"))
470 tcx_init_one(sdev); 482 tcx_init_one(sdev);
471 } 483 }
472 484