root/drivers/video/fbdev/controlfb.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */