annotate vidix/cyberblade_vid.c @ 36838:7df9dd22f234

Don't set win32 as audio driver if none has been given. Select from the list of audio drivers instead. Having win32 as selected item in the combo box although this isn't used by MPlayer by default is confusing as well. Besides that, there seem to be issues with this driver when changing from or to it during playback.
author ib
date Tue, 25 Feb 2014 13:16:35 +0000
parents 945eab072c9d
children 3c5c93a30fb7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
1 /*
23046
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
2 * VIDIX driver for VIA Cyberblade/i1 chipsets.
26715
9feba3abc178 Remove pointless changelogs.
diego
parents: 26203
diff changeset
3 * Brightness/Contrast controls disabled for the time being - they were
9feba3abc178 Remove pointless changelogs.
diego
parents: 26203
diff changeset
4 * seriously degrading picture quality, especially with TV-Out.
9feba3abc178 Remove pointless changelogs.
diego
parents: 26203
diff changeset
5 *
23046
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
6 * Copyright (C) 2002 Alastair M. Robinson
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
7 * http://www.blackfiveservices.co.uk/EPIAVidix.shtml
26718
051b2632f121 consistency cosmetics: Move some parts of file headers around; typo fixes.
diego
parents: 26715
diff changeset
8 * based on Permedia 3 driver by Måns Rullgård
051b2632f121 consistency cosmetics: Move some parts of file headers around; typo fixes.
diego
parents: 26715
diff changeset
9 * thanks to Gilles Frattini for bugfixes
23046
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
10 *
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
11 * This file is part of MPlayer.
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
12 *
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
13 * MPlayer is free software; you can redistribute it and/or modify
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
14 * it under the terms of the GNU General Public License as published by
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
15 * the Free Software Foundation; either version 2 of the License, or
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
16 * (at your option) any later version.
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
17 *
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
18 * MPlayer is distributed in the hope that it will be useful,
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
21 * GNU General Public License for more details.
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
22 *
26719
3abd1629658b Use standard license headers.
diego
parents: 26718
diff changeset
23 * You should have received a copy of the GNU General Public License along
3abd1629658b Use standard license headers.
diego
parents: 26718
diff changeset
24 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
3abd1629658b Use standard license headers.
diego
parents: 26718
diff changeset
25 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
26715
9feba3abc178 Remove pointless changelogs.
diego
parents: 26203
diff changeset
26 */
9feba3abc178 Remove pointless changelogs.
diego
parents: 26203
diff changeset
27
9feba3abc178 Remove pointless changelogs.
diego
parents: 26203
diff changeset
28 /* To Do:
23046
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
29 * Implement Hue/Saturation controls
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
30 * Support / Test multiple frames
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
31 * Test colour-key code more extensively
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
32 */
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
33
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
34 #include <errno.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
35 #include <stdio.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
36 #include <stdlib.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
37 #include <string.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
38 #include <inttypes.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
39 #include <unistd.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
40
26203
0d255d03016f #include config.h before all other headers.
diego
parents: 23734
diff changeset
41 #include "config.h"
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
42 #include "vidix.h"
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
43 #include "fourcc.h"
22901
a7605669b114 renamed libdha.[hc] to dha.[hc]
ben
parents: 22900
diff changeset
44 #include "dha.h"
22900
a9e111b88c4a merged libdha and libvidix, moved all files from libdha to vidix directory
ben
parents: 22871
diff changeset
45 #include "pci_ids.h"
a9e111b88c4a merged libdha and libvidix, moved all files from libdha to vidix directory
ben
parents: 22871
diff changeset
46 #include "pci_names.h"
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
47
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
48 #include "cyberblade_regs.h"
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
49
23050
49dc254e7cc7 declare variables as static
ben
parents: 23049
diff changeset
50 static pciinfo_t pci_info;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
51
23050
49dc254e7cc7 declare variables as static
ben
parents: 23049
diff changeset
52 static char save_colourkey[6];
49dc254e7cc7 declare variables as static
ben
parents: 23049
diff changeset
53 static char *cyberblade_mem;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
54
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
55 #ifdef DEBUG_LOGFILE
23050
49dc254e7cc7 declare variables as static
ben
parents: 23049
diff changeset
56 static FILE *logfile=0;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
57 #define LOGWRITE(x) {if(logfile) fprintf(logfile,x);}
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
58 #else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
59 #define LOGWRITE(x)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
60 #endif
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
61
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
62 /* Helper functions for reading registers. */
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
63
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
64 static void CROUTW(int reg,int val)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
65 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
66 CROUTB(reg,val&255);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
67 CROUTB(reg+1,(val>>8)&255);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
68 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
69
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
70 static void SROUTW(int reg,int val)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
71 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
72 SROUTB(reg,val&255);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
73 SROUTB(reg+1,(val>>8)&255);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
74 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
75
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
76 static vidix_capability_t cyberblade_cap =
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
77 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
78 "Trident CyberBlade i1 driver",
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
79 "Alastair M. Robinson <blackfive@fakenhamweb.co.uk>",
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
80 TYPE_OUTPUT,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
81 { 0, 0, 0, 0 },
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
82 1024,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
83 1024,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
84 4,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
85 4,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
86 -1,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
87 FLAG_UPSCALER|FLAG_DOWNSCALER,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
88 VENDOR_TRIDENT,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
89 -1,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
90 { 0, 0, 0, 0 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
91 };
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
92
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
93 static unsigned short cyberblade_card_ids[] =
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
94 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
95 DEVICE_TRIDENT_CYBERBLADE_I7,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
96 DEVICE_TRIDENT_CYBERBLADE_I7D,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
97 DEVICE_TRIDENT_CYBERBLADE_I1,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
98 DEVICE_TRIDENT_CYBERBLADE_I12,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
99 DEVICE_TRIDENT_CYBERBLADE_I13,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
100 DEVICE_TRIDENT_CYBERBLADE_XPAI1
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
101 };
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
102
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
103
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
104 static int find_chip(unsigned chip_id)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
105 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
106 unsigned i;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
107 for(i = 0;i < sizeof(cyberblade_card_ids)/sizeof(unsigned short);i++)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
108 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
109 if(chip_id == cyberblade_card_ids[i]) return i;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
110 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
111 return -1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
112 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
113
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
114 static int cyberblade_probe(int verbose, int force)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
115 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
116 pciinfo_t lst[MAX_PCI_DEVICES];
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
117 unsigned i,num_pci;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
118 int err;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
119 err = pci_scan(lst,&num_pci);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
120 if(err)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
121 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
122 printf("[cyberblade] Error occurred during pci scan: %s\n",strerror(err));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
123 return err;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
124 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
125 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
126 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
127 err = ENXIO;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
128 for(i=0; i < num_pci; i++)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
129 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
130 if(lst[i].vendor == VENDOR_TRIDENT)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
131 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
132 int idx;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
133 const char *dname;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
134 idx = find_chip(lst[i].device);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
135 if(idx == -1)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
136 continue;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
137 dname = pci_device_name(VENDOR_TRIDENT, lst[i].device);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
138 dname = dname ? dname : "Unknown chip";
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
139 printf("[cyberblade] Found chip: %s\n", dname);
23167
2ab3eac7f6da synced with upstream vidix, prevented some drivers to work on some configs/archs
ben
parents: 23052
diff changeset
140 #if 0
2ab3eac7f6da synced with upstream vidix, prevented some drivers to work on some configs/archs
ben
parents: 23052
diff changeset
141 if ((lst[i].command & PCI_COMMAND_IO) == 0)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
142 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
143 printf("[cyberblade] Device is disabled, ignoring\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
144 continue;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
145 }
23167
2ab3eac7f6da synced with upstream vidix, prevented some drivers to work on some configs/archs
ben
parents: 23052
diff changeset
146 #endif
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
147 cyberblade_cap.device_id = lst[i].device;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
148 err = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
149 memcpy(&pci_info, &lst[i], sizeof(pciinfo_t));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
150 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
151 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
152 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
153 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
154
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
155 if(err && verbose) printf("[cyberblade] Can't find chip\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
156 return err;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
157 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
158
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
159
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
160 static int cyberblade_init(void)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
161 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
162 cyberblade_mem = map_phys_mem(pci_info.base0, 0x800000);
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
163 enable_app_io();
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
164 save_colourkey[0]=SRINB(0x50);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
165 save_colourkey[1]=SRINB(0x51);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
166 save_colourkey[2]=SRINB(0x52);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
167 save_colourkey[3]=SRINB(0x54);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
168 save_colourkey[4]=SRINB(0x55);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
169 save_colourkey[5]=SRINB(0x56);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
170 #ifdef DEBUG_LOGFILE
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
171 logfile=fopen("/tmp/cyberblade_vidix.log","w");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
172 #endif
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
173 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
174 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
175
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
176 static void cyberblade_destroy(void)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
177 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
178 int protect;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
179 #ifdef DEBUG_LOGFILE
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
180 if(logfile)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
181 fclose(logfile);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
182 #endif
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
183 protect=SRINB(0x11);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
184 SROUTB(0x11, 0x92);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
185 CROUTB(0x8E, 0xc4); /* Disable overlay */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
186 SROUTB(0x50,save_colourkey[0]);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
187 SROUTB(0x51,save_colourkey[1]);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
188 SROUTB(0x52,save_colourkey[2]);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
189 SROUTB(0x54,save_colourkey[3]);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
190 SROUTB(0x55,save_colourkey[4]);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
191 SROUTB(0x56,save_colourkey[5]);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
192 SROUTB(0x11, protect);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
193 disable_app_io();
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
194 unmap_phys_mem(cyberblade_mem, 0x800000);
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
195 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
196
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
197
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
198 static int cyberblade_get_caps(vidix_capability_t *to)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
199 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
200 memcpy(to, &cyberblade_cap, sizeof(vidix_capability_t));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
201 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
202 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
203
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
204
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
205 static int is_supported_fourcc(uint32_t fourcc)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
206 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
207 switch(fourcc)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
208 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
209 case IMGFMT_YUY2:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
210 case IMGFMT_YV12:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
211 case IMGFMT_I420:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
212 case IMGFMT_YVU9:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
213 case IMGFMT_BGR16:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
214 return 1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
215 default:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
216 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
217 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
218 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
219
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
220 static int cyberblade_query_fourcc(vidix_fourcc_t *to)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
221 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
222 if(is_supported_fourcc(to->fourcc))
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
223 {
23049
deefad53512a simplified depth definition
ben
parents: 23046
diff changeset
224 to->depth = VID_DEPTH_ALL;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
225 to->flags = VID_CAP_EXPAND | VID_CAP_SHRINK | VID_CAP_COLORKEY;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
226 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
227 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
228 return ENOSYS;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
229 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
230
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
231
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
232 static int frames[VID_PLAY_MAXFRAMES];
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
233
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
234 static vidix_grkey_t cyberblade_grkey;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
235
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
236 static int cyberblade_get_gkeys(vidix_grkey_t *grkey)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
237 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
238 memcpy(grkey, &cyberblade_grkey, sizeof(vidix_grkey_t));
26753
502f04b67653 cosmetics: Remove useless parentheses from return statements.
diego
parents: 26719
diff changeset
239 return 0;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
240 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
241
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
242 static int cyberblade_set_gkeys(const vidix_grkey_t *grkey)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
243 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
244 int pixfmt=CRINB(0x38);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
245 int protect;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
246 memcpy(&cyberblade_grkey, grkey, sizeof(vidix_grkey_t));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
247
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
248 protect=SRINB(0x11);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
249 SROUTB(0x11, 0x92);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
250
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
251 if(pixfmt&0x28) /* 32 or 24 bpp */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
252 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
253 SROUTB(0x50, cyberblade_grkey.ckey.blue); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
254 SROUTB(0x51, cyberblade_grkey.ckey.green); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
255 SROUTB(0x52, cyberblade_grkey.ckey.red); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
256 SROUTB(0x54, 0xff); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
257 SROUTB(0x55, 0xff); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
258 SROUTB(0x56, 0xff); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
259 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
260 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
261 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
262 int tmp=((cyberblade_grkey.ckey.blue & 0xF8)>>3)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
263 | ((cyberblade_grkey.ckey.green & 0xfc)<<3)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
264 | ((cyberblade_grkey.ckey.red & 0xf8)<<8);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
265 SROUTB(0x50, tmp&0xff); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
266 SROUTB(0x51, (tmp>>8)&0xff); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
267 SROUTB(0x52, 0); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
268 SROUTB(0x54, 0xff); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
269 SROUTB(0x55, 0xff); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
270 SROUTB(0x56, 0x00); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
271 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
272 SROUTB(0x11,protect);
26753
502f04b67653 cosmetics: Remove useless parentheses from return statements.
diego
parents: 26719
diff changeset
273 return 0;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
274 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
275
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
276
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
277 static vidix_video_eq_t equal =
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
278 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
279 VEQ_CAP_BRIGHTNESS | VEQ_CAP_SATURATION | VEQ_CAP_HUE,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
280 300, 100, 0, 0, 0, 0, 0, 0
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
281 };
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
282
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
283 static int cyberblade_get_eq( vidix_video_eq_t * eq)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
284 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
285 memcpy(eq,&equal,sizeof(vidix_video_eq_t));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
286 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
287 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
288
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
289 static int cyberblade_set_eq( const vidix_video_eq_t * eq)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
290 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
291 int br,sat,cr,protect;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
292 if(eq->cap & VEQ_CAP_BRIGHTNESS) equal.brightness = eq->brightness;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
293 if(eq->cap & VEQ_CAP_CONTRAST) equal.contrast = eq->contrast;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
294 if(eq->cap & VEQ_CAP_SATURATION) equal.saturation = eq->saturation;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
295 if(eq->cap & VEQ_CAP_HUE) equal.hue = eq->hue;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
296 if(eq->cap & VEQ_CAP_RGB_INTENSITY)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
297 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
298 equal.red_intensity = eq->red_intensity;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
299 equal.green_intensity = eq->green_intensity;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
300 equal.blue_intensity = eq->blue_intensity;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
301 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
302 equal.flags = eq->flags;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
303
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
304 cr = (equal.contrast) * 31 / 2000; cr+=16;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
305 if (cr < 0) cr = 0; if(cr > 7) cr = 7;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
306 cr=cr<<4 | cr;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
307
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
308 br = (equal.brightness+1000) * 63 / 2000;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
309 if (br < 0) br = 0; if(br > 63) br = 63;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
310 if(br>32) br-=32; else br+=32;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
311
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
312 sat = (equal.saturation + 1000) * 16 / 2000;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
313 if (sat < 0) sat = 0; if(sat > 31) sat = 31;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
314
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
315 protect=SRINB(0x11);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
316 SROUTB(0x11, 0x92);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
317
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
318 SROUTB(0xBC,cr);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
319 SROUTW(0xB0,(br<<10)|4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
320
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
321 SROUTB(0x11, protect);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
322
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
323 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
324 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
325
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
326
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
327 static int YOffs,UOffs,VOffs;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
328
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
329 static int cyberblade_config_playback(vidix_playback_t *info)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
330 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
331 int src_w, drw_w;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
332 int src_h, drw_h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
333 int hscale,vscale;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
334 long base0;
22871
9a8c258f3f29 killed warnings in cyberblade driver
ben
parents: 22858
diff changeset
335 int y_pitch = 0, uv_pitch = 0;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
336 int protect=0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
337 int layout=0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
338 unsigned int i;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
339
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
340 if(!is_supported_fourcc(info->fourcc))
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
341 return -1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
342
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
343 src_w = info->src.w;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
344 src_h = info->src.h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
345
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
346 drw_w = info->dest.w;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
347 drw_h = info->dest.h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
348
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
349 switch(info->fourcc)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
350 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
351 case IMGFMT_YUY2:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
352 case IMGFMT_BGR16:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
353 y_pitch = (src_w*2 + 15) & ~15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
354 uv_pitch = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
355 YOffs=VOffs=UOffs=info->offset.y = info->offset.v = info->offset.u = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
356 info->frame_size = y_pitch*src_h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
357 layout=0x0; /* packed */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
358 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
359 case IMGFMT_YV12:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
360 case IMGFMT_I420:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
361 y_pitch = (src_w+15) & ~15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
362 uv_pitch = ((src_w/2)+7) & ~7;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
363 YOffs=info->offset.y = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
364 VOffs=info->offset.v = y_pitch*src_h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
365 UOffs=info->offset.u = info->offset.v+(uv_pitch)*(src_h/2);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
366 info->frame_size = y_pitch*src_h + 2*uv_pitch*(src_h/2);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
367 layout=0x1; /* planar, 4:1:1 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
368 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
369 case IMGFMT_YVU9:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
370 y_pitch = (src_w+15) & ~15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
371 uv_pitch = ((src_w/4)+3) & ~3;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
372 YOffs=info->offset.y = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
373 VOffs=info->offset.v = y_pitch*src_h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
374 UOffs=info->offset.u = info->offset.v+(uv_pitch)*(src_h/4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
375 info->frame_size = y_pitch*src_h + 2*uv_pitch*(src_h/4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
376 layout=0x51; /* planar, 16:1:1 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
377 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
378 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
379
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
380 /* Assume we have 2 MB to play with */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
381 info->num_frames = 0x200000 / info->frame_size;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
382 if(info->num_frames > VID_PLAY_MAXFRAMES)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
383 info->num_frames = VID_PLAY_MAXFRAMES;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
384
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
385 /* Start at 6 MB. Let's hope it's not in use. */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
386 base0 = 0x600000;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
387 info->dga_addr = cyberblade_mem + base0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
388
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
389 info->dest.pitch.y = 16;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
390 info->dest.pitch.u = 16;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
391 info->dest.pitch.v = 16;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
392
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
393 for(i = 0; i < info->num_frames; i++)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
394 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
395 info->offsets[i] = info->frame_size * i;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
396 frames[i] = base0+info->offsets[i];
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
397 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
398
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
399 OUTPORT8(0x3d4,0x39);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
400 OUTPORT8(0x3d5,INPORT(0x3d5)|1);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
401
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
402 SRINB(0x0b); /* Select new mode */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
403
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
404 /* Unprotect hardware registers... */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
405 protect=SRINB(0x11);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
406 SROUTB(0x11, 0x92);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
407
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
408 SROUTB(0x57, 0xc0); /* Playback key function */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
409 SROUTB(0x21, 0x34); /* Signature control */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
410 SROUTB(0x37, 0x30); /* Video key mode */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
411
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
412 cyberblade_set_gkeys(&cyberblade_grkey);
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
413
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
414 /* compute_scale_factor(&src_w, &drw_w, &shrink, &zoom); */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
415 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
416 int HTotal,VTotal,HSync,VSync,Overflow,HDisp,VDisp;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
417 int HWinStart,VWinStart;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
418 int tx1,ty1,tx2,ty2;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
419
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
420 HTotal=CRINB(0x00);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
421 HSync=CRINB(0x04);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
422 VTotal=CRINB(0x06);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
423 VSync=CRINB(0x10);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
424 Overflow=CRINB(0x07);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
425 HTotal <<=3;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
426 HSync <<=3;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
427 VTotal |= (Overflow & 1) <<8;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
428 VTotal |= (Overflow & 0x20) <<4;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
429 VTotal +=4;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
430 VSync |= (Overflow & 4) <<6;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
431 VSync |= (Overflow & 0x80) <<2;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
432
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
433 if(CRINB(0xd1)&0x80)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
434 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
435 int TVHTotal,TVVTotal,TVHSyncStart,TVVSyncStart,TVOverflow;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
436 LOGWRITE("[cyberblade] Using TV-CRTC\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
437
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
438 HDisp=(1+CRINB(0x01))*8;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
439 VDisp=1+CRINB(0x12);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
440 Overflow=CRINB(0x07);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
441 VDisp |= (Overflow & 2) <<7;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
442 VDisp |= (Overflow & 0x40) << 3;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
443
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
444 TVHTotal=CRINB(0xe0)*8;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
445 TVVTotal=CRINB(0xe6);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
446 TVOverflow=CRINB(0xe7);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
447 if(TVOverflow&0x20) TVVTotal|=512;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
448 if(TVOverflow&0x01) TVVTotal|=256;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
449 TVHTotal+=40; TVVTotal+=2;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
450
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
451 TVHSyncStart=CRINB(0xe4)*8;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
452 TVVSyncStart=CRINB(0xf0);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
453 if(TVOverflow&0x80) TVVSyncStart|=512;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
454 if(TVOverflow&0x04) TVVSyncStart|=256;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
455
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
456 HWinStart=(TVHTotal-HDisp)&15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
457 HWinStart|=(HTotal-HDisp)&15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
458 HWinStart+=(TVHTotal-TVHSyncStart)-49;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
459 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
460 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
461 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
462 LOGWRITE("[cyberblade] Using Standard CRTC\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
463 HWinStart=(HTotal-HSync)+15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
464 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
465 VWinStart=(VTotal-VSync)-8;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
466
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
467 printf("[cyberblade] HTotal: 0x%x, HSStart: 0x%x\n",HTotal,HSync);
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
468 printf(" VTotal: 0x%x, VStart: 0x%x\n",VTotal,VSync);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
469 tx1=HWinStart+info->dest.x;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
470 ty1=VWinStart+info->dest.y;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
471 tx2=tx1+info->dest.w;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
472 ty2=ty1+info->dest.h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
473
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
474 CROUTW(0x86,tx1);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
475 CROUTW(0x88,ty1);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
476 CROUTW(0x8a,tx2);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
477 CROUTW(0x8c,ty2+3);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
478 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
479
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
480 if(src_w==drw_w)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
481 hscale=0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
482 else if(src_w<drw_w)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
483 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
484 hscale=((src_w<<10)/(drw_w-2)) & 0x1fff;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
485 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
486 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
487 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
488 hscale=0x8000 | ((((src_w/drw_w)-1)&7)<<10) | (((drw_w<<10)/src_w) & 0x3ff);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
489 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
490
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
491 vscale=(src_h<<10)/(drw_h);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
492 if(drw_h<src_h)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
493 vscale=0x8000|((drw_h<<10)/(src_h));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
494
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
495 /* Write scale factors to hardware */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
496
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
497 CROUTW(0x80,hscale); /* Horizontal Scale */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
498 CROUTW(0x82,vscale); /* Vertical Scale */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
499
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
500 /* Now set the start address and data layout */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
501 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
502 int lb = (y_pitch+2) >> 2;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
503 CROUTB(0x95, ((lb & 0x100)>>1) | 0x08 ); /* Linebuffer level bit 8 & threshold */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
504 CROUTB(0x96, (lb & 0xFF)); /* Linebuffer level */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
505
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
506 CROUTB(0x97, 0x00); /* VDE Flags */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
507 CROUTB(0xBA, 0x00); /* Chroma key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
508 CROUTB(0xBB, 0x00); /* Chroma key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
509 CROUTB(0xBC, 0xFF); /* Chroma key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
510 CROUTB(0xBD, 0xFF); /* Chroma key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
511 CROUTB(0xBE, 0x04); /* Capture control */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
512
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
513 if(src_w > 384)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
514 layout|=4; /* 2x line buffers */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
515 SROUTB(0x97, layout);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
516
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
517 CROUTW(0x90,y_pitch); /* Y Bytes per row */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
518 SROUTW(0x9A,uv_pitch); /* UV Bytes per row */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
519
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
520 switch(info->fourcc)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
521 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
522 case IMGFMT_BGR16:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
523 CROUTB(0x8F, 0x24); /* VDE Flags - Edge Recovery & CSC Bypass */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
524 CROUTB(0xBF, 0x02); /* Video format - RGB16 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
525 SROUTB(0xBE, 0x0); /* HSCB disabled */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
526 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
527 default:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
528 CROUTB(0x8F, 0x20); /* VDE Flags - Edge Recovery */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
529 CROUTB(0xBF, 0x00); /* Video format - YUV */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
530 SROUTB(0xBE, 0x00); /* HSCB disable - was 0x03*/
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
531 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
532 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
533
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
534 CROUTB(0x92, ((base0+info->offset.y) >> 3) &0xff); /* Lower 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
535 CROUTB(0x93, ((base0+info->offset.y) >> 11) &0xff); /* Mid 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
536 CROUTB(0x94, ((base0+info->offset.y) >> 19) &0xf); /* Upper 4 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
537 SROUTB(0x80, ((base0+info->offset.v) >> 3) &0xff); /* Lower 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
538 SROUTB(0x81, ((base0+info->offset.v) >> 11) &0xff); /* Mid 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
539 SROUTB(0x82, ((base0+info->offset.v) >> 19) &0xf); /* Upper 4 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
540 SROUTB(0x83, ((base0+info->offset.u) >> 3) &0xff); /* Lower 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
541 SROUTB(0x84, ((base0+info->offset.u) >> 11) &0xff); /* Mid 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
542 SROUTB(0x85, ((base0+info->offset.u) >> 19) &0xf); /* Upper 4 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
543 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
544
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
545 cyberblade_set_eq(&equal);
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
546
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
547 /* Protect hardware registers again */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
548 SROUTB(0x11, protect);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
549 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
550 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
551
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
552
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
553 static int cyberblade_playback_on(void)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
554 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
555 LOGWRITE("Enable overlay\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
556 CROUTB(0x8E, 0xd4); /* VDE Flags*/
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
557
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
558 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
559 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
560
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
561
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
562 static int cyberblade_playback_off(void)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
563 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
564 LOGWRITE("Disable overlay\n");
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
565 CROUTB(0x8E, 0xc4); /* VDE Flags*/
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
566
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
567 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
568 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
569
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
570
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
571 static int cyberblade_frame_sel(unsigned int frame)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
572 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
573 int protect;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
574 LOGWRITE("Frame select\n");
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
575 protect=SRINB(0x11);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
576 SROUTB(0x11, 0x92);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
577 /* Set overlay address to that of selected frame */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
578 CROUTB(0x92, ((frames[frame]+YOffs) >> 3) &0xff); /* Lower 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
579 CROUTB(0x93, ((frames[frame]+YOffs) >> 11) &0xff); /* Mid 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
580 CROUTB(0x94, ((frames[frame]+YOffs) >> 19) &0xf); /* Upper 4 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
581 SROUTB(0x80, ((frames[frame]+VOffs) >> 3) &0xff); /* Lower 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
582 SROUTB(0x81, ((frames[frame]+VOffs) >> 11) &0xff); /* Mid 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
583 SROUTB(0x82, ((frames[frame]+VOffs) >> 19) &0xf); /* Upper 4 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
584 SROUTB(0x83, ((frames[frame]+UOffs) >> 3) &0xff); /* Lower 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
585 SROUTB(0x84, ((frames[frame]+UOffs) >> 11) &0xff); /* Mid 8 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
586 SROUTB(0x85, ((frames[frame]+UOffs) >> 19) &0xf); /* Upper 4 bits of start address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
587 SROUTB(0x11, protect);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
588 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
589 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
590
22857
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
591 VDXDriver cyberblade_drv = {
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
592 "cyberblade",
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
593 NULL,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
594 .probe = cyberblade_probe,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
595 .get_caps = cyberblade_get_caps,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
596 .query_fourcc = cyberblade_query_fourcc,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
597 .init = cyberblade_init,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
598 .destroy = cyberblade_destroy,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
599 .config_playback = cyberblade_config_playback,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
600 .playback_on = cyberblade_playback_on,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
601 .playback_off = cyberblade_playback_off,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
602 .frame_sel = cyberblade_frame_sel,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
603 .get_eq = cyberblade_get_eq,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
604 .set_eq = cyberblade_set_eq,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
605 .get_gkey = cyberblade_get_gkeys,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
606 .set_gkey = cyberblade_set_gkeys,
77def5093daf switch to new internal vidix API, no more dlopen/dlsym, libvidix is now a fully static library with all drivers built-in
ben
parents: 22850
diff changeset
607 };