annotate vidix/unichrome_vid.c @ 36730:8bc4d669c5d7

Enable option font_encoding without freetype. subtitle_font_encoding is now also used when freetype is disabled. This is corresponding to r36825, although the GUI doesn't support changing the option through the preferences in this case (but it's in gui.conf at least).
author ib
date Thu, 13 Feb 2014 10:41:33 +0000
parents 598ef7d90b78
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 CLE266/Unichrome chipsets.
26715
9feba3abc178 Remove pointless changelogs.
diego
parents: 26203
diff changeset
3 *
23046
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
4 * Copyright (C) 2004 Timothy Lee
26715
9feba3abc178 Remove pointless changelogs.
diego
parents: 26203
diff changeset
5 * Thanks to Gilles Frattini for bugfixes
9feba3abc178 Remove pointless changelogs.
diego
parents: 26203
diff changeset
6 * Doxygen documentation by Benjamin Zores <ben@geexbox.org>
9feba3abc178 Remove pointless changelogs.
diego
parents: 26203
diff changeset
7 * h/w revision detection by Timothy Lee <timothy.lee@siriushk.com>
23046
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
8 *
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
9 * 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
10 *
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
11 * 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
12 * 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
13 * 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
14 * (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
15 *
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
16 * 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
17 * 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
18 * 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
19 * 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
20 *
26719
3abd1629658b Use standard license headers.
diego
parents: 26715
diff changeset
21 * You should have received a copy of the GNU General Public License along
3abd1629658b Use standard license headers.
diego
parents: 26715
diff changeset
22 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
3abd1629658b Use standard license headers.
diego
parents: 26715
diff changeset
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23046
82216ef041e0 updated vidix files headers whenever it's possible to have a clear GPL statement
ben
parents: 22905
diff changeset
24 */
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
25
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
26 #include <errno.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
27 #include <stdio.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
28 #include <stdlib.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
29 #include <string.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
30 #include <inttypes.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
31 #include <unistd.h>
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
32
26203
0d255d03016f #include config.h before all other headers.
diego
parents: 23060
diff changeset
33 #include "config.h"
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
34 #include "vidix.h"
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
35 #include "fourcc.h"
22901
a7605669b114 renamed libdha.[hc] to dha.[hc]
ben
parents: 22900
diff changeset
36 #include "dha.h"
22900
a9e111b88c4a merged libdha and libvidix, moved all files from libdha to vidix directory
ben
parents: 22874
diff changeset
37 #include "pci_ids.h"
a9e111b88c4a merged libdha and libvidix, moved all files from libdha to vidix directory
ben
parents: 22874
diff changeset
38 #include "pci_names.h"
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
39
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
40 #include "unichrome_regs.h"
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
41
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
42 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
43 * @brief Information on PCI device.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
44 */
23059
7d3914646699 declare variables as static
ben
parents: 23046
diff changeset
45 static pciinfo_t pci_info;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
46
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 * @brief Unichrome driver colorkey settings.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
49 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
50 static vidix_grkey_t uc_grkey;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
51
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
52 static int frames[VID_PLAY_MAXFRAMES];
23059
7d3914646699 declare variables as static
ben
parents: 23046
diff changeset
53 static uint8_t *vio;
7d3914646699 declare variables as static
ben
parents: 23046
diff changeset
54 static uint8_t *uc_mem;
7d3914646699 declare variables as static
ben
parents: 23046
diff changeset
55 static uint8_t mclk_save[3];
7d3914646699 declare variables as static
ben
parents: 23046
diff changeset
56 static uint8_t hwrev;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
57
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
58 #define VIA_OUT(hwregs, reg, val) *(volatile uint32_t *)((hwregs) + (reg)) = (val)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
59 #define VIA_IN(hwregs, reg) *(volatile uint32_t *)((hwregs) + (reg))
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
60 #define VGA_OUT8(hwregs, reg, val) *(volatile uint8_t *)((hwregs) + (reg) + 0x8000) = (val)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
61 #define VGA_IN8(hwregs, reg) *(volatile uint8_t *)((hwregs) + (reg) + 0x8000)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
62 #define VIDEO_OUT(hwregs, reg, val) VIA_OUT((hwregs)+0x200, reg, val)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
63 #define VIDEO_IN(hwregs, reg) VIA_IN((hwregs)+0x200, reg)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
64
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
65 #define outb(val,reg) OUTPORT8(reg,val)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
66 #define inb(reg) INPORT8(reg)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
67
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
68 #define ALIGN_TO(v, n) (((v) + (n-1)) & ~(n-1))
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
69 #define UC_MAP_V1_FIFO_CONTROL(depth, pre_thr, thr) \
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
70 (((depth)-1) | ((thr) << 8) | ((pre_thr) << 24))
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 #define VIDEOMEMORY_SIZE (8 * 1024 * 1024)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
73 #define FRAMEBUFFER_SIZE 0x200000
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
74 #define FRAMEBUFFER_START (VIDEOMEMORY_SIZE - FRAMEBUFFER_SIZE)
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 #ifdef DEBUG_LOGFILE
23059
7d3914646699 declare variables as static
ben
parents: 23046
diff changeset
77 static FILE *logfile = 0;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
78 #define LOGWRITE(x) {if(logfile) fprintf(logfile,x);}
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
79 #else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
80 #define LOGWRITE(x)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
81 #endif
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
82
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
83 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
84 * @brief Unichrome driver vidix capabilities.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
85 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
86 static vidix_capability_t uc_cap = {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
87 "VIA CLE266 Unichrome driver",
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
88 "Timothy Lee <timothy@siriushk.com>",
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
89 TYPE_OUTPUT,
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 4096,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
92 4096,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
93 4,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
94 4,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
95 -1,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
96 FLAG_UPSCALER | FLAG_DOWNSCALER,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
97 VENDOR_VIA2,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
98 -1,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
99 {0, 0, 0, 0}
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
100 };
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 * @brief list of card IDs compliant with the Unichrome driver .
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
104 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
105 static unsigned short uc_card_ids[] = {
22874
9a8f6901e888 updated pci ids list, fixed vidix drivers compilation and added nearly exhaustive pci ids for nvidia driver
ben
parents: 22866
diff changeset
106 DEVICE_VIA2_VT8623_APOLLO_CLE266,
9a8f6901e888 updated pci ids list, fixed vidix drivers compilation and added nearly exhaustive pci ids for nvidia driver
ben
parents: 22866
diff changeset
107 DEVICE_VIA2_VT8378_S3_UNICHROME
22850
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
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 * @brief Find chip index in Unichrome compliant devices list.
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 * @param chip_id PCI device ID.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
114 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
115 * @returns index position in uc_card_ids if successful.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
116 * -1 if chip_id is not a compliant chipset ID.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
117 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
118 static int
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
119 find_chip (unsigned chip_id)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
120 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
121 unsigned i;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
122 for (i = 0; i < sizeof (uc_card_ids) / sizeof (unsigned short); i++)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
123 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
124 if (chip_id == uc_card_ids[i])
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
125 return i;
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 return -1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
128 }
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 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
131 * @brief Map hardware settings for vertical scaling.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
132 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
133 * @param sh source height.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
134 * @param dh destination height.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
135 * @param zoom will hold vertical setting of zoom register.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
136 * @param mini will hold vertical setting of mini register.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
137 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
138 * @returns 1 if successful.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
139 * 0 if the zooming factor is too large or small.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
140 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
141 * @note Derived from VIA's V4L driver.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
142 * See ddover.c, DDOVER_HQVCalcZoomHeight()
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
143 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
144 static int
22866
234c5f92d585 killed warnings in unichrome driver
ben
parents: 22858
diff changeset
145 uc_ovl_map_vzoom (uint32_t sh, uint32_t dh, uint32_t * zoom, uint32_t * mini)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
146 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
147 uint32_t sh1, tmp, d;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
148 int zoom_ok = 1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
149
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
150 if (sh == dh) /* No zoom */
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 /* Do nothing */
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 else if (sh < dh) /* Zoom in */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
155 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
156 tmp = (sh * 0x0400) / dh;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
157 zoom_ok = !(tmp > 0x3ff);
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 *zoom |= (tmp & 0x3ff) | V1_Y_ZOOM_ENABLE;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
160 *mini |= V1_Y_INTERPOLY | V1_YCBCR_INTERPOLY;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
161 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
162 else /* sw > dh - Zoom out */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
163 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
164 /* Find a suitable divider (1 << d) = {2, 4, 8 or 16} */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
165 sh1 = sh;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
166 for (d = 1; d < 5; d++)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
167 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
168 sh1 >>= 1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
169 if (sh1 <= dh)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
170 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
171 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
172 if (d == 5) /* too small */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
173 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
174 d = 4;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
175 zoom_ok = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
176 }
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 *mini |= ((d << 1) - 1) << 16; /* <= {1,3,5,7} << 16 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
179
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
180 /* Add scaling */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
181 if (sh1 < dh)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
182 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
183 tmp = (sh1 * 0x400) / dh;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
184 *zoom |= ((tmp & 0x3ff) | V1_Y_ZOOM_ENABLE);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
185 *mini |= V1_Y_INTERPOLY | V1_YCBCR_INTERPOLY;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
186 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
187 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
188
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
189 return zoom_ok;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
190 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
191
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
192 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
193 * @brief Map hardware settings for horizontal scaling.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
194 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
195 * @param sw source width.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
196 * @param dw destination width.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
197 * @param zoom will hold horizontal setting of zoom register.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
198 * @param mini will hold horizontal setting of mini register.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
199 * @param falign will hold fetch aligment.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
200 * @param dcount will hold display count.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
201 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
202 * @returns 1 if successful.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
203 * 0 if the zooming factor is too large or small.
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 * @note Derived from VIA's V4L driver.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
206 * See ddover.c, DDOVER_HQVCalcZoomWidth() and DDOver_GetDisplayCount()
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
207 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
208 static int
22866
234c5f92d585 killed warnings in unichrome driver
ben
parents: 22858
diff changeset
209 uc_ovl_map_hzoom (uint32_t sw, uint32_t dw, uint32_t * zoom, uint32_t * mini,
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
210 int *falign, int *dcount)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
211 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
212 uint32_t tmp, sw1, d;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
213 int md; /* Minify-divider */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
214 int zoom_ok = 1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
215
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
216 md = 1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
217 *falign = 0;
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 if (sw == dw) /* no zoom */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
220 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
221 /* Do nothing */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
222 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
223 else if (sw < dw) /* zoom in */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
224 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
225 tmp = (sw * 0x0800) / dw;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
226 zoom_ok = !(tmp > 0x7ff);
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 *zoom |= ((tmp & 0x7ff) << 16) | V1_X_ZOOM_ENABLE;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
229 *mini |= V1_X_INTERPOLY;
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 else /* sw > dw - Zoom out */
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
232 {
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
233 /* Find a suitable divider (1 << d) = {2, 4, 8 or 16} */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
234 sw1 = sw;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
235 for (d = 1; d < 5; d++)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
236 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
237 sw1 >>= 1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
238 if (sw1 <= dw)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
239 break;
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 if (d == 5) /* too small */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
242 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
243 d = 4;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
244 zoom_ok = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
245 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
246
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
247 md = 1 << d; /* <= {2,4,8,16} */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
248 *falign = ((md << 1) - 1) & 0xf; /* <= {3,7,15,15} */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
249 *mini |= V1_X_INTERPOLY;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
250 *mini |= ((d << 1) - 1) << 24; /* <= {1,3,5,7} << 24 */
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 /* Add scaling */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
253 if (sw1 < dw)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
254 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
255 /* CLE bug */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
256 /* tmp = sw1*0x0800 / dw; */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
257 tmp = (sw1 - 2) * 0x0800 / dw;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
258 *zoom |= ((tmp & 0x7ff) << 16) | V1_X_ZOOM_ENABLE;
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 }
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 *dcount = sw - md;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
263 return zoom_ok;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
264 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
265
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
266 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
267 * @brief qword fetch register setting.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
268 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
269 * @param format overlay pixel format.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
270 * @param sw source width.
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 * @return qword fetch register setting
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
273 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
274 * @note Derived from VIA's V4L driver. See ddover.c, DDOver_GetFetch()
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
275 * @note Only call after uc_ovl_map_hzoom()
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 static uint32_t
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
278 uc_ovl_map_qwfetch (uint32_t format, int sw)
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 uint32_t fetch = 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 switch (format)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
283 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
284 case IMGFMT_YV12:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
285 case IMGFMT_I420:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
286 fetch = ALIGN_TO (sw, 32) >> 4;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
287 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
288 case IMGFMT_UYVY:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
289 case IMGFMT_YVYU:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
290 case IMGFMT_YUY2:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
291 fetch = (ALIGN_TO (sw << 1, 16) >> 4) + 1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
292 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
293 case IMGFMT_BGR15:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
294 case IMGFMT_BGR16:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
295 fetch = (ALIGN_TO (sw << 1, 16) >> 4) + 1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
296 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
297 case IMGFMT_BGR32:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
298 fetch = (ALIGN_TO (sw << 2, 16) >> 4) + 1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
299 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
300 default:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
301 printf ("[unichrome] Unexpected pixelformat!");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
302 break;
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
305 if (fetch < 4)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
306 fetch = 4;
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 return fetch;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
309 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
310
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 * @brief Map pixel format.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
313 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
314 * @param format pixel format.
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 * @return the mapped pixel format.
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 * @note Derived from VIA's V4L driver. See ddover.c, DDOver_GetV1Format()
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
319 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
320 static uint32_t
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
321 uc_ovl_map_format (uint32_t format)
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 switch (format)
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 case IMGFMT_UYVY:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
326 case IMGFMT_YVYU:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
327 case IMGFMT_YUY2:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
328 return V1_COLORSPACE_SIGN | V1_YUV422;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
329 case IMGFMT_IYUV:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
330 return V1_COLORSPACE_SIGN | V1_YCbCr420 | V1_SWAP_SW;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
331 case IMGFMT_YV12:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
332 case IMGFMT_I420:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
333 return V1_COLORSPACE_SIGN | V1_YCbCr420;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
334 case IMGFMT_BGR15:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
335 return V1_RGB15;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
336 case IMGFMT_BGR16:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
337 return V1_RGB16;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
338 case IMGFMT_BGR32:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
339 return V1_RGB32;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
340 default:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
341 printf ("[unichrome] Unexpected pixelformat!");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
342 return V1_YUV422;
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 }
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 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
347 * @brief Calculate V1 control and fifo-control register values.
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 * @param format pixel format.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
350 * @param sw source width.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
351 * @param hwrev CLE266 hardware revision.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
352 * @param extfifo_on set this 1 if the extended FIFO is enabled.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
353 * @param control will hold value for V1_CONTROL.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
354 * @param fifo will hold value for V1_FIFO_CONTROL.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
355 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
356 static void
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
357 uc_ovl_map_v1_control (uint32_t format, int sw,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
358 int hwrev, int extfifo_on,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
359 uint32_t * control, uint32_t * fifo)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
360 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
361 *control = V1_BOB_ENABLE | uc_ovl_map_format (format);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
362
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
363 if (hwrev == 0x10)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
364 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
365 *control |= V1_EXPIRE_NUM_F;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
366 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
367 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
368 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
369 if (extfifo_on)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
370 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
371 *control |= V1_EXPIRE_NUM_A | V1_FIFO_EXTENDED;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
372 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
373 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
374 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
375 *control |= V1_EXPIRE_NUM;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
376 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
377 }
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 if ((format == IMGFMT_YV12) || (format == IMGFMT_I420))
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 /* Minified video will be skewed without this workaround. */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
382 if (sw <= 80) /* Fetch count <= 5 */
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27079
diff changeset
383 {
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
384 *fifo = UC_MAP_V1_FIFO_CONTROL (16, 0, 0);
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 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
387 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
388 if (hwrev == 0x10)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
389 *fifo = UC_MAP_V1_FIFO_CONTROL (64, 56, 56);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
390 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
391 *fifo = UC_MAP_V1_FIFO_CONTROL (16, 12, 8);
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 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
394 else
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 if (hwrev == 0x10)
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 *fifo = UC_MAP_V1_FIFO_CONTROL (64, 56, 56); /* Default rev 0x10 */
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 else
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 if (extfifo_on)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
403 *fifo = UC_MAP_V1_FIFO_CONTROL (48, 40, 40);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
404 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
405 *fifo = UC_MAP_V1_FIFO_CONTROL (32, 29, 16); /* Default */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
406 }
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 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
409
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
410 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
411 * @brief Setup extended FIFO.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
412 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
413 * @param extfifo_on pointer determining if extended fifo is enable or not.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
414 * @param dst_w destination width.
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 static void
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
417 uc_ovl_setup_fifo (int *extfifo_on, int dst_w)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
418 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
419 if (dst_w <= 1024) /* Disable extended FIFO */
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 outb (0x16, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
422 outb (mclk_save[0], 0x3c5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
423 outb (0x17, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
424 outb (mclk_save[1], 0x3c5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
425 outb (0x18, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
426 outb (mclk_save[2], 0x3c5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
427 *extfifo_on = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
428 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
429 else /* Enable extended FIFO */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
430 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
431 outb (0x17, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
432 outb (0x2f, 0x3c5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
433 outb (0x16, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
434 outb ((mclk_save[0] & 0xf0) | 0x14, 0x3c5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
435 outb (0x18, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
436 outb (0x56, 0x3c5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
437 *extfifo_on = 1;
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 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
440
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
441 static void
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
442 uc_ovl_vcmd_wait (volatile uint8_t * vio)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
443 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
444 while ((VIDEO_IN (vio, V_COMPOSE_MODE)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
445 & (V1_COMMAND_FIRE | V3_COMMAND_FIRE)));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
446 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
447
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
448 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
449 * @brief Probe hardware to find some useable chipset.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
450 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
451 * @param verbose specifies verbose level.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
452 * @param force specifies force mode : driver should ignore
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
453 * device_id (danger but useful for new devices)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
454 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
455 * @returns 0 if it can handle something in PC.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
456 * a negative error code otherwise.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
457 */
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
458 static int
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
459 unichrome_probe (int verbose, int force)
22850
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 pciinfo_t lst[MAX_PCI_DEVICES];
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
462 unsigned i, num_pci;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
463 int err;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
464 err = pci_scan (lst, &num_pci);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
465 if (err)
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 ("[unichrome] Error occurred during pci scan: %s\n",
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
468 strerror (err));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
469 return err;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
470 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
471 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
472 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
473 err = ENXIO;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
474 for (i = 0; i < num_pci; i++)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
475 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
476 if (lst[i].vendor == VENDOR_VIA2)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
477 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
478 int idx;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
479 const char *dname;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
480 idx = find_chip (lst[i].device);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
481 if (idx == -1)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
482 continue;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
483 dname = pci_device_name (VENDOR_VIA2, lst[i].device);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
484 dname = dname ? dname : "Unknown chip";
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
485 printf ("[unichrome] Found chip: %s\n", dname);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
486 if ((lst[i].command & PCI_COMMAND_IO) == 0)
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 printf ("[unichrome] Device is disabled, ignoring\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
489 continue;
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 uc_cap.device_id = lst[i].device;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
492 err = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
493 memcpy (&pci_info, &lst[i], sizeof (pciinfo_t));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
494 break;
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 }
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
499 if (err && verbose)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
500 printf ("[unichrome] Can't find chip\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
501 return err;
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
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
504 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
505 * @brief Initializes driver.
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 * @returns 0 if ok.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
508 * a negative error code otherwise.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
509 */
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
510 static int
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
511 unichrome_init (void)
22850
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 long tmp;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
514 uc_mem = map_phys_mem (pci_info.base0, VIDEOMEMORY_SIZE);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
515 enable_app_io ();
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 outb (0x2f, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
518 tmp = inb (0x3c5) << 0x18;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
519 vio = map_phys_mem (tmp, 0x1000);
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 outb (0x16, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
522 mclk_save[0] = inb (0x3c5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
523 outb (0x17, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
524 mclk_save[1] = inb (0x3c5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
525 outb (0x18, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
526 mclk_save[2] = inb (0x3c5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
527
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
528 uc_grkey.ckey.blue = 0x00;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
529 uc_grkey.ckey.green = 0x00;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
530 uc_grkey.ckey.red = 0x00;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
531
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
532 /* Detect whether we have a CLE266Ax or CLE266Cx */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
533 outb (0x4f, 0x3d4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
534 tmp = inb (0x3d5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
535 outb (0x4f, 0x3d4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
536 outb (0x55, 0x3d5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
537 outb (0x4f, 0x3d4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
538 if (0x55 == inb (0x3d5))
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
539 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
540 /* Only CLE266Cx supports CR4F */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
541 hwrev = 0x11;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
542 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
543 else
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 /* Otherwise assume to be a CLE266Ax */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
546 hwrev = 0x00;
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 outb (0x4f, 0x3d4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
549 outb (tmp, 0x3d5);
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 #ifdef DEBUG_LOGFILE
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
552 logfile = fopen ("/tmp/uc_vidix.log", "w");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
553 #endif
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
554 return 0;
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
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 * @brief Destroys driver.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
559 */
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
560 static void
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
561 unichrome_destroy (void)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
562 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
563 #ifdef DEBUG_LOGFILE
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
564 if (logfile)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
565 fclose (logfile);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
566 #endif
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
567 outb (0x16, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
568 outb (mclk_save[0], 0x3c5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
569 outb (0x17, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
570 outb (mclk_save[1], 0x3c5);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
571 outb (0x18, 0x3c4);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
572 outb (mclk_save[2], 0x3c5);
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 disable_app_io ();
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
575 unmap_phys_mem (uc_mem, VIDEOMEMORY_SIZE);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
576 unmap_phys_mem (vio, 0x1000);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
577 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
578
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
579 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
580 * @brief Get chipset's hardware capabilities.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
581 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
582 * @param to Pointer to the vidix_capability_t structure to be filled.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
583 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
584 * @returns 0.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
585 */
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
586 static int
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
587 unichrome_get_caps (vidix_capability_t * to)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
588 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
589 memcpy (to, &uc_cap, sizeof (vidix_capability_t));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
590 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
591 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
592
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
593 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
594 * @brief Report if the video FourCC is supported by hardware.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
595 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
596 * @param fourcc input image format.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
597 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
598 * @returns 1 if the fourcc is supported.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
599 * 0 otherwise.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
600 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
601 static int
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
602 is_supported_fourcc (uint32_t fourcc)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
603 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
604 switch (fourcc)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
605 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
606 case IMGFMT_YV12:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
607 case IMGFMT_I420:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
608 case IMGFMT_UYVY:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
609 case IMGFMT_YVYU:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
610 case IMGFMT_YUY2:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
611 case IMGFMT_BGR15:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
612 case IMGFMT_BGR16:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
613 case IMGFMT_BGR32:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
614 return 1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
615 default:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
616 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
617 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
618 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
619
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
620 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
621 * @brief Try to configure video memory for given fourcc.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
622 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
623 * @param to Pointer to the vidix_fourcc_t structure to be filled.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
624 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
625 * @returns 0 if ok.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
626 * errno otherwise.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
627 */
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
628 static int
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
629 unichrome_query_fourcc (vidix_fourcc_t * to)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
630 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
631 if (is_supported_fourcc (to->fourcc))
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
632 {
23060
91ad6d4d6a54 simplified depth definition
ben
parents: 23059
diff changeset
633 to->depth = VID_DEPTH_ALL;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
634 to->flags = VID_CAP_EXPAND | VID_CAP_SHRINK | VID_CAP_COLORKEY;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
635 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
636 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
637 return ENOSYS;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
638 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
639
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
640 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
641 * @brief Get the GrKeys
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
642 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
643 * @param grkey Pointer to the vidix_grkey_t structure to be filled by driver.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
644 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
645 * @return 0.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
646 */
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
647 static int
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
648 unichrome_get_gkey (vidix_grkey_t * grkey)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
649 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
650 memcpy (grkey, &uc_grkey, sizeof (vidix_grkey_t));
26753
502f04b67653 cosmetics: Remove useless parentheses from return statements.
diego
parents: 26719
diff changeset
651 return 0;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
652 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
653
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
654 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
655 * @brief Set the GrKeys
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
656 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
657 * @param grkey Colorkey to be set.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
658 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
659 * @return 0.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
660 */
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
661 static int
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
662 unichrome_set_gkey (const vidix_grkey_t * grkey)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
663 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
664 unsigned long dwCompose = VIDEO_IN (vio, V_COMPOSE_MODE) & ~0x0f;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
665 memcpy (&uc_grkey, grkey, sizeof (vidix_grkey_t));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
666 if (uc_grkey.ckey.op != CKEY_FALSE)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
667 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
668 /* Set colorkey (how do I detect BPP in hardware ??) */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
669 unsigned long ckey;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
670 if (1) /* Assume 16-bit graphics */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
671 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
672 ckey = (grkey->ckey.blue & 0x1f)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
673 | ((grkey->ckey.green & 0x3f) << 5)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
674 | ((grkey->ckey.red & 0x1f) << 11);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
675 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
676 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
677 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
678 ckey = (grkey->ckey.blue)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
679 | (grkey->ckey.green << 8) | (grkey->ckey.red << 16);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
680 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
681 VIDEO_OUT (vio, V_COLOR_KEY, ckey);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
682 dwCompose |= SELECT_VIDEO_IF_COLOR_KEY;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
683 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
684
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
685 /* Execute the changes */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
686 VIDEO_OUT (vio, V_COMPOSE_MODE, dwCompose | V1_COMMAND_FIRE);
26753
502f04b67653 cosmetics: Remove useless parentheses from return statements.
diego
parents: 26719
diff changeset
687 return 0;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
688 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
689
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
690 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
691 * @brief Unichrome driver equalizer capabilities.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
692 */
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
693 static vidix_video_eq_t equal = {
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
694 VEQ_CAP_BRIGHTNESS | VEQ_CAP_SATURATION | VEQ_CAP_HUE,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
695 300, 100, 0, 0, 0, 0, 0, 0
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
696 };
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
697
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
698
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
699 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
700 * @brief Get the equalizer capabilities.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
701 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
702 * @param eq Pointer to the vidix_video_eq_t structure to be filled by driver.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
703 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
704 * @return 0.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
705 */
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
706 static int
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
707 unichrome_get_eq (vidix_video_eq_t * eq)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
708 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
709 memcpy (eq, &equal, sizeof (vidix_video_eq_t));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
710 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
711 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
712
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
713 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
714 * @brief Set the equalizer capabilities for color correction
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
715 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
716 * @param eq equalizer capabilities to be set.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
717 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
718 * @return 0.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
719 */
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
720 static int
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
721 unichrome_set_eq (const vidix_video_eq_t * eq)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
722 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
723 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
724 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
725
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
726 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
727 * @brief Y, U, V offsets.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
728 */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
729 static int YOffs, UOffs, VOffs;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
730
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
731 static int unichrome_frame_select (unsigned int frame);
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
732
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
733 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
734 * @brief Configure driver for playback. Driver should prepare BES.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
735 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
736 * @param info configuration description for playback.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
737 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
738 * @returns 0 in case of success.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
739 * -1 otherwise.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
740 */
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
741 static int
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
742 unichrome_config_playback (vidix_playback_t * info)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
743 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
744 int src_w, drw_w;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
745 int src_h, drw_h;
22866
234c5f92d585 killed warnings in unichrome driver
ben
parents: 22858
diff changeset
746 long base0, pitch = 0;
234c5f92d585 killed warnings in unichrome driver
ben
parents: 22858
diff changeset
747 int uv_size = 0, swap_uv;
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
748 unsigned int i;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
749 int extfifo_on;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
750
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
751 /* Overlay register settings */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
752 uint32_t win_start, win_end;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
753 uint32_t zoom, mini;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
754 uint32_t dcount, falign, qwfetch;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
755 uint32_t v_ctrl, fifo_ctrl;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
756
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
757 if (!is_supported_fourcc (info->fourcc))
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
758 return -1;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
759
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
760 src_w = info->src.w;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
761 src_h = info->src.h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
762
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
763 drw_w = info->dest.w;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
764 drw_h = info->dest.h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
765
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
766 /* Setup FIFO */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
767 uc_ovl_setup_fifo (&extfifo_on, src_w);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
768
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
769 /* Get image format, FIFO size, etc. */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
770 uc_ovl_map_v1_control (info->fourcc, src_w, hwrev, extfifo_on,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
771 &v_ctrl, &fifo_ctrl);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
772
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
773 /* Setup layer window */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
774 win_start = (info->dest.x << 16) | info->dest.y;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
775 win_end = ((info->dest.x + drw_w - 1) << 16) | (info->dest.y + drw_h - 1);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
776
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
777 /* Get scaling and data-fetch parameters */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
778 zoom = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
779 mini = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
780 uc_ovl_map_vzoom (src_h, drw_h, &zoom, &mini);
22866
234c5f92d585 killed warnings in unichrome driver
ben
parents: 22858
diff changeset
781 uc_ovl_map_hzoom (src_w, drw_w, &zoom, &mini, (int *) &falign, (int *) &dcount);
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
782 qwfetch = uc_ovl_map_qwfetch (info->fourcc, src_w);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
783
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
784 /* Calculate buffer sizes */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
785 swap_uv = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
786 switch (info->fourcc)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
787 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
788 case IMGFMT_YV12:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
789 swap_uv = 1;
36641
598ef7d90b78 Document switch case fallthroughs.
reimar
parents: 36634
diff changeset
790 /* Fallthrough, same as the following otherwise */
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
791 case IMGFMT_I420:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
792 case IMGFMT_UYVY:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
793 case IMGFMT_YVYU:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
794 pitch = ALIGN_TO (src_w, 32);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
795 uv_size = (pitch >> 1) * (src_h >> 1);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
796 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
797
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
798 case IMGFMT_YUY2:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
799 case IMGFMT_BGR15:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
800 case IMGFMT_BGR16:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
801 pitch = ALIGN_TO (src_w << 1, 32);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
802 uv_size = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
803 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
804
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
805 case IMGFMT_BGR32:
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
806 pitch = ALIGN_TO (src_w << 2, 32);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
807 uv_size = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
808 break;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
809 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
810 if ((src_w > 4096) || (src_h > 4096) ||
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
811 (src_w < 32) || (src_h < 1) || (pitch > 0x1fff))
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
812 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
813 printf ("[unichrome] Layer size out of bounds\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
814 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
815
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
816 /* Calculate offsets */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
817 info->offset.y = 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
818 info->offset.v = info->offset.y + pitch * src_h;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
819 info->offset.u = info->offset.v + uv_size;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
820 info->frame_size = info->offset.u + uv_size;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
821 YOffs = info->offset.y;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
822 UOffs = (swap_uv ? info->offset.v : info->offset.u);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
823 VOffs = (swap_uv ? info->offset.u : info->offset.v);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
824
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
825 /* Assume we have 2 MB to play with */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
826 info->num_frames = FRAMEBUFFER_SIZE / info->frame_size;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
827 if (info->num_frames > VID_PLAY_MAXFRAMES)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
828 info->num_frames = VID_PLAY_MAXFRAMES;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
829
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
830 /* 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
831 base0 = FRAMEBUFFER_START;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
832 info->dga_addr = uc_mem + base0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
833
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
834 info->dest.pitch.y = 32;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
835 info->dest.pitch.u = 32;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
836 info->dest.pitch.v = 32;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
837
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
838 for (i = 0; i < info->num_frames; i++)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
839 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
840 info->offsets[i] = info->frame_size * i;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
841 frames[i] = base0 + info->offsets[i];
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
842 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
843
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
844 /* Write to the hardware */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
845 uc_ovl_vcmd_wait (vio);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
846
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
847 /* Configure diy_pitchlay parameters now */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
848 if (v_ctrl & V1_COLORSPACE_SIGN)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
849 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
850 if (hwrev >= 0x10)
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
851 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
852 VIDEO_OUT (vio, V1_ColorSpaceReg_2, ColorSpaceValue_2_3123C0);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
853 VIDEO_OUT (vio, V1_ColorSpaceReg_1, ColorSpaceValue_1_3123C0);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
854 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
855 else
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
856 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
857 VIDEO_OUT (vio, V1_ColorSpaceReg_2, ColorSpaceValue_2);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
858 VIDEO_OUT (vio, V1_ColorSpaceReg_1, ColorSpaceValue_1);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
859 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
860 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
861
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
862 VIDEO_OUT (vio, V1_CONTROL, v_ctrl);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
863 VIDEO_OUT (vio, V_FIFO_CONTROL, fifo_ctrl);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
864
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
865 VIDEO_OUT (vio, V1_WIN_START_Y, win_start);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
866 VIDEO_OUT (vio, V1_WIN_END_Y, win_end);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
867
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
868 VIDEO_OUT (vio, V1_SOURCE_HEIGHT, (src_h << 16) | dcount);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
869
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
870 VIDEO_OUT (vio, V12_QWORD_PER_LINE, qwfetch << 20);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
871 VIDEO_OUT (vio, V1_STRIDE, pitch | ((pitch >> 1) << 16));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
872
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
873 VIDEO_OUT (vio, V1_MINI_CONTROL, mini);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
874 VIDEO_OUT (vio, V1_ZOOM_CONTROL, zoom);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
875
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
876 /* Configure buffer address and execute the changes now! */
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
877 unichrome_frame_select (0);
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
878
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
879 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
880 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
881
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
882 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
883 * @brief Set playback on : driver should activate BES on this call.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
884 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
885 * @return 0.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
886 */
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
887 static int
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
888 unichrome_playback_on (void)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
889 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
890 LOGWRITE ("Enable overlay\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
891
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
892 /* Turn on overlay */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
893 VIDEO_OUT (vio, V1_CONTROL, VIDEO_IN (vio, V1_CONTROL) | V1_ENABLE);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
894
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
895 /* Execute the changes */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
896 VIDEO_OUT (vio, V_COMPOSE_MODE,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
897 VIDEO_IN (vio, V_COMPOSE_MODE) | V1_COMMAND_FIRE);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
898
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
899 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
900 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
901
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
902 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
903 * @brief Set playback off : driver should deactivate BES on this call.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
904 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
905 * @return 0.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
906 */
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
907 static int
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
908 unichrome_playback_off (void)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
909 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
910 LOGWRITE ("Disable overlay\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
911
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
912 uc_ovl_vcmd_wait (vio);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
913
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
914 /* Restore FIFO */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
915 VIDEO_OUT (vio, V_FIFO_CONTROL, UC_MAP_V1_FIFO_CONTROL (16, 12, 8));
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
916
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
917 /* Turn off overlay */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
918 VIDEO_OUT (vio, V1_CONTROL, VIDEO_IN (vio, V1_CONTROL) & ~V1_ENABLE);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
919
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
920 /* Execute the changes */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
921 VIDEO_OUT (vio, V_COMPOSE_MODE,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
922 VIDEO_IN (vio, V_COMPOSE_MODE) | V1_COMMAND_FIRE);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
923
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
924 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
925 }
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
926
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
927 /**
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
928 * @brief Driver should prepare and activate corresponded frame.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
929 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
930 * @param frame the frame index.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
931 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
932 * @return 0.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
933 *
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
934 * @note This function is used only for double and triple buffering
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
935 * and never used for single buffering playback.
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
936 */
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
937 static int
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
938 unichrome_frame_select (unsigned int frame)
22850
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
939 {
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
940 LOGWRITE ("Frame select\n");
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
941
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
942 uc_ovl_vcmd_wait (vio);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
943
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
944 /* Configure buffer address */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
945 VIDEO_OUT (vio, V1_STARTADDR_Y0, frames[frame] + YOffs);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
946 VIDEO_OUT (vio, V1_STARTADDR_CB0, frames[frame] + UOffs);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
947 VIDEO_OUT (vio, V1_STARTADDR_CR0, frames[frame] + VOffs);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
948
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
949 /* Execute the changes */
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
950 VIDEO_OUT (vio, V_COMPOSE_MODE,
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
951 VIDEO_IN (vio, V_COMPOSE_MODE) | V1_COMMAND_FIRE);
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
952
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
953 return 0;
9a1e26fef45b Move driver files directly into the vidix directory.
diego
parents:
diff changeset
954 }
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
955
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
956 VDXDriver unichrome_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
957 "unichrome",
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
958 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
959 .probe = unichrome_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
960 .get_caps = unichrome_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
961 .query_fourcc = unichrome_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
962 .init = unichrome_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
963 .destroy = unichrome_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
964 .config_playback = unichrome_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
965 .playback_on = unichrome_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
966 .playback_off = unichrome_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
967 .frame_sel = unichrome_frame_select,
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
968 .get_eq = unichrome_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
969 .set_eq = unichrome_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
970 .get_gkey = unichrome_get_gkey,
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
971 .set_gkey = unichrome_set_gkey,
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
972 };