diff options
-rw-r--r-- | Documentation/dvb/README.flexcop | 121 |
1 files changed, 21 insertions, 100 deletions
diff --git a/Documentation/dvb/README.flexcop b/Documentation/dvb/README.flexcop index 8036faa1ead9..a50c70f9ca72 100644 --- a/Documentation/dvb/README.flexcop +++ b/Documentation/dvb/README.flexcop | |||
@@ -2,26 +2,20 @@ This README escorted the skystar2-driver rewriting procedure. It describes the | |||
2 | state of the new flexcop-driver set and some internals are written down here | 2 | state of the new flexcop-driver set and some internals are written down here |
3 | too. | 3 | too. |
4 | 4 | ||
5 | How to do something in here? | ||
6 | ============================ | ||
7 | |||
8 | make -f Makefile.t | ||
9 | make -C ../build-2.6 | ||
10 | ./in.sh # load the drivers | ||
11 | ./rm.sh # unload the drivers | ||
12 | |||
13 | Please read this file, if you want to contribute. | ||
14 | |||
15 | This document hopefully describes things about the flexcop and its | 5 | This document hopefully describes things about the flexcop and its |
16 | device-offsprings. Goal is to write a easy-to-write and easy-to-read set of | 6 | device-offsprings. Goal was to write an easy-to-write and easy-to-read set of |
17 | drivers based on the skystar2.c and other information. | 7 | drivers based on the skystar2.c and other information. |
18 | 8 | ||
19 | This directory is temporary. It is used for rewriting the skystar2.c and to | ||
20 | create shared code, which then can be used by the usb box as well. | ||
21 | |||
22 | Remark: flexcop-pci.c was a copy of skystar2.c, but every line has been | 9 | Remark: flexcop-pci.c was a copy of skystar2.c, but every line has been |
23 | touched and rewritten. | 10 | touched and rewritten. |
24 | 11 | ||
12 | History & News | ||
13 | ============== | ||
14 | 2005-04-01 - correct USB ISOC transfers (thanks to Vadim Catana) | ||
15 | |||
16 | |||
17 | |||
18 | |||
25 | General coding processing | 19 | General coding processing |
26 | ========================= | 20 | ========================= |
27 | 21 | ||
@@ -81,16 +75,15 @@ non-static where possible, moved code to proper places) | |||
81 | 75 | ||
82 | 2) Search for errors in the leftover of flexcop-pci.c (partially done) | 76 | 2) Search for errors in the leftover of flexcop-pci.c (partially done) |
83 | 5a) add MAC address reading | 77 | 5a) add MAC address reading |
78 | 5c) feeding of ISOC data to the software demux (format of the isochronous data | ||
79 | and speed optimization, no real error) (thanks to Vadim Catana) | ||
84 | 80 | ||
85 | What to do in the near future? | 81 | What to do in the near future? |
86 | -------------------------------------- | 82 | -------------------------------------- |
87 | (no special order here) | 83 | (no special order here) |
88 | 84 | ||
89 | |||
90 | 5) USB driver | 85 | 5) USB driver |
91 | 5b) optimize isoc-transfer (submitting/killing isoc URBs when transfer is starting) | 86 | 5b) optimize isoc-transfer (submitting/killing isoc URBs when transfer is starting) |
92 | 5c) feeding of ISOC data to the software demux (format of the isochronous data | ||
93 | and speed optimization, no real error) | ||
94 | 87 | ||
95 | Testing changes | 88 | Testing changes |
96 | --------------- | 89 | --------------- |
@@ -118,7 +111,7 @@ item | mt352 | nxt2002 | stv0299 | mt312 | mt352 | nxt2002 | stv0299 | mt312 | |||
118 | 2) | O | N | 111 | 2) | O | N |
119 | 5a) | N | O | 112 | 5a) | N | O |
120 | 5b)* | N | | 113 | 5b)* | N | |
121 | 5c)* | N | | 114 | 5c) | N | O |
122 | 115 | ||
123 | * - not done yet | 116 | * - not done yet |
124 | 117 | ||
@@ -155,17 +148,21 @@ working) | |||
155 | SOLUTION: also index 0 was affected, because net_translation is done for | 148 | SOLUTION: also index 0 was affected, because net_translation is done for |
156 | these indexes by default | 149 | these indexes by default |
157 | 150 | ||
158 | 5b) isochronous transfer does only work in the first attempt (for the Sky2PC USB, | 151 | 5b) isochronous transfer does only work in the first attempt (for the Sky2PC |
159 | Air2PC is working) | 152 | USB, Air2PC is working) SOLUTION: the flexcop was going asleep and never really |
160 | SOLUTION: the flexcop was going asleep and never really woke up again (don't | 153 | woke up again (don't know if this need fixes, see |
161 | know if this need fixes, see flexcop-fe-tuner.c:flexcop_sleep) | 154 | flexcop-fe-tuner.c:flexcop_sleep) |
155 | |||
156 | NEWS: when the driver is loaded and unloaded and loaded again (w/o doing | ||
157 | anything in the while the driver is loaded the first time), no transfers take | ||
158 | place anymore. | ||
162 | 159 | ||
163 | Improvements when rewriting (refactoring) is done | 160 | Improvements when rewriting (refactoring) is done |
164 | ================================================= | 161 | ================================================= |
165 | 162 | ||
166 | - split sleeping of the flexcop (misc_204.ACPI3_sig = 1;) from lnb_control | 163 | - split sleeping of the flexcop (misc_204.ACPI3_sig = 1;) from lnb_control |
167 | (enable sleeping for other demods than dvb-s) | 164 | (enable sleeping for other demods than dvb-s) |
168 | - add support for CableStar (stv0297 Microtune 203x/ALPS) | 165 | - add support for CableStar (stv0297 Microtune 203x/ALPS) (almost done, incompatibilities with the Nexus-CA) |
169 | 166 | ||
170 | Debugging | 167 | Debugging |
171 | --------- | 168 | --------- |
@@ -192,82 +189,6 @@ Sram destinations: accessing registers | |||
192 | Tuner/Demod: I2C bus | 189 | Tuner/Demod: I2C bus |
193 | DVB-stuff: can be written for common use | 190 | DVB-stuff: can be written for common use |
194 | 191 | ||
195 | Restrictions: | ||
196 | ============ | ||
197 | |||
198 | We need to create a bus-specific-struct and a flexcop-struct. | ||
199 | |||
200 | bus-specific-struct: | ||
201 | |||
202 | struct flexcop_pci | ||
203 | ... | ||
204 | |||
205 | struct flexcop_usb | ||
206 | ... | ||
207 | |||
208 | |||
209 | struct flexcop_device { | ||
210 | void *bus_specific; /* container for bus-specific struct */ | ||
211 | ... | ||
212 | } | ||
213 | |||
214 | PCI i2c can read/write max 4 bytes at a time, USB can more | ||
215 | |||
216 | Functions | ||
217 | ========= | ||
218 | |||
219 | Syntax | ||
220 | ------ | ||
221 | |||
222 | - Flexcop functions will be called "flexcop(_[a-z0-9]+)+" and exported as such | ||
223 | if needed. | ||
224 | - Flexcop-device functions will be called "flexcop_device(_[a-z0-9]+)+" and | ||
225 | exported as such if needed. | ||
226 | - Both will be compiled to b2c2-flexcop.ko and their source can be found in the | ||
227 | flexcop*.[hc] | ||
228 | |||
229 | Callbacks and exports | ||
230 | --------------------- | ||
231 | |||
232 | Bus-specific functions will be given as callbacks (function pointers) to the | ||
233 | flexcop-module. (within the flexcop_device-struct) | ||
234 | |||
235 | Initialization process | ||
236 | ====================== | ||
237 | |||
238 | b2c2-flexcop.ko is loaded | ||
239 | b2c2-flexcop-<bus>.ko is loaded | ||
240 | |||
241 | suppose a device is found: | ||
242 | malloc flexcop and the bus-specific variables (via flexcop_device_malloc) | ||
243 | fill the bus-specific variable | ||
244 | fill the flexcop variable (especially the bus-specific callbacks) | ||
245 | bus-specific initialization | ||
246 | - ... | ||
247 | do the common initialization (via flexcop_device_initialize) | ||
248 | - reset the card | ||
249 | - determine flexcop type (II, IIB, III) | ||
250 | - hw_filters (bus dependent) | ||
251 | - 0x204 | ||
252 | - set sram size | ||
253 | - create the dvb-stuff | ||
254 | - create i2c stuff | ||
255 | - frontend-initialization | ||
256 | done | ||
257 | bus specific: | ||
258 | - media_destination (this and the following 3 are bus specific) | ||
259 | - cai_dest | ||
260 | - cao_dest | ||
261 | - net_destination | ||
262 | |||
263 | Bugs fixed while rewriting the driver | ||
264 | ===================================== | ||
265 | |||
266 | - EEPROM access (to read the MAC address) was fixed to death some time last | ||
267 | year. (fixed here and in skystar2.c) (Bjarne, this was the piece of code | ||
268 | (fix-chipaddr) we were wondering about) | ||
269 | |||
270 | |||
271 | Acknowledgements (just for the rewriting part) | 192 | Acknowledgements (just for the rewriting part) |
272 | ================ | 193 | ================ |
273 | 194 | ||
@@ -281,4 +202,4 @@ Boleslaw Ciesielski for pointing out a problem with firmware loader. | |||
281 | 202 | ||
282 | Vadim Catana for correcting the USB transfer. | 203 | Vadim Catana for correcting the USB transfer. |
283 | 204 | ||
284 | comments, critics and ideas to linux-dvb@linuxtv.org or patrick.boettcher@desy.de | 205 | comments, critics and ideas to linux-dvb@linuxtv.org. |