Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / video / fbdev / controlfb.h
diff --git a/kernel/drivers/video/fbdev/controlfb.h b/kernel/drivers/video/fbdev/controlfb.h
new file mode 100644 (file)
index 0000000..6026c60
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+ * controlfb_hw.h: Constants of all sorts for controlfb
+ *
+ * Copyright (C) 1998 Daniel Jacobowitz <dan@debian.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ *
+ * Based on an awful lot of code, including:
+ *
+ * control.c: Console support for PowerMac "control" display adaptor.
+ * Copyright (C) 1996 Paul Mackerras.
+ *
+ * The so far unpublished platinumfb.c
+ * Copyright (C) 1998 Jon Howell
+ */
+
+/*
+ * Structure of the registers for the RADACAL colormap device.
+ */
+struct cmap_regs {
+       unsigned char addr;     /* index for both cmap and misc registers */
+       char pad1[15];
+       unsigned char crsr;     /* cursor palette */
+       char pad2[15];
+       unsigned char dat;      /* RADACAL misc register data */
+       char pad3[15];
+       unsigned char lut;      /* cmap data */
+       char pad4[15];
+};
+
+/*
+ * Structure of the registers for the "control" display adaptor.
+ */
+#define PAD(x) char x[12]
+
+struct preg {                  /* padded register */
+       unsigned r;
+       char pad[12];
+};
+
+struct control_regs {
+       struct preg vcount;     /* vertical counter */
+       /* Vertical parameters are in units of 1/2 scan line */
+       struct preg vswin;      /* between vsblank and vssync */
+       struct preg vsblank;    /* vert start blank */
+       struct preg veblank;    /* vert end blank (display start) */
+       struct preg vewin;      /* between vesync and veblank */
+       struct preg vesync;     /* vert end sync */
+       struct preg vssync;     /* vert start sync */
+       struct preg vperiod;    /* vert period */
+       struct preg piped;      /* pipe delay hardware cursor */
+       /* Horizontal params are in units of 2 pixels */
+       struct preg hperiod;    /* horiz period - 2 */
+       struct preg hsblank;    /* horiz start blank */
+       struct preg heblank;    /* horiz end blank */
+       struct preg hesync;     /* horiz end sync */
+       struct preg hssync;     /* horiz start sync */
+       struct preg heq;        /* half horiz sync len */
+       struct preg hlfln;      /* half horiz period */
+       struct preg hserr;      /* horiz period - horiz sync len */
+       struct preg cnttst;
+       struct preg ctrl;       /* display control */
+       struct preg start_addr; /* start address: 5 lsbs zero */
+       struct preg pitch;      /* addrs diff between scan lines */
+       struct preg mon_sense;  /* monitor sense bits */
+       struct preg vram_attr;  /* enable vram banks */
+       struct preg mode;
+       struct preg rfrcnt;     /* refresh count */
+       struct preg intr_ena;   /* interrupt enable */
+       struct preg intr_stat;  /* interrupt status */
+       struct preg res[5];
+};
+
+struct control_regints {
+       /* Vertical parameters are in units of 1/2 scan line */
+       unsigned vswin; /* between vsblank and vssync */
+       unsigned vsblank;       /* vert start blank */
+       unsigned veblank;       /* vert end blank (display start) */
+       unsigned vewin; /* between vesync and veblank */
+       unsigned vesync;        /* vert end sync */
+       unsigned vssync;        /* vert start sync */
+       unsigned vperiod;       /* vert period */
+       unsigned piped;         /* pipe delay hardware cursor */
+       /* Horizontal params are in units of 2 pixels */
+       /* Except, apparently, for hres > 1024 (or == 1280?) */
+       unsigned hperiod;       /* horiz period - 2 */
+       unsigned hsblank;       /* horiz start blank */
+       unsigned heblank;       /* horiz end blank */
+       unsigned hesync;        /* horiz end sync */
+       unsigned hssync;        /* horiz start sync */
+       unsigned heq;           /* half horiz sync len */
+       unsigned hlfln;         /* half horiz period */
+       unsigned hserr;         /* horiz period - horiz sync len */
+};
+       
+/*
+ * Dot clock rate is
+ * 3.9064MHz * 2**clock_params[2] * clock_params[1] / clock_params[0].
+ */
+struct control_regvals {
+       unsigned regs[16];              /* for vswin .. hserr */
+       unsigned char mode;
+       unsigned char radacal_ctrl;
+       unsigned char clock_params[3];
+};
+
+#define CTRLFB_OFF 16  /* position of pixel 0 in frame buffer */
+
+
+/*
+ * Best cmode supported by control
+ */
+struct max_cmodes {
+       int m[2];       /* 0: 2MB vram, 1: 4MB vram */
+};
+
+/*
+ * Video modes supported by macmodes.c
+ */
+static struct max_cmodes control_mac_modes[] = {
+       {{-1,-1}},      /* 512x384, 60Hz interlaced (NTSC) */
+       {{-1,-1}},      /* 512x384, 60Hz */
+       {{-1,-1}},      /* 640x480, 50Hz interlaced (PAL) */
+       {{-1,-1}},      /* 640x480, 60Hz interlaced (NTSC) */
+       {{ 2, 2}},      /* 640x480, 60Hz (VGA) */
+       {{ 2, 2}},      /* 640x480, 67Hz */
+       {{-1,-1}},      /* 640x870, 75Hz (portrait) */
+       {{-1,-1}},      /* 768x576, 50Hz (PAL full frame) */
+       {{ 2, 2}},      /* 800x600, 56Hz */
+       {{ 2, 2}},      /* 800x600, 60Hz */
+       {{ 2, 2}},      /* 800x600, 72Hz */
+       {{ 2, 2}},      /* 800x600, 75Hz */
+       {{ 1, 2}},      /* 832x624, 75Hz */
+       {{ 1, 2}},      /* 1024x768, 60Hz */
+       {{ 1, 2}},      /* 1024x768, 70Hz (or 72Hz?) */
+       {{ 1, 2}},      /* 1024x768, 75Hz (VESA) */
+       {{ 1, 2}},      /* 1024x768, 75Hz */
+       {{ 1, 2}},      /* 1152x870, 75Hz */
+       {{ 0, 1}},      /* 1280x960, 75Hz */
+       {{ 0, 1}},      /* 1280x1024, 75Hz */
+};
+