1/* $NetBSD: vidc.h,v 1.14 2024/02/05 21:39:52 andvar Exp $ */ 2 3/* 4 * Copyright (c) 1994,1995 Mark Brinicombe. 5 * Copyright (c) 1994,1995 Brini. 6 * All rights reserved. 7 * 8 * This code is derived from software written for Brini by Mark Brinicombe 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 3. All advertising materials mentioning features or use of this software 19 * must display the following acknowledgement: 20 * This product includes software developed by Brini. 21 * 4. The name of the company nor the name of the author may be used to 22 * endorse or promote products derived from this software without specific 23 * prior written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED 26 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 27 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 28 * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 29 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 30 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35 * SUCH DAMAGE. 36 * 37 * RiscBSD kernel project 38 * 39 * vidc.h 40 * 41 * VIDC20 registers 42 * 43 * Created : 18/09/94 44 * 45 * Based on kate/display/vidc.h 46 */ 47 48/* 49 * This should be private to the vidc directory but there are still dependencies 50 * between the vidc and the riscpc virtual console (struct vidc_mode) that 51 * means this file must be exported to userland. 52 * With the import of the new console code this will go away. 53 */ 54 55#ifndef _ARM32_VIDC_H_ 56#define _ARM32_VIDC_H_ 57 58#include <dev/videomode/videomode.h> 59#include <machine/vidc_machdep.h> 60 61/* 62 * Current VIDC base set in initarm() 63 * since the current code isnt busspaceified, we need to set it manually ... 64 * this is to allow the VIDC to be moved. 65 */ 66extern int *vidc_base; 67 68 69/* Video registers */ 70 71#define VIDC_PALETTE 0x00000000 72#define VIDC_PALREG 0x10000000 73 74#define VIDC_BCOL 0x40000000 75#define VIDC_CP0 0x40000000 76#define VIDC_CP1 0x50000000 77#define VIDC_CP2 0x60000000 78#define VIDC_CP3 0x70000000 79 80#define VIDC_HCR 0x80000000 81#define VIDC_HSWR 0x81000000 82#define VIDC_HBSR 0x82000000 83#define VIDC_HDSR 0x83000000 84#define VIDC_HDER 0x84000000 85#define VIDC_HBER 0x85000000 86#define VIDC_HCSR 0x86000000 87#define VIDC_HIR 0x87000000 88 89#define VIDC_VCR 0x90000000 90#define VIDC_VSWR 0x91000000 91#define VIDC_VBSR 0x92000000 92#define VIDC_VDSR 0x93000000 93#define VIDC_VDER 0x94000000 94#define VIDC_VBER 0x95000000 95#define VIDC_VCSR 0x96000000 96#define VIDC_VCER 0x97000000 97 98#define VIDC_EREG 0xc0000000 99#define VIDC_FSYNREG 0xd0000000 100#define VIDC_CONREG 0xe0000000 101#define VIDC_DCTL 0xf0000000 102 103/* VIDC palette macros */ 104 105#define VIDC_RED(r) (r) 106#define VIDC_GREEN(g) ((g) << 8) 107#define VIDC_BLUE(b) ((b) << 16) 108#define VIDC_COL(r, g, b) (VIDC_RED(r) | VIDC_GREEN(g) | VIDC_BLUE(b)) 109 110 111/* Sound registers */ 112 113#define VIDC_SIR0 0xa0000000 114#define VIDC_SIR1 0xa1000000 115#define VIDC_SIR2 0xa2000000 116#define VIDC_SIR3 0xa3000000 117#define VIDC_SIR4 0xa4000000 118#define VIDC_SIR5 0xa5000000 119#define VIDC_SIR6 0xa6000000 120#define VIDC_SIR7 0xa7000000 121 122#define VIDC_SFR 0xb0000000 123#define VIDC_SCR 0xb1000000 124 125#define SIR_LEFT_100 0x01 126#define SIR_LEFT_83 0x02 127#define SIR_LEFT_67 0x03 128#define SIR_CENTRE 0x04 129#define SIR_RIGHT_67 0x05 130#define SIR_RIGHT_83 0x06 131#define SIR_RIGHT_100 0x07 132 133#define SCR_SCLR 0x08 134#define SCR_SDAC 0x04 135#define SCR_SERIAL 0x02 136#define SCR_CLKSEL 0x01 137 138/* Video display addresses */ 139 140/* Where the display memory is mapped */ 141/* note that there's not normally more than 2MB */ 142#define VMEM_VBASE 0xf7000000 143 144/* Where the VRAM will be found */ 145 146#define VRAM_BASE 0x02000000 147 148#ifndef _LOCORE 149 150/* Video memory descriptor */ 151 152typedef struct 153 { 154 u_int vidm_vbase; /* virtual base of video memory */ 155 u_int vidm_pbase; /* physical base of video memory */ 156 u_int vidm_size; /* video memory size */ 157 int vidm_type; /* video memory type */ 158 } videomemory_t; 159 160#define VIDEOMEM_TYPE_VRAM 0x01 161#define VIDEOMEM_TYPE_DRAM 0x02 162 163/* Structures and prototypes for vidc handling functions */ 164 165struct vidc_state { 166 int palette[256]; 167 int palreg; 168 int bcol; 169 int cp1; 170 int cp2; 171 int cp3; 172 int hcr, hswr, hbsr, hdsr, hder, hber, hcsr; 173 int hir; 174 int vcr, vswr, vbsr, vdsr, vder, vber, vcsr, vcer; 175 int ereg; 176 int fsynreg; 177 int conreg; 178 int dctl; 179}; 180 181extern int vidc_fref; /* reference frequency of detected VIDC */ 182 183extern struct vidc_state vidc_current[]; 184 185struct vidc_mode { 186 struct videomode timings; 187 int log2_bpp; 188}; 189 190#endif /* !_LOCORE */ 191 192#endif /* !_ARM32_VIDC_H */ 193 194/* End of vidc.h */ 195 196