1 /* $NetBSD: vidc.h,v 1.13 2006/08/18 23:25:10 bjh21 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 dependancies 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 */ 66 extern 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 152 typedef 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 165 struct 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 181 extern int vidc_fref; /* reference frequency of detected VIDC */ 182 183 extern struct vidc_state vidc_current[]; 184 185 struct 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