[PATCH] fbdev: tdfxfb: Driver cleanups
- remove unneeded casts - move memory for pseudo_palette inside struct tdfxfb_par - whitespace changes Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
6772a2ee9d
commit
a807f618b6
2 changed files with 71 additions and 66 deletions
|
@ -291,7 +291,7 @@ static inline void banshee_make_room(struct tdfx_par *par, int size)
|
||||||
|
|
||||||
static int banshee_wait_idle(struct fb_info *info)
|
static int banshee_wait_idle(struct fb_info *info)
|
||||||
{
|
{
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
banshee_make_room(par, 1);
|
banshee_make_room(par, 1);
|
||||||
|
@ -364,7 +364,7 @@ static u32 do_calc_pll(int freq, int* freq_out)
|
||||||
|
|
||||||
static void do_write_regs(struct fb_info *info, struct banshee_reg* reg)
|
static void do_write_regs(struct fb_info *info, struct banshee_reg* reg)
|
||||||
{
|
{
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
banshee_wait_idle(info);
|
banshee_wait_idle(info);
|
||||||
|
@ -469,7 +469,7 @@ static unsigned long do_lfb_size(struct tdfx_par *par, unsigned short dev_id)
|
||||||
|
|
||||||
static int tdfxfb_check_var(struct fb_var_screeninfo *var,struct fb_info *info)
|
static int tdfxfb_check_var(struct fb_var_screeninfo *var,struct fb_info *info)
|
||||||
{
|
{
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
u32 lpitch;
|
u32 lpitch;
|
||||||
|
|
||||||
if (var->bits_per_pixel != 8 && var->bits_per_pixel != 16 &&
|
if (var->bits_per_pixel != 8 && var->bits_per_pixel != 16 &&
|
||||||
|
@ -558,7 +558,7 @@ static int tdfxfb_check_var(struct fb_var_screeninfo *var,struct fb_info *info)
|
||||||
|
|
||||||
static int tdfxfb_set_par(struct fb_info *info)
|
static int tdfxfb_set_par(struct fb_info *info)
|
||||||
{
|
{
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
u32 hdispend, hsyncsta, hsyncend, htotal;
|
u32 hdispend, hsyncsta, hsyncend, htotal;
|
||||||
u32 hd, hs, he, ht, hbs, hbe;
|
u32 hd, hs, he, ht, hbs, hbe;
|
||||||
u32 vd, vs, ve, vt, vbs, vbe;
|
u32 vd, vs, ve, vt, vbs, vbe;
|
||||||
|
@ -780,7 +780,7 @@ static int tdfxfb_set_par(struct fb_info *info)
|
||||||
static int tdfxfb_setcolreg(unsigned regno, unsigned red, unsigned green,
|
static int tdfxfb_setcolreg(unsigned regno, unsigned red, unsigned green,
|
||||||
unsigned blue,unsigned transp,struct fb_info *info)
|
unsigned blue,unsigned transp,struct fb_info *info)
|
||||||
{
|
{
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
u32 rgbcol;
|
u32 rgbcol;
|
||||||
|
|
||||||
if (regno >= info->cmap.len || regno > 255) return 1;
|
if (regno >= info->cmap.len || regno > 255) return 1;
|
||||||
|
@ -794,11 +794,15 @@ static int tdfxfb_setcolreg(unsigned regno, unsigned red, unsigned green,
|
||||||
break;
|
break;
|
||||||
/* Truecolor has no hardware color palettes. */
|
/* Truecolor has no hardware color palettes. */
|
||||||
case FB_VISUAL_TRUECOLOR:
|
case FB_VISUAL_TRUECOLOR:
|
||||||
rgbcol = (CNVT_TOHW( red, info->var.red.length) << info->var.red.offset) |
|
rgbcol = (CNVT_TOHW( red, info->var.red.length) <<
|
||||||
(CNVT_TOHW( green, info->var.green.length) << info->var.green.offset) |
|
info->var.red.offset) |
|
||||||
(CNVT_TOHW( blue, info->var.blue.length) << info->var.blue.offset) |
|
(CNVT_TOHW( green, info->var.green.length) <<
|
||||||
(CNVT_TOHW( transp, info->var.transp.length) << info->var.transp.offset);
|
info->var.green.offset) |
|
||||||
((u32*)(info->pseudo_palette))[regno] = rgbcol;
|
(CNVT_TOHW( blue, info->var.blue.length) <<
|
||||||
|
info->var.blue.offset) |
|
||||||
|
(CNVT_TOHW( transp, info->var.transp.length) <<
|
||||||
|
info->var.transp.offset);
|
||||||
|
par->palette[regno] = rgbcol;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
DPRINTK("bad depth %u\n", info->var.bits_per_pixel);
|
DPRINTK("bad depth %u\n", info->var.bits_per_pixel);
|
||||||
|
@ -810,7 +814,7 @@ static int tdfxfb_setcolreg(unsigned regno, unsigned red, unsigned green,
|
||||||
/* 0 unblank, 1 blank, 2 no vsync, 3 no hsync, 4 off */
|
/* 0 unblank, 1 blank, 2 no vsync, 3 no hsync, 4 off */
|
||||||
static int tdfxfb_blank(int blank, struct fb_info *info)
|
static int tdfxfb_blank(int blank, struct fb_info *info)
|
||||||
{
|
{
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
u32 dacmode, state = 0, vgablank = 0;
|
u32 dacmode, state = 0, vgablank = 0;
|
||||||
|
|
||||||
dacmode = tdfx_inl(par, DACMODE);
|
dacmode = tdfx_inl(par, DACMODE);
|
||||||
|
@ -855,7 +859,7 @@ static int tdfxfb_blank(int blank, struct fb_info *info)
|
||||||
static int tdfxfb_pan_display(struct fb_var_screeninfo *var,
|
static int tdfxfb_pan_display(struct fb_var_screeninfo *var,
|
||||||
struct fb_info *info)
|
struct fb_info *info)
|
||||||
{
|
{
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
u32 addr;
|
u32 addr;
|
||||||
|
|
||||||
if (nopan || var->xoffset || (var->yoffset > var->yres_virtual))
|
if (nopan || var->xoffset || (var->yoffset > var->yres_virtual))
|
||||||
|
@ -878,7 +882,7 @@ static int tdfxfb_pan_display(struct fb_var_screeninfo *var,
|
||||||
*/
|
*/
|
||||||
static void tdfxfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
|
static void tdfxfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
|
||||||
{
|
{
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
u32 bpp = info->var.bits_per_pixel;
|
u32 bpp = info->var.bits_per_pixel;
|
||||||
u32 stride = info->fix.line_length;
|
u32 stride = info->fix.line_length;
|
||||||
u32 fmt= stride | ((bpp+((bpp==8) ? 0 : 8)) << 13);
|
u32 fmt= stride | ((bpp+((bpp==8) ? 0 : 8)) << 13);
|
||||||
|
@ -894,7 +898,7 @@ static void tdfxfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect
|
||||||
if (info->fix.visual == FB_VISUAL_PSEUDOCOLOR) {
|
if (info->fix.visual == FB_VISUAL_PSEUDOCOLOR) {
|
||||||
tdfx_outl(par, COLORFORE, rect->color);
|
tdfx_outl(par, COLORFORE, rect->color);
|
||||||
} else { /* FB_VISUAL_TRUECOLOR */
|
} else { /* FB_VISUAL_TRUECOLOR */
|
||||||
tdfx_outl(par, COLORFORE, ((u32*)(info->pseudo_palette))[rect->color]);
|
tdfx_outl(par, COLORFORE, par->palette[rect->color]);
|
||||||
}
|
}
|
||||||
tdfx_outl(par, COMMAND_2D, COMMAND_2D_FILLRECT | (tdfx_rop << 24));
|
tdfx_outl(par, COMMAND_2D, COMMAND_2D_FILLRECT | (tdfx_rop << 24));
|
||||||
tdfx_outl(par, DSTSIZE, rect->width | (rect->height << 16));
|
tdfx_outl(par, DSTSIZE, rect->width | (rect->height << 16));
|
||||||
|
@ -906,7 +910,7 @@ static void tdfxfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect
|
||||||
*/
|
*/
|
||||||
static void tdfxfb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
|
static void tdfxfb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
|
||||||
{
|
{
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
u32 sx = area->sx, sy = area->sy, dx = area->dx, dy = area->dy;
|
u32 sx = area->sx, sy = area->sy, dx = area->dx, dy = area->dy;
|
||||||
u32 bpp = info->var.bits_per_pixel;
|
u32 bpp = info->var.bits_per_pixel;
|
||||||
u32 stride = info->fix.line_length;
|
u32 stride = info->fix.line_length;
|
||||||
|
@ -938,7 +942,7 @@ static void tdfxfb_copyarea(struct fb_info *info, const struct fb_copyarea *area
|
||||||
|
|
||||||
static void tdfxfb_imageblit(struct fb_info *info, const struct fb_image *image)
|
static void tdfxfb_imageblit(struct fb_info *info, const struct fb_image *image)
|
||||||
{
|
{
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
int size = image->height * ((image->width * image->depth + 7)>>3);
|
int size = image->height * ((image->width * image->depth + 7)>>3);
|
||||||
int fifo_free;
|
int fifo_free;
|
||||||
int i, stride = info->fix.line_length;
|
int i, stride = info->fix.line_length;
|
||||||
|
@ -961,8 +965,10 @@ static void tdfxfb_imageblit(struct fb_info *info, const struct fb_image *image)
|
||||||
break;
|
break;
|
||||||
case FB_VISUAL_TRUECOLOR:
|
case FB_VISUAL_TRUECOLOR:
|
||||||
default:
|
default:
|
||||||
tdfx_outl(par, COLORFORE, ((u32*)(info->pseudo_palette))[image->fg_color]);
|
tdfx_outl(par, COLORFORE,
|
||||||
tdfx_outl(par, COLORBACK, ((u32*)(info->pseudo_palette))[image->bg_color]);
|
par->palette[image->fg_color]);
|
||||||
|
tdfx_outl(par, COLORBACK,
|
||||||
|
par->palette[image->bg_color]);
|
||||||
}
|
}
|
||||||
#ifdef __BIG_ENDIAN
|
#ifdef __BIG_ENDIAN
|
||||||
srcfmt = 0x400000 | BIT(20);
|
srcfmt = 0x400000 | BIT(20);
|
||||||
|
@ -1007,7 +1013,7 @@ static void tdfxfb_imageblit(struct fb_info *info, const struct fb_image *image)
|
||||||
#ifdef TDFX_HARDWARE_CURSOR
|
#ifdef TDFX_HARDWARE_CURSOR
|
||||||
static int tdfxfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
|
static int tdfxfb_cursor(struct fb_info *info, struct fb_cursor *cursor)
|
||||||
{
|
{
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1157,18 +1163,17 @@ static int __devinit tdfxfb_probe(struct pci_dev *pdev,
|
||||||
{
|
{
|
||||||
struct tdfx_par *default_par;
|
struct tdfx_par *default_par;
|
||||||
struct fb_info *info;
|
struct fb_info *info;
|
||||||
int size, err, lpitch;
|
int err, lpitch;
|
||||||
|
|
||||||
if ((err = pci_enable_device(pdev))) {
|
if ((err = pci_enable_device(pdev))) {
|
||||||
printk(KERN_WARNING "tdfxfb: Can't enable pdev: %d\n", err);
|
printk(KERN_WARNING "tdfxfb: Can't enable pdev: %d\n", err);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
size = sizeof(struct tdfx_par)+256*sizeof(u32);
|
info = framebuffer_alloc(sizeof(struct tdfx_par), &pdev->dev);
|
||||||
|
|
||||||
info = framebuffer_alloc(size, &pdev->dev);
|
if (!info)
|
||||||
|
return -ENOMEM;
|
||||||
if (!info) return -ENOMEM;
|
|
||||||
|
|
||||||
default_par = info->par;
|
default_par = info->par;
|
||||||
|
|
||||||
|
@ -1248,7 +1253,7 @@ static int __devinit tdfxfb_probe(struct pci_dev *pdev,
|
||||||
|
|
||||||
info->fbops = &tdfxfb_ops;
|
info->fbops = &tdfxfb_ops;
|
||||||
info->fix = tdfx_fix;
|
info->fix = tdfx_fix;
|
||||||
info->pseudo_palette = (void *)(default_par + 1);
|
info->pseudo_palette = default_par->palette;
|
||||||
info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN;
|
info->flags = FBINFO_DEFAULT | FBINFO_HWACCEL_YPAN;
|
||||||
#ifdef CONFIG_FB_3DFX_ACCEL
|
#ifdef CONFIG_FB_3DFX_ACCEL
|
||||||
info->flags |= FBINFO_HWACCEL_FILLRECT |
|
info->flags |= FBINFO_HWACCEL_FILLRECT |
|
||||||
|
@ -1340,7 +1345,7 @@ void tdfxfb_setup(char *options)
|
||||||
static void __devexit tdfxfb_remove(struct pci_dev *pdev)
|
static void __devexit tdfxfb_remove(struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
struct fb_info *info = pci_get_drvdata(pdev);
|
struct fb_info *info = pci_get_drvdata(pdev);
|
||||||
struct tdfx_par *par = (struct tdfx_par *) info->par;
|
struct tdfx_par *par = info->par;
|
||||||
|
|
||||||
unregister_framebuffer(info);
|
unregister_framebuffer(info);
|
||||||
iounmap(par->regbase_virt);
|
iounmap(par->regbase_virt);
|
||||||
|
|
|
@ -140,52 +140,52 @@
|
||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
struct banshee_reg {
|
struct banshee_reg {
|
||||||
/* VGA rubbish */
|
/* VGA rubbish */
|
||||||
unsigned char att[21];
|
unsigned char att[21];
|
||||||
unsigned char crt[25];
|
unsigned char crt[25];
|
||||||
unsigned char gra[ 9];
|
unsigned char gra[ 9];
|
||||||
unsigned char misc[1];
|
unsigned char misc[1];
|
||||||
unsigned char seq[ 5];
|
unsigned char seq[ 5];
|
||||||
|
|
||||||
/* Banshee extensions */
|
/* Banshee extensions */
|
||||||
unsigned char ext[2];
|
unsigned char ext[2];
|
||||||
unsigned long vidcfg;
|
unsigned long vidcfg;
|
||||||
unsigned long vidpll;
|
unsigned long vidpll;
|
||||||
unsigned long mempll;
|
unsigned long mempll;
|
||||||
unsigned long gfxpll;
|
unsigned long gfxpll;
|
||||||
unsigned long dacmode;
|
unsigned long dacmode;
|
||||||
unsigned long vgainit0;
|
unsigned long vgainit0;
|
||||||
unsigned long vgainit1;
|
unsigned long vgainit1;
|
||||||
unsigned long screensize;
|
unsigned long screensize;
|
||||||
unsigned long stride;
|
unsigned long stride;
|
||||||
unsigned long cursloc;
|
unsigned long cursloc;
|
||||||
unsigned long curspataddr;
|
unsigned long curspataddr;
|
||||||
unsigned long cursc0;
|
unsigned long cursc0;
|
||||||
unsigned long cursc1;
|
unsigned long cursc1;
|
||||||
unsigned long startaddr;
|
unsigned long startaddr;
|
||||||
unsigned long clip0min;
|
unsigned long clip0min;
|
||||||
unsigned long clip0max;
|
unsigned long clip0max;
|
||||||
unsigned long clip1min;
|
unsigned long clip1min;
|
||||||
unsigned long clip1max;
|
unsigned long clip1max;
|
||||||
unsigned long srcbase;
|
unsigned long srcbase;
|
||||||
unsigned long dstbase;
|
unsigned long dstbase;
|
||||||
unsigned long miscinit0;
|
unsigned long miscinit0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct tdfx_par {
|
struct tdfx_par {
|
||||||
u32 max_pixclock;
|
u32 max_pixclock;
|
||||||
|
u32 palette[16];
|
||||||
|
void __iomem *regbase_virt;
|
||||||
|
unsigned long iobase;
|
||||||
|
u32 baseline;
|
||||||
|
|
||||||
void __iomem *regbase_virt;
|
struct {
|
||||||
unsigned long iobase;
|
int w,u,d;
|
||||||
u32 baseline;
|
unsigned long enable,disable;
|
||||||
|
struct timer_list timer;
|
||||||
|
} hwcursor;
|
||||||
|
|
||||||
struct {
|
spinlock_t DAClock;
|
||||||
int w,u,d;
|
|
||||||
unsigned long enable,disable;
|
|
||||||
struct timer_list timer;
|
|
||||||
} hwcursor;
|
|
||||||
|
|
||||||
spinlock_t DAClock;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
|
Loading…
Reference in a new issue