linux/drivers/video/controlfb.h
<<
>>
Prefs
   1/*
   2 * controlfb_hw.h: Constants of all sorts for controlfb
   3 *
   4 * Copyright (C) 1998 Daniel Jacobowitz <dan@debian.org>
   5 *
   6 * This program is free software; you can redistribute it and/or
   7 * modify it under the terms of the GNU General Public License
   8 * as published by the Free Software Foundation; either version
   9 * 2 of the License, or (at your option) any later version.
  10 *
  11 * Based on an awful lot of code, including:
  12 *
  13 * control.c: Console support for PowerMac "control" display adaptor.
  14 * Copyright (C) 1996 Paul Mackerras.
  15 *
  16 * The so far unpublished platinumfb.c
  17 * Copyright (C) 1998 Jon Howell
  18 */
  19
  20/*
  21 * Structure of the registers for the RADACAL colormap device.
  22 */
  23struct cmap_regs {
  24        unsigned char addr;     /* index for both cmap and misc registers */
  25        char pad1[15];
  26        unsigned char crsr;     /* cursor palette */
  27        char pad2[15];
  28        unsigned char dat;      /* RADACAL misc register data */
  29        char pad3[15];
  30        unsigned char lut;      /* cmap data */
  31        char pad4[15];
  32};
  33
  34/*
  35 * Structure of the registers for the "control" display adaptor.
  36 */
  37#define PAD(x)  char x[12]
  38
  39struct preg {                   /* padded register */
  40        unsigned r;
  41        char pad[12];
  42};
  43
  44struct control_regs {
  45        struct preg vcount;     /* vertical counter */
  46        /* Vertical parameters are in units of 1/2 scan line */
  47        struct preg vswin;      /* between vsblank and vssync */
  48        struct preg vsblank;    /* vert start blank */
  49        struct preg veblank;    /* vert end blank (display start) */
  50        struct preg vewin;      /* between vesync and veblank */
  51        struct preg vesync;     /* vert end sync */
  52        struct preg vssync;     /* vert start sync */
  53        struct preg vperiod;    /* vert period */
  54        struct preg piped;      /* pipe delay hardware cursor */
  55        /* Horizontal params are in units of 2 pixels */
  56        struct preg hperiod;    /* horiz period - 2 */
  57        struct preg hsblank;    /* horiz start blank */
  58        struct preg heblank;    /* horiz end blank */
  59        struct preg hesync;     /* horiz end sync */
  60        struct preg hssync;     /* horiz start sync */
  61        struct preg heq;        /* half horiz sync len */
  62        struct preg hlfln;      /* half horiz period */
  63        struct preg hserr;      /* horiz period - horiz sync len */
  64        struct preg cnttst;
  65        struct preg ctrl;       /* display control */
  66        struct preg start_addr; /* start address: 5 lsbs zero */
  67        struct preg pitch;      /* addrs diff between scan lines */
  68        struct preg mon_sense;  /* monitor sense bits */
  69        struct preg vram_attr;  /* enable vram banks */
  70        struct preg mode;
  71        struct preg rfrcnt;     /* refresh count */
  72        struct preg intr_ena;   /* interrupt enable */
  73        struct preg intr_stat;  /* interrupt status */
  74        struct preg res[5];
  75};
  76
  77struct control_regints {
  78        /* Vertical parameters are in units of 1/2 scan line */
  79        unsigned vswin; /* between vsblank and vssync */
  80        unsigned vsblank;       /* vert start blank */
  81        unsigned veblank;       /* vert end blank (display start) */
  82        unsigned vewin; /* between vesync and veblank */
  83        unsigned vesync;        /* vert end sync */
  84        unsigned vssync;        /* vert start sync */
  85        unsigned vperiod;       /* vert period */
  86        unsigned piped;         /* pipe delay hardware cursor */
  87        /* Horizontal params are in units of 2 pixels */
  88        /* Except, apparently, for hres > 1024 (or == 1280?) */
  89        unsigned hperiod;       /* horiz period - 2 */
  90        unsigned hsblank;       /* horiz start blank */
  91        unsigned heblank;       /* horiz end blank */
  92        unsigned hesync;        /* horiz end sync */
  93        unsigned hssync;        /* horiz start sync */
  94        unsigned heq;           /* half horiz sync len */
  95        unsigned hlfln;         /* half horiz period */
  96        unsigned hserr;         /* horiz period - horiz sync len */
  97};
  98        
  99/*
 100 * Dot clock rate is
 101 * 3.9064MHz * 2**clock_params[2] * clock_params[1] / clock_params[0].
 102 */
 103struct control_regvals {
 104        unsigned regs[16];              /* for vswin .. hserr */
 105        unsigned char mode;
 106        unsigned char radacal_ctrl;
 107        unsigned char clock_params[3];
 108};
 109
 110#define CTRLFB_OFF 16   /* position of pixel 0 in frame buffer */
 111
 112
 113/*
 114 * Best cmode supported by control
 115 */
 116struct max_cmodes {
 117        int m[2];       /* 0: 2MB vram, 1: 4MB vram */
 118};
 119
 120/*
 121 * Video modes supported by macmodes.c
 122 */
 123static struct max_cmodes control_mac_modes[] = {
 124        {{-1,-1}},      /* 512x384, 60Hz interlaced (NTSC) */
 125        {{-1,-1}},      /* 512x384, 60Hz */
 126        {{-1,-1}},      /* 640x480, 50Hz interlaced (PAL) */
 127        {{-1,-1}},      /* 640x480, 60Hz interlaced (NTSC) */
 128        {{ 2, 2}},      /* 640x480, 60Hz (VGA) */
 129        {{ 2, 2}},      /* 640x480, 67Hz */
 130        {{-1,-1}},      /* 640x870, 75Hz (portrait) */
 131        {{-1,-1}},      /* 768x576, 50Hz (PAL full frame) */
 132        {{ 2, 2}},      /* 800x600, 56Hz */
 133        {{ 2, 2}},      /* 800x600, 60Hz */
 134        {{ 2, 2}},      /* 800x600, 72Hz */
 135        {{ 2, 2}},      /* 800x600, 75Hz */
 136        {{ 1, 2}},      /* 832x624, 75Hz */
 137        {{ 1, 2}},      /* 1024x768, 60Hz */
 138        {{ 1, 2}},      /* 1024x768, 70Hz (or 72Hz?) */
 139        {{ 1, 2}},      /* 1024x768, 75Hz (VESA) */
 140        {{ 1, 2}},      /* 1024x768, 75Hz */
 141        {{ 1, 2}},      /* 1152x870, 75Hz */
 142        {{ 0, 1}},      /* 1280x960, 75Hz */
 143        {{ 0, 1}},      /* 1280x1024, 75Hz */
 144};
 145
 146