summaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/Makefile2
-rw-r--r--drivers/video/aty128fb.c12
-rw-r--r--drivers/video/clgenfb.c105
-rw-r--r--drivers/video/fbcon.c6
-rw-r--r--drivers/video/imsttfb.c5
-rw-r--r--drivers/video/macmodes.c34
-rw-r--r--drivers/video/matrox/matroxfb_base.c2
-rw-r--r--drivers/video/sbusfb.c27
-rw-r--r--drivers/video/tdfxfb.c4
-rw-r--r--drivers/video/vesafb.c11
-rw-r--r--drivers/video/vga.h66
-rw-r--r--drivers/video/vga16fb.c37
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.