diff options
Diffstat (limited to 'drivers/video')
| -rw-r--r-- | drivers/video/Kconfig | 4 | ||||
| -rw-r--r-- | drivers/video/amifb.c | 4 | ||||
| -rw-r--r-- | drivers/video/aty/atyfb_base.c | 2 | ||||
| -rw-r--r-- | drivers/video/aty/radeon_base.c | 4 | ||||
| -rw-r--r-- | drivers/video/display/display-sysfs.c | 10 | ||||
| -rw-r--r-- | drivers/video/dnfb.c | 3 | ||||
| -rw-r--r-- | drivers/video/hpfb.c | 2 | ||||
| -rw-r--r-- | drivers/video/matrox/matroxfb_base.h | 2 | ||||
| -rw-r--r-- | drivers/video/pxafb.c | 6 | ||||
| -rw-r--r-- | drivers/video/s3c2410fb.c | 130 | ||||
| -rw-r--r-- | drivers/video/s3c2410fb.h | 20 | ||||
| -rw-r--r-- | drivers/video/sis/sis_main.c | 2 | ||||
| -rw-r--r-- | drivers/video/sm501fb.c | 8 | 
13 files changed, 71 insertions, 126 deletions
| diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 2cdaf1ff8315..002b61b4f0f6 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig @@ -627,11 +627,9 @@ config FB_MAC  	select FB_CFB_IMAGEBLIT  	select FB_MACMODES -#      bool '  Apple DAFB display support' CONFIG_FB_DAFB  config FB_HP300  	bool -	depends on (FB = y) && HP300 -	select FB_CFB_FILLRECT +	depends on (FB = y) && DIO  	select FB_CFB_IMAGEBLIT  	default y diff --git a/drivers/video/amifb.c b/drivers/video/amifb.c index e6492c1048bf..05a328c11a8b 100644 --- a/drivers/video/amifb.c +++ b/drivers/video/amifb.c @@ -2261,7 +2261,7 @@ int __init amifb_init(void)  	amifb_setup(option);  #endif  	if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_VIDEO)) -		return -ENXIO; +		return -ENODEV;  	/*  	 * We request all registers starting from bplpt[0] @@ -2333,7 +2333,7 @@ default_chipset:  			strcat(fb_info.fix.id, "Unknown");  			goto default_chipset;  #else /* CONFIG_FB_AMIGA_OCS */ -			err = -ENXIO; +			err = -ENODEV;  			goto amifb_error;  #endif /* CONFIG_FB_AMIGA_OCS */  			break; diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c index e4bcf5376a99..bd4ac0bafecb 100644 --- a/drivers/video/aty/atyfb_base.c +++ b/drivers/video/aty/atyfb_base.c @@ -3356,7 +3356,7 @@ static int __devinit atyfb_setup_generic(struct pci_dev *pdev, struct fb_info *i  	info->fix.mmio_start = raddr;  	par->ati_regbase = ioremap(info->fix.mmio_start, 0x1000); -	if (par->ati_regbase == 0) +	if (par->ati_regbase == NULL)  		return -ENOMEM;  	info->fix.mmio_start += par->aux_start ? 0x400 : 0xc00; diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c index 72cd0d2f14ec..400e9264e456 100644 --- a/drivers/video/aty/radeon_base.c +++ b/drivers/video/aty/radeon_base.c @@ -2277,8 +2277,8 @@ static int __devinit radeonfb_pci_register (struct pci_dev *pdev,  	do {  		rinfo->fb_base = ioremap (rinfo->fb_base_phys,  					  rinfo->mapped_vram); -	} while (   rinfo->fb_base == 0 && -		  ((rinfo->mapped_vram /=2) >= MIN_MAPPED_VRAM) ); +	} while (rinfo->fb_base == NULL && +		 ((rinfo->mapped_vram /= 2) >= MIN_MAPPED_VRAM));  	if (rinfo->fb_base == NULL) {  		printk (KERN_ERR "radeonfb (%s): cannot map FB\n", diff --git a/drivers/video/display/display-sysfs.c b/drivers/video/display/display-sysfs.c index 35477177bef4..6ef800bdf482 100644 --- a/drivers/video/display/display-sysfs.c +++ b/drivers/video/display/display-sysfs.c @@ -26,6 +26,7 @@  #include <linux/ctype.h>  #include <linux/idr.h>  #include <linux/err.h> +#include <linux/kdev_t.h>  static ssize_t display_show_name(struct device *dev,  				struct device_attribute *attr, char *buf) @@ -152,10 +153,13 @@ struct display_device *display_device_register(struct display_driver *driver,  		mutex_unlock(&allocated_dsp_lock);  		if (!ret) { -			new_dev->dev = device_create(display_class, parent, 0, -						"display%d", new_dev->idx); +			new_dev->dev = device_create_drvdata(display_class, +							     parent, +							     MKDEV(0,0), +							     new_dev, +							     "display%d", +							     new_dev->idx);  			if (!IS_ERR(new_dev->dev)) { -				dev_set_drvdata(new_dev->dev, new_dev);  				new_dev->parent = parent;  				new_dev->driver = driver;  				mutex_init(&new_dev->lock); diff --git a/drivers/video/dnfb.c b/drivers/video/dnfb.c index b083ea7e9c69..606da043f4b4 100644 --- a/drivers/video/dnfb.c +++ b/drivers/video/dnfb.c @@ -284,6 +284,9 @@ int __init dnfb_init(void)  {  	int ret; +	if (!MACH_IS_APOLLO) +		return -ENODEV; +  	if (fb_get_options("dnfb", NULL))  		return -ENODEV; diff --git a/drivers/video/hpfb.c b/drivers/video/hpfb.c index 2eb4fb159084..b8ebff1e8493 100644 --- a/drivers/video/hpfb.c +++ b/drivers/video/hpfb.c @@ -382,7 +382,7 @@ int __init hpfb_init(void)  #define INTFBPADDR 0x560000  	if (!MACH_IS_HP300) -		return -ENXIO; +		return -ENODEV;  	if (fb_get_options("hpfb", NULL))  		return -ENODEV; diff --git a/drivers/video/matrox/matroxfb_base.h b/drivers/video/matrox/matroxfb_base.h index f3107ad7e545..95883236c0cd 100644 --- a/drivers/video/matrox/matroxfb_base.h +++ b/drivers/video/matrox/matroxfb_base.h @@ -200,7 +200,7 @@ static inline int mga_ioremap(unsigned long phys, unsigned long size, int flags,  		virt->vaddr = ioremap_nocache(phys, size);  	else  		virt->vaddr = ioremap(phys, size); -	return (virt->vaddr == 0); /* 0, !0... 0, error_code in future */ +	return (virt->vaddr == NULL); /* 0, !0... 0, error_code in future */  }  static inline void mga_iounmap(vaddr_t va) { diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c index 48aea39c35a5..274bc93ab7d8 100644 --- a/drivers/video/pxafb.c +++ b/drivers/video/pxafb.c @@ -355,9 +355,8 @@ static int pxafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)  	}  #ifdef CONFIG_CPU_FREQ -	pr_debug("pxafb: dma period = %d ps, clock = %d kHz\n", -		 pxafb_display_dma_period(var), -		 get_clk_frequency_khz(0)); +	pr_debug("pxafb: dma period = %d ps\n", +		 pxafb_display_dma_period(var));  #endif  	return 0; @@ -1352,7 +1351,6 @@ static struct pxafb_info * __init pxafb_init_fbinfo(struct device *dev)  	struct pxafb_info *fbi;  	void *addr;  	struct pxafb_mach_info *inf = dev->platform_data; -	struct pxafb_mode_info *mode = inf->modes;  	/* Alloc the pxafb_info and pseudo_palette in one step */  	fbi = kmalloc(sizeof(struct pxafb_info) + sizeof(u32) * 16, GFP_KERNEL); diff --git a/drivers/video/s3c2410fb.c b/drivers/video/s3c2410fb.c index 13b38cbbe4cf..f0598961c6b0 100644 --- a/drivers/video/s3c2410fb.c +++ b/drivers/video/s3c2410fb.c @@ -1,75 +1,15 @@ -/* - * linux/drivers/video/s3c2410fb.c - *	Copyright (c) Arnaud Patard, Ben Dooks +/* linux/drivers/video/s3c2410fb.c + *	Copyright (c) 2004,2005 Arnaud Patard + *	Copyright (c) 2004-2008 Ben Dooks + * + * S3C2410 LCD Framebuffer Driver   *   * This file is subject to the terms and conditions of the GNU General Public   * License.  See the file COPYING in the main directory of this archive for   * more details.   * - *	    S3C2410 LCD Controller Frame Buffer Driver - *	    based on skeletonfb.c, sa1100fb.c and others - * - * ChangeLog - * 2005-04-07: Arnaud Patard <arnaud.patard@rtp-net.org> - *      - u32 state -> pm_message_t state - *      - S3C2410_{VA,SZ}_LCD -> S3C24XX - * - * 2005-03-15: Arnaud Patard <arnaud.patard@rtp-net.org> - *      - Removed the ioctl - *      - use readl/writel instead of __raw_writel/__raw_readl - * - * 2004-12-04: Arnaud Patard <arnaud.patard@rtp-net.org> - *      - Added the possibility to set on or off the - *      debugging messages - *      - Replaced 0 and 1 by on or off when reading the - *      /sys files - * - * 2005-03-23: Ben Dooks <ben-linux@fluff.org> - *	- added non 16bpp modes - *	- updated platform information for range of x/y/bpp - *	- add code to ensure palette is written correctly - *	- add pixel clock divisor control - * - * 2004-11-11: Arnaud Patard <arnaud.patard@rtp-net.org> - *	- Removed the use of currcon as it no more exists - *	- Added LCD power sysfs interface - * - * 2004-11-03: Ben Dooks <ben-linux@fluff.org> - *	- minor cleanups - *	- add suspend/resume support - *	- s3c2410fb_setcolreg() not valid in >8bpp modes - *	- removed last CONFIG_FB_S3C2410_FIXED - *	- ensure lcd controller stopped before cleanup - *	- added sysfs interface for backlight power - *	- added mask for gpio configuration - *	- ensured IRQs disabled during GPIO configuration - *	- disable TPAL before enabling video - * - * 2004-09-20: Arnaud Patard <arnaud.patard@rtp-net.org> - *      - Suppress command line options - * - * 2004-09-15: Arnaud Patard <arnaud.patard@rtp-net.org> - *	- code cleanup - * - * 2004-09-07: Arnaud Patard <arnaud.patard@rtp-net.org> - *	- Renamed from h1940fb.c to s3c2410fb.c - *	- Add support for different devices - *	- Backlight support - * - * 2004-09-05: Herbert Pötzl <herbert@13thfloor.at> - *	- added clock (de-)allocation code - *	- added fixem fbmem option - * - * 2004-07-27: Arnaud Patard <arnaud.patard@rtp-net.org> - *	- code cleanup - *	- added a forgotten return in h1940fb_init - * - * 2004-07-19: Herbert Pötzl <herbert@13thfloor.at> - *	- code cleanup and extended debugging - * - * 2004-07-15: Arnaud Patard <arnaud.patard@rtp-net.org> - *	- First version - */ + * Driver based on skeletonfb.c, sa1100fb.c and others. +*/  #include <linux/module.h>  #include <linux/kernel.h> @@ -580,6 +520,27 @@ static int s3c2410fb_setcolreg(unsigned regno,  	return 0;  } +/* s3c2410fb_lcd_enable + * + * shutdown the lcd controller + */ +static void s3c2410fb_lcd_enable(struct s3c2410fb_info *fbi, int enable) +{ +	unsigned long flags; + +	local_irq_save(flags); + +	if (enable) +		fbi->regs.lcdcon1 |= S3C2410_LCDCON1_ENVID; +	else +		fbi->regs.lcdcon1 &= ~S3C2410_LCDCON1_ENVID; + +	writel(fbi->regs.lcdcon1, fbi->io + S3C2410_LCDCON1); + +	local_irq_restore(flags); +} + +  /*   *      s3c2410fb_blank   *	@blank_mode: the blank mode we want. @@ -589,9 +550,6 @@ static int s3c2410fb_setcolreg(unsigned regno,   *	blanking succeeded, != 0 if un-/blanking failed due to e.g. a   *	video mode which doesn't support it. Implements VESA suspend   *	and powerdown modes on hardware that supports disabling hsync/vsync: - *	blank_mode == 2: suspend vsync - *	blank_mode == 3: suspend hsync - *	blank_mode == 4: powerdown   *   *	Returns negative errno on error, or zero on success.   * @@ -605,6 +563,12 @@ static int s3c2410fb_blank(int blank_mode, struct fb_info *info)  	tpal_reg += is_s3c2412(fbi) ? S3C2412_TPAL : S3C2410_TPAL; +	if (blank_mode == FB_BLANK_POWERDOWN) { +		s3c2410fb_lcd_enable(fbi, 0); +	} else { +		s3c2410fb_lcd_enable(fbi, 1); +	} +  	if (blank_mode == FB_BLANK_UNBLANK)  		writel(0x0, tpal_reg);  	else { @@ -948,7 +912,10 @@ static int __init s3c24xxfb_probe(struct platform_device *pdev,  	}  	/* create device files */ -	device_create_file(&pdev->dev, &dev_attr_debug); +	ret = device_create_file(&pdev->dev, &dev_attr_debug); +	if (ret) { +		printk(KERN_ERR "failed to add debug attribute\n"); +	}  	printk(KERN_INFO "fb%d: %s frame buffer device\n",  		fbinfo->node, fbinfo->fix.id); @@ -983,21 +950,6 @@ static int __init s3c2412fb_probe(struct platform_device *pdev)  	return s3c24xxfb_probe(pdev, DRV_S3C2412);  } -/* s3c2410fb_stop_lcd - * - * shutdown the lcd controller - */ -static void s3c2410fb_stop_lcd(struct s3c2410fb_info *fbi) -{ -	unsigned long flags; - -	local_irq_save(flags); - -	fbi->regs.lcdcon1 &= ~S3C2410_LCDCON1_ENVID; -	writel(fbi->regs.lcdcon1, fbi->io + S3C2410_LCDCON1); - -	local_irq_restore(flags); -}  /*   *  Cleanup @@ -1010,7 +962,7 @@ static int s3c2410fb_remove(struct platform_device *pdev)  	unregister_framebuffer(fbinfo); -	s3c2410fb_stop_lcd(info); +	s3c2410fb_lcd_enable(info, 0);  	msleep(1);  	s3c2410fb_unmap_video_memory(fbinfo); @@ -1043,7 +995,7 @@ static int s3c2410fb_suspend(struct platform_device *dev, pm_message_t state)  	struct fb_info	   *fbinfo = platform_get_drvdata(dev);  	struct s3c2410fb_info *info = fbinfo->par; -	s3c2410fb_stop_lcd(info); +	s3c2410fb_lcd_enable(info, 0);  	/* sleep before disabling the clock, we need to ensure  	 * the LCD DMA engine is not going to get back on the bus @@ -1118,3 +1070,5 @@ MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>, "  	      "Ben Dooks <ben-linux@fluff.org>");  MODULE_DESCRIPTION("Framebuffer driver for the s3c2410");  MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:s3c2410-lcd"); +MODULE_ALIAS("platform:s3c2412-lcd"); diff --git a/drivers/video/s3c2410fb.h b/drivers/video/s3c2410fb.h index dbb73b95e2ef..9a6ba3e9d1b8 100644 --- a/drivers/video/s3c2410fb.h +++ b/drivers/video/s3c2410fb.h @@ -1,26 +1,14 @@  /*   * linux/drivers/video/s3c2410fb.h - * Copyright (c) Arnaud Patard + *	Copyright (c) 2004 Arnaud Patard + * + *  S3C2410 LCD Framebuffer Driver   *   * This file is subject to the terms and conditions of the GNU General Public   * License.  See the file COPYING in the main directory of this archive for   * more details.   * - *	    S3C2410 LCD Controller Frame Buffer Driver - *	    based on skeletonfb.c, sa1100fb.h - * - * ChangeLog - * - * 2004-12-04: Arnaud Patard <arnaud.patard@rtp-net.org> - *      - Moved dprintk to s3c2410fb.c - * - * 2004-09-07: Arnaud Patard <arnaud.patard@rtp-net.org> - * 	- Renamed from h1940fb.h to s3c2410fb.h - * 	- Changed h1940 to s3c2410 - * - * 2004-07-15: Arnaud Patard <arnaud.patard@rtp-net.org> - *	- First version - */ +*/  #ifndef __S3C2410FB_H  #define __S3C2410FB_H diff --git a/drivers/video/sis/sis_main.c b/drivers/video/sis/sis_main.c index 73803624c131..b9343844cd1f 100644 --- a/drivers/video/sis/sis_main.c +++ b/drivers/video/sis/sis_main.c @@ -5787,7 +5787,7 @@ sisfb_probe(struct pci_dev *pdev, const struct pci_device_id *ent)  	} else {  		struct sis_video_info *countvideo = card_list;  		ivideo->cardnumber = 1; -		while((countvideo = countvideo->next) != 0) +		while((countvideo = countvideo->next) != NULL)  			ivideo->cardnumber++;  	} diff --git a/drivers/video/sm501fb.c b/drivers/video/sm501fb.c index 742b5c656d66..15d4a768b1f6 100644 --- a/drivers/video/sm501fb.c +++ b/drivers/video/sm501fb.c @@ -663,14 +663,14 @@ static void sm501fb_panel_power(struct sm501fb_info *fbi, int to)  		sm501fb_sync_regs(fbi);  		mdelay(10); -		if (pd->flags & SM501FB_FLAG_PANEL_USE_VBIASEN) { +		if (!(pd->flags & SM501FB_FLAG_PANEL_NO_VBIASEN)) {  			control |= SM501_DC_PANEL_CONTROL_BIAS;	/* VBIASEN */  			writel(control, ctrl_reg);  			sm501fb_sync_regs(fbi);  			mdelay(10);  		} -		if (pd->flags & SM501FB_FLAG_PANEL_USE_FPEN) { +		if (!(pd->flags & SM501FB_FLAG_PANEL_NO_FPEN)) {  			control |= SM501_DC_PANEL_CONTROL_FPEN;  			writel(control, ctrl_reg);  			sm501fb_sync_regs(fbi); @@ -678,14 +678,14 @@ static void sm501fb_panel_power(struct sm501fb_info *fbi, int to)  		}  	} else if (!to && (control & SM501_DC_PANEL_CONTROL_VDD) != 0) {  		/* disable panel power */ -		if (pd->flags & SM501FB_FLAG_PANEL_USE_FPEN) { +		if (!(pd->flags & SM501FB_FLAG_PANEL_NO_FPEN)) {  			control &= ~SM501_DC_PANEL_CONTROL_FPEN;  			writel(control, ctrl_reg);  			sm501fb_sync_regs(fbi);  			mdelay(10);  		} -		if (pd->flags & SM501FB_FLAG_PANEL_USE_VBIASEN) { +		if (!(pd->flags & SM501FB_FLAG_PANEL_NO_VBIASEN)) {  			control &= ~SM501_DC_PANEL_CONTROL_BIAS;  			writel(control, ctrl_reg);  			sm501fb_sync_regs(fbi); | 
