Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a26968df authored by Antonino A. Daplas's avatar Antonino A. Daplas Committed by Linus Torvalds
Browse files

[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: default avatarAntonino Daplas <adaplas@pol.net>
Acked-by: default avatarPaul Mundt <lethal@linux-sh.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 94f9e09c
Loading
Loading
Loading
Loading
+14 −18
Original line number Diff line number Diff line
@@ -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 @@ static int __devinit kyrofb_probe(struct pci_dev *pdev,
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)
+1 −0
Original line number Diff line number Diff line
@@ -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     */