diff options
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/Makefile | 2 | ||||
-rw-r--r-- | drivers/video/aty128fb.c | 12 | ||||
-rw-r--r-- | drivers/video/clgenfb.c | 105 | ||||
-rw-r--r-- | drivers/video/fbcon.c | 6 | ||||
-rw-r--r-- | drivers/video/imsttfb.c | 5 | ||||
-rw-r--r-- | drivers/video/macmodes.c | 34 | ||||
-rw-r--r-- | drivers/video/matrox/matroxfb_base.c | 2 | ||||
-rw-r--r-- | drivers/video/sbusfb.c | 27 | ||||
-rw-r--r-- | drivers/video/tdfxfb.c | 4 | ||||
-rw-r--r-- | drivers/video/vesafb.c | 11 | ||||
-rw-r--r-- | drivers/video/vga.h | 66 | ||||
-rw-r--r-- | drivers/video/vga16fb.c | 37 |
12 files changed, 118 insertions, 193 deletions
diff --git a/drivers/video/Makefile b/drivers/video/Makefile index 2cebdad61..244ff5872 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile @@ -48,7 +48,7 @@ obj-$(CONFIG_FONT_ACORN_8x8) += font_acorn_8x8.o # Add fbmon.o back into obj-$(CONFIG_FB) in 2.5.x obj-$(CONFIG_FB) += fbmem.o fbcmap.o modedb.o fbcon.o fonts.o -obj-$(CONFIG_FB_COMPAT_XPMAC) += macmodes.o +obj-$(CONFIG_PPC) += macmodes.o obj-$(CONFIG_FB_ACORN) += acornfb.o obj-$(CONFIG_FB_AMIGA) += amifb.o diff --git a/drivers/video/aty128fb.c b/drivers/video/aty128fb.c index 0952d0689..e38afe23d 100644 --- a/drivers/video/aty128fb.c +++ b/drivers/video/aty128fb.c @@ -14,11 +14,10 @@ * - monitor sensing (DDC) * - virtual display * - other platform support (only ppc/x86 supported) - * - PPLL_REF_DIV & XTALIN calculation -done for x86 - * - determine MCLK from previous setting -done for x86 - * - calculate XCLK, rather than probe BIOS * - hardware cursor support * - ioctl()'s + * + * Please cc: your patches to brad@neruo.com. */ /* @@ -82,7 +81,7 @@ #endif /* default mode */ -static struct fb_var_screeninfo default_var = { +static struct fb_var_screeninfo default_var __initdata = { /* 640x480, 60 Hz, Non-Interlaced (25.175 MHz dotclock) */ 640, 480, 640, 480, 0, 0, 8, 0, {0, 8, 0}, {0, 8, 0}, {0, 8, 0}, {0, 0, 0}, @@ -118,6 +117,7 @@ static const struct aty128_chip_info aty128_pci_probe_list[] __initdata = }; /* packed BIOS settings */ +#ifndef CONFIG_PPC #pragma pack(1) typedef struct { u8 clock_chip_type; @@ -144,6 +144,7 @@ typedef struct { u32 XCLK_max_freq; } PLL_BLOCK; #pragma pack() +#endif /* !CONFIG_PPC */ /* onboard memory information */ struct aty128_meminfo { @@ -1772,8 +1773,9 @@ aty128_init(struct fb_info_aty128 *info, const char *name) info->palette[j].blue = default_blu[k]; } + /* setup the DAC the way we like it */ dac = aty_ld_le32(DAC_CNTL); - dac |= (DAC_8BIT_EN | DAC_RANGE_CNTL | DAC_BLANKING); + dac |= (DAC_8BIT_EN | DAC_RANGE_CNTL); dac |= DAC_MASK; aty_st_le32(DAC_CNTL, dac); diff --git a/drivers/video/clgenfb.c b/drivers/video/clgenfb.c index 9f05d7f03..331d97802 100644 --- a/drivers/video/clgenfb.c +++ b/drivers/video/clgenfb.c @@ -1,7 +1,7 @@ /* * drivers/video/clgenfb.c - driver for Cirrus Logic chipsets * - * Copyright 1999 Jeff Garzik <jgarzik@mandrakesoft.com> + * Copyright 1999,2000 Jeff Garzik <jgarzik@mandrakesoft.com> * * Contributors (thanks, all!) * @@ -31,9 +31,10 @@ * */ -#define CLGEN_VERSION "1.9.4.5" +#define CLGEN_VERSION "1.9.6" #include <linux/config.h> +#include <linux/version.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/errno.h> @@ -73,27 +74,6 @@ /***************************************************************** * - * compatibility with older kernel versions - * - */ - -#ifndef LINUX_VERSION_CODE -#include <linux/version.h> -#endif - -#ifndef KERNEL_VERSION -#define KERNEL_VERSION(x,y,z) (((x)<<16)+((y)<<8)+(z)) -#endif - -#ifndef PCI_DEVICE_ID_CIRRUS_5462 -#define PCI_DEVICE_ID_CIRRUS_5462 0x00d0 -#endif - - - - -/***************************************************************** - * * debugging and utility macros * */ @@ -139,8 +119,6 @@ #define MAX_NUM_BOARDS 7 - - /***************************************************************** * * chipset information @@ -161,7 +139,6 @@ typedef enum { } clgen_board_t; - /* * per-board-type information, used for enumerating and abstracting * chip-specific information @@ -311,7 +288,6 @@ static const struct { #endif /* CONFIG_PCI */ - #ifdef CONFIG_ZORRO static const struct { clgen_board_t btype; @@ -495,10 +471,6 @@ static const char *clgenfb_name = "CLgen"; int clgenfb_init (void); int clgenfb_setup (char *options); -#ifdef MODULE -static void clgenfb_cleanup (struct clgenfb_info *info); -#endif - static int clgenfb_open (struct fb_info *info, int user); static int clgenfb_release (struct fb_info *info, int user); static int clgenfb_ioctl (struct inode *inode, struct file *file, @@ -2592,7 +2564,10 @@ static void clgen_pci_unmap (struct clgenfb_info *info) iounmap (info->fbmem); #if LINUX_VERSION_CODE > KERNEL_VERSION(2,3,13) release_mem_region(info->fbmem_phys, info->size); + +#if 0 /* if system didn't claim this region, we would... */ release_mem_region(0xA0000, 65535); +#endif if (release_io_ports) release_region(0x3C0, 32); #endif @@ -2678,17 +2653,19 @@ static int __init clgen_pci_setup (struct clgenfb_info *info, if (!request_mem_region(board_addr, board_size, "clgenfb")) { pci_write_config_word (pdev, PCI_COMMAND, tmp16); - printk(KERN_ERR "clgen: cannot reserve region 0x%lu, abort\n", + printk(KERN_ERR "clgen: cannot reserve region 0x%lx, abort\n", board_addr); return -1; } +#if 0 /* if the system didn't claim this region, we would... */ if (!request_mem_region(0xA0000, 65535, "clgenfb")) { pci_write_config_word (pdev, PCI_COMMAND, tmp16); - printk(KERN_ERR "clgen: cannot reserve region 0x%lu, abort\n", + printk(KERN_ERR "clgen: cannot reserve region 0x%lx, abort\n", 0xA0000L); release_mem_region(board_addr, board_size); return -1; } +#endif if (request_region(0x3C0, 32, "clgenfb")) release_io_ports = 1; @@ -2784,7 +2761,7 @@ static int __init clgen_zorro_setup (struct clgenfb_info *info, info->board_size = board_size = z->resource.end-z->resource.start+1; if (!request_mem_region(board_addr, board_size, "clgenfb")) { - printk(KERN_ERR "clgen: cannot reserve region 0x%lu, abort\n", + printk(KERN_ERR "clgen: cannot reserve region 0x%lx, abort\n", board_addr); return -1; } @@ -2932,25 +2909,15 @@ int __init clgenfb_init(void) #if defined(CONFIG_FB_OF) int __init clgen_of_init (struct device_node *dp) { - int rc; - - DPRINTK ("ENTER\n"); - - rc = clgenfb_init (); - - DPRINTK ("EXIT, returning %d\n", rc); - - return rc; + return clgenfb_init (); } #endif /* CONFIG_FB_OF */ - /* * Cleanup (only needed for module) */ -#ifdef MODULE -static void clgenfb_cleanup (struct clgenfb_info *info) +static void __exit clgenfb_cleanup (struct clgenfb_info *info) { DPRINTK ("ENTER\n"); @@ -2967,9 +2934,6 @@ static void clgenfb_cleanup (struct clgenfb_info *info) DPRINTK ("EXIT\n"); } -#endif - - #ifndef MODULE @@ -2999,33 +2963,14 @@ int __init clgenfb_setup(char *options) { #endif - - - /* * Modularization */ -#ifdef MODULE -MODULE_AUTHOR("Copyright 1999 Jeff Garzik <jgarzik@mandrakesoft.com>"); +MODULE_AUTHOR("Copyright 1999,2000 Jeff Garzik <jgarzik@mandrakesoft.com>"); MODULE_DESCRIPTION("Accelerated FBDev driver for Cirrus Logic chips"); -int init_module (void) -{ -#if defined(CONFIG_FB_OF) -/* Nothing to do, must be called from offb */ - return 0; -#else - int i; - - DPRINTK ("ENTER\n"); - i = clgenfb_init (); - DPRINTK ("EXIT\n"); - return i; -#endif -} - -void cleanup_module (void) +static void __exit clgenfb_exit (void) { DPRINTK ("ENTER\n"); @@ -3034,7 +2979,10 @@ void cleanup_module (void) DPRINTK ("EXIT\n"); } -#endif /* MODULE */ +#ifdef MODULE +module_init(clgenfb_init); +#endif +module_exit(clgenfb_exit); /**********************************************************************/ @@ -3144,7 +3092,6 @@ static void WHDR (const struct clgenfb_info *fb_info, unsigned char val) } - /*** WSFR() - write to the "special function register" (SFR) ***/ static void WSFR (struct clgenfb_info *fb_info, unsigned char val) { @@ -3193,7 +3140,6 @@ static void WClut (struct clgenfb_info *fb_info, unsigned char regnum, unsigned } - #if 0 /*** RClut - read CLUT entry (range 0..63) ***/ static void RClut (struct clgenfb_info *fb_info, unsigned char regnum, unsigned char *red, @@ -3322,6 +3268,7 @@ static void clgen_BitBLT (caddr_t regbase, u_short curx, u_short cury, u_short d DPRINTK ("EXIT\n"); } + /******************************************************************* clgen_RectFill() @@ -3402,6 +3349,7 @@ static void clgen_RectFill (struct clgenfb_info *fb_info, DPRINTK ("EXIT\n"); } + /************************************************************************** * bestclock() - determine closest possible clock lower(?) than the * desired pixel clock @@ -3478,10 +3426,6 @@ static void bestclock (long freq, long *best, long *nom, } - - - - /* ------------------------------------------------------------------------- * * debugging functions @@ -3518,7 +3462,6 @@ void clgen_dbg_print_byte (const char *name, unsigned char val) } - /** * clgen_dbg_print_regs * @base: If using newmmio, the newmmio base address, otherwise %NULL @@ -3566,9 +3509,6 @@ void clgen_dbg_print_regs (caddr_t regbase, clgen_dbg_reg_class_t reg_class,...) } - - - /** * clgen_dump * @clgeninfo: @@ -3583,7 +3523,6 @@ void clgen_dump (void) } - /** * clgen_dbg_reg_dump * @base: If using newmmio, the newmmio base address, otherwise %NULL @@ -3685,5 +3624,5 @@ void clgen_dbg_reg_dump (caddr_t regbase) DPRINTK ("\n"); } - #endif /* CLGEN_DEBUG */ + diff --git a/drivers/video/fbcon.c b/drivers/video/fbcon.c index aedbc8b17..69a3fb5bf 100644 --- a/drivers/video/fbcon.c +++ b/drivers/video/fbcon.c @@ -229,15 +229,13 @@ static void fbcon_vbl_detect(int irq, void *dummy, struct pt_regs *fp) static void cursor_timer_handler(unsigned long dev_addr); static struct timer_list cursor_timer = { - NULL, NULL, 0, 0L, cursor_timer_handler + function: cursor_timer_handler }; static void cursor_timer_handler(unsigned long dev_addr) { fbcon_vbl_handler(0, NULL, NULL); cursor_timer.expires = jiffies+HZ/50; - cursor_timer.data = 0; - cursor_timer.next = cursor_timer.prev = NULL; add_timer(&cursor_timer); } @@ -411,8 +409,6 @@ static const char *fbcon_startup(void) if (irqres) { cursor_blink_rate = DEFAULT_CURSOR_BLINK_RATE; cursor_timer.expires = jiffies+HZ/50; - cursor_timer.data = 0; - cursor_timer.next = cursor_timer.prev = NULL; add_timer(&cursor_timer); } diff --git a/drivers/video/imsttfb.c b/drivers/video/imsttfb.c index d03d4660a..987f167d9 100644 --- a/drivers/video/imsttfb.c +++ b/drivers/video/imsttfb.c @@ -1927,9 +1927,10 @@ imsttfb_init(void) while ((pdev = pci_find_device(PCI_VENDOR_ID_IMS, PCI_ANY_ID, pdev))) { if ((pdev->class >> 16) != PCI_BASE_CLASS_DISPLAY) continue; - pci_enable_device(pdev); + if (pci_enable_device(pdev)) + continue; - addr = pdev->resource[0].start; + addr = pci_resource_start (pdev, 0); if (!addr) continue; diff --git a/drivers/video/macmodes.c b/drivers/video/macmodes.c index 98bcf32d8..f982b31cb 100644 --- a/drivers/video/macmodes.c +++ b/drivers/video/macmodes.c @@ -12,6 +12,7 @@ * more details. */ +#include <linux/config.h> #include <linux/errno.h> #include <linux/fb.h> #include <linux/string.h> @@ -188,8 +189,10 @@ static const struct monitor_map { { -1, VMODE_640_480_60 }, /* catch-all, must be last */ }; +#ifdef CONFIG_FB_COMPAT_XPMAC struct fb_info *console_fb_info = NULL; struct vc_mode display_info; + static u16 palette_red[16]; static u16 palette_green[16]; static u16 palette_blue[16]; @@ -198,20 +201,12 @@ static struct fb_cmap palette_cmap = { }; -int console_getmode(struct vc_mode *); -int console_setmode(struct vc_mode *, int); -int console_setcmap(int, unsigned char *, unsigned char *, unsigned char *); -int console_powermode(int); -int mac_var_to_vmode(const struct fb_var_screeninfo *, int *, int *); - - int console_getmode(struct vc_mode *mode) { *mode = display_info; return 0; } - int console_setmode(struct vc_mode *mode, int doit) { struct fb_var_screeninfo var; @@ -258,7 +253,6 @@ int console_setmode(struct vc_mode *mode, int doit) return 0; } - int console_setcmap(int n_entries, unsigned char *red, unsigned char *green, unsigned char *blue) { @@ -289,6 +283,17 @@ int console_setcmap(int n_entries, unsigned char *red, unsigned char *green, return 0; } +int console_powermode(int mode) +{ + if (mode == VC_POWERMODE_INQUIRY) + return 0; + if (mode < VESA_NO_BLANKING || mode > VESA_POWERDOWN) + return -EINVAL; + /* Not Supported */ + return -ENXIO; +} +#endif /* CONFIG_FB_COMPAT_XPMAC */ + /* * Convert a MacOS vmode/cmode pair to a frame buffer video mode structure @@ -363,17 +368,6 @@ int mac_vmode_to_var(int vmode, int cmode, struct fb_var_screeninfo *var) } -int console_powermode(int mode) -{ - if (mode == VC_POWERMODE_INQUIRY) - return 0; - if (mode < VESA_NO_BLANKING || mode > VESA_POWERDOWN) - return -EINVAL; - /* Not Supported */ - return -ENXIO; -} - - /* * Convert a frame buffer video mode structure to a MacOS vmode/cmode pair */ diff --git a/drivers/video/matrox/matroxfb_base.c b/drivers/video/matrox/matroxfb_base.c index ad1262c25..c9d8d3968 100644 --- a/drivers/video/matrox/matroxfb_base.c +++ b/drivers/video/matrox/matroxfb_base.c @@ -2034,7 +2034,7 @@ static int matroxfb_probe(struct pci_dev* pdev, const struct pci_device_id* dumm ACCESS_FBINFO(fastfont.size) = fastfont; ACCESS_FBINFO(cursor.state) = CM_ERASE; - ACCESS_FBINFO(cursor.timer.prev) = ACCESS_FBINFO(cursor.timer.next) = NULL; + init_timer (&ACCESS_FBINFO(cursor.timer)); ACCESS_FBINFO(cursor.timer.data) = (unsigned long)MINFO; spin_lock_init(&ACCESS_FBINFO(lock.DAC)); spin_lock_init(&ACCESS_FBINFO(lock.accel)); diff --git a/drivers/video/sbusfb.c b/drivers/video/sbusfb.c index 525a33247..38997e99b 100644 --- a/drivers/video/sbusfb.c +++ b/drivers/video/sbusfb.c @@ -131,10 +131,12 @@ static int sbusfb_open(struct fb_info *info, int user) struct fb_info_sbusfb *fb = sbusfbinfo(info); if (user) { - if (fb->open) return -EBUSY; - fb->mmaped = 0; - fb->open = 1; - fb->vtconsole = -1; + if (fb->open == 0) { + fb->mmaped = 0; + fb->open = 1; + fb->vtconsole = -1; + } + fb->open++; } else fb->consolecnt++; MOD_INC_USE_COUNT; @@ -146,15 +148,18 @@ static int sbusfb_release(struct fb_info *info, int user) struct fb_info_sbusfb *fb = sbusfbinfo(info); if (user) { - if (fb->vtconsole != -1) { - vt_cons[fb->vtconsole]->vc_mode = KD_TEXT; - if (fb->mmaped) { - fb->graphmode--; - sbusfb_clear_margin(&fb_display[fb->vtconsole], 0); + fb->open--; + if (fb->open == 0) { + if (fb->vtconsole != -1) { + vt_cons[fb->vtconsole]->vc_mode = KD_TEXT; + if (fb->mmaped) { + fb->graphmode--; + sbusfb_clear_margin(&fb_display[fb->vtconsole], 0); + } } + if (fb->reset) + fb->reset(fb); } - if (fb->reset) - fb->reset(fb); fb->open = 0; } else fb->consolecnt--; diff --git a/drivers/video/tdfxfb.c b/drivers/video/tdfxfb.c index 35dbad536..54d6165e9 100644 --- a/drivers/video/tdfxfb.c +++ b/drivers/video/tdfxfb.c @@ -2052,10 +2052,10 @@ int __init tdfxfb_init(void) { currcon = -1; if (!nohwcursor) tdfxfb_hwcursor_init(); + init_timer(&fb_info.cursor.timer); fb_info.cursor.timer.function = do_flashcursor; - fb_info.cursor.state = CM_ERASE; - fb_info.cursor.timer.prev = fb_info.cursor.timer.next=NULL; fb_info.cursor.timer.data = (unsigned long)(&fb_info); + fb_info.cursor.state = CM_ERASE; spin_lock_init(&fb_info.DAClock); strcpy(fb_info.fb_info.modename, "3Dfx "); diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c index bdd8bda70..b11655785 100644 --- a/drivers/video/vesafb.c +++ b/drivers/video/vesafb.c @@ -543,12 +543,19 @@ int __init vesafb_init(void) if (!request_mem_region(video_base, video_size, "vesafb")) { printk(KERN_ERR - "vesafb: abort, cannot reserve video memory at 0x%lu\n", + "vesafb: abort, cannot reserve video memory at 0x%lx\n", video_base); - return -1; + return -EBUSY; } video_vbase = ioremap(video_base, video_size); + if (!video_vbase) { + release_mem_region(video_base, video_size); + printk(KERN_ERR + "vesafb: abort, cannot ioremap video memory 0x%lx @ 0x%lx\n", + video_size, video_base); + return -EIO; + } printk(KERN_INFO "vesafb: framebuffer at 0x%lx, mapped to 0x%p, size %dk\n", video_base, video_vbase, video_size/1024); diff --git a/drivers/video/vga.h b/drivers/video/vga.h index cfadced52..ce33bef82 100644 --- a/drivers/video/vga.h +++ b/drivers/video/vga.h @@ -179,39 +179,39 @@ * generic VGA port read/write */ -extern inline unsigned char vga_io_r (unsigned short port) +static inline unsigned char vga_io_r (unsigned short port) { return inb (port); } -extern inline void vga_io_w (unsigned short port, unsigned char val) +static inline void vga_io_w (unsigned short port, unsigned char val) { outb (val, port); } -extern inline void vga_io_w_fast (unsigned short port, unsigned char reg, +static inline void vga_io_w_fast (unsigned short port, unsigned char reg, unsigned char val) { outw (VGA_OUT16VAL (val, reg), port); } -extern inline unsigned char vga_mm_r (caddr_t regbase, unsigned short port) +static inline unsigned char vga_mm_r (caddr_t regbase, unsigned short port) { return readb (regbase + port); } -extern inline void vga_mm_w (caddr_t regbase, unsigned short port, unsigned char val) +static inline void vga_mm_w (caddr_t regbase, unsigned short port, unsigned char val) { writeb (val, regbase + port); } -extern inline void vga_mm_w_fast (caddr_t regbase, unsigned short port, +static inline void vga_mm_w_fast (caddr_t regbase, unsigned short port, unsigned char reg, unsigned char val) { writew (VGA_OUT16VAL (val, reg), regbase + port); } -extern inline unsigned char vga_r (caddr_t regbase, unsigned short port) +static inline unsigned char vga_r (caddr_t regbase, unsigned short port) { if (regbase) return vga_mm_r (regbase, port); @@ -219,7 +219,7 @@ extern inline unsigned char vga_r (caddr_t regbase, unsigned short port) return vga_io_r (port); } -extern inline void vga_w (caddr_t regbase, unsigned short port, unsigned char val) +static inline void vga_w (caddr_t regbase, unsigned short port, unsigned char val) { if (regbase) vga_mm_w (regbase, port, val); @@ -228,7 +228,7 @@ extern inline void vga_w (caddr_t regbase, unsigned short port, unsigned char va } -extern inline void vga_w_fast (caddr_t regbase, unsigned short port, +static inline void vga_w_fast (caddr_t regbase, unsigned short port, unsigned char reg, unsigned char val) { if (regbase) @@ -242,13 +242,13 @@ extern inline void vga_w_fast (caddr_t regbase, unsigned short port, * VGA CRTC register read/write */ -extern inline unsigned char vga_rcrt (caddr_t regbase, unsigned char reg) +static inline unsigned char vga_rcrt (caddr_t regbase, unsigned char reg) { vga_w (regbase, VGA_CRT_IC, reg); return vga_r (regbase, VGA_CRT_DC); } -extern inline void vga_wcrt (caddr_t regbase, unsigned char reg, unsigned char val) +static inline void vga_wcrt (caddr_t regbase, unsigned char reg, unsigned char val) { #ifdef VGA_OUTW_WRITE vga_w_fast (regbase, VGA_CRT_IC, reg, val); @@ -258,13 +258,13 @@ extern inline void vga_wcrt (caddr_t regbase, unsigned char reg, unsigned char v #endif /* VGA_OUTW_WRITE */ } -extern inline unsigned char vga_io_rcrt (unsigned char reg) +static inline unsigned char vga_io_rcrt (unsigned char reg) { vga_io_w (VGA_CRT_IC, reg); return vga_io_r (VGA_CRT_DC); } -extern inline void vga_io_wcrt (unsigned char reg, unsigned char val) +static inline void vga_io_wcrt (unsigned char reg, unsigned char val) { #ifdef VGA_OUTW_WRITE vga_io_w_fast (VGA_CRT_IC, reg, val); @@ -274,13 +274,13 @@ extern inline void vga_io_wcrt (unsigned char reg, unsigned char val) #endif /* VGA_OUTW_WRITE */ } -extern inline unsigned char vga_mm_rcrt (caddr_t regbase, unsigned char reg) +static inline unsigned char vga_mm_rcrt (caddr_t regbase, unsigned char reg) { vga_mm_w (regbase, VGA_CRT_IC, reg); return vga_mm_r (regbase, VGA_CRT_DC); } -extern inline void vga_mm_wcrt (caddr_t regbase, unsigned char reg, unsigned char val) +static inline void vga_mm_wcrt (caddr_t regbase, unsigned char reg, unsigned char val) { #ifdef VGA_OUTW_WRITE vga_mm_w_fast (regbase, VGA_CRT_IC, reg, val); @@ -295,13 +295,13 @@ extern inline void vga_mm_wcrt (caddr_t regbase, unsigned char reg, unsigned cha * VGA sequencer register read/write */ -extern inline unsigned char vga_rseq (caddr_t regbase, unsigned char reg) +static inline unsigned char vga_rseq (caddr_t regbase, unsigned char reg) { vga_w (regbase, VGA_SEQ_I, reg); return vga_r (regbase, VGA_SEQ_D); } -extern inline void vga_wseq (caddr_t regbase, unsigned char reg, unsigned char val) +static inline void vga_wseq (caddr_t regbase, unsigned char reg, unsigned char val) { #ifdef VGA_OUTW_WRITE vga_w_fast (regbase, VGA_SEQ_I, reg, val); @@ -311,13 +311,13 @@ extern inline void vga_wseq (caddr_t regbase, unsigned char reg, unsigned char v #endif /* VGA_OUTW_WRITE */ } -extern inline unsigned char vga_io_rseq (unsigned char reg) +static inline unsigned char vga_io_rseq (unsigned char reg) { vga_io_w (VGA_SEQ_I, reg); return vga_io_r (VGA_SEQ_D); } -extern inline void vga_io_wseq (unsigned char reg, unsigned char val) +static inline void vga_io_wseq (unsigned char reg, unsigned char val) { #ifdef VGA_OUTW_WRITE vga_io_w_fast (VGA_SEQ_I, reg, val); @@ -327,13 +327,13 @@ extern inline void vga_io_wseq (unsigned char reg, unsigned char val) #endif /* VGA_OUTW_WRITE */ } -extern inline unsigned char vga_mm_rseq (caddr_t regbase, unsigned char reg) +static inline unsigned char vga_mm_rseq (caddr_t regbase, unsigned char reg) { vga_mm_w (regbase, VGA_SEQ_I, reg); return vga_mm_r (regbase, VGA_SEQ_D); } -extern inline void vga_mm_wseq (caddr_t regbase, unsigned char reg, unsigned char val) +static inline void vga_mm_wseq (caddr_t regbase, unsigned char reg, unsigned char val) { #ifdef VGA_OUTW_WRITE vga_mm_w_fast (regbase, VGA_SEQ_I, reg, val); @@ -349,13 +349,13 @@ extern inline void vga_mm_wseq (caddr_t regbase, unsigned char reg, unsigned cha * VGA graphics controller register read/write */ -extern inline unsigned char vga_rgfx (caddr_t regbase, unsigned char reg) +static inline unsigned char vga_rgfx (caddr_t regbase, unsigned char reg) { vga_w (regbase, VGA_GFX_I, reg); return vga_r (regbase, VGA_GFX_D); } -extern inline void vga_wgfx (caddr_t regbase, unsigned char reg, unsigned char val) +static inline void vga_wgfx (caddr_t regbase, unsigned char reg, unsigned char val) { #ifdef VGA_OUTW_WRITE vga_w_fast (regbase, VGA_GFX_I, reg, val); @@ -365,13 +365,13 @@ extern inline void vga_wgfx (caddr_t regbase, unsigned char reg, unsigned char v #endif /* VGA_OUTW_WRITE */ } -extern inline unsigned char vga_io_rgfx (unsigned char reg) +static inline unsigned char vga_io_rgfx (unsigned char reg) { vga_io_w (VGA_GFX_I, reg); return vga_io_r (VGA_GFX_D); } -extern inline void vga_io_wgfx (unsigned char reg, unsigned char val) +static inline void vga_io_wgfx (unsigned char reg, unsigned char val) { #ifdef VGA_OUTW_WRITE vga_io_w_fast (VGA_GFX_I, reg, val); @@ -381,13 +381,13 @@ extern inline void vga_io_wgfx (unsigned char reg, unsigned char val) #endif /* VGA_OUTW_WRITE */ } -extern inline unsigned char vga_mm_rgfx (caddr_t regbase, unsigned char reg) +static inline unsigned char vga_mm_rgfx (caddr_t regbase, unsigned char reg) { vga_mm_w (regbase, VGA_GFX_I, reg); return vga_mm_r (regbase, VGA_GFX_D); } -extern inline void vga_mm_wgfx (caddr_t regbase, unsigned char reg, unsigned char val) +static inline void vga_mm_wgfx (caddr_t regbase, unsigned char reg, unsigned char val) { #ifdef VGA_OUTW_WRITE vga_mm_w_fast (regbase, VGA_GFX_I, reg, val); @@ -402,37 +402,37 @@ extern inline void vga_mm_wgfx (caddr_t regbase, unsigned char reg, unsigned cha * VGA attribute controller register read/write */ -extern inline unsigned char vga_rattr (caddr_t regbase, unsigned char reg) +static inline unsigned char vga_rattr (caddr_t regbase, unsigned char reg) { vga_w (regbase, VGA_ATT_IW, reg); return vga_r (regbase, VGA_ATT_R); } -extern inline void vga_wattr (caddr_t regbase, unsigned char reg, unsigned char val) +static inline void vga_wattr (caddr_t regbase, unsigned char reg, unsigned char val) { vga_w (regbase, VGA_ATT_IW, reg); vga_w (regbase, VGA_ATT_W, val); } -extern inline unsigned char vga_io_rattr (unsigned char reg) +static inline unsigned char vga_io_rattr (unsigned char reg) { vga_io_w (VGA_ATT_IW, reg); return vga_io_r (VGA_ATT_R); } -extern inline void vga_io_wattr (unsigned char reg, unsigned char val) +static inline void vga_io_wattr (unsigned char reg, unsigned char val) { vga_io_w (VGA_ATT_IW, reg); vga_io_w (VGA_ATT_W, val); } -extern inline unsigned char vga_mm_rattr (caddr_t regbase, unsigned char reg) +static inline unsigned char vga_mm_rattr (caddr_t regbase, unsigned char reg) { vga_mm_w (regbase, VGA_ATT_IW, reg); return vga_mm_r (regbase, VGA_ATT_R); } -extern inline void vga_mm_wattr (caddr_t regbase, unsigned char reg, unsigned char val) +static inline void vga_mm_wattr (caddr_t regbase, unsigned char reg, unsigned char val) { vga_mm_w (regbase, VGA_ATT_IW, reg); vga_mm_w (regbase, VGA_ATT_W, val); diff --git a/drivers/video/vga16fb.c b/drivers/video/vga16fb.c index b88adcdc5..43866a338 100644 --- a/drivers/video/vga16fb.c +++ b/drivers/video/vga16fb.c @@ -104,8 +104,6 @@ static struct { u_short blue, green, red, pad; } palette[256]; static int currcon = 0; -static int release_io_ports = 0; - /* --------------------------------------------------------------------- */ /* @@ -918,16 +916,13 @@ static void vga16fb_blank(int blank, struct fb_info *fb_info) } } -int __init vga16_init(void) +int __init vga16fb_init(void) { int i,j; printk(KERN_DEBUG "vga16fb: initializing\n"); - if (!request_mem_region(VGA_FB_PHYS, VGA_FB_PHYS_LEN, "vga16fb")) { - printk (KERN_ERR "vga16fb: unable to reserve VGA memory, exiting\n"); - return -1; - } + /* XXX share VGA_FB_PHYS region with vgacon */ vga16fb.video_vbase = ioremap(VGA_FB_PHYS, VGA_FB_PHYS_LEN); printk(KERN_INFO "vga16fb: mapped to 0x%p\n", vga16fb.video_vbase); @@ -948,10 +943,7 @@ int __init vga16_init(void) palette[i].blue = default_blu[j]; } - /* note - does not cause failure, b/c vgacon probably still owns this - * region (FIXME) */ - if (request_region(0x3C0, 32, "vga16fb")) - release_io_ports = 1; + /* XXX share VGA I/O region with vgacon and others */ disp.var = vga16fb_defined; @@ -976,29 +968,18 @@ int __init vga16_init(void) return 0; } -#ifndef MODULE -int __init vga16fb_init(void) -{ - return vga16_init(); -} - -#else /* MODULE */ - -int init_module(void) -{ - return vga16_init(); -} - -void cleanup_module(void) +static void __exit vga16fb_exit(void) { unregister_framebuffer(&vga16fb.fb_info); iounmap(vga16fb.video_vbase); - release_mem_region(VGA_FB_PHYS, VGA_FB_PHYS_LEN); - if (release_io_ports) - release_region(0x3c0, 32); + /* XXX unshare VGA regions */ } +#ifdef MODULE +module_init(vga16fb_init); #endif +module_exit(vga16fb_exit); + /* * Overrides for Emacs so that we follow Linus's tabbing style. |