brintos

brintos / linux-shallow public Read only

0
0
Text · 4.4 KiB · e779cca Raw
144 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * controlfb_hw.h: Constants of all sorts for controlfb4 *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.c13 * Copyright (C) 1998 Jon Howell14 */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 is97 * 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 control111 */112struct max_cmodes {113	int m[2];	/* 0: 2MB vram, 1: 4MB vram */114};115 116/*117 * Video modes supported by macmodes.c118 */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 144