diff options
| author | Antonino A. Daplas <adaplas@gmail.com> | 2006-01-09 23:53:14 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-10 11:01:46 -0500 |
| commit | 7227576f4b9dcffe32f8e6b228361b38814bbe7f (patch) | |
| tree | 57b0db8a19a4005cb4d550127fa9daf557d61191 | |
| parent | cb639258f92b2407c50f79a95364f42932481389 (diff) | |
[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: Antonino Daplas <adaplas@pol.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | drivers/video/sstfb.c | 60 | ||||
| -rw-r--r-- | include/video/sstfb.h | 1 |
2 files changed, 28 insertions, 33 deletions
diff --git a/drivers/video/sstfb.c b/drivers/video/sstfb.c index e0f14df840d9..8a5ce210bb27 100644 --- a/drivers/video/sstfb.c +++ b/drivers/video/sstfb.c | |||
| @@ -382,7 +382,7 @@ static void sstfb_clear_screen(struct fb_info *info) | |||
| 382 | static int sstfb_check_var(struct fb_var_screeninfo *var, | 382 | static int sstfb_check_var(struct fb_var_screeninfo *var, |
| 383 | struct fb_info *info) | 383 | struct fb_info *info) |
| 384 | { | 384 | { |
| 385 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 385 | struct sstfb_par *par = info->par; |
| 386 | int hSyncOff = var->xres + var->right_margin + var->left_margin; | 386 | int hSyncOff = var->xres + var->right_margin + var->left_margin; |
| 387 | int vSyncOff = var->yres + var->lower_margin + var->upper_margin; | 387 | int vSyncOff = var->yres + var->lower_margin + var->upper_margin; |
| 388 | int vBackPorch = var->left_margin, yDim = var->yres; | 388 | int vBackPorch = var->left_margin, yDim = var->yres; |
| @@ -542,7 +542,7 @@ static int sstfb_check_var(struct fb_var_screeninfo *var, | |||
| 542 | */ | 542 | */ |
| 543 | static int sstfb_set_par(struct fb_info *info) | 543 | static int sstfb_set_par(struct fb_info *info) |
| 544 | { | 544 | { |
| 545 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 545 | struct sstfb_par *par = info->par; |
| 546 | u32 lfbmode, fbiinit1, fbiinit2, fbiinit3, fbiinit5, fbiinit6=0; | 546 | u32 lfbmode, fbiinit1, fbiinit2, fbiinit3, fbiinit5, fbiinit6=0; |
| 547 | struct pci_dev *sst_dev = par->dev; | 547 | struct pci_dev *sst_dev = par->dev; |
| 548 | unsigned int freq; | 548 | unsigned int freq; |
| @@ -748,13 +748,14 @@ static int sstfb_set_par(struct fb_info *info) | |||
| 748 | static int sstfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, | 748 | static int sstfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, |
| 749 | u_int transp, struct fb_info *info) | 749 | u_int transp, struct fb_info *info) |
| 750 | { | 750 | { |
| 751 | struct sstfb_par *par = info->par; | ||
| 751 | u32 col; | 752 | u32 col; |
| 752 | 753 | ||
| 753 | f_dddprintk("sstfb_setcolreg\n"); | 754 | f_dddprintk("sstfb_setcolreg\n"); |
| 754 | f_dddprintk("%-2d rgbt: %#x, %#x, %#x, %#x\n", | 755 | f_dddprintk("%-2d rgbt: %#x, %#x, %#x, %#x\n", |
| 755 | regno, red, green, blue, transp); | 756 | regno, red, green, blue, transp); |
| 756 | if (regno >= 16) | 757 | if (regno > 15) |
| 757 | return -EINVAL; | 758 | return 0; |
| 758 | 759 | ||
| 759 | red >>= (16 - info->var.red.length); | 760 | red >>= (16 - info->var.red.length); |
| 760 | green >>= (16 - info->var.green.length); | 761 | 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 | | (blue << info->var.blue.offset) | 766 | | (blue << info->var.blue.offset) |
| 766 | | (transp << info->var.transp.offset); | 767 | | (transp << info->var.transp.offset); |
| 767 | 768 | ||
| 768 | ((u32 *)info->pseudo_palette)[regno] = col; | 769 | par->palette[regno] = col; |
| 769 | 770 | ||
| 770 | return 0; | 771 | return 0; |
| 771 | } | 772 | } |
| @@ -773,7 +774,7 @@ static int sstfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, | |||
| 773 | static int sstfb_ioctl(struct inode *inode, struct file *file, | 774 | static int sstfb_ioctl(struct inode *inode, struct file *file, |
| 774 | u_int cmd, u_long arg, struct fb_info *info ) | 775 | u_int cmd, u_long arg, struct fb_info *info ) |
| 775 | { | 776 | { |
| 776 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 777 | struct sstfb_par *par = info->par; |
| 777 | struct pci_dev *sst_dev = par->dev; | 778 | struct pci_dev *sst_dev = par->dev; |
| 778 | u32 fbiinit0, tmp, val; | 779 | u32 fbiinit0, tmp, val; |
| 779 | u_long p; | 780 | u_long p; |
| @@ -830,7 +831,7 @@ static int sstfb_ioctl(struct inode *inode, struct file *file, | |||
| 830 | #if 0 | 831 | #if 0 |
| 831 | static void sstfb_copyarea(struct fb_info *info, const struct fb_copyarea *area) | 832 | static void sstfb_copyarea(struct fb_info *info, const struct fb_copyarea *area) |
| 832 | { | 833 | { |
| 833 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 834 | struct sstfb_par *par = info->par; |
| 834 | u32 stride = info->fix.line_length; | 835 | u32 stride = info->fix.line_length; |
| 835 | 836 | ||
| 836 | if (!IS_VOODOO2(par)) | 837 | if (!IS_VOODOO2(par)) |
| @@ -855,7 +856,7 @@ static void sstfb_copyarea(struct fb_info *info, const struct fb_copyarea *area) | |||
| 855 | */ | 856 | */ |
| 856 | static void sstfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) | 857 | static void sstfb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) |
| 857 | { | 858 | { |
| 858 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 859 | struct sstfb_par *par = info->par; |
| 859 | u32 stride = info->fix.line_length; | 860 | u32 stride = info->fix.line_length; |
| 860 | 861 | ||
| 861 | if (!IS_VOODOO2(par)) | 862 | if (!IS_VOODOO2(par)) |
| @@ -925,7 +926,7 @@ static int __devinit sst_get_memsize(struct fb_info *info, __u32 *memsize) | |||
| 925 | 926 | ||
| 926 | static int __devinit sst_detect_att(struct fb_info *info) | 927 | static int __devinit sst_detect_att(struct fb_info *info) |
| 927 | { | 928 | { |
| 928 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 929 | struct sstfb_par *par = info->par; |
| 929 | int i, mir, dir; | 930 | int i, mir, dir; |
| 930 | 931 | ||
| 931 | for (i=0; i<3; i++) { | 932 | for (i=0; i<3; i++) { |
| @@ -950,7 +951,7 @@ static int __devinit sst_detect_att(struct fb_info *info) | |||
| 950 | 951 | ||
| 951 | static int __devinit sst_detect_ti(struct fb_info *info) | 952 | static int __devinit sst_detect_ti(struct fb_info *info) |
| 952 | { | 953 | { |
| 953 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 954 | struct sstfb_par *par = info->par; |
| 954 | int i, mir, dir; | 955 | int i, mir, dir; |
| 955 | 956 | ||
| 956 | for (i = 0; i<3; i++) { | 957 | for (i = 0; i<3; i++) { |
| @@ -986,7 +987,7 @@ static int __devinit sst_detect_ti(struct fb_info *info) | |||
| 986 | */ | 987 | */ |
| 987 | static int __devinit sst_detect_ics(struct fb_info *info) | 988 | static int __devinit sst_detect_ics(struct fb_info *info) |
| 988 | { | 989 | { |
| 989 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 990 | struct sstfb_par *par = info->par; |
| 990 | int m_clk0_1, m_clk0_7, m_clk1_b; | 991 | int m_clk0_1, m_clk0_7, m_clk1_b; |
| 991 | int n_clk0_1, n_clk0_7, n_clk1_b; | 992 | int n_clk0_1, n_clk0_7, n_clk1_b; |
| 992 | int i; | 993 | int i; |
| @@ -1023,7 +1024,7 @@ static int __devinit sst_detect_ics(struct fb_info *info) | |||
| 1023 | static int sst_set_pll_att_ti(struct fb_info *info, | 1024 | static int sst_set_pll_att_ti(struct fb_info *info, |
| 1024 | const struct pll_timing *t, const int clock) | 1025 | const struct pll_timing *t, const int clock) |
| 1025 | { | 1026 | { |
| 1026 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 1027 | struct sstfb_par *par = info->par; |
| 1027 | u8 cr0, cc; | 1028 | u8 cr0, cc; |
| 1028 | 1029 | ||
| 1029 | /* enable indexed mode */ | 1030 | /* enable indexed mode */ |
| @@ -1077,7 +1078,7 @@ static int sst_set_pll_att_ti(struct fb_info *info, | |||
| 1077 | static int sst_set_pll_ics(struct fb_info *info, | 1078 | static int sst_set_pll_ics(struct fb_info *info, |
| 1078 | const struct pll_timing *t, const int clock) | 1079 | const struct pll_timing *t, const int clock) |
| 1079 | { | 1080 | { |
| 1080 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 1081 | struct sstfb_par *par = info->par; |
| 1081 | u8 pll_ctrl; | 1082 | u8 pll_ctrl; |
| 1082 | 1083 | ||
| 1083 | sst_dac_write(DACREG_ICS_PLLRMA, DACREG_ICS_PLL_CTRL); | 1084 | 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 | 1115 | ||
| 1115 | static void sst_set_vidmod_att_ti(struct fb_info *info, const int bpp) | 1116 | static void sst_set_vidmod_att_ti(struct fb_info *info, const int bpp) |
| 1116 | { | 1117 | { |
| 1117 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 1118 | struct sstfb_par *par = info->par; |
| 1118 | u8 cr0; | 1119 | u8 cr0; |
| 1119 | 1120 | ||
| 1120 | sst_dac_write(DACREG_WMA, 0); /* backdoor */ | 1121 | 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 | 1150 | ||
| 1150 | static void sst_set_vidmod_ics(struct fb_info *info, const int bpp) | 1151 | static void sst_set_vidmod_ics(struct fb_info *info, const int bpp) |
| 1151 | { | 1152 | { |
| 1152 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 1153 | struct sstfb_par *par = info->par; |
| 1153 | 1154 | ||
| 1154 | switch(bpp) { | 1155 | switch(bpp) { |
| 1155 | case 16: | 1156 | case 16: |
| @@ -1308,7 +1309,7 @@ static int __devinit sst_init(struct fb_info *info, struct sstfb_par *par) | |||
| 1308 | 1309 | ||
| 1309 | static void __devexit sst_shutdown(struct fb_info *info) | 1310 | static void __devexit sst_shutdown(struct fb_info *info) |
| 1310 | { | 1311 | { |
| 1311 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 1312 | struct sstfb_par *par = info->par; |
| 1312 | struct pci_dev *dev = par->dev; | 1313 | struct pci_dev *dev = par->dev; |
| 1313 | struct pll_timing gfx_timings; | 1314 | struct pll_timing gfx_timings; |
| 1314 | int Fout; | 1315 | int Fout; |
| @@ -1394,12 +1395,6 @@ static int __devinit sstfb_probe(struct pci_dev *pdev, | |||
| 1394 | struct sst_spec *spec; | 1395 | struct sst_spec *spec; |
| 1395 | int err; | 1396 | int err; |
| 1396 | 1397 | ||
| 1397 | struct all_info { | ||
| 1398 | struct fb_info info; | ||
| 1399 | struct sstfb_par par; | ||
| 1400 | u32 pseudo_palette[16]; | ||
| 1401 | } *all; | ||
| 1402 | |||
| 1403 | /* Enable device in PCI config. */ | 1398 | /* Enable device in PCI config. */ |
| 1404 | if ((err=pci_enable_device(pdev))) { | 1399 | if ((err=pci_enable_device(pdev))) { |
| 1405 | eprintk("cannot enable device\n"); | 1400 | eprintk("cannot enable device\n"); |
| @@ -1407,14 +1402,13 @@ static int __devinit sstfb_probe(struct pci_dev *pdev, | |||
| 1407 | } | 1402 | } |
| 1408 | 1403 | ||
| 1409 | /* Allocate the fb and par structures. */ | 1404 | /* Allocate the fb and par structures. */ |
| 1410 | all = kmalloc(sizeof(*all), GFP_KERNEL); | 1405 | info = framebuffer_alloc(sizeof(struct sstfb_par), &pdev->dev); |
| 1411 | if (!all) | 1406 | if (!info) |
| 1412 | return -ENOMEM; | 1407 | return -ENOMEM; |
| 1413 | memset(all, 0, sizeof(*all)); | 1408 | |
| 1414 | pci_set_drvdata(pdev, all); | 1409 | pci_set_drvdata(pdev, info); |
| 1415 | 1410 | ||
| 1416 | info = &all->info; | 1411 | par = info->par; |
| 1417 | par = info->par = &all->par; | ||
| 1418 | fix = &info->fix; | 1412 | fix = &info->fix; |
| 1419 | 1413 | ||
| 1420 | par->type = id->driver_data; | 1414 | par->type = id->driver_data; |
| @@ -1471,7 +1465,7 @@ static int __devinit sstfb_probe(struct pci_dev *pdev, | |||
| 1471 | 1465 | ||
| 1472 | info->flags = FBINFO_DEFAULT; | 1466 | info->flags = FBINFO_DEFAULT; |
| 1473 | info->fbops = &sstfb_ops; | 1467 | info->fbops = &sstfb_ops; |
| 1474 | info->pseudo_palette = &all->pseudo_palette; | 1468 | info->pseudo_palette = par->palette; |
| 1475 | 1469 | ||
| 1476 | fix->type = FB_TYPE_PACKED_PIXELS; | 1470 | fix->type = FB_TYPE_PACKED_PIXELS; |
| 1477 | fix->visual = FB_VISUAL_TRUECOLOR; | 1471 | fix->visual = FB_VISUAL_TRUECOLOR; |
| @@ -1527,7 +1521,7 @@ fail_mmio_remap: | |||
| 1527 | fail_fb_mem: | 1521 | fail_fb_mem: |
| 1528 | release_mem_region(fix->mmio_start, info->fix.mmio_len); | 1522 | release_mem_region(fix->mmio_start, info->fix.mmio_len); |
| 1529 | fail_mmio_mem: | 1523 | fail_mmio_mem: |
| 1530 | kfree(info); | 1524 | framebuffer_release(info); |
| 1531 | return -ENXIO; /* no voodoo detected */ | 1525 | return -ENXIO; /* no voodoo detected */ |
| 1532 | } | 1526 | } |
| 1533 | 1527 | ||
| @@ -1537,7 +1531,7 @@ static void __devexit sstfb_remove(struct pci_dev *pdev) | |||
| 1537 | struct fb_info *info; | 1531 | struct fb_info *info; |
| 1538 | 1532 | ||
| 1539 | info = pci_get_drvdata(pdev); | 1533 | info = pci_get_drvdata(pdev); |
| 1540 | par = (struct sstfb_par *) info->par; | 1534 | par = info->par; |
| 1541 | 1535 | ||
| 1542 | sst_shutdown(info); | 1536 | sst_shutdown(info); |
| 1543 | unregister_framebuffer(info); | 1537 | unregister_framebuffer(info); |
| @@ -1545,7 +1539,7 @@ static void __devexit sstfb_remove(struct pci_dev *pdev) | |||
| 1545 | iounmap(par->mmio_vbase); | 1539 | iounmap(par->mmio_vbase); |
| 1546 | release_mem_region(info->fix.smem_start, 0x400000); | 1540 | release_mem_region(info->fix.smem_start, 0x400000); |
| 1547 | release_mem_region(info->fix.mmio_start, info->fix.mmio_len); | 1541 | release_mem_region(info->fix.mmio_start, info->fix.mmio_len); |
| 1548 | kfree(info); | 1542 | framebuffer_release(info); |
| 1549 | } | 1543 | } |
| 1550 | 1544 | ||
| 1551 | 1545 | ||
| @@ -1613,7 +1607,7 @@ static int sstfb_dump_regs(struct fb_info *info) | |||
| 1613 | 1607 | ||
| 1614 | const int pci_s = sizeof(pci_regs)/sizeof(pci_regs[0]); | 1608 | const int pci_s = sizeof(pci_regs)/sizeof(pci_regs[0]); |
| 1615 | const int sst_s = sizeof(sst_regs)/sizeof(sst_regs[0]); | 1609 | const int sst_s = sizeof(sst_regs)/sizeof(sst_regs[0]); |
| 1616 | struct sstfb_par *par = (struct sstfb_par *) info->par; | 1610 | struct sstfb_par *par = info->par; |
| 1617 | struct pci_dev *dev = par->dev; | 1611 | struct pci_dev *dev = par->dev; |
| 1618 | u32 pci_res[pci_s]; | 1612 | u32 pci_res[pci_s]; |
| 1619 | u32 sst_res[sst_s]; | 1613 | u32 sst_res[sst_s]; |
diff --git a/include/video/sstfb.h b/include/video/sstfb.h index 0d77b5205372..3570f9c9b111 100644 --- a/include/video/sstfb.h +++ b/include/video/sstfb.h | |||
| @@ -334,6 +334,7 @@ struct sst_spec { | |||
| 334 | }; | 334 | }; |
| 335 | 335 | ||
| 336 | struct sstfb_par { | 336 | struct sstfb_par { |
| 337 | u32 palette[16]; | ||
| 337 | unsigned int yDim; | 338 | unsigned int yDim; |
| 338 | unsigned int hSyncOn; /* hsync_len */ | 339 | unsigned int hSyncOn; /* hsync_len */ |
| 339 | unsigned int hSyncOff; /* left_margin + xres + right_margin */ | 340 | unsigned int hSyncOff; /* left_margin + xres + right_margin */ |
