patch-2.4.20 linux-2.4.20/drivers/video/stifb.c
Next file: linux-2.4.20/drivers/video/tridentfb.c
Previous file: linux-2.4.20/drivers/video/sticore.c
Back to the patch index
Back to the overall index
- Lines: 231
- Date:
Wed Dec 31 16:00:00 1969
- Orig file:
linux-2.4.19/drivers/video/stifb.c
- Orig date:
Fri Feb 9 11:30:23 2001
diff -urN linux-2.4.19/drivers/video/stifb.c linux-2.4.20/drivers/video/stifb.c
@@ -1,230 +0,0 @@
-/*
- * linux/drivers/video/stifb.c - Generic frame buffer driver for HP
- * workstations with STI (standard text interface) video firmware.
- *
- * Based on:
- * linux/drivers/video/artistfb.c -- Artist frame buffer driver
- *
- * Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>
- *
- * based on skeletonfb, which was
- * Created 28 Dec 1997 by Geert Uytterhoeven
- *
- * 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. */
-
-/*
- * Notes:
- *
- * This driver assumes that the video has been set up in 1bpp mode by
- * the firmware. Since HP video tends to be planar rather than
- * packed-pixel this will probably work anyway even if it isn't.
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/string.h>
-#include <linux/mm.h>
-#include <linux/tty.h>
-#include <linux/slab.h>
-#include <linux/delay.h>
-#include <linux/fb.h>
-#include <linux/init.h>
-
-#include <video/fbcon.h>
-
-#include "sti.h"
-
-static struct fb_ops stifb_ops;
-
-struct stifb_info {
- struct fb_info_gen gen;
- struct sti_struct *sti;
-};
-
-struct stifb_par {
-};
-
-static struct stifb_info fb_info;
-static struct display disp;
-
-int stifb_init(void);
-int stifb_setup(char*);
-
-extern struct display_switch fbcon_sti;
-
-/* ------------------- chipset specific functions -------------------------- */
-
-static int
-sti_encode_fix(struct fb_fix_screeninfo *fix,
- const void *par, struct fb_info_gen *info)
-{
- /* XXX: what about smem_len? */
- fix->smem_start = PTR_STI(fb_info.sti->glob_cfg)->region_ptrs[1];
- fix->type = FB_TYPE_PLANES; /* well, sort of */
-
- return 0;
-}
-
-static int
-sti_decode_var(const struct fb_var_screeninfo *var,
- void *par, struct fb_info_gen *info)
-{
- return 0;
-}
-
-static int
-sti_encode_var(struct fb_var_screeninfo *var,
- const void *par, struct fb_info_gen *info)
-{
- var->xres = PTR_STI(fb_info.sti->glob_cfg)->onscreen_x;
- var->yres = PTR_STI(fb_info.sti->glob_cfg)->onscreen_y;
- var->xres_virtual = PTR_STI(fb_info.sti->glob_cfg)->total_x;
- var->yres_virtual = PTR_STI(fb_info.sti->glob_cfg)->total_y;
- var->xoffset = var->yoffset = 0;
-
- var->bits_per_pixel = 1;
- var->grayscale = 0;
-
- return 0;
-}
-
-static void
-sti_get_par(void *par, struct fb_info_gen *info)
-{
-}
-
-static void
-sti_set_par(const void *par, struct fb_info_gen *info)
-{
-}
-
-static int
-sti_getcolreg(unsigned regno, unsigned *red, unsigned *green,
- unsigned *blue, unsigned *transp, struct fb_info *info)
-{
- return 0;
-}
-
-static int
-sti_setcolreg(unsigned regno, unsigned red, unsigned green,
- unsigned blue, unsigned transp, struct fb_info *info)
-{
- return 0;
-}
-
-static void
-sti_set_disp(const void *par, struct display *disp,
- struct fb_info_gen *info)
-{
- disp->screen_base =
- (void *) PTR_STI(fb_info.sti->glob_cfg)->region_ptrs[1];
- disp->dispsw = &fbcon_sti;
-}
-
-static void
-sti_detect(void)
-{
-}
-
-static int
-sti_blank(int blank_mode, const struct fb_info *info)
-{
- return 0;
-}
-
-/* ------------ Interfaces to hardware functions ------------ */
-
-struct fbgen_hwswitch sti_switch = {
- detect: sti_detect,
- encode_fix: sti_encode_fix,
- decode_var: sti_decode_var,
- encode_var: sti_encode_var,
- get_par: sti_get_par,
- set_par: sti_set_par,
- getcolreg: sti_getcolreg,
- setcolreg: sti_setcolreg,
- pan_display: NULL,
- blank: sti_blank,
- set_disp: sti_set_disp
-};
-
-
-/* ------------ Hardware Independent Functions ------------ */
-
- /*
- * Initialization
- */
-
-int __init
-stifb_init(void)
-{
- printk("searching for word mode STI ROMs\n");
- /* XXX: in the future this will return a list of ROMs */
- if ((fb_info.sti = sti_init_roms()) == NULL)
- return -ENXIO;
-
- fb_info.gen.info.node = -1;
- fb_info.gen.info.flags = FBINFO_FLAG_DEFAULT;
- fb_info.gen.info.fbops = &stifb_ops;
- fb_info.gen.info.disp = &disp;
- fb_info.gen.info.changevar = NULL;
- fb_info.gen.info.switch_con = &fbgen_switch;
- fb_info.gen.info.updatevar = &fbgen_update_var;
- fb_info.gen.info.blank = &fbgen_blank;
- strcpy(fb_info.gen.info.modename, "STI Generic");
- fb_info.gen.fbhw = &sti_switch;
- fb_info.gen.fbhw->detect();
-
- /* This should give a reasonable default video mode */
- fbgen_get_var(&disp.var, -1, &fb_info.gen.info);
- fbgen_do_set_var(&disp.var, 1, &fb_info.gen);
- fbgen_set_disp(-1, &fb_info.gen);
- fbgen_install_cmap(0, &fb_info.gen);
- pdc_console_die();
- if (register_framebuffer(&fb_info.gen.info) < 0)
- return -EINVAL;
-
- printk(KERN_INFO "fb%d: %s frame buffer device\n",
- GET_FB_IDX(fb_info.gen.info.node), fb_info.gen.info.modename);
-
- return 0;
-}
-
-
- /*
- * Cleanup
- */
-
-void
-stifb_cleanup(struct fb_info *info)
-{
- printk("stifb_cleanup: you're on crack\n");
-}
-
-
-int __init
-stifb_setup(char *options)
-{
- /* XXX: we should take the resolution, bpp as command line arguments. */
- return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-
-static struct fb_ops stifb_ops = {
- owner: THIS_MODULE,
- fb_open: NULL,
- fb_release: NULL,
- fb_get_fix: fbgen_get_fix,
- fb_get_var: fbgen_get_var,
- fb_set_var: fbgen_set_var,
- fb_get_cmap: fbgen_get_cmap,
- fb_set_cmap: fbgen_set_cmap,
- fb_pan_display: fbgen_pan_display,
- fb_ioctl: NULL
-};
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)