ckennedy's 0.1.10.pre2 changes: #71d - found more that could be wrong with osd commands, hopefully fixed. #71c - don't cache framebuffer commands for on/off state and alpha, seem to not be working for those, must need to be issued at times even if same value, kinda piled together so understand this is needed. #71b - better use of the semaphore to lock the decoder and osd. #71a - encoder timeout doesn't run anything anymore, seems like this would cause problems and may not be needed anymore. #71 - moved scatter gather arrays into stream structure, now really separate. - fixed DMA direction, made way dma was allocated and size checked work properly, dma was not setup for the proper direction for encoding, and also didn't really check if the buffers were below the amount allowed. - reworked decoder completely, all outside irq time and tasklets, no longer using decoder timeout since this isn't needed driving the decoder this way. - hopefully fixed firmware reloads not triggered when in the osd alone. #70n - don't run timeout for decoder, seems to be bad when decoding outside interrupts. #70m - fixed decoder stutter after long term playback in myth for live tv, hopefully, at least improves decoding and should fix it long term too. #70l - check for NULL buffers on decoder copy to user, still this won't fix the DMA errors it seems, but good to do so still. #70k - stop capture and stop decode worked over so timing on waiting for last DMA to finish should work better, also EOS should not be lost in most cases. - redid the decoder copy to user, needed to check if successful, maybe the source of DMA errors? #70j - divided tasklets amongst decoder/encoder again, this seems to be the best way to do it, otherwise things seem buggy. - fixed decoder timeout to not cause decoding be corrupted. #70h - moving decoder data req back into irqtime, is this safe??? well I'm trying to keep the decoding going which always stops if this isn't done in irqtime, I suspect I need to to something more to make it fully safe, this is just figuring out if it fixes the decoder stoping. #70e - cleanup, removed all defines for odd changes, no longer needed, was for testing. - found some bugs where I had a tasklet scheduled which shouldn't have been. - removed tasklet kill and disable at module unload, maybe caused a oops upon unload, think we need to be more careful there now tat the streams are a bit more separate even from tasklets, possibly only when unloading the module unproperly too, without stoping all activity. #70d - taking a dangerous leap, although it looks safe to me ;-). Moving to using spin_lock_bh() for all the streams locking, this seems to fix the whole problem with OSD/Dec/Enc DMA breaking the playback/recording and delaying it so it becomes jittery, this no longer occurs. There are tiny interruptions upon decoding startup if there is a very high amount of OSD DMA going on, otherwise seems amazingly stable. - speed up to module load, maybe safer? removed sleep from saa7115 load. I think this sleep would conflict with the msp3400 because it's a bit racey and uses task queues or something, and seems like the sleep didn't help it anyways, still locked up on occasion. #70c - got this working right, decoder frees buffers outside of irqtime. #70b - moved decoder deq out of irq time. #70a - trying different check which doesn't seem as good but better than before the last patch, still can cause decoding to pause till done slamming OSD DMA to the device while encoding/decoding. #70 - big bug fixed I think, seems that way, the OSD would wakeup the waitq for itself right after DMA was finished, this made it capable of taking over all DMA, now only do that when not decoding, strangly this makes encoding avoid the jitter too. - Also merged all tasklets into one global tasklet to try and make DMA never interfere with itself, this may be the actual fix for encoding, while decoding still needed the one above. #69l - framebuffer osd now gets and sets the state properly, including the on/off bit too. - Added Hans VBI patch to fix adding frame numbers. #69k - didn't fix scaling problems for pvr250 cards yet, bummer. - fixed ivtv bug where the framebuffer state was not given with the correct current settings, basically left out flicker reduction and on/off state. #69j - hopefully fixed scaling problems for pvr250 cards? - removed some byteswap in irq defines, just a test which isn't needed. - removed checking deq multiple times, if really needed it's not the right way to do it. - removed DMA done restriction on device open. #69i - discovered needed command to get passthrough mode not to have to clear out stored commands, was the decoder source one, which seems to switch it on/off so that even if same value is there it is needed. #69h - amd 64 support added mostly, from Sven Boeckelmann - found source of Myth Bug, heh, well some other things that can cause it, basically seems that the framebuffer checking reduced fixes it, but you may get jerky playback now when heavily using the OSD, price for fast OSD which Myth requires. #69g - found source of Myth Bug, waiting for write/read DMA to be done before running the OSD DMA seems to have been the problem, the whole timing stuff takes the place of that better anyways. #69f - Hans patch for encoder/decoder poll. #69e - trying to fix MythTV bug, well combination of the two actually. - changed status check in saa7115 to use a safer sleep and also it waits till attaching the client before doing the check. #69c - changed spinlocks and semaphores to no longer use cacheline stuff. think I needed to remove it from the global ivtv_lock too, and also initialize them all to unlocked, although odd that this was implied by the cacheline thing, weird. #69b - changed decoder timeout and timing between it and the OSD so hopefully it will act like the encoder does there and not even flinch when under high OSD usage. #69a - added back encoder timeout DMA tasklet launch and waitq wakeup, streams can stop again and that seems to be what had fixed it I guess. #69 - changed OSD jiffie check to 1 jiffie, this seems to allow the OSD to work while encoding, which broke before and I hadn't taken the time to tune it, should be interesting now. #68g - re-enabled OSD and encoder timing, seems more needed now, maybe the new DMA from the VBI differences or something, but always wanted to enable that, now should be able to browse Myth really fast while watching live TV and not cause the encoding to get jerky, seems this happens if the encoder DMA is ever held back too long. #68f - added the cache_smp stuff on every single lock, weird, but if even one is removed they all break. #68e - added back spinlock cache_in_smp stuff, ate buffers fast. #68c - clear framebuffer upon module load, should keep us from ever seeing that default crap on there again that looks really freaky :-). #68b - changed passthrough mode to work right on preemptive mode, and also altered so should allow captures to work too, was a missing subtype to for sending the data to the decoder properly. #68 - added Hans v4l compat patch. #67c - added Hans patch, added sleep again to channel changin. #67a - sleep longer for firmware reset, sleep less on firmware sleep for normal boot too. #67 - enabled timers for encoder/decoder, adjusted to no longer cause extra problems hopefully. - reduced osd wait on api commands. #66l - disabled timers for encoder/decoder, may have caused more problems than fix now, dma seems not to need them anymore. #66k - trying to find a way to detect the need to reload the firmware, even when firmware still responds, seems to get in a weird state. #66j - fixed more bugs in reloading firmware and locking it properly. #65i - put sap patch in to make part work. - better timing in encoder timeout and decoder timeout no longer runs dma tasklets. #65h - removed unused saa7114.c file, got in there from doing tests awhile back. - changed buffers back to 32k, got this to work better I think. #66g - still working on data timeouts, I think they can't happen anymore :-). #66f - trying firmware reset in dec_fill_buffer different than before. #66e - reworking timeout for encoder again, this time should try reseting, then firmware reloading, if those don't work it should stop/restart the stream then. I think the stop/restart is good, seems like what will make it always work if done right. - check dma status on open of device, hopefully will make live tv in myth work right, and makes sense to not start doing anything til we know dma is calm. - don't wait for firmware reset in places. - wait for dma to be done in reset by checking register, needed with bigger encoding dma sizes it seems. - wait for api cmd stop/start capture/decode again, that may have been a part of the problem. #66d - have decoder set at 65536 as DMA size, seems without this it gets a bit hungry for large chunks of DMA data. #66c - scart volume at 0db, or should be I think at least. - patch from Stephane for standard detection to work on the msp again. #66b - changed DMA size for encoder, now does it in bytes and gets a fixed size, the default actually, and it seems to be so different than frame based in size, seems interesting, so far working ok here. #66a - spliting up firmware dec/enc reload somewhat, also optimizing it or at least trying :-). #66 - took decoder enable/disable and allow firmware reloads to do so during them, gets rid of the green screen, but still a wait there, so I'm looking at minimizing the disable time. #65g - changed firmware reload to record whether capturing or not and decoding/osd is active, if so then record state and restore after reload. #65f - opening firmware file, if failed, would still try to close it. - changed locking seemed to work well, now can run firmware reloads multiple times and it does it right still, only one succeeds and the rest wait for it to finish. #65e - hopefully firmware lock works right now, last night I did some dumb stuff there :-)). #65d - firmware reload should be triggered correctly now. #65c - fixed Timeout for data loop, was broken, made it so firmware reloads and digitizer resets should be done correctly in all cases now. #65b - tuner support for SECAM fixed, patch had not been correct or something. #65a - increased decoder buffers back to 8, seems like that is just enough. - msp volume changed slightly from original for now, seems that this needs to be different still from looking at the data sheet. #65 - reworked data Timeout check and the way the digitizer reset/firmware reload works from there. #64m - changing stop capture to hopefully not affect decoding when occuring in the end gop mode. - changed firmware reload, don't find the mailboxes again if they work after the reload, may fix the green screen problem. - stop timer for encoder earlier in stop capture - don't run stop capture when start capture fails - digitizer reset wasn't tested more than once - reload firmware for encoder in a different area of the read function - kill off encoder dma tasklet if lingering DMA, may have been bad since the tasklet would be deferred and not really prioitized to go. - make decoder really turn off output on module unload, for some reason this doesn't happen - lock firmware relaod, clear bits better after done. - reload firmware when encoder start capture fails, test at least. - firmware reload improved to be faster for OSD wait and DEC wait. #64l - using api stuff from osd-stream, added the commands that don't need a result, so now shouldn't spend as much time per command sent, with command storage this should work really quick and efficient. - added sleep if not in an interrupt for api mailbox searching. - don't store a command when it fails - wait for start capture, this is important and works with my previous changes, I was testing to see if needed, it does need to wait, which keeps captures from stoping before starting, since I check and if start capture fails I close the stream and exit instead of stop capture. - choose whether or not to wait for the api commands that can avoid it. #64k - put stuff to print out audio changes to msp3400 for debugging better. #64j - fixed bug in api cmd storage, should work better now :-). - msp videodev2.h include changed. #64i - STORE_API_CMD define at the top of ivtv.h now is there, if uncommented enables new api command storage. This may have some problems still, so this should debug that. #64h - made a storage system for api commands, now saves the send/return values, won't bombard firmware with redundant control settings. - firmware reloads now for each card from api cmd, take the itv structure into there now so can do the api storage too. #64g - made firmware reload go a little smoother, still the green screen #64f - patch from Stephane Zermatten to fix the SAP/Bilingual support right. #64e - changing digitizer sleep back for now, till Myth is fixed. #64d - put osd memory free back in, trying it before the allocation of new osd memory if it is already been allocated before. #64c - fix the m179 the right way, actually just needed to not call the vbi ioctl and then everything works great :-). #64b - need more buffers for VBI to sit happy, changed to 32. - fixed msp setup for the m179 from changes in the sap/bilingual patch, was working fine but now save some i2c traffic trying to send to 0x00. #64a - made saa7115 work for either m179 or 350/250 cards without modification commented out misc changes, may be needed for something??? don't know, works fine on either cards without them #64 - added audio patch, SAP support, bilingual :-). all from Stephane Zermatten at http://www.geocities.com/szermatt/bilingual.html. #63u - have buffers try 3 times again to find free ones, - don't check for busy bit when dec polling #63t - made decoder_poll only check if data needed. #63s - actually got the gcc patch in by manually adding it, weird, it just didn't apply even though said it did and also wouldn't apply again, maybe there were two there. #63r - default pcm and vbi buffers raised, saw buffer overflows on those and now have found that the buffers in general can run out and need more tuning like this. - startout with osd alpha at 255, seems Myth counts on that value. - removed all restrictions from decoder poll besides making sure theres a value greater than 0 in dec reg 9 showing it wanting data. #63q - removed buffer free aggressive looping in encoder deq, caused myth to act funny. #63p - check for busy bit in poll #63o - applied patch for older gcc versions #63n - removed spinlock I added, it only is ran on module unload and seems to cause oops's with it included. - fixed decoder startup where capture bit wasn't set atomically. - removed some old commented out code - reworked ivtv_dec_poll to check the dec status and only return if needed or not, not running dma calls, fixes bug in myth. #63m - for some reason the changes for the new card type stuff being used in the firmware reset code got lost somewhere, readded that. This also should make the osd work with 350 rev2 cards, shouldn't have worked before since it didn't allow usage if not a rev1 350. #63l - changed byteswap so can be done in irq or outside depending on define in ivtv.h - testing byteswap back in irq time. #63k - put a spinlock in that I missed. #63j - removed loop for waiting for encoder buffers to free. #63i - secam patch added for secam tuner support from bruno which Mean dug out of the mail archive. #63h - found that decoding needs to use irq interrupts, at least some times, reoccuring decoder freezing happens it seems on a system using multiple cards. I have switched back to tasklets for all decoder DMA but also have the OSD still waiting for it's api calls, this hopefully works stable, also have an idea about trying to do the decoder DMA different in irqtime, waiting if not in it but do if so. #63g - big bug, encoder would get requests for 0 buffers, possibly would happen when decoding, so thought didn't have enough, now just return. #63f - looking at buffer overflows for encoding closer w/debug messages. - clear encoding bits per stream stop instead of after last stream stops. #63e - waiting for result from osd/dec dma calls, since can now outside irq, seems like this makes ff/rw smoother, seems like the right way to do it. - clear the OSD bit when reloading the firmware, this is obviously a bug which was causing some of the problems there. #63d - trying to wait for osd api calls. - moved decoding schedule outside of irq time or tasklets - able to save alpha settings right when reloading firmware - cleanup of some stuff left around from last couple changes. #63c - fix for osd where firmware needed to be reloaded to clear a stuck busy bit, may be better way but this should test and find out. #63b - tuning api calls more, when decoding, there's now better checking and only clearing the decoder api call when safe to do so. - use decoder api semlock for osd call outside osd api call instead of inside api, I think this should keep osd/dec commands from piling up and causing collisions. #63a - worked on mailbox api, seems decoding works better if the start/stop and speed commands are setup right, also trying different tests with settings that I've found to work well with certain commands from testing - worked on decoding stop, like encoding now, try to finish last DMA right, this makes splicing work much nicer now, the stop command is important. #63 - fixes for ff/rw and firmware reloads for api failure. #62e - changed over to new mailbox api stuff used for the dma calls, helps start/stop captures to work smoother. - don't wait for return to stop capture, it makes things work better when starting a capture. - use video pause in channel changing again, found that if you disable the digitizer, it is better, but only if you run the refresh intput, just like starting a capture but in mid encode needs to refresh, makes sense and seems to be the only way it won't crash. #62d - found way to properly bail out when user stops capturing before it even started, return error from startcap and then run stop capture to cleanup, seems to work. #62c - fixed string thing in encoder.c #62b - another fix to osd in Myth, although may cause encoding and osd interaction problems. #62a - change to fix osd in Myth and X - changed channel changing problem, removing video pause again #62 - pip and m179 cards work now if you uncomment the #define M179 out of saa7115.c #61d - fixes in osd, reverted some unneeded changes from getting fw reloads to work. #61c - bug in osd waitq clearing flags where it shouldn't. #61b - channel change, trying to make that nicer. #61a - found a place that was causing the wait to still happen on the firmware reloads, now should only take 3sec to trigger, was 33 #61 - fixes to firmware reloads on dec dma errors, got one and was able to find plenty of things to fix the long wait it took, but it still worked. - changed dma tasklet for decoding to run the tasklet statements for each dec irq, instead of all in the same one, may help keep them separate. #60 - added encoder command in utils, encoder.c which can capture the program stream ending, also can do lots of things, check out with -h arg for help. #59r - Made radio device variable atomic for the radio user, used i_flags. - removed the spinlock_irq on the open when choosing a device, seems like this isn't needed and dangerous. - improved way digitizer is reset so it no longer can lockup the machine during a start capture, hopefully :-). - changed stop capture and start capture to always enable device event notification, seems needed for properly switching between both. - fixed end gop ioctl command. #59q - trying to deq buffers more aggressively, try looping 3 times, sleep when freeing them, may help hopefully, at least an interesting test. #59p - put Brians byteswap outside of IRQ time back in, think this is one thing holding up the buffers being free. #59o - split spinlocks, now one for each stream, no global one, should allow decoding/encoding to not cause each other to starve for buffers. #59n - fixed firmware reloads, should be faster, and have them setup the decoder safer now. #59m - added streamoff and end_gop ioctl commands to test_ioctl -E 0|1 forthe end GOP setting, and -S for streamoff, doesn't really seem to work here yet, weird. #59l - fixed some bugs from how I did the enc_timeout stop. #59k - got streamoff working again, so can capture the end GOP or the last P frame for splicing :-). #59j - removed spinlocks from decoder/osd api dma calls. - added sleep to keep ivtvfbctl sane at it's speed upon the fb, can be turned off with -nosleep. - increased encoder timeout, affected by osd usage when high. - added osd dma jiffies count, like decoder, check and slow down osd dma in encoder timeout if needed. - added extra check for osd busy flag, now can't slow down the decoder or encoder DMA with the osd. #59i - fixing missed spinlocks, put in tasklets for DMA done stuff - better way to finish EOS DMA. - removed commented out spinlocks and things. #59h - missed a spinlock on buffer overflow dma rerunning for the encoder. - print out more information on buffer overflow. - try even if didn't free buffers to rerun DMA, think the free buffer thing doesn't really mean none are available, just locked by the decoder. #59g - removing global spinlocking, probably dangerous, but I want to see it happen, so far is working fine on preemptible, they just need to be removed carefully. #59f - trying to remove schedule() from ivtv_read, changing back. #59e - put test decoder/osd timeout checks in, may be able to keep freezes from stoping things. #59d - put back spinlock on open. #59c - another place tasklets were not commented right for USE_TASKLET to disable them right. - checking dma status on encoder timeout, if sense an error, go on and run the timeout even if no DMA pending. #59b - added patch for svideo/composite at the same time for 350 output. - trying encoder timeout later on stop_capture call. #59a - now tasklets actually can be disabled, I forgot the stuff in ivtv-api.c - change to the waiting for osd/dec to be unbusy when reloading the firmware. #59 - removed all changes before 55b - don't do video pause when changing channels - don't mute video when starting a capture, or unmute, leave as is. - using tasklets for firmware reloads - made USE_TASKLET define work again, now at top of ivtv.h #58b - checking the irq req during the decoder timeout was bad on decoding. #58a - was wrong on interrupt mask checking for if it had been masked while decoding, so now fixed, didn't seem affect it outside of ff/rw. #58 - removed osd DMA changes again, seemed to make things freeze decoding - Firmware reloads seem to work well most of the time. - clear stale bit no longer cleared. - now clear the interrupt mask in the decoder timeout if lost. #57 - fixes to firmware reloading. - made ivtvfbctl wait 33333 usec so it won't overpower the decoder. - enable firmware reloads again. - clear stale busy bit now in dec timeout. #56 - trying OSD DMA unmapping hopefully the right way this time. #55b - stop captures with the streamoff api won't work right with these changes right now, need to find a different way now, but otherwise this may fix encoder timeouts. - Have encoder timeout active now, hopefully will stop encoding timeouts - placed a decoder timeout hopefully into a better position when scheduling decoding. #55a - When encoding, and grabbing free buffers, allow there to be less sent than asked for, encoder seems to work fine like this. - added code to the deq function for buffers, should allow for us not to get null buffers as often, tries more than once to allocate, and won't send back NULL ones. #55 - trying down() instead of down_interruptible on semlocking. #53 - ck, need to learn, never use more than one decoder mailbox :-). with decoding DMA especially. #52 - found bug with audio input for the radio. #51 - try using both decoder mailboxes for DMA, may be safe now. - couple of small fixes for the ff/rw and dec dma errors. #50 - fixed waitq in encoder possibly, should behave better when encoding especially with other streams too. - Added a encoder timeout function, need to implement like the dec one. - fixed problem with stop capture where it cleared things even if there are 2 captures going on so shouldn't be cleared. - Used tasklets to halt the encoder dma and start back up when stop/start captures, may improve things there. - trying to use tasklets to stop DMA for resetting the firmware. - stop decoder dma tasklet and other fixes to rewind/fast forward. - have DMA jiffies stat now to tell if decoder BUSY flag is stuck and reset that, wake up the streams. #49 - added video pause back for channel changes, still need more testing with it enabled to make sure, seems needed for radio stuff. - only use one decoder mailbox for DMA, seems to need that for keeping freezes from occuring. - set API cmd 0xD6 for encoder, needed for saa7114... /* 0x00EF = saa7114 0x00FO = saa7115 0x0106 = mic*/ - check if capturing is occuring before pausing the video. #48 - fixed radio bug, closing radio device, we were freeing up the id before the radio stream was deconstructed, which wasn't a working radio stream anymore after 1 use until module reload, this should be fixed. #47 - Made changes to mailbox api to search for free mailboxes when doing DMA calls, know how many decoder/encoder has, not need a semlock for enc/dec DMA calls, should optimize way mailbox api works in general without too much design changes. Also now don't make excessive read calls to mbox flags and don't write out to each of the 16 cmd args, it does not make sense to do this. #46 - Commented out OSD memory free in DMA done, breaks 2.4. - Made USE_TASKLET define work since #45a broke that somewhat. #45a - Changed all other instances of DMA calls to tasklets, seems DMA errors were happening otherwise #45 - enabled decoder prebuffer again, seeing if it helps ff/rw at all. - Added decoder timeout printing of the DMA status register. - Merged back tasklets from osd_stream and ck-ng patches, should be the best implementation yet since I used the prior experiences to hopefully set them up better. There are now t_flags which are used to flag the tasklets actions needed. #44 - Followed Jens information and changed the get_user_pages() flags back to what they were before, was wrong there. #43 - I have found a major problem in the OSD/FB memory usage, seems that it was not properly mapping/freeing the user pages, this was causing kswap to go crazy after loading data into the framebuffer for extended periods of time. It seems to have not always been easily triggered though and from what I can tell was not always a problem depending on the method or application and possibly timing of loading. This could be wrong but seems right, just a mystery why this wasn't causing more obvious behavior problems, but then again the way the framebuffer acts it just could be showing up in that subtle indirect way of just making the fb flaky. #42 - Added generic mailbox command ioctl, fwapi in utils directory can use this, should allow for figuring out mailbox and firmware behavior. #41 - Digitizer reset had capture setup rerun again, removed that since it probably is worse to do so. - Found problem with 350 cards, actual reason that is, YUV buffer kludge which defines 0 YUV buffers for decoding wasn't included in my merging. #40 - used copy_to_user stuff for decoding input, left out rest of changes till get_user_X problem solved. #39 - Added Hans patches for compiler warnings, lirc_i2c checking, and using pointer arithmetic on firmware searching. #38b - fixed problem with 350 cards loading. #38a - fixes from Jim Sager merged. #38 - removed digitizer off/on stuff on channel changes. #37 - Merged Yaun/m179 patches, please test since I have no idea if this will work for them, I don't own any. #36 - Try to turn digitizer off/on when changing channels, seems better than the video pause at least, may slow it down though? - Disable firmware reloads for now, from API command timeouts, seems dangerous. #35 - Fixed up EOS captures so hopefully work better, seem to catch the Last GOP everytime now, would miss it at times, DMA wasn't finished till 2 seconds it seems. - On startcapture clear proper IRQ bits from last capture, use spin_lock to make sure other start captures and the last stop capture are done, this will make sure since the spinlock will wait till the IRQ handler finishes from a prior startcapture. #34 - fixed PAL firmware reload for decoder output. #33 - trying encoder firmware reload better, not conflict with digitizer resets. - removed pause for encoder when changing channels, seems like it only would induce black screens and data timeouts. #32 - remove part checking for active capture before pausing sleep in encoding unmute/resume, probably doesn't matter and may induce other problems. - refresh encoder input after each channel change. - after digitizer reset, reload encoder settings, may be needed for Myth. - Don't reload decoder settings in NTSC for decoding, seems bad here, not sure why, makes the output all black, may be the previous channel sleeping thing, hmm. #31 - try and reset encoder settings after a digitizer reset. #30 - semlock wasn't held when changing channels in certain ioctl calls, including the main one, so this may have caused channel change lockups. - don't sleep on channel freq changes when not capturing. #28 - put register setting stuff in for i2c changes to the saa7127 and saa7115 #27 - firmware reloads fixed so PAL works with them, reset decoder settings, fb settings, capture settings after reload. - improved flags for reloading firmware, enabled global reload from the ivtv_api function for decoding and capture, should work well hopefully. #26 - added spin_locks back into ivtv-fb.c, seem like they are needed. #25 - removed spinlocks in ivtv-fb.c, seeing if it helps some myth cursor problems. #24 - removed firmware reload for now, was not just one card ;-). - print all stream status when debugging. #23 - Added Hans patch. #22 - Added NTSC 7.5 IRE setup. - Added EndofGOP capture so it will work when picked as an optional ioctl. #21 - Added firmware reload for when api commands crash firmware. - Added digitizer reset from Kevin. - setup encoder separate so that it can be done upon fw reload. #20 - firmware reloads and decoding continues, seems like it should do so live too, without doing it though an ioctl. #19 - trying to get firmware reload to continue decoding. #18 - Moving decoding back into irq time, should be fine and hopefully gets rid of these dma freezes there. #17 - unmask irq in vsync and dec timeouts, think the irq is getting masked somehow and has to be unmasked again. - fixes to firmware reload, still probably doesn't work. #16 - reworking way timeout works, and how decoder checks if data is needed, problem seems to be the OSD keep the decoder going fine, so need the wake_up stuff running like it does there and clear the BUSY bit when waiting too long. #15 - Worked on making decoder timer keep decoder streams DMA running, seems when running multiple ones they can freeze in rare occasions, like the encoder used to do. Have timeout do this job now, seems to work great. #14 - Changed speed control to allow reverse playback and setting B frames when in reverse. - Haven't had a DMA error yet to test firmware reloading, seems good I guess, doing 4 decodes/1 osd/4 encodings at a time to try and trigger it. #13 - Reworked stop decode to finish last DMA before exiting, like for capture - wait longer for decoder stop. - Re-Added timeout for decoder, seems to be needed with multiple streams decoding on more than one card, also doubled the timeout too. #12 - Tried reloading firmware different, before it would lock the machine so now trying a full reload and different methods of stoping encoding and decoding during it. #11 - Multiple changes to fix DMA errors when decoding, keep machine from crashing. - Removed decoder timeout stuff, isn't needed anymore. - Fixed decoder stop with OSD active, so won't stomp on the current OSD DMA - Fixed OSD flags and BUSY flags bugs so they don't get cleared, seems so far to fix the DMAP errors on decoding. - Reworked firmware reload, haven't tested this yet, but hopefully can revive the decoding when a DMA error occurs. #8-10 - Testing, DO NOT USE 8-10 ;-). #7 - Added code for firmware reset, not active or used, but in place and ready. #1-6 - See mailing list