Commit 6ee7c152 authored by Tom 'spot' Callaway's avatar Tom 'spot' Callaway Committed by David S. Miller

[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: default avatarTom 'spot' Callaway <tcallawa@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a271c241
...@@ -36,6 +36,7 @@ static int tcx_blank(int, struct fb_info *); ...@@ -36,6 +36,7 @@ static int tcx_blank(int, struct fb_info *);
static int tcx_mmap(struct fb_info *, struct file *, struct vm_area_struct *); static int tcx_mmap(struct fb_info *, struct file *, struct vm_area_struct *);
static int tcx_ioctl(struct inode *, struct file *, unsigned int, static int tcx_ioctl(struct inode *, struct file *, unsigned int,
unsigned long, struct fb_info *); unsigned long, struct fb_info *);
static int tcx_pan_display(struct fb_var_screeninfo *, struct fb_info *);
/* /*
* Frame buffer operations * Frame buffer operations
...@@ -45,6 +46,7 @@ static struct fb_ops tcx_ops = { ...@@ -45,6 +46,7 @@ static struct fb_ops tcx_ops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.fb_setcolreg = tcx_setcolreg, .fb_setcolreg = tcx_setcolreg,
.fb_blank = tcx_blank, .fb_blank = tcx_blank,
.fb_pan_display = tcx_pan_display,
.fb_fillrect = cfb_fillrect, .fb_fillrect = cfb_fillrect,
.fb_copyarea = cfb_copyarea, .fb_copyarea = cfb_copyarea,
.fb_imageblit = cfb_imageblit, .fb_imageblit = cfb_imageblit,
...@@ -153,6 +155,12 @@ static void tcx_reset (struct fb_info *info) ...@@ -153,6 +155,12 @@ static void tcx_reset (struct fb_info *info)
spin_unlock_irqrestore(&par->lock, flags); spin_unlock_irqrestore(&par->lock, flags);
} }
static int tcx_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
{
tcx_reset(info);
return 0;
}
/** /**
* tcx_setcolreg - Optional function. Sets a color register. * tcx_setcolreg - Optional function. Sets a color register.
* @regno: boolean, 0 copy local, 1 get_user() function * @regno: boolean, 0 copy local, 1 get_user() function
...@@ -366,6 +374,9 @@ static void tcx_init_one(struct sbus_dev *sdev) ...@@ -366,6 +374,9 @@ static void tcx_init_one(struct sbus_dev *sdev)
all->par.lowdepth = prom_getbool(sdev->prom_node, "tcx-8-bit"); all->par.lowdepth = prom_getbool(sdev->prom_node, "tcx-8-bit");
sbusfb_fill_var(&all->info.var, sdev->prom_node, 8); sbusfb_fill_var(&all->info.var, sdev->prom_node, 8);
all->info.var.red.length = 8;
all->info.var.green.length = 8;
all->info.var.blue.length = 8;
linebytes = prom_getintdefault(sdev->prom_node, "linebytes", linebytes = prom_getintdefault(sdev->prom_node, "linebytes",
all->info.var.xres); all->info.var.xres);
...@@ -439,6 +450,7 @@ static void tcx_init_one(struct sbus_dev *sdev) ...@@ -439,6 +450,7 @@ static void tcx_init_one(struct sbus_dev *sdev)
return; return;
} }
fb_set_cmap(&all->info.cmap, &all->info);
tcx_init_fix(&all->info, linebytes); tcx_init_fix(&all->info, linebytes);
if (register_framebuffer(&all->info) < 0) { if (register_framebuffer(&all->info) < 0) {
...@@ -466,7 +478,7 @@ int __init tcx_init(void) ...@@ -466,7 +478,7 @@ int __init tcx_init(void)
return -ENODEV; return -ENODEV;
for_all_sbusdev(sdev, sbus) { for_all_sbusdev(sdev, sbus) {
if (!strcmp(sdev->prom_name, "tcx")) if (!strcmp(sdev->prom_name, "SUNW,tcx"))
tcx_init_one(sdev); tcx_init_one(sdev);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment