Commit 7227576f authored by Antonino A. Daplas's avatar Antonino A. Daplas Committed by Linus Torvalds

[PATCH] fbdev: sstfb: Driver cleanups

- remove unneeded casts
- make setcolreg return success if regno > 15, but don't do anything
- use framebuffer_alloc/framebuffer_release to allocate/free memory
Signed-off-by: default avatarAntonino Daplas <adaplas@pol.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent cb639258
...@@ -382,7 +382,7 @@ static void sstfb_clear_screen(struct fb_info *info) ...@@ -382,7 +382,7 @@ static void sstfb_clear_screen(struct fb_info *info)
static int sstfb_check_var(struct fb_var_screeninfo *var, static int sstfb_check_var(struct fb_var_screeninfo *var,
struct fb_info *info) struct fb_info *info)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
int hSyncOff = var->xres + var->right_margin + var->left_margin; int hSyncOff = var->xres + var->right_margin + var->left_margin;
int vSyncOff = var->yres + var->lower_margin + var->upper_margin; int vSyncOff = var->yres + var->lower_margin + var->upper_margin;
int vBackPorch = var->left_margin, yDim = var->yres; int vBackPorch = var->left_margin, yDim = var->yres;
...@@ -542,7 +542,7 @@ static int sstfb_check_var(struct fb_var_screeninfo *var, ...@@ -542,7 +542,7 @@ static int sstfb_check_var(struct fb_var_screeninfo *var,
*/ */
static int sstfb_set_par(struct fb_info *info) static int sstfb_set_par(struct fb_info *info)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
u32 lfbmode, fbiinit1, fbiinit2, fbiinit3, fbiinit5, fbiinit6=0; u32 lfbmode, fbiinit1, fbiinit2, fbiinit3, fbiinit5, fbiinit6=0;
struct pci_dev *sst_dev = par->dev; struct pci_dev *sst_dev = par->dev;
unsigned int freq; unsigned int freq;
...@@ -748,13 +748,14 @@ static int sstfb_set_par(struct fb_info *info) ...@@ -748,13 +748,14 @@ static int sstfb_set_par(struct fb_info *info)
static int sstfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, static int sstfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
u_int transp, struct fb_info *info) u_int transp, struct fb_info *info)
{ {
struct sstfb_par *par = info->par;
u32 col; u32 col;
f_dddprintk("sstfb_setcolreg\n"); f_dddprintk("sstfb_setcolreg\n");
f_dddprintk("%-2d rgbt: %#x, %#x, %#x, %#x\n", f_dddprintk("%-2d rgbt: %#x, %#x, %#x, %#x\n",
regno, red, green, blue, transp); regno, red, green, blue, transp);
if (regno >= 16) if (regno > 15)
return -EINVAL; return 0;
red >>= (16 - info->var.red.length); red >>= (16 - info->var.red.length);
green >>= (16 - info->var.green.length); green >>= (16 - info->var.green.length);
...@@ -765,7 +766,7 @@ static int sstfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, ...@@ -765,7 +766,7 @@ static int sstfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
| (blue << info->var.blue.offset) | (blue << info->var.blue.offset)
| (transp << info->var.transp.offset); | (transp << info->var.transp.offset);
((u32 *)info->pseudo_palette)[regno] = col; par->palette[regno] = col;
return 0; return 0;
} }
...@@ -773,7 +774,7 @@ static int sstfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, ...@@ -773,7 +774,7 @@ static int sstfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
static int sstfb_ioctl(struct inode *inode, struct file *file, static int sstfb_ioctl(struct inode *inode, struct file *file,
u_int cmd, u_long arg, struct fb_info *info ) u_int cmd, u_long arg, struct fb_info *info )
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
struct pci_dev *sst_dev = par->dev; struct pci_dev *sst_dev = par->dev;
u32 fbiinit0, tmp, val; u32 fbiinit0, tmp, val;
u_long p; u_long p;
...@@ -830,7 +831,7 @@ static int sstfb_ioctl(struct inode *inode, struct file *file, ...@@ -830,7 +831,7 @@ static int sstfb_ioctl(struct inode *inode, struct file *file,
#if 0 #if 0
static void sstfb_copyarea(struct fb_info *info, const struct fb_copyarea *area) static void sstfb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
u32 stride = info->fix.line_length; u32 stride = info->fix.line_length;
if (!IS_VOODOO2(par)) if (!IS_VOODOO2(par))
...@@ -855,7 +856,7 @@ static void sstfb_copyarea(struct fb_info *info, const struct fb_copyarea *area) ...@@ -855,7 +856,7 @@ static void sstfb_copyarea(struct fb_info *info, const struct fb_copyarea *area)
*/ */
static void sstfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) static void sstfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
u32 stride = info->fix.line_length; u32 stride = info->fix.line_length;
if (!IS_VOODOO2(par)) if (!IS_VOODOO2(par))
...@@ -925,7 +926,7 @@ static int __devinit sst_get_memsize(struct fb_info *info, __u32 *memsize) ...@@ -925,7 +926,7 @@ static int __devinit sst_get_memsize(struct fb_info *info, __u32 *memsize)
static int __devinit sst_detect_att(struct fb_info *info) static int __devinit sst_detect_att(struct fb_info *info)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
int i, mir, dir; int i, mir, dir;
for (i=0; i<3; i++) { for (i=0; i<3; i++) {
...@@ -950,7 +951,7 @@ static int __devinit sst_detect_att(struct fb_info *info) ...@@ -950,7 +951,7 @@ static int __devinit sst_detect_att(struct fb_info *info)
static int __devinit sst_detect_ti(struct fb_info *info) static int __devinit sst_detect_ti(struct fb_info *info)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
int i, mir, dir; int i, mir, dir;
for (i = 0; i<3; i++) { for (i = 0; i<3; i++) {
...@@ -986,7 +987,7 @@ static int __devinit sst_detect_ti(struct fb_info *info) ...@@ -986,7 +987,7 @@ static int __devinit sst_detect_ti(struct fb_info *info)
*/ */
static int __devinit sst_detect_ics(struct fb_info *info) static int __devinit sst_detect_ics(struct fb_info *info)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
int m_clk0_1, m_clk0_7, m_clk1_b; int m_clk0_1, m_clk0_7, m_clk1_b;
int n_clk0_1, n_clk0_7, n_clk1_b; int n_clk0_1, n_clk0_7, n_clk1_b;
int i; int i;
...@@ -1023,7 +1024,7 @@ static int __devinit sst_detect_ics(struct fb_info *info) ...@@ -1023,7 +1024,7 @@ static int __devinit sst_detect_ics(struct fb_info *info)
static int sst_set_pll_att_ti(struct fb_info *info, static int sst_set_pll_att_ti(struct fb_info *info,
const struct pll_timing *t, const int clock) const struct pll_timing *t, const int clock)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
u8 cr0, cc; u8 cr0, cc;
/* enable indexed mode */ /* enable indexed mode */
...@@ -1077,7 +1078,7 @@ static int sst_set_pll_att_ti(struct fb_info *info, ...@@ -1077,7 +1078,7 @@ static int sst_set_pll_att_ti(struct fb_info *info,
static int sst_set_pll_ics(struct fb_info *info, static int sst_set_pll_ics(struct fb_info *info,
const struct pll_timing *t, const int clock) const struct pll_timing *t, const int clock)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
u8 pll_ctrl; u8 pll_ctrl;
sst_dac_write(DACREG_ICS_PLLRMA, DACREG_ICS_PLL_CTRL); sst_dac_write(DACREG_ICS_PLLRMA, DACREG_ICS_PLL_CTRL);
...@@ -1114,7 +1115,7 @@ static int sst_set_pll_ics(struct fb_info *info, ...@@ -1114,7 +1115,7 @@ static int sst_set_pll_ics(struct fb_info *info,
static void sst_set_vidmod_att_ti(struct fb_info *info, const int bpp) static void sst_set_vidmod_att_ti(struct fb_info *info, const int bpp)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
u8 cr0; u8 cr0;
sst_dac_write(DACREG_WMA, 0); /* backdoor */ sst_dac_write(DACREG_WMA, 0); /* backdoor */
...@@ -1149,7 +1150,7 @@ static void sst_set_vidmod_att_ti(struct fb_info *info, const int bpp) ...@@ -1149,7 +1150,7 @@ static void sst_set_vidmod_att_ti(struct fb_info *info, const int bpp)
static void sst_set_vidmod_ics(struct fb_info *info, const int bpp) static void sst_set_vidmod_ics(struct fb_info *info, const int bpp)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
switch(bpp) { switch(bpp) {
case 16: case 16:
...@@ -1308,7 +1309,7 @@ static int __devinit sst_init(struct fb_info *info, struct sstfb_par *par) ...@@ -1308,7 +1309,7 @@ static int __devinit sst_init(struct fb_info *info, struct sstfb_par *par)
static void __devexit sst_shutdown(struct fb_info *info) static void __devexit sst_shutdown(struct fb_info *info)
{ {
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
struct pci_dev *dev = par->dev; struct pci_dev *dev = par->dev;
struct pll_timing gfx_timings; struct pll_timing gfx_timings;
int Fout; int Fout;
...@@ -1394,12 +1395,6 @@ static int __devinit sstfb_probe(struct pci_dev *pdev, ...@@ -1394,12 +1395,6 @@ static int __devinit sstfb_probe(struct pci_dev *pdev,
struct sst_spec *spec; struct sst_spec *spec;
int err; int err;
struct all_info {
struct fb_info info;
struct sstfb_par par;
u32 pseudo_palette[16];
} *all;
/* Enable device in PCI config. */ /* Enable device in PCI config. */
if ((err=pci_enable_device(pdev))) { if ((err=pci_enable_device(pdev))) {
eprintk("cannot enable device\n"); eprintk("cannot enable device\n");
...@@ -1407,14 +1402,13 @@ static int __devinit sstfb_probe(struct pci_dev *pdev, ...@@ -1407,14 +1402,13 @@ static int __devinit sstfb_probe(struct pci_dev *pdev,
} }
/* Allocate the fb and par structures. */ /* Allocate the fb and par structures. */
all = kmalloc(sizeof(*all), GFP_KERNEL); info = framebuffer_alloc(sizeof(struct sstfb_par), &pdev->dev);
if (!all) if (!info)
return -ENOMEM; return -ENOMEM;
memset(all, 0, sizeof(*all));
pci_set_drvdata(pdev, all);
info = &all->info; pci_set_drvdata(pdev, info);
par = info->par = &all->par;
par = info->par;
fix = &info->fix; fix = &info->fix;
par->type = id->driver_data; par->type = id->driver_data;
...@@ -1471,7 +1465,7 @@ static int __devinit sstfb_probe(struct pci_dev *pdev, ...@@ -1471,7 +1465,7 @@ static int __devinit sstfb_probe(struct pci_dev *pdev,
info->flags = FBINFO_DEFAULT; info->flags = FBINFO_DEFAULT;
info->fbops = &sstfb_ops; info->fbops = &sstfb_ops;
info->pseudo_palette = &all->pseudo_palette; info->pseudo_palette = par->palette;
fix->type = FB_TYPE_PACKED_PIXELS; fix->type = FB_TYPE_PACKED_PIXELS;
fix->visual = FB_VISUAL_TRUECOLOR; fix->visual = FB_VISUAL_TRUECOLOR;
...@@ -1527,7 +1521,7 @@ static int __devinit sstfb_probe(struct pci_dev *pdev, ...@@ -1527,7 +1521,7 @@ static int __devinit sstfb_probe(struct pci_dev *pdev,
fail_fb_mem: fail_fb_mem:
release_mem_region(fix->mmio_start, info->fix.mmio_len); release_mem_region(fix->mmio_start, info->fix.mmio_len);
fail_mmio_mem: fail_mmio_mem:
kfree(info); framebuffer_release(info);
return -ENXIO; /* no voodoo detected */ return -ENXIO; /* no voodoo detected */
} }
...@@ -1537,7 +1531,7 @@ static void __devexit sstfb_remove(struct pci_dev *pdev) ...@@ -1537,7 +1531,7 @@ static void __devexit sstfb_remove(struct pci_dev *pdev)
struct fb_info *info; struct fb_info *info;
info = pci_get_drvdata(pdev); info = pci_get_drvdata(pdev);
par = (struct sstfb_par *) info->par; par = info->par;
sst_shutdown(info); sst_shutdown(info);
unregister_framebuffer(info); unregister_framebuffer(info);
...@@ -1545,7 +1539,7 @@ static void __devexit sstfb_remove(struct pci_dev *pdev) ...@@ -1545,7 +1539,7 @@ static void __devexit sstfb_remove(struct pci_dev *pdev)
iounmap(par->mmio_vbase); iounmap(par->mmio_vbase);
release_mem_region(info->fix.smem_start, 0x400000); release_mem_region(info->fix.smem_start, 0x400000);
release_mem_region(info->fix.mmio_start, info->fix.mmio_len); release_mem_region(info->fix.mmio_start, info->fix.mmio_len);
kfree(info); framebuffer_release(info);
} }
...@@ -1613,7 +1607,7 @@ static int sstfb_dump_regs(struct fb_info *info) ...@@ -1613,7 +1607,7 @@ static int sstfb_dump_regs(struct fb_info *info)
const int pci_s = sizeof(pci_regs)/sizeof(pci_regs[0]); const int pci_s = sizeof(pci_regs)/sizeof(pci_regs[0]);
const int sst_s = sizeof(sst_regs)/sizeof(sst_regs[0]); const int sst_s = sizeof(sst_regs)/sizeof(sst_regs[0]);
struct sstfb_par *par = (struct sstfb_par *) info->par; struct sstfb_par *par = info->par;
struct pci_dev *dev = par->dev; struct pci_dev *dev = par->dev;
u32 pci_res[pci_s]; u32 pci_res[pci_s];
u32 sst_res[sst_s]; u32 sst_res[sst_s];
......
...@@ -334,6 +334,7 @@ struct sst_spec { ...@@ -334,6 +334,7 @@ struct sst_spec {
}; };
struct sstfb_par { struct sstfb_par {
u32 palette[16];
unsigned int yDim; unsigned int yDim;
unsigned int hSyncOn; /* hsync_len */ unsigned int hSyncOn; /* hsync_len */
unsigned int hSyncOff; /* left_margin + xres + right_margin */ unsigned int hSyncOff; /* left_margin + xres + right_margin */
......
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