cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

controlfb.h (4556B)


      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 */
     19struct 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
     35struct preg {			/* padded register */
     36	unsigned r;
     37	char pad[12];
     38};
     39
     40struct 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
     73struct 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 */
     99struct 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 */
    112struct max_cmodes {
    113	int m[2];	/* 0: 2MB vram, 1: 4MB vram */
    114};
    115
    116/*
    117 * Video modes supported by macmodes.c
    118 */
    119static 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