annotate vidix/cyberblade_vid.c @ 32676:db882cd69776

Do not #define _WIN32 on the command line for Cygwin. Newer Cygwin versions no longer do this and hopefully we should be able to survive without this hack as well. This change necessitates adapting two #ifdefs in the MPlayer codebase. It is committed untested as I do not have access to a Cygwin system.
author diego
date Thu, 06 Jan 2011 12:42:59 +0000
parents 0f1b5b68af32
children 945eab072c9d
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 to->depth = to->flags = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
229 return ENOSYS;
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
233 static int frames[VID_PLAY_MAXFRAMES];
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
234
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
235 static vidix_grkey_t cyberblade_grkey;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
236
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
237 static int cyberblade_get_gkeys(vidix_grkey_t *grkey)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
238 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
239 memcpy(grkey, &cyberblade_grkey, sizeof(vidix_grkey_t));
26753
502f04b67653 cosmetics: Remove useless parentheses from return statements.
diego
parents: 26719
diff changeset
240 return 0;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
241 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
242
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
243 static int cyberblade_set_gkeys(const vidix_grkey_t *grkey)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
244 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
245 int pixfmt=CRINB(0x38);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
246 int protect;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
247 memcpy(&cyberblade_grkey, grkey, sizeof(vidix_grkey_t));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
248
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
249 protect=SRINB(0x11);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
250 SROUTB(0x11, 0x92);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
251
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
252 if(pixfmt&0x28) /* 32 or 24 bpp */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
253 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
254 SROUTB(0x50, cyberblade_grkey.ckey.blue); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
255 SROUTB(0x51, cyberblade_grkey.ckey.green); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
256 SROUTB(0x52, cyberblade_grkey.ckey.red); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
257 SROUTB(0x54, 0xff); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
258 SROUTB(0x55, 0xff); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
259 SROUTB(0x56, 0xff); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
260 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
261 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
262 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
263 int tmp=((cyberblade_grkey.ckey.blue & 0xF8)>>3)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
264 | ((cyberblade_grkey.ckey.green & 0xfc)<<3)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
265 | ((cyberblade_grkey.ckey.red & 0xf8)<<8);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
266 SROUTB(0x50, tmp&0xff); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
267 SROUTB(0x51, (tmp>>8)&0xff); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
268 SROUTB(0x52, 0); /* Colour Key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
269 SROUTB(0x54, 0xff); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
270 SROUTB(0x55, 0xff); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
271 SROUTB(0x56, 0x00); /* Colour Key Mask */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
272 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
273 SROUTB(0x11,protect);
26753
502f04b67653 cosmetics: Remove useless parentheses from return statements.
diego
parents: 26719
diff changeset
274 return 0;
22850
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
277
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
278 static vidix_video_eq_t equal =
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
279 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
280 VEQ_CAP_BRIGHTNESS | VEQ_CAP_SATURATION | VEQ_CAP_HUE,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
281 300, 100, 0, 0, 0, 0, 0, 0
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
282 };
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
283
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
284 static int cyberblade_get_eq( vidix_video_eq_t * eq)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
285 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
286 memcpy(eq,&equal,sizeof(vidix_video_eq_t));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
287 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
288 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
289
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
290 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
291 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
292 int br,sat,cr,protect;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
293 if(eq->cap & VEQ_CAP_BRIGHTNESS) equal.brightness = eq->brightness;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
294 if(eq->cap & VEQ_CAP_CONTRAST) equal.contrast = eq->contrast;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
295 if(eq->cap & VEQ_CAP_SATURATION) equal.saturation = eq->saturation;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
296 if(eq->cap & VEQ_CAP_HUE) equal.hue = eq->hue;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
297 if(eq->cap & VEQ_CAP_RGB_INTENSITY)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
298 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
299 equal.red_intensity = eq->red_intensity;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
300 equal.green_intensity = eq->green_intensity;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
301 equal.blue_intensity = eq->blue_intensity;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
302 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
303 equal.flags = eq->flags;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
304
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
305 cr = (equal.contrast) * 31 / 2000; cr+=16;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
306 if (cr < 0) cr = 0; if(cr > 7) cr = 7;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
307 cr=cr<<4 | cr;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
308
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
309 br = (equal.brightness+1000) * 63 / 2000;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
310 if (br < 0) br = 0; if(br > 63) br = 63;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
311 if(br>32) br-=32; else br+=32;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
312
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
313 sat = (equal.saturation + 1000) * 16 / 2000;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
314 if (sat < 0) sat = 0; if(sat > 31) sat = 31;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
315
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
316 protect=SRINB(0x11);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
317 SROUTB(0x11, 0x92);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
318
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
319 SROUTB(0xBC,cr);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
320 SROUTW(0xB0,(br<<10)|4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
321
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
322 SROUTB(0x11, protect);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
323
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
324 return 0;
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
328 static int YOffs,UOffs,VOffs;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
329
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
330 static int cyberblade_config_playback(vidix_playback_t *info)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
331 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
332 int src_w, drw_w;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
333 int src_h, drw_h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
334 int hscale,vscale;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
335 long base0;
22871
9a8c258f3f29 killed warnings in cyberblade driver
ben
parents: 22858
diff changeset
336 int y_pitch = 0, uv_pitch = 0;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
337 int protect=0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
338 int layout=0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
339 unsigned int i;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
340
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
341 if(!is_supported_fourcc(info->fourcc))
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
342 return -1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
343
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
344 src_w = info->src.w;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
345 src_h = info->src.h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
346
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
347 drw_w = info->dest.w;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
348 drw_h = info->dest.h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
349
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
350 switch(info->fourcc)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
351 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
352 case IMGFMT_YUY2:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
353 case IMGFMT_BGR16:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
354 y_pitch = (src_w*2 + 15) & ~15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
355 uv_pitch = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
356 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
357 info->frame_size = y_pitch*src_h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
358 layout=0x0; /* packed */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
359 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
360 case IMGFMT_YV12:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
361 case IMGFMT_I420:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
362 y_pitch = (src_w+15) & ~15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
363 uv_pitch = ((src_w/2)+7) & ~7;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
364 YOffs=info->offset.y = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
365 VOffs=info->offset.v = y_pitch*src_h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
366 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
367 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
368 layout=0x1; /* planar, 4:1:1 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
369 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
370 case IMGFMT_YVU9:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
371 y_pitch = (src_w+15) & ~15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
372 uv_pitch = ((src_w/4)+3) & ~3;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
373 YOffs=info->offset.y = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
374 VOffs=info->offset.v = y_pitch*src_h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
375 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
376 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
377 layout=0x51; /* planar, 16:1:1 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
378 break;
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
381 /* Assume we have 2 MB to play with */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
382 info->num_frames = 0x200000 / info->frame_size;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
383 if(info->num_frames > VID_PLAY_MAXFRAMES)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
384 info->num_frames = VID_PLAY_MAXFRAMES;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
385
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
386 /* 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
387 base0 = 0x600000;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
388 info->dga_addr = cyberblade_mem + base0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
389
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
390 info->dest.pitch.y = 16;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
391 info->dest.pitch.u = 16;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
392 info->dest.pitch.v = 16;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
393
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
394 for(i = 0; i < info->num_frames; i++)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
395 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
396 info->offsets[i] = info->frame_size * i;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
397 frames[i] = base0+info->offsets[i];
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
400 OUTPORT8(0x3d4,0x39);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
401 OUTPORT8(0x3d5,INPORT(0x3d5)|1);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
402
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
403 SRINB(0x0b); /* Select new mode */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
404
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
405 /* Unprotect hardware registers... */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
406 protect=SRINB(0x11);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
407 SROUTB(0x11, 0x92);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
408
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
409 SROUTB(0x57, 0xc0); /* Playback key function */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
410 SROUTB(0x21, 0x34); /* Signature control */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
411 SROUTB(0x37, 0x30); /* Video key mode */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
412
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
413 cyberblade_set_gkeys(&cyberblade_grkey);
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
414
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
415 /* compute_scale_factor(&src_w, &drw_w, &shrink, &zoom); */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
416 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
417 int HTotal,VTotal,HSync,VSync,Overflow,HDisp,VDisp;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
418 int HWinStart,VWinStart;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
419 int tx1,ty1,tx2,ty2;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
420
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
421 HTotal=CRINB(0x00);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
422 HSync=CRINB(0x04);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
423 VTotal=CRINB(0x06);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
424 VSync=CRINB(0x10);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
425 Overflow=CRINB(0x07);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
426 HTotal <<=3;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
427 HSync <<=3;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
428 VTotal |= (Overflow & 1) <<8;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
429 VTotal |= (Overflow & 0x20) <<4;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
430 VTotal +=4;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
431 VSync |= (Overflow & 4) <<6;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
432 VSync |= (Overflow & 0x80) <<2;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
433
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
434 if(CRINB(0xd1)&0x80)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
435 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
436 int TVHTotal,TVVTotal,TVHSyncStart,TVVSyncStart,TVOverflow;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
437 LOGWRITE("[cyberblade] Using TV-CRTC\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
438
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
439 HDisp=(1+CRINB(0x01))*8;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
440 VDisp=1+CRINB(0x12);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
441 Overflow=CRINB(0x07);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
442 VDisp |= (Overflow & 2) <<7;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
443 VDisp |= (Overflow & 0x40) << 3;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
444
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
445 TVHTotal=CRINB(0xe0)*8;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
446 TVVTotal=CRINB(0xe6);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
447 TVOverflow=CRINB(0xe7);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
448 if(TVOverflow&0x20) TVVTotal|=512;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
449 if(TVOverflow&0x01) TVVTotal|=256;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
450 TVHTotal+=40; TVVTotal+=2;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
451
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
452 TVHSyncStart=CRINB(0xe4)*8;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
453 TVVSyncStart=CRINB(0xf0);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
454 if(TVOverflow&0x80) TVVSyncStart|=512;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
455 if(TVOverflow&0x04) TVVSyncStart|=256;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
456
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
457 HWinStart=(TVHTotal-HDisp)&15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
458 HWinStart|=(HTotal-HDisp)&15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
459 HWinStart+=(TVHTotal-TVHSyncStart)-49;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
460 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
461 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
462 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
463 LOGWRITE("[cyberblade] Using Standard CRTC\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
464 HWinStart=(HTotal-HSync)+15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
465 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
466 VWinStart=(VTotal-VSync)-8;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
467
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
468 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
469 printf(" VTotal: 0x%x, VStart: 0x%x\n",VTotal,VSync);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
470 tx1=HWinStart+info->dest.x;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
471 ty1=VWinStart+info->dest.y;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
472 tx2=tx1+info->dest.w;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
473 ty2=ty1+info->dest.h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
474
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
475 CROUTW(0x86,tx1);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
476 CROUTW(0x88,ty1);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
477 CROUTW(0x8a,tx2);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
478 CROUTW(0x8c,ty2+3);
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
481 if(src_w==drw_w)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
482 hscale=0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
483 else if(src_w<drw_w)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
484 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
485 hscale=((src_w<<10)/(drw_w-2)) & 0x1fff;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
486 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
487 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
488 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
489 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
490 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
491
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
492 vscale=(src_h<<10)/(drw_h);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
493 if(drw_h<src_h)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
494 vscale=0x8000|((drw_h<<10)/(src_h));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
495
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
496 /* Write scale factors to hardware */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
497
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
498 CROUTW(0x80,hscale); /* Horizontal Scale */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
499 CROUTW(0x82,vscale); /* Vertical Scale */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
500
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
501 /* Now set the start address and data layout */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
502 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
503 int lb = (y_pitch+2) >> 2;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
504 CROUTB(0x95, ((lb & 0x100)>>1) | 0x08 ); /* Linebuffer level bit 8 & threshold */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
505 CROUTB(0x96, (lb & 0xFF)); /* Linebuffer level */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
506
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
507 CROUTB(0x97, 0x00); /* VDE Flags */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
508 CROUTB(0xBA, 0x00); /* Chroma key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
509 CROUTB(0xBB, 0x00); /* Chroma key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
510 CROUTB(0xBC, 0xFF); /* Chroma key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
511 CROUTB(0xBD, 0xFF); /* Chroma key */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
512 CROUTB(0xBE, 0x04); /* Capture control */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
513
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
514 if(src_w > 384)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
515 layout|=4; /* 2x line buffers */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
516 SROUTB(0x97, layout);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
517
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
518 CROUTW(0x90,y_pitch); /* Y Bytes per row */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
519 SROUTW(0x9A,uv_pitch); /* UV Bytes per row */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
520
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
521 switch(info->fourcc)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
522 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
523 case IMGFMT_BGR16:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
524 CROUTB(0x8F, 0x24); /* VDE Flags - Edge Recovery & CSC Bypass */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
525 CROUTB(0xBF, 0x02); /* Video format - RGB16 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
526 SROUTB(0xBE, 0x0); /* HSCB disabled */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
527 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
528 default:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
529 CROUTB(0x8F, 0x20); /* VDE Flags - Edge Recovery */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
530 CROUTB(0xBF, 0x00); /* Video format - YUV */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
531 SROUTB(0xBE, 0x00); /* HSCB disable - was 0x03*/
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
532 break;
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
535 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
536 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
537 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
538 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
539 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
540 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
541 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
542 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
543 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
544 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
545
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
546 cyberblade_set_eq(&equal);
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
547
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
548 /* Protect hardware registers again */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
549 SROUTB(0x11, protect);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
550 return 0;
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
553
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
554 static int cyberblade_playback_on(void)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
555 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
556 LOGWRITE("Enable overlay\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
557 CROUTB(0x8E, 0xd4); /* VDE Flags*/
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
558
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
559 return 0;
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
562
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
563 static int cyberblade_playback_off(void)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
564 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
565 LOGWRITE("Disable overlay\n");
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
566 CROUTB(0x8E, 0xc4); /* VDE Flags*/
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
567
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
568 return 0;
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
571
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
572 static int cyberblade_frame_sel(unsigned int frame)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
573 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
574 int protect;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
575 LOGWRITE("Frame select\n");
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
576 protect=SRINB(0x11);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
577 SROUTB(0x11, 0x92);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
578 /* Set overlay address to that of selected frame */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
579 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
580 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
581 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
582 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
583 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
584 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
585 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
586 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
587 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
588 SROUTB(0x11, protect);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
589 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
590 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
591
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
592 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
593 "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
594 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
595 .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
596 .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
597 .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
598 .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
599 .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
600 .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
601 .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
602 .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
603 .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
604 .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
605 .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
606 .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
607 .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
608 };