annotate vidix/drivers/savage_vid.c @ 15533:ddf15d233d58

Do not switch to audio tracks whose codec private data differs from the main audio track's as this will most likely result in messed up audio output. Patch by Michael Behrisch <list () behrisch ! de>
author mosu
date Sat, 21 May 2005 06:50:08 +0000
parents 54b6720658f8
children 934380353fd6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14203
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1 /*
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
2 Driver for S3 Savage Series
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
3
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
4 Copyright (C) 2004 by Reza Jelveh
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
5
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
6 Based on the X11 driver and nvidia vid
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
7
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
8 Thanks to Alex Deucher for Support
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
9
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
10 This program is free software; you can redistribute it and/or modify
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
11 it under the terms of the GNU General Public License as published by
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
12 the Free Software Foundation; either version 2 of the License, or
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
13 (at your option) any later version.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
14
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
15 This program is distributed in the hope that it will be useful,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
18 GNU General Public License for more details.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
19
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
20 You should have received a copy of the GNU General Public License
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
21 along with this program; if not, write to the Free Software
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
22 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
23
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
24 Changes:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
25 2004-11-09
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
26 Initial version
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
27
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
28 To Do:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
29
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
30 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
31
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
32
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
33 #include <errno.h>
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
34 #include <stdio.h>
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
35 #include <stdlib.h>
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
36 #include <string.h>
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
37 #include <inttypes.h>
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
38 #include <unistd.h>
14885
54b6720658f8 missing #include
rathann
parents: 14215
diff changeset
39 #include <math.h>
14203
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
40
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
41 #include "../vidix.h"
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
42 #include "../fourcc.h"
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
43 #include "../../libdha/libdha.h"
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
44 #include "../../libdha/pci_ids.h"
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
45 #include "../../libdha/pci_names.h"
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
46 #include "../../config.h"
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
47
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
48 #include "savage_regs.h"
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
49
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
50
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
51 #define VF_STREAMS_ON 0x0001
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
52 #define BASE_PAD 0xf
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
53 #define FRAMEBUFFER_SIZE 1024*2000*4
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
54 /**************************************
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
55 S3 streams processor
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
56 **************************************/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
57
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
58 #define EXT_MISC_CTRL2 0x67
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
59
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
60 /* New streams */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
61
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
62 /* CR67[2] = 1 : enable stream 1 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
63 #define ENABLE_STREAM1 0x04
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
64 /* CR67[1] = 1 : enable stream 2 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
65 #define ENABLE_STREAM2 0x02
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
66 /* mask to clear CR67[2,1] */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
67 #define NO_STREAMS 0xF9
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
68 /* CR67[3] = 1 : Mem-mapped regs */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
69 #define USE_MM_FOR_PRI_STREAM 0x08
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
70
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
71 #define HDM_SHIFT 16
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
72 #define HDSCALE_4 (2 << HDM_SHIFT)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
73 #define HDSCALE_8 (3 << HDM_SHIFT)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
74 #define HDSCALE_16 (4 << HDM_SHIFT)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
75 #define HDSCALE_32 (5 << HDM_SHIFT)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
76 #define HDSCALE_64 (6 << HDM_SHIFT)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
77
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
78 /* Old Streams */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
79
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
80 #define ENABLE_STREAMS_OLD 0x0c
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
81 #define NO_STREAMS_OLD 0xf3
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
82 /* CR69[0] = 1 : Mem-mapped regs */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
83 #define USE_MM_FOR_PRI_STREAM_OLD 0x01
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
84
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
85 void SavageStreamsOn();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
86
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
87 /*
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
88 * There are two different streams engines used in the Savage line.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
89 * The old engine is in the 3D, 4, Pro, and Twister.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
90 * The new engine is in the 2000, MX, IX, and Super.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
91 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
92
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
93
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
94 /* streams registers for old engine */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
95 #define PSTREAM_CONTROL_REG 0x8180
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
96 #define COL_CHROMA_KEY_CONTROL_REG 0x8184
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
97 #define SSTREAM_CONTROL_REG 0x8190
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
98 #define CHROMA_KEY_UPPER_BOUND_REG 0x8194
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
99 #define SSTREAM_STRETCH_REG 0x8198
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
100 #define COLOR_ADJUSTMENT_REG 0x819C
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
101 #define BLEND_CONTROL_REG 0x81A0
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
102 #define PSTREAM_FBADDR0_REG 0x81C0
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
103 #define PSTREAM_FBADDR1_REG 0x81C4
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
104 #define PSTREAM_STRIDE_REG 0x81C8
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
105 #define DOUBLE_BUFFER_REG 0x81CC
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
106 #define SSTREAM_FBADDR0_REG 0x81D0
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
107 #define SSTREAM_FBADDR1_REG 0x81D4
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
108 #define SSTREAM_STRIDE_REG 0x81D8
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
109 #define SSTREAM_VSCALE_REG 0x81E0
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
110 #define SSTREAM_VINITIAL_REG 0x81E4
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
111 #define SSTREAM_LINES_REG 0x81E8
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
112 #define STREAMS_FIFO_REG 0x81EC
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
113 #define PSTREAM_WINDOW_START_REG 0x81F0
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
114 #define PSTREAM_WINDOW_SIZE_REG 0x81F4
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
115 #define SSTREAM_WINDOW_START_REG 0x81F8
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
116 #define SSTREAM_WINDOW_SIZE_REG 0x81FC
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
117 #define FIFO_CONTROL 0x8200
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
118 #define PSTREAM_FBSIZE_REG 0x8300
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
119 #define SSTREAM_FBSIZE_REG 0x8304
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
120 #define SSTREAM_FBADDR2_REG 0x8308
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
121
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
122 #define OS_XY(x,y) (((x+1)<<16)|(y+1))
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
123 #define OS_WH(x,y) (((x-1)<<16)|(y))
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
124
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
125 #define PCI_COMMAND_MEM 0x2
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
126 #define MAX_FRAMES 3
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
127 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
128 * @brief Information on PCI device.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
129 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
130 pciinfo_t pci_info;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
131
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
132 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
133 * @brief Unichrome driver colorkey settings.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
134 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
135 static vidix_grkey_t savage_grkey;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
136
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
137 static int frames[VID_PLAY_MAXFRAMES];
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
138 uint8_t *vio;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
139 uint8_t mclk_save[3];
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
140
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
141 #define outb(reg,val) OUTPORT8(reg,val)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
142 #define inb(reg) INPORT8(reg)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
143 #define outw(reg,val) OUTPORT16(reg,val)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
144 #define inw(reg) INPORT16(reg)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
145 #define outl(reg,val) OUTPORT32(reg,val)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
146 #define inl(reg) INPORT32(reg)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
147
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
148
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
149 /*
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
150 * PCI-Memory IO access macros.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
151 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
152 #define VID_WR08(p,i,val) (((uint8_t *)(p))[(i)]=(val))
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
153 #define VID_RD08(p,i) (((uint8_t *)(p))[(i)])
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
154
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
155 #define VID_WR32(p,i,val) (((uint32_t *)(p))[(i)/4]=(val))
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
156 #define VID_RD32(p,i) (((uint32_t *)(p))[(i)/4])
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
157
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
158 #ifndef USE_RMW_CYCLES
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
159 /*
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
160 * Can be used to inhibit READ-MODIFY-WRITE cycles. On by default.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
161 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
162
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
163 #define MEM_BARRIER() __asm__ __volatile__ ("" : : : "memory")
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
164
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
165 #undef VID_WR08
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
166 #define VID_WR08(p,i,val) ({ MEM_BARRIER(); ((uint8_t *)(p))[(i)]=(val); })
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
167 #undef VID_RD08
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
168 #define VID_RD08(p,i) ({ MEM_BARRIER(); ((uint8_t *)(p))[(i)]; })
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
169
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
170 #undef VID_WR16
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
171 #define VID_WR16(p,i,val) ({ MEM_BARRIER(); ((uint16_t *)(p))[(i)/2]=(val); })
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
172 #undef VID_RD16
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
173 #define VID_RD16(p,i) ({ MEM_BARRIER(); ((uint16_t *)(p))[(i)/2]; })
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
174
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
175 #undef VID_WR32
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
176 #define VID_WR32(p,i,val) ({ MEM_BARRIER(); ((uint32_t *)(p))[(i)/4]=(val); })
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
177 #undef VID_RD32
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
178 #define VID_RD32(p,i) ({ MEM_BARRIER(); ((uint32_t *)(p))[(i)/4]; })
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
179 #endif /* USE_RMW_CYCLES */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
180
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
181 #define VID_AND32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)&(val))
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
182 #define VID_OR32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)|(val))
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
183 #define VID_XOR32(p,i,val) VID_WR32(p,i,VID_RD32(p,i)^(val))
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
184
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
185
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
186 /* from x driver */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
187
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
188 #define VGAIN8(addr) VID_RD08(info->control_base+0x8000, addr)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
189 #define VGAIN16(addr) VID_RD16(info->control_base+0x8000, addr)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
190 #define VGAIN(addr) VID_RD32(info->control_base+0x8000, addr)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
191
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
192 #define VGAOUT8(addr,val) VID_WR08(info->control_base+0x8000, addr, val)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
193 #define VGAOUT16(addr,val) VID_WR16(info->control_base+0x8000, addr, val)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
194 #define VGAOUT(addr,val) VID_WR32(info->control_base+0x8000, addr, val)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
195
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
196 #define INREG(addr) VID_RD32(info->control_base, addr)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
197 #define OUTREG(addr,val) VID_WR32(info->control_base, addr, val)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
198 #define INREG8(addr) VID_RD08(info->control_base, addr)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
199 #define OUTREG8(addr,val) VID_WR08(info->control_base, addr, val)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
200 #define INREG16(addr) VID_RD16(info->control_base, addr)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
201 #define OUTREG16(addr,val) VID_WR16(info->control_base, addr, val)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
202
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
203 #define ALIGN_TO(v, n) (((v) + (n-1)) & ~(n-1))
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
204
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
205
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
206 void debugout(unsigned int addr, unsigned int val);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
207
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
208
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
209 struct savage_chip {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
210 volatile uint32_t *PMC; /* general control */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
211 volatile uint32_t *PME; /* multimedia port */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
212 volatile uint32_t *PFB; /* framebuffer control */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
213 volatile uint32_t *PVIDEO; /* overlay control */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
214 volatile uint8_t *PCIO; /* SVGA (CRTC, ATTR) registers */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
215 volatile uint8_t *PVIO; /* SVGA (MISC, GRAPH, SEQ) registers */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
216 volatile uint32_t *PRAMIN; /* instance memory */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
217 volatile uint32_t *PRAMHT; /* hash table */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
218 volatile uint32_t *PRAMFC; /* fifo context table */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
219 volatile uint32_t *PRAMRO; /* fifo runout table */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
220 volatile uint32_t *PFIFO; /* fifo control region */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
221 volatile uint32_t *FIFO; /* fifo channels (USER) */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
222 volatile uint32_t *PGRAPH; /* graphics engine */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
223
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
224 int arch; /* compatible NV_ARCH_XX define */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
225 unsigned long fbsize; /* framebuffer size */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
226 void (* lock) (struct savage_chip *, int);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
227 };
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
228 typedef struct savage_chip savage_chip;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
229
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
230
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
231 struct savage_info {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
232 unsigned int use_colorkey;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
233 unsigned int colorkey; /* saved xv colorkey*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
234 unsigned int vidixcolorkey; /*currently used colorkey*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
235 unsigned int depth;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
236 unsigned int bpp;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
237 unsigned int videoFlags;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
238 unsigned int format;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
239 unsigned int pitch;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
240 unsigned int blendBase;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
241 unsigned int lastKnownPitch;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
242 unsigned int displayWidth, displayHeight;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
243 unsigned int brightness,hue,saturation,contrast;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
244 unsigned int src_w,src_h;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
245 unsigned int drw_w,drw_h; /*scaled width && height*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
246 unsigned int wx,wy; /*window x && y*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
247 unsigned int screen_x; /*screen width*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
248 unsigned int screen_y; /*screen height*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
249 unsigned long buffer_size; /* size of the image buffer */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
250 struct savage_chip chip; /* NV architecture structure */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
251 void* video_base; /* virtual address of control region */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
252 void* control_base; /* virtual address of fb region */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
253 unsigned long picture_base; /* direct pointer to video picture */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
254 unsigned long picture_offset; /* offset of video picture in frame buffer */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
255 // struct savage_dma dma; /* DMA structure */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
256 unsigned int cur_frame;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
257 unsigned int num_frames; /* number of buffers */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
258 int bps; /* bytes per line */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
259 void (*SavageWaitIdle) ();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
260 void (*SavageWaitFifo) (int space);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
261 };
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
262 typedef struct savage_info savage_info;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
263
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
264
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
265 static savage_info* info;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
266
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
267
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
268 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
269 * @brief Unichrome driver vidix capabilities.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
270 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
271 static vidix_capability_t savage_cap = {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
272 "Savage/ProSavage/Twister vidix",
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
273 "Reza Jelveh <reza.jelveh@tuhh.de>",
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
274 TYPE_OUTPUT,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
275 {0, 0, 0, 0},
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
276 4096,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
277 4096,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
278 4,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
279 4,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
280 -1,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
281 FLAG_UPSCALER | FLAG_DOWNSCALER,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
282 VENDOR_S3_INC,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
283 -1,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
284 {0, 0, 0, 0}
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
285 };
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
286
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
287 struct savage_cards {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
288 unsigned short chip_id;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
289 unsigned short arch;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
290 };
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
291
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
292
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
293 static
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
294 unsigned int GetBlendForFourCC( int id )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
295 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
296 switch( id ) {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
297 case IMGFMT_YUY2:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
298 case IMGFMT_YV12:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
299 case IMGFMT_I420:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
300 return 1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
301 case IMGFMT_Y211:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
302 return 4;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
303 case IMGFMT_RGB15:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
304 return 3;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
305 case IMGFMT_RGB16:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
306 return 5;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
307 default:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
308 return 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
309 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
310 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
311
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
312 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
313 * @brief list of card IDs compliant with the Unichrome driver .
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
314 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
315 static struct savage_cards savage_card_ids[] = {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
316 /*[ProSavage PN133] AGP4X VGA Controller (Twister)*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
317 { PCI_CHIP_S3TWISTER_P, S3_PROSAVAGE },
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
318 /*[ProSavage KN133] AGP4X VGA Controller (TwisterK)*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
319 { PCI_CHIP_S3TWISTER_K, S3_PROSAVAGE },
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
320 /*ProSavage DDR*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
321 { PCI_CHIP_PROSAVAGE_DDR , S3_PROSAVAGE },
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
322 /*[ProSavageDDR P4M266 K] */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
323 { PCI_CHIP_PROSAVAGE_DDRK , S3_PROSAVAGE },
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
324 };
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
325
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
326 void SavageSetColorOld()
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
327 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
328
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
329
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
330 if(
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
331 (info->format == IMGFMT_RGB15) ||
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
332 (info->format == IMGFMT_RGB16)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
333 )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
334 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
335 OUTREG( COLOR_ADJUSTMENT_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
336 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
337 else
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
338 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
339 /* Change 0..255 into 0..15 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
340 long sat = info->saturation * 16 / 256;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
341 double hue = info->hue * 0.017453292;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
342 unsigned long hs1 = ((long)(sat * cos(hue))) & 0x1f;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
343 unsigned long hs2 = ((long)(sat * sin(hue))) & 0x1f;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
344
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
345 OUTREG( COLOR_ADJUSTMENT_REG,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
346 0x80008000 |
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
347 (info->brightness + 128) |
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
348 ((info->contrast & 0xf8) << (12-7)) |
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
349 (hs1 << 16) |
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
350 (hs2 << 24)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
351 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
352 debugout( COLOR_ADJUSTMENT_REG,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
353 0x80008000 |
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
354 (info->brightness + 128) |
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
355 ((info->contrast & 0xf8) << (12-7)) |
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
356 (hs1 << 16) |
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
357 (hs2 << 24)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
358 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
359
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
360 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
361 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
362
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
363 void SavageSetColorKeyOld()
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
364 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
365 int red, green, blue;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
366
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
367 /* Here, we reset the colorkey and all the controls. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
368
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
369 red = (info->vidixcolorkey & 0x00FF0000) >> 16;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
370 green = (info->vidixcolorkey & 0x0000FF00) >> 8;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
371 blue = info->vidixcolorkey & 0x000000FF;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
372
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
373 if( !info->vidixcolorkey ) {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
374 printf("SavageSetColorKey disabling colorkey\n");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
375 OUTREG( COL_CHROMA_KEY_CONTROL_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
376 OUTREG( CHROMA_KEY_UPPER_BOUND_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
377 OUTREG( BLEND_CONTROL_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
378 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
379 else {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
380 switch (info->depth) {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
381 // FIXME: isnt fixed yet
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
382 case 8:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
383 OUTREG( COL_CHROMA_KEY_CONTROL_REG,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
384 0x37000000 | (info->vidixcolorkey & 0xFF) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
385 OUTREG( CHROMA_KEY_UPPER_BOUND_REG,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
386 0x00000000 | (info->vidixcolorkey & 0xFF) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
387 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
388 case 15:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
389 /* 15 bpp 555 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
390 red&=0x1f;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
391 green&=0x1f;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
392 blue&=0x1f;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
393 OUTREG( COL_CHROMA_KEY_CONTROL_REG,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
394 0x05000000 | (red<<19) | (green<<11) | (blue<<3) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
395 OUTREG( CHROMA_KEY_UPPER_BOUND_REG,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
396 0x00000000 | (red<<19) | (green<<11) | (blue<<3) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
397 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
398 case 16:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
399 /* 16 bpp 565 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
400 red&=0x1f;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
401 green&=0x3f;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
402 blue&=0x1f;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
403 OUTREG( COL_CHROMA_KEY_CONTROL_REG,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
404 0x16000000 | (red<<19) | (green<<10) | (blue<<3) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
405 OUTREG( CHROMA_KEY_UPPER_BOUND_REG,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
406 0x00020002 | (red<<19) | (green<<10) | (blue<<3) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
407 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
408 case 24:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
409 /* 24 bpp 888 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
410 OUTREG( COL_CHROMA_KEY_CONTROL_REG,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
411 0x17000000 | (red<<16) | (green<<8) | (blue) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
412 OUTREG( CHROMA_KEY_UPPER_BOUND_REG,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
413 0x00000000 | (red<<16) | (green<<8) | (blue) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
414 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
415 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
416
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
417 /* We use destination colorkey */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
418 OUTREG( BLEND_CONTROL_REG, 0x05000000 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
419 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
420 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
421
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
422
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
423 static void
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
424 SavageDisplayVideoOld(
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
425 ){
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
426 int vgaCRIndex, vgaCRReg, vgaIOBase;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
427 unsigned int ssControl;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
428 int cr92;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
429
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
430
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
431 vgaIOBase = 0x3d0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
432 vgaCRIndex = vgaIOBase + 4;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
433 vgaCRReg = vgaIOBase + 5;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
434
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
435 // if( psav->videoFourCC != id )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
436 // SavageStreamsOff(pScrn);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
437
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
438 if( !info->videoFlags & VF_STREAMS_ON )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
439 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
440 SavageStreamsOn();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
441 // SavageResetVideo();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
442 SavageSetColorOld();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
443 SavageSetColorKeyOld();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
444 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
445
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
446
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
447
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
448
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
449 /* Set surface format. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
450
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
451 OUTREG(SSTREAM_CONTROL_REG,GetBlendForFourCC(info->format) << 24 | info->src_w);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
452
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
453 debugout(SSTREAM_CONTROL_REG,GetBlendForFourCC(info->format) << 24 | info->src_w);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
454
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
455 /* Calculate horizontal scale factor. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
456
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
457 //FIXME: enable scaling
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
458 OUTREG(SSTREAM_STRETCH_REG, (info->src_w << 15) / info->drw_w );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
459 // debugout(SSTREAM_STRETCH_REG, 1 << 15);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
460
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
461 OUTREG(SSTREAM_LINES_REG, info->src_h );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
462 debugout(SSTREAM_LINES_REG, info->src_h );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
463
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
464
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
465 OUTREG(SSTREAM_VINITIAL_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
466 debugout(SSTREAM_VINITIAL_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
467 /* Calculate vertical scale factor. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
468
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
469 // OUTREG(SSTREAM_VSCALE_REG, 1 << 15);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
470 OUTREG(SSTREAM_VSCALE_REG, VSCALING(info->src_h,info->drw_h) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
471 debugout(SSTREAM_VSCALE_REG, VSCALING(info->src_h,info->drw_h) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
472 // OUTREG(SSTREAM_VSCALE_REG, (info->src_h << 15) / info->drw_h );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
473
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
474 /* Set surface location and stride. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
475
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
476 OUTREG(SSTREAM_FBADDR0_REG, info->picture_offset );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
477 debugout(SSTREAM_FBADDR0_REG, info->picture_offset );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
478
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
479 OUTREG(SSTREAM_FBADDR1_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
480 debugout(SSTREAM_FBADDR1_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
481
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
482 OUTREG(SSTREAM_STRIDE_REG, info->pitch );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
483 debugout(SSTREAM_STRIDE_REG, info->pitch );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
484
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
485 OUTREG(SSTREAM_WINDOW_START_REG, OS_XY(info->wx, info->wy) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
486 debugout(SSTREAM_WINDOW_START_REG, OS_XY(info->wx, info->wy) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
487 OUTREG(SSTREAM_WINDOW_SIZE_REG, OS_WH(info->drw_w, info->drw_h) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
488 debugout(SSTREAM_WINDOW_SIZE_REG, OS_WH(info->drw_w, info->drw_h) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
489
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
490
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
491
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
492 ssControl = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
493
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
494 if( info->src_w > (info->drw_w << 1) )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
495 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
496 /* BUGBUG shouldn't this be >=? */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
497 if( info->src_w <= (info->drw_w << 2) )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
498 ssControl |= HDSCALE_4;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
499 else if( info->src_w > (info->drw_w << 3) )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
500 ssControl |= HDSCALE_8;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
501 else if( info->src_w > (info->drw_w << 4) )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
502 ssControl |= HDSCALE_16;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
503 else if( info->src_w > (info->drw_w << 5) )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
504 ssControl |= HDSCALE_32;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
505 else if( info->src_w > (info->drw_w << 6) )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
506 ssControl |= HDSCALE_64;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
507 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
508
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
509 ssControl |= info->src_w;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
510 ssControl |= (1 << 24);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
511
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
512 //FIXME: enable scaling
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
513 OUTREG(SSTREAM_CONTROL_REG, ssControl);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
514 debugout(SSTREAM_CONTROL_REG, ssControl);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
515
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
516 // FIXME: this should actually be enabled
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
517
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
518 info->pitch = (info->pitch + 7) / 8;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
519 VGAOUT8(vgaCRIndex, 0x92);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
520 cr92 = VGAIN8(vgaCRReg);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
521 VGAOUT8(vgaCRReg, (cr92 & 0x40) | (info->pitch >> 8) | 0x80);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
522 VGAOUT8(vgaCRIndex, 0x93);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
523 VGAOUT8(vgaCRReg, info->pitch);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
524 OUTREG(STREAMS_FIFO_REG, 2 | 25 << 5 | 32 << 11);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
525
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
526
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
527
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
528
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
529 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
530
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
531 void SavageInitStreamsOld()
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
532 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
533 /*unsigned long jDelta;*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
534 unsigned long format = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
535
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
536 /*
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
537 * For the OLD streams engine, several of these registers
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
538 * cannot be touched unless streams are on. Seems backwards to me;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
539 * I'd want to set 'em up, then cut 'em loose.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
540 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
541
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
542
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
543 /*jDelta = pScrn->displayWidth * (pScrn->bitsPerPixel + 7) / 8;*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
544 switch( info->depth ) {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
545 case 8: format = 0 << 24; break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
546 case 15: format = 3 << 24; break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
547 case 16: format = 5 << 24; break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
548 case 24: format = 7 << 24; break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
549 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
550 #warning enable this again
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
551 OUTREG(PSTREAM_FBSIZE_REG,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
552 info->screen_y * info->screen_x * (info->bpp >> 3));
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
553
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
554 OUTREG( PSTREAM_WINDOW_START_REG, OS_XY(0,0) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
555 OUTREG( PSTREAM_WINDOW_SIZE_REG, OS_WH(info->screen_x, info->screen_y) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
556 OUTREG( PSTREAM_FBADDR1_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
557 /*OUTREG( PSTREAM_STRIDE_REG, jDelta );*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
558 OUTREG( PSTREAM_CONTROL_REG, format );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
559 OUTREG( PSTREAM_FBADDR0_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
560
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
561 /*OUTREG( PSTREAM_FBSIZE_REG, jDelta * pScrn->virtualY >> 3 );*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
562
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
563 OUTREG( COL_CHROMA_KEY_CONTROL_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
564 OUTREG( SSTREAM_CONTROL_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
565 OUTREG( CHROMA_KEY_UPPER_BOUND_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
566 OUTREG( SSTREAM_STRETCH_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
567 OUTREG( COLOR_ADJUSTMENT_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
568 OUTREG( BLEND_CONTROL_REG, 1 << 24 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
569 OUTREG( DOUBLE_BUFFER_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
570 OUTREG( SSTREAM_FBADDR0_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
571 OUTREG( SSTREAM_FBADDR1_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
572 OUTREG( SSTREAM_FBADDR2_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
573 OUTREG( SSTREAM_FBSIZE_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
574 OUTREG( SSTREAM_STRIDE_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
575 OUTREG( SSTREAM_VSCALE_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
576 OUTREG( SSTREAM_LINES_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
577 OUTREG( SSTREAM_VINITIAL_REG, 0 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
578 #warning is this needed?
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
579 OUTREG( SSTREAM_WINDOW_START_REG, OS_XY(0xfffe, 0xfffe) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
580 OUTREG( SSTREAM_WINDOW_SIZE_REG, OS_WH(10,2) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
581
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
582 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
583
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
584 void
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
585 SavageStreamsOn()
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
586 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
587 unsigned char jStreamsControl;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
588 unsigned short vgaCRIndex = 0x3d0 + 4;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
589 unsigned short vgaCRReg = 0x3d0 + 5;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
590
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
591 // xf86ErrorFVerb(STREAMS_TRACE, "SavageStreamsOn\n" );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
592
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
593 /* Sequence stolen from streams.c in M7 NT driver */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
594
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
595
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
596 enable_app_io ();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
597
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
598 /* Unlock extended registers. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
599
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
600 /* FIXME: it looks like mmaped io is broken with vgaout16 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
601 VGAOUT16(vgaCRIndex, 0x4838 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
602 VGAOUT16(vgaCRIndex, 0xa039);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
603 VGAOUT16(0x3c4, 0x0608);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
604
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
605
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
606
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
607 VGAOUT8( vgaCRIndex, EXT_MISC_CTRL2 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
608
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
609 if( S3_SAVAGE_MOBILE_SERIES(info->chip.arch) )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
610 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
611 // SavageInitStreamsNew( pScrn );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
612
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
613 jStreamsControl = VGAIN8( vgaCRReg ) | ENABLE_STREAM1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
614
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
615 /* Wait for VBLANK. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
616 VerticalRetraceWait();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
617 /* Fire up streams! */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
618 VGAOUT16( vgaCRIndex, (jStreamsControl << 8) | EXT_MISC_CTRL2 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
619 /* These values specify brightness, contrast, saturation and hue. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
620 OUTREG( SEC_STREAM_COLOR_CONVERT1, 0x0000C892 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
621 OUTREG( SEC_STREAM_COLOR_CONVERT2, 0x00039F9A );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
622 OUTREG( SEC_STREAM_COLOR_CONVERT3, 0x01F1547E );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
623 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
624 else if (info->chip.arch == S3_SAVAGE2000)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
625 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
626 // SavageInitStreams2000( pScrn );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
627
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
628 jStreamsControl = VGAIN8( vgaCRReg ) | ENABLE_STREAM1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
629
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
630 /* Wait for VBLANK. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
631 VerticalRetraceWait();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
632 /* Fire up streams! */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
633 VGAOUT16( vgaCRIndex, (jStreamsControl << 8) | EXT_MISC_CTRL2 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
634 /* These values specify brightness, contrast, saturation and hue. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
635 OUTREG( SEC_STREAM_COLOR_CONVERT0_2000, 0x0000C892 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
636 OUTREG( SEC_STREAM_COLOR_CONVERT1_2000, 0x00033400 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
637 OUTREG( SEC_STREAM_COLOR_CONVERT2_2000, 0x000001CF );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
638 OUTREG( SEC_STREAM_COLOR_CONVERT3_2000, 0x01F1547E );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
639 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
640 else
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
641 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
642 jStreamsControl = VGAIN8( vgaCRReg ) | ENABLE_STREAMS_OLD;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
643
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
644 /* Wait for VBLANK. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
645
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
646 VerticalRetraceWait();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
647
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
648 /* Fire up streams! */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
649
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
650 VGAOUT16( vgaCRIndex, (jStreamsControl << 8) | EXT_MISC_CTRL2 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
651
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
652 SavageInitStreamsOld( );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
653 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
654
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
655 /* Wait for VBLANK. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
656
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
657 VerticalRetraceWait();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
658
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
659 /* Turn on secondary stream TV flicker filter, once we support TV. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
660
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
661 /* SR70 |= 0x10 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
662
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
663 info->videoFlags |= VF_STREAMS_ON;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
664
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
665 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
666
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
667
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
668
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
669
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
670 static void savage_getscreenproperties(struct savage_info *info){
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
671 unsigned char bpp=0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
672 uint32_t width=0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
673
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
674 uint32_t vgaIOBase, vgaCRIndex, vgaCRReg;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
675
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
676 vgaIOBase = 0x3d0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
677 vgaCRIndex = vgaIOBase + 4;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
678 vgaCRReg = vgaIOBase + 5;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
679
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
680
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
681 /* a little reversed from x driver source code */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
682 VGAOUT8(vgaCRIndex, 0x67);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
683 bpp = VGAIN8(vgaCRReg);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
684
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
685
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
686 switch (bpp&0xf0) {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
687 case 0x00:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
688 case 0x10:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
689 info->depth=8;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
690 info->bpp=8;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
691 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
692 case 0x20:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
693 case 0x30:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
694 info->depth=15;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
695 info->bpp=16;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
696 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
697 case 0x40:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
698 case 0x50:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
699 info->depth=16;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
700 info->bpp=16;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
701 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
702 case 0x70:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
703 case 0xd0:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
704 info->depth=24;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
705 info->bpp=32;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
706 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
707
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
708
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
709 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
710
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
711
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
712 VGAOUT8(vgaCRIndex, 0x1);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
713 info->screen_x = (1 + VGAIN8(vgaCRReg)) <<3;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
714 /*get screen height*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
715 /* get first 8 bits in VT_DISPLAY_END*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
716 VGAOUT8(0x03D4, 0x12);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
717 info->screen_y = VGAIN8(0x03D5);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
718 VGAOUT8(0x03D4,0x07);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
719 /* get 9th bit in CRTC_OVERFLOW*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
720 info->screen_y |= (VGAIN8(0x03D5) &0x02)<<7;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
721 /* and the 10th in CRTC_OVERFLOW*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
722 info->screen_y |=(VGAIN8(0x03D5) &0x40)<<3;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
723 ++info->screen_y;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
724
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
725 printf("screen_x = %d, screen_y = %d, bpp = %d\n",info->screen_x,info->screen_y,info->bpp);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
726 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
727
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
728
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
729 void SavageStreamsOff()
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
730 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
731 unsigned char jStreamsControl;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
732 unsigned short vgaCRIndex = 0x3d0 + 4;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
733 unsigned short vgaCRReg = 0x3d0 + 5;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
734
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
735
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
736 /* Unlock extended registers. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
737
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
738 VGAOUT16(vgaCRIndex, 0x4838);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
739 VGAOUT16(vgaCRIndex, 0xa039);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
740 VGAOUT16(0x3c4, 0x0608);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
741
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
742 VGAOUT8( vgaCRIndex, EXT_MISC_CTRL2 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
743 if( S3_SAVAGE_MOBILE_SERIES(info->chip.arch) ||
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
744 (info->chip.arch == S3_SUPERSAVAGE) ||
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
745 (info->chip.arch == S3_SAVAGE2000) )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
746 jStreamsControl = VGAIN8( vgaCRReg ) & NO_STREAMS;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
747 else
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
748 jStreamsControl = VGAIN8( vgaCRReg ) & NO_STREAMS_OLD;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
749
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
750 /* Wait for VBLANK. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
751
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
752 VerticalRetraceWait();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
753
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
754 /* Kill streams. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
755
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
756 VGAOUT16(vgaCRIndex, (jStreamsControl << 8) | EXT_MISC_CTRL2 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
757
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
758 VGAOUT16(vgaCRIndex, 0x0093 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
759 VGAOUT8( vgaCRIndex, 0x92 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
760 VGAOUT8( vgaCRReg, VGAIN8(vgaCRReg) & 0x40 );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
761
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
762 info->videoFlags &= ~VF_STREAMS_ON;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
763 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
764
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
765
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
766 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
767 * @brief Check age of driver.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
768 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
769 * @return vidix version number.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
770 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
771 unsigned int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
772 vixGetVersion (void)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
773 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
774 return (VIDIX_VERSION);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
775 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
776
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
777 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
778 * @brief Find chip index in Unichrome compliant devices list.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
779 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
780 * @param chip_id PCI device ID.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
781 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
782 * @returns index position in savage_card_ids if successful.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
783 * -1 if chip_id is not a compliant chipset ID.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
784 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
785
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
786 static int find_chip(unsigned chip_id){
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
787 unsigned i;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
788 for(i = 0;i < sizeof(savage_card_ids)/sizeof(struct savage_cards);i++)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
789 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
790 if(chip_id == savage_card_ids[i].chip_id)return i;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
791 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
792 return -1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
793 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
794
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
795 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
796 * @brief Probe hardware to find some useable chipset.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
797 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
798 * @param verbose specifies verbose level.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
799 * @param force specifies force mode : driver should ignore
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
800 * device_id (danger but useful for new devices)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
801 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
802 * @returns 0 if it can handle something in PC.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
803 * a negative error code otherwise.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
804 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
805
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
806 int vixProbe(int verbose, int force){
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
807 pciinfo_t lst[MAX_PCI_DEVICES];
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
808 unsigned i,num_pci;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
809 int err;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
810
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
811 if (force)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
812 printf("[savage_vid]: warning: forcing not supported yet!\n");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
813 err = pci_scan(lst,&num_pci);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
814 if(err){
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
815 printf("[savage_vid] Error occurred during pci scan: %s\n",strerror(err));
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
816 return err;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
817 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
818 else {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
819 err = ENXIO;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
820 for(i=0; i < num_pci; i++){
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
821 if(lst[i].vendor == VENDOR_S3_INC) {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
822 int idx;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
823 const char *dname;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
824 idx = find_chip(lst[i].device);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
825 if(idx == -1)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
826 continue;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
827 dname = pci_device_name(lst[i].vendor, lst[i].device);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
828 dname = dname ? dname : "Unknown chip";
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
829 printf("[savage_vid] Found chip: %s\n", dname);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
830 // FIXME: whats wrong here?
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
831 if ((lst[i].command & PCI_COMMAND_IO ) == 0){
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
832 printf("[savage_vid] Device is disabled, ignoring\n");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
833 continue;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
834 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
835 savage_cap.device_id = lst[i].device;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
836 err = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
837 memcpy(&pci_info, &lst[i], sizeof(pciinfo_t));
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
838 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
839 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
840 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
841 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
842 if(err && verbose) printf("[savage_vid] Can't find chip\n");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
843 return err;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
844 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
845
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
846 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
847 * @brief Initializes driver.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
848 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
849 * @returns 0 if ok.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
850 * a negative error code otherwise.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
851 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
852 int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
853 vixInit (void)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
854 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
855 int mtrr;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
856 unsigned char config1, m, n, n1, n2, sr8, cr3f, cr66 = 0, tmp;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
857
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
858 static unsigned char RamSavage3D[] = { 8, 4, 4, 2 };
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
859 static unsigned char RamSavage4[] = { 2, 4, 8, 12, 16, 32, 64, 32 };
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
860 static unsigned char RamSavageMX[] = { 2, 8, 4, 16, 8, 16, 4, 16 };
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
861 static unsigned char RamSavageNB[] = { 0, 2, 4, 8, 16, 32, 16, 2 };
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
862
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
863 int videoRam, videoRambytes;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
864
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
865 uint32_t vgaIOBase, vgaCRIndex, vgaCRReg ;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
866
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
867 unsigned char val;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
868
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
869 vgaIOBase = 0x3d0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
870 vgaCRIndex = vgaIOBase + 4;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
871 vgaCRReg = vgaIOBase + 5;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
872
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
873 fprintf(stderr, "vixInit enter \n");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
874 // //getc(stdin);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
875
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
876 info = (savage_info*)calloc(1,sizeof(savage_info));
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
877
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
878
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
879 /* need this if we want direct outb and inb access? */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
880 enable_app_io ();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
881
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
882 /* 12mb + 32kb ? */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
883 /* allocate some space for control registers */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
884 info->chip.arch = savage_card_ids[find_chip(pci_info.device)].arch;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
885
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
886 if (info->chip.arch == S3_SAVAGE3D) {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
887 info->control_base = map_phys_mem(pci_info.base0+SAVAGE_NEWMMIO_REGBASE_S3, SAVAGE_NEWMMIO_REGSIZE);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
888 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
889 else {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
890 info->control_base = map_phys_mem(pci_info.base0+SAVAGE_NEWMMIO_REGBASE_S4, SAVAGE_NEWMMIO_REGSIZE);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
891 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
892
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
893 // info->chip.PCIO = (uint8_t *) (info->control_base + SAVAGE_NEWMMIO_VGABASE);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
894
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
895 // FIXME: enable mmio?
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
896 val = VGAIN8 (0x3c3);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
897 VGAOUT8 (0x3c3, val | 0x01);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
898 val = VGAIN8 (0x3cc);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
899 VGAOUT8 (0x3c2, val | 0x01);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
900
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
901 if (info->chip.arch >= S3_SAVAGE4)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
902 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
903 VGAOUT8 (0x3d4, 0x40);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
904 val = VGAIN8 (0x3d5);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
905 VGAOUT8 (0x3d5, val | 1);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
906 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
907
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
908
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
909
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
910 /* unprotect CRTC[0-7] */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
911 VGAOUT8(vgaCRIndex, 0x11);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
912 tmp = VGAIN8(vgaCRReg);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
913 // printf("$########## tmp = %d\n",tmp);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
914 VGAOUT8(vgaCRReg, tmp & 0x7f);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
915
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
916
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
917 /* unlock extended regs */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
918 VGAOUT16(vgaCRIndex, 0x4838);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
919 VGAOUT16(vgaCRIndex, 0xa039);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
920 VGAOUT16(0x3c4, 0x0608);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
921
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
922 VGAOUT8(vgaCRIndex, 0x40);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
923 tmp = VGAIN8(vgaCRReg);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
924 VGAOUT8(vgaCRReg, tmp & ~0x01);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
925
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
926 /* unlock sys regs */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
927 VGAOUT8(vgaCRIndex, 0x38);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
928 VGAOUT8(vgaCRReg, 0x48);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
929
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
930 /* Unlock system registers. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
931 VGAOUT16(vgaCRIndex, 0x4838);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
932
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
933 /* Next go on to detect amount of installed ram */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
934
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
935 VGAOUT8(vgaCRIndex, 0x36); /* for register CR36 (CONFG_REG1), */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
936 config1 = VGAIN8(vgaCRReg); /* get amount of vram installed */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
937
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
938
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
939 switch( info->chip.arch ) {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
940 case S3_SAVAGE3D:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
941 videoRam = RamSavage3D[ (config1 & 0xC0) >> 6 ] * 1024;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
942 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
943
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
944 case S3_SAVAGE4:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
945 /*
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
946 * The Savage4 has one ugly special case to consider. On
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
947 * systems with 4 banks of 2Mx32 SDRAM, the BIOS says 4MB
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
948 * when it really means 8MB. Why do it the same when you
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
949 * can do it different...
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
950 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
951 VGAOUT8(0x3d4, 0x68); /* memory control 1 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
952 if( (VGAIN8(0x3d5) & 0xC0) == (0x01 << 6) )
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
953 RamSavage4[1] = 8;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
954
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
955 /*FALLTHROUGH*/
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
956
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
957 case S3_SAVAGE2000:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
958 videoRam = RamSavage4[ (config1 & 0xE0) >> 5 ] * 1024;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
959 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
960
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
961 case S3_SAVAGE_MX:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
962 videoRam = RamSavageMX[ (config1 & 0x0E) >> 1 ] * 1024;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
963 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
964
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
965 case S3_PROSAVAGE:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
966 videoRam = RamSavageNB[ (config1 & 0xE0) >> 5 ] * 1024;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
967 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
968
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
969 default:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
970 /* How did we get here? */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
971 videoRam = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
972 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
973 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
974
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
975
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
976 printf("###### videoRam = %d\n",videoRam);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
977 info->chip.fbsize = videoRam * 1024;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
978
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
979
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
980 /* reset graphics engine to avoid memory corruption */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
981 /* VGAOUT8 (0x3d4, 0x66);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
982 cr66 = VGAIN8 (0x3d5);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
983 VGAOUT8 (0x3d5, cr66 | 0x02);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
984 udelay (10000);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
985
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
986 VGAOUT8 (0x3d4, 0x66);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
987 VGAOUT8 (0x3d5, cr66 & ~0x02); /* clear reset flag */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
988 /* udelay (10000); */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
989
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
990 /* This maps framebuffer @6MB, thus 2MB are left for video. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
991 if (info->chip.arch == S3_SAVAGE3D) {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
992 info->video_base = map_phys_mem(pci_info.base0, info->chip.fbsize);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
993 info->picture_offset = 1024*768* 4 * ((info->chip.fbsize > 4194304)?2:1);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
994 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
995 else {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
996 info->video_base = map_phys_mem(pci_info.base1, info->chip.fbsize);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
997 info->picture_offset = info->chip.fbsize - FRAMEBUFFER_SIZE;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
998 // info->picture_offset = 1024*1024* 4 * 2;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
999 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1000 if ( info->video_base < 0 ){
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1001 printf("errno = %s\n", strerror(errno));
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1002 return -1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1003 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1004
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1005
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1006 info->picture_base = (uint32_t) info->video_base + info->picture_offset;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1007
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1008 if ( info->chip.arch == S3_SAVAGE3D ){
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1009 mtrr = mtrr_set_type(pci_info.base0, info->chip.fbsize, MTRR_TYPE_WRCOMB);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1010 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1011 else{
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1012 mtrr = mtrr_set_type(pci_info.base1, info->chip.fbsize, MTRR_TYPE_WRCOMB);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1013 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1014
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1015 if (mtrr!= 0)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1016 printf("[savage_vid] unable to setup MTRR: %s\n", strerror(mtrr));
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1017 else
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1018 printf("[savage_vid] MTRR set up\n");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1019
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1020 /* This may trash your screen for resolutions greater than 1024x768, sorry. */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1021
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1022
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1023 savage_getscreenproperties(info);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1024 // return -1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1025 info->videoFlags = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1026
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1027 SavageStreamsOn();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1028 //getc(stdin);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1029 //FIXME ADD
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1030 return 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1031 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1032
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1033 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1034 * @brief Destroys driver.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1035 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1036 void
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1037 vixDestroy (void)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1038 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1039 unmap_phys_mem(info->video_base, info->chip.fbsize);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1040 unmap_phys_mem(info->control_base, SAVAGE_NEWMMIO_REGSIZE);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1041 //FIXME ADD
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1042 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1043
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1044 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1045 * @brief Get chipset's hardware capabilities.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1046 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1047 * @param to Pointer to the vidix_capability_t structure to be filled.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1048 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1049 * @returns 0.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1050 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1051 int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1052 vixGetCapability (vidix_capability_t * to)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1053 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1054 memcpy (to, &savage_cap, sizeof (vidix_capability_t));
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1055 return 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1056 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1057
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1058 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1059 * @brief Report if the video FourCC is supported by hardware.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1060 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1061 * @param fourcc input image format.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1062 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1063 * @returns 1 if the fourcc is supported.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1064 * 0 otherwise.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1065 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1066 static int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1067 is_supported_fourcc (uint32_t fourcc)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1068 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1069 switch (fourcc)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1070 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1071 //FIXME: YV12 isnt working properly yet
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1072 // case IMGFMT_YV12:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1073 // case IMGFMT_I420:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1074 case IMGFMT_UYVY:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1075 case IMGFMT_YVYU:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1076 case IMGFMT_YUY2:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1077 case IMGFMT_RGB15:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1078 case IMGFMT_RGB16:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1079 // case IMGFMT_BGR32:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1080 return 1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1081 default:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1082 return 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1083 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1084 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1085
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1086 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1087 * @brief Try to configure video memory for given fourcc.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1088 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1089 * @param to Pointer to the vidix_fourcc_t structure to be filled.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1090 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1091 * @returns 0 if ok.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1092 * errno otherwise.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1093 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1094 int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1095 vixQueryFourcc (vidix_fourcc_t * to)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1096 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1097 if (is_supported_fourcc (to->fourcc))
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1098 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1099 to->depth = VID_DEPTH_1BPP | VID_DEPTH_2BPP |
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1100 VID_DEPTH_4BPP | VID_DEPTH_8BPP |
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1101 VID_DEPTH_12BPP | VID_DEPTH_15BPP |
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1102 VID_DEPTH_16BPP | VID_DEPTH_24BPP | VID_DEPTH_32BPP;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1103 to->flags = VID_CAP_EXPAND | VID_CAP_SHRINK | VID_CAP_COLORKEY;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1104 return 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1105 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1106 else
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1107 to->depth = to->flags = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1108
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1109 return ENOSYS;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1110 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1111
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1112 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1113 * @brief Get the GrKeys
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1114 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1115 * @param grkey Pointer to the vidix_grkey_t structure to be filled by driver.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1116 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1117 * @return 0.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1118 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1119 /*int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1120 vixGetGrKeys (vidix_grkey_t * grkey)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1121 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1122
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1123 // if(info->d_width && info->d_height)savage_overlay_start(info,0);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1124
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1125 return (0);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1126 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1127 * */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1128
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1129 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1130 * @brief Set the GrKeys
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1131 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1132 * @param grkey Colorkey to be set.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1133 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1134 * @return 0.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1135 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1136 int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1137 vixSetGrKeys (const vidix_grkey_t * grkey)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1138 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1139 if (grkey->ckey.op == CKEY_FALSE)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1140 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1141 info->use_colorkey = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1142 info->vidixcolorkey=0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1143 printf("[savage_vid] colorkeying disabled\n");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1144 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1145 else {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1146 info->use_colorkey = 1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1147 info->vidixcolorkey = ((grkey->ckey.red<<16)|(grkey->ckey.green<<8)|grkey->ckey.blue);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1148
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1149 printf("[savage_vid] set colorkey 0x%x\n",info->vidixcolorkey);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1150 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1151 //FIXME: freezes if streams arent enabled
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1152 SavageSetColorKeyOld();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1153 return (0);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1154 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1155
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1156 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1157 * @brief Unichrome driver equalizer capabilities.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1158 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1159 vidix_video_eq_t equal = {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1160 VEQ_CAP_BRIGHTNESS | VEQ_CAP_SATURATION | VEQ_CAP_HUE,
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1161 300, 100, 0, 0, 0, 0, 0, 0
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1162 };
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1163
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1164
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1165 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1166 * @brief Get the equalizer capabilities.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1167 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1168 * @param eq Pointer to the vidix_video_eq_t structure to be filled by driver.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1169 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1170 * @return 0.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1171 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1172 int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1173 vixPlaybackGetEq (vidix_video_eq_t * eq)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1174 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1175 memcpy (eq, &equal, sizeof (vidix_video_eq_t));
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1176 return 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1177 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1178
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1179 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1180 * @brief Set the equalizer capabilities for color correction
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1181 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1182 * @param eq equalizer capabilities to be set.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1183 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1184 * @return 0.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1185 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1186 int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1187 vixPlaybackSetEq (const vidix_video_eq_t * eq)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1188 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1189 return 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1190 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1191
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1192 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1193 * @brief Y, U, V offsets.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1194 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1195 static int YOffs, UOffs, VOffs;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1196
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1197 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1198 * @brief Configure driver for playback. Driver should prepare BES.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1199 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1200 * @param info configuration description for playback.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1201 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1202 * @returns 0 in case of success.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1203 * -1 otherwise.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1204 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1205 int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1206 vixConfigPlayback (vidix_playback_t * vinfo)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1207 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1208 int uv_size, swap_uv;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1209 unsigned int i;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1210 int extfifo_on;
14215
9c33810bbc7b 1l misplaced variable declaration
rtognimp
parents: 14203
diff changeset
1211 int srcPitch,srcPitch2;
14203
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1212
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1213 /* Overlay register settings */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1214 uint32_t win_start, win_end;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1215 uint32_t zoom, mini;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1216 uint32_t dcount, falign, qwfetch;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1217 uint32_t y_start, u_start, v_start;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1218 uint32_t v_ctrl, fifo_ctrl;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1219
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1220 if (!is_supported_fourcc (vinfo->fourcc))
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1221 return -1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1222
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1223
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1224
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1225 info->src_w = vinfo->src.w;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1226 info->src_h = vinfo->src.h;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1227
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1228 info->drw_w = vinfo->dest.w;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1229 info->drw_h = vinfo->dest.h;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1230
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1231 info->wx = vinfo->dest.x;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1232 info->wy = vinfo->dest.y;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1233 info->format = vinfo->fourcc;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1234
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1235 info->lastKnownPitch = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1236 info->brightness = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1237 info->contrast = 128;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1238 info->saturation = 128;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1239 info->hue = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1240
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1241
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1242 vinfo->dga_addr=(void*)(info->picture_base);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1243
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1244
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1245 vinfo->offset.y = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1246 vinfo->offset.v = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1247 vinfo->offset.u = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1248
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1249 vinfo->dest.pitch.y = 32;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1250 vinfo->dest.pitch.u = 32;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1251 vinfo->dest.pitch.v = 32;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1252 // vinfo->dest.pitch.u = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1253 // vinfo->dest.pitch.v = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1254
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1255
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1256 info->pitch = ((info->src_w << 1) + 15) & ~15;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1257
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1258 swap_uv = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1259 switch (vinfo->fourcc)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1260 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1261 case IMGFMT_YUY2:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1262 case IMGFMT_UYVY:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1263
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1264 info->pitch = ((info->src_w << 1) + (vinfo->dest.pitch.y-1)) & ~(vinfo->dest.pitch.y-1);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1265
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1266 info->pitch = info->src_w << 1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1267 info->pitch = ALIGN_TO (info->src_w << 1, 32);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1268 uv_size = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1269 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1270 case IMGFMT_YV12:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1271 swap_uv = 1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1272
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1273
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1274
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1275 /*
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1276 srcPitch = (info->src_w + 3) & ~3;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1277 vinfo->offset.u = srcPitch * info->src_h;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1278 srcPitch2 = ((info->src_w >> 1) + 3) & ~3;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1279 vinfo->offset.v = (srcPitch2 * (info->src_h >> 1)) + vinfo->offset.v;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1280
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1281 vinfo->dest.pitch.y=srcPitch ;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1282 vinfo->dest.pitch.v=srcPitch2 ;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1283 vinfo->dest.pitch.u=srcPitch2 ;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1284 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1285
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1286
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1287 info->pitch = ALIGN_TO (info->src_w, 32);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1288 uv_size = (info->pitch >> 1) * (info->src_h >> 1);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1289
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1290 vinfo->offset.y = 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1291 vinfo->offset.v = vinfo->offset.y + info->pitch * info->src_h;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1292 vinfo->offset.u = vinfo->offset.v + uv_size;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1293 vinfo->frame_size = vinfo->offset.u + uv_size;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1294 /* YOffs = info->offset.y;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1295 UOffs = (swap_uv ? vinfo->offset.v : vinfo->offset.u);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1296 VOffs = (swap_uv ? vinfo->offset.u : vinfo->offset.v);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1297 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1298 // vinfo->offset.y = info->src_w;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1299 // vinfo->offset.v = vinfo->offset.y + info->src_w /2 * info->src_h;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1300 // vinfo->offset.u = vinfo->offset.v + (info->src_w >> 1) * (info->src_h >> 1) ;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1301
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1302 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1303 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1304 info->pitch |= ((info->pitch >> 1) << 16);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1305
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1306 vinfo->frame_size = info->pitch * info->src_h;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1307
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1308 printf("$#### destination pitch = %lu\n", info->pitch&0xffff);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1309
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1310
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1311
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1312
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1313 info->buffer_size = vinfo->frame_size;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1314 info->num_frames = vinfo->num_frames= (info->chip.fbsize - info->picture_offset)/vinfo->frame_size;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1315 if(vinfo->num_frames > MAX_FRAMES)vinfo->num_frames = MAX_FRAMES;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1316 // vinfo->num_frames = 1;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1317 // printf("[nvidia_vid] Number of frames %i\n",vinfo->num_frames);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1318 for(i=0;i <vinfo->num_frames;i++)vinfo->offsets[i] = vinfo->frame_size*i;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1319
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1320 return 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1321 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1322
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1323 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1324 * @brief Set playback on : driver should activate BES on this call.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1325 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1326 * @return 0.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1327 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1328 int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1329 vixPlaybackOn (void)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1330 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1331 // FIXME: enable
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1332 SavageDisplayVideoOld();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1333 //FIXME ADD
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1334 return 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1335 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1336
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1337 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1338 * @brief Set playback off : driver should deactivate BES on this call.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1339 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1340 * @return 0.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1341 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1342 int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1343 vixPlaybackOff (void)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1344 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1345 // otherwise we wont disable streams properly in new xorg
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1346 // FIXME: shouldnt this be enabled?
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1347 // SavageStreamsOn();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1348 SavageStreamsOff();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1349 // info->vidixcolorkey=0x0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1350
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1351 // OUTREG( SSTREAM_WINDOW_START_REG, OS_XY(0xfffe, 0xfffe) );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1352 // SavageSetColorKeyOld();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1353 //FIXME ADD
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1354 return 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1355 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1356
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1357 /**
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1358 * @brief Driver should prepare and activate corresponded frame.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1359 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1360 * @param frame the frame index.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1361 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1362 * @return 0.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1363 *
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1364 * @note This function is used only for double and triple buffering
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1365 * and never used for single buffering playback.
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1366 */
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1367 #if 0
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1368 int
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1369 vixPlaybackFrameSelect (unsigned int frame)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1370 {
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1371 ////FIXME ADD
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1372 // savage_overlay_start(info, frame);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1373 //if (info->num_frames >= 1)
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1374 // info->cur_frame = frame//(frame+1)%info->num_frames;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1375 //
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1376 // savage4_waitidle(info);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1377
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1378 printf("vixPlaybackFrameSelect Leave\n" );
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1379 // FIXME: does this work to avoid tearing?
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1380 // VerticalRetraceWait();
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1381
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1382 return 0;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1383 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1384
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1385 #endif
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1386
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1387
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1388
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1389 void debugout(unsigned int addr, unsigned int val){
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1390 return ;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1391 switch ( addr ){
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1392 case PSTREAM_CONTROL_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1393 fprintf(stderr,"PSTREAM_CONTROL_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1394 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1395 case COL_CHROMA_KEY_CONTROL_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1396 fprintf(stderr,"COL_CHROMA_KEY_CONTROL_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1397 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1398 case SSTREAM_CONTROL_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1399 fprintf(stderr,"SSTREAM_CONTROL_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1400 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1401 case CHROMA_KEY_UPPER_BOUND_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1402 fprintf(stderr,"CHROMA_KEY_UPPER_BOUND_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1403 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1404 case SSTREAM_STRETCH_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1405 fprintf(stderr,"SSTREAM_STRETCH_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1406 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1407 case COLOR_ADJUSTMENT_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1408 fprintf(stderr,"COLOR_ADJUSTMENT_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1409 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1410 case BLEND_CONTROL_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1411 fprintf(stderr,"BLEND_CONTROL_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1412 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1413 case PSTREAM_FBADDR0_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1414 fprintf(stderr,"PSTREAM_FBADDR0_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1415 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1416 case PSTREAM_FBADDR1_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1417 fprintf(stderr,"PSTREAM_FBADDR1_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1418 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1419 case PSTREAM_STRIDE_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1420 fprintf(stderr,"PSTREAM_STRIDE_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1421 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1422 case DOUBLE_BUFFER_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1423 fprintf(stderr,"DOUBLE_BUFFER_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1424 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1425 case SSTREAM_FBADDR0_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1426 fprintf(stderr,"SSTREAM_FBADDR0_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1427 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1428 case SSTREAM_FBADDR1_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1429 fprintf(stderr,"SSTREAM_FBADDR1_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1430 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1431 case SSTREAM_STRIDE_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1432 fprintf(stderr,"SSTREAM_STRIDE_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1433 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1434 case SSTREAM_VSCALE_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1435 fprintf(stderr,"SSTREAM_VSCALE_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1436 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1437 case SSTREAM_VINITIAL_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1438 fprintf(stderr,"SSTREAM_VINITIAL_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1439 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1440 case SSTREAM_LINES_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1441 fprintf(stderr,"SSTREAM_LINES_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1442 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1443 case STREAMS_FIFO_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1444 fprintf(stderr,"STREAMS_FIFO_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1445 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1446 case PSTREAM_WINDOW_START_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1447 fprintf(stderr,"PSTREAM_WINDOW_START_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1448 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1449 case PSTREAM_WINDOW_SIZE_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1450 fprintf(stderr,"PSTREAM_WINDOW_SIZE_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1451 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1452 case SSTREAM_WINDOW_START_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1453 fprintf(stderr,"SSTREAM_WINDOW_START_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1454 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1455 case SSTREAM_WINDOW_SIZE_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1456 fprintf(stderr,"SSTREAM_WINDOW_SIZE_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1457 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1458 case FIFO_CONTROL:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1459 fprintf(stderr,"FIFO_CONTROL");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1460 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1461 case PSTREAM_FBSIZE_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1462 fprintf(stderr,"PSTREAM_FBSIZE_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1463 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1464 case SSTREAM_FBSIZE_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1465 fprintf(stderr,"SSTREAM_FBSIZE_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1466 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1467 case SSTREAM_FBADDR2_REG:
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1468 fprintf(stderr,"SSTREAM_FBADDR2_REG");
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1469 break;
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1470
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1471 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1472 fprintf(stderr,":\t\t 0x%08X = %lu\n",val,val);
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1473 }
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1474
8be9b0f1e4b6 experimental savage vidix driver by Reza Jelveh <reza.jelveh at tu-harburg.de>
faust3
parents:
diff changeset
1475