#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/module.h>
-#include <linux/tty.h>
#include <linux/console.h>
#include <linux/string.h>
#include <linux/kd.h>
#include <asm/io.h>
#include <asm/vga.h>
-static spinlock_t mda_lock = SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(mda_lock);
/* description of the hardware layout */
/* current hardware state */
-static int mda_origin_loc=-1;
static int mda_cursor_loc=-1;
static int mda_cursor_size_from=-1;
static int mda_cursor_size_to=-1;
static struct vc_data *mda_display_fg = NULL;
-MODULE_PARM(mda_first_vc, "1-255i");
-MODULE_PARM(mda_last_vc, "1-255i");
+module_param(mda_first_vc, int, 0);
+module_param(mda_last_vc, int, 0);
/* MDA register values
*/
}
#endif
-static inline void mda_set_origin(unsigned int location)
-{
- if (mda_origin_loc == location)
- return;
-
- write_mda_w(location >> 1, 0x0c);
-
- mda_origin_loc = location;
-}
-
static inline void mda_set_cursor(unsigned int location)
{
if (mda_cursor_loc == location)
__setup("mdacon=", mdacon_setup);
#endif
-static int __init mda_detect(void)
+static int mda_detect(void)
{
int count=0;
u16 *p, p_save;
return 1;
}
-static void __init mda_initialize(void)
+static void mda_initialize(void)
{
write_mda_b(97, 0x00); /* horizontal total */
write_mda_b(80, 0x01); /* horizontal displayed */
outb_p(0x00, mda_gfx_port);
}
-static const char __init *mdacon_startup(void)
+static const char *mdacon_startup(void)
{
mda_num_columns = 80;
mda_num_lines = 25;
- mda_vram_base = VGA_MAP_MEM(0xb0000);
mda_vram_len = 0x01000;
+ mda_vram_base = VGA_MAP_MEM(0xb0000, mda_vram_len);
mda_index_port = 0x3b4;
mda_value_port = 0x3b5;
if (init) {
c->vc_cols = mda_num_columns;
c->vc_rows = mda_num_lines;
- } else {
- vc_resize(c->vc_num, mda_num_columns, mda_num_lines);
- }
-
+ } else
+ vc_resize(c, mda_num_columns, mda_num_lines);
+
/* make the first MDA console visible */
if (mda_display_fg == NULL)
mda_display_fg = c;
-
- MOD_INC_USE_COUNT;
}
static void mdacon_deinit(struct vc_data *c)
if (mda_display_fg == c)
mda_display_fg = NULL;
-
- MOD_DEC_USE_COUNT;
}
static inline u16 mda_convert_attr(u16 ch)
}
}
-static int mdacon_font_op(struct vc_data *c, struct console_font_op *op)
-{
- return -ENOSYS;
-}
-
static int mdacon_scrolldelta(struct vc_data *c, int lines)
{
return 0;
* The console `switch' structure for the MDA based console
*/
-const struct consw mda_con = {
+static const struct consw mda_con = {
+ .owner = THIS_MODULE,
.con_startup = mdacon_startup,
.con_init = mdacon_init,
.con_deinit = mdacon_deinit,
.con_bmove = mdacon_bmove,
.con_switch = mdacon_switch,
.con_blank = mdacon_blank,
- .con_font_op = mdacon_font_op,
.con_set_palette = mdacon_set_palette,
.con_scrolldelta = mdacon_scrolldelta,
.con_build_attr = mdacon_build_attr,
if (mda_first_vc > mda_last_vc)
return 1;
- take_over_console(&mda_con, mda_first_vc-1, mda_last_vc-1, 0);
- return 0;
+ return take_over_console(&mda_con, mda_first_vc-1, mda_last_vc-1, 0);
}
-void __exit mda_console_exit(void)
+static void __exit mda_console_exit(void)
{
give_up_console(&mda_con);
}