[PATCH] fbdev: kyrofb: Driver cleanups
- remove unneeded casts - use framebuffer_alloc/framebuffer_release to allocate/free memory - the pseudo_palette is always u32 regardless of bpp if using generic drawing functions Signed-off-by: Antonino Daplas <adaplas@pol.net> Acked-by: Paul Mundt <lethal@linux-sh.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
94f9e09ce5
Коммит
a26968df01
|
@ -73,8 +73,6 @@ static struct fb_var_screeninfo kyro_var __devinitdata = {
|
|||
.vmode = FB_VMODE_NONINTERLACED,
|
||||
};
|
||||
|
||||
static struct kyrofb_info *currentpar;
|
||||
|
||||
typedef struct {
|
||||
STG4000REG __iomem *pSTGReg; /* Virtual address of PCI register region */
|
||||
u32 ulNextFreeVidMem; /* Offset from start of vid mem to next free region */
|
||||
|
@ -309,7 +307,7 @@ enum {
|
|||
/* Accessors */
|
||||
static int kyro_dev_video_mode_set(struct fb_info *info)
|
||||
{
|
||||
struct kyrofb_info *par = (struct kyrofb_info *)info->par;
|
||||
struct kyrofb_info *par = info->par;
|
||||
|
||||
/* Turn off display */
|
||||
StopVTG(deviceInfo.pSTGReg);
|
||||
|
@ -402,7 +400,7 @@ static inline unsigned long get_line_length(int x, int bpp)
|
|||
|
||||
static int kyrofb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
|
||||
{
|
||||
struct kyrofb_info *par = (struct kyrofb_info *)info->par;
|
||||
struct kyrofb_info *par = info->par;
|
||||
|
||||
if (var->bits_per_pixel != 16 && var->bits_per_pixel != 32) {
|
||||
printk(KERN_WARNING "kyrofb: depth not supported: %u\n", var->bits_per_pixel);
|
||||
|
@ -478,7 +476,7 @@ static int kyrofb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
|
|||
|
||||
static int kyrofb_set_par(struct fb_info *info)
|
||||
{
|
||||
struct kyrofb_info *par = (struct kyrofb_info *)info->par;
|
||||
struct kyrofb_info *par = info->par;
|
||||
unsigned long lineclock;
|
||||
unsigned long frameclock;
|
||||
|
||||
|
@ -536,20 +534,22 @@ static int kyrofb_set_par(struct fb_info *info)
|
|||
static int kyrofb_setcolreg(u_int regno, u_int red, u_int green,
|
||||
u_int blue, u_int transp, struct fb_info *info)
|
||||
{
|
||||
struct kyrofb_info *par = info->par;
|
||||
|
||||
if (regno > 255)
|
||||
return 1; /* Invalid register */
|
||||
|
||||
if (regno < 16) {
|
||||
switch (info->var.bits_per_pixel) {
|
||||
case 16:
|
||||
((u16*)(info->pseudo_palette))[regno] =
|
||||
par->palette[regno] =
|
||||
(red & 0xf800) |
|
||||
((green & 0xfc00) >> 5) |
|
||||
((blue & 0xf800) >> 11);
|
||||
break;
|
||||
case 32:
|
||||
red >>= 8; green >>= 8; blue >>= 8; transp >>= 8;
|
||||
((u32*)(info->pseudo_palette))[regno] =
|
||||
par->palette[regno] =
|
||||
(transp << 24) | (red << 16) | (green << 8) | blue;
|
||||
break;
|
||||
}
|
||||
|
@ -675,6 +675,7 @@ static int __devinit kyrofb_probe(struct pci_dev *pdev,
|
|||
const struct pci_device_id *ent)
|
||||
{
|
||||
struct fb_info *info;
|
||||
struct kyrofb_info *currentpar;
|
||||
unsigned long size;
|
||||
int err;
|
||||
|
||||
|
@ -683,14 +684,11 @@ static int __devinit kyrofb_probe(struct pci_dev *pdev,
|
|||
return err;
|
||||
}
|
||||
|
||||
size = sizeof(struct fb_info) + sizeof(struct kyrofb_info) + 16 * sizeof(u32);
|
||||
info = kmalloc(size, GFP_KERNEL);
|
||||
info = framebuffer_alloc(sizeof(struct kyrofb_info), &pdev->dev);
|
||||
if (!info)
|
||||
return -ENOMEM;
|
||||
|
||||
memset(info, 0, size);
|
||||
|
||||
currentpar = (struct kyrofb_info *)(info + 1);
|
||||
currentpar = info->par;
|
||||
|
||||
kyro_fix.smem_start = pci_resource_start(pdev, 0);
|
||||
kyro_fix.smem_len = pci_resource_len(pdev, 0);
|
||||
|
@ -716,8 +714,7 @@ static int __devinit kyrofb_probe(struct pci_dev *pdev,
|
|||
|
||||
info->fbops = &kyrofb_ops;
|
||||
info->fix = kyro_fix;
|
||||
info->par = currentpar;
|
||||
info->pseudo_palette = (void *)(currentpar + 1);
|
||||
info->pseudo_palette = currentpar->palette;
|
||||
info->flags = FBINFO_DEFAULT;
|
||||
|
||||
SetCoreClockPLL(deviceInfo.pSTGReg, pdev);
|
||||
|
@ -741,7 +738,6 @@ static int __devinit kyrofb_probe(struct pci_dev *pdev,
|
|||
|
||||
fb_memset(info->screen_base, 0, size);
|
||||
|
||||
info->device = &pdev->dev;
|
||||
if (register_framebuffer(info) < 0)
|
||||
goto out_unmap;
|
||||
|
||||
|
@ -757,7 +753,7 @@ static int __devinit kyrofb_probe(struct pci_dev *pdev,
|
|||
out_unmap:
|
||||
iounmap(currentpar->regbase);
|
||||
iounmap(info->screen_base);
|
||||
kfree(info);
|
||||
framebuffer_release(info);
|
||||
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -765,7 +761,7 @@ out_unmap:
|
|||
static void __devexit kyrofb_remove(struct pci_dev *pdev)
|
||||
{
|
||||
struct fb_info *info = pci_get_drvdata(pdev);
|
||||
struct kyrofb_info *par = (struct kyrofb_info *)info->par;
|
||||
struct kyrofb_info *par = info->par;
|
||||
|
||||
/* Reset the board */
|
||||
StopVTG(deviceInfo.pSTGReg);
|
||||
|
@ -789,7 +785,7 @@ static void __devexit kyrofb_remove(struct pci_dev *pdev)
|
|||
|
||||
unregister_framebuffer(info);
|
||||
pci_set_drvdata(pdev, NULL);
|
||||
kfree(info);
|
||||
framebuffer_release(info);
|
||||
}
|
||||
|
||||
static int __init kyrofb_init(void)
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
struct kyrofb_info {
|
||||
void __iomem *regbase;
|
||||
|
||||
u32 palette[16];
|
||||
u32 HTot; /* Hor Total Time */
|
||||
u32 HFP; /* Hor Front Porch */
|
||||
u32 HST; /* Hor Sync Time */
|
||||
|
|
Загрузка…
Ссылка в новой задаче