Diff for /margi2/cvdv.c between versions 1.3 and 1.4

version 1.3, 2001/01/22 05:01:52 version 1.4, 2001/01/31 14:19:02
Line 504  int DecoderWriteBlock(struct cvdv_cards Line 504  int DecoderWriteBlock(struct cvdv_cards
         if (size > 0) {          if (size > 0) {
   
                 if (!card->use_ring)                  if (!card->use_ring)
                         MargiSetBuffers(card, 16*65536);                          MargiSetBuffers(card, NBBUF*
                                           CHANNELBUFFERSIZE);
                                   
                 if (card->startingDVDV || card->startingDVDA)                  if (card->startingDVDV || card->startingDVDA)
                         setSCR = 1;                          setSCR = 1;
Line 920  static int PSrelease(struct inode *inode Line 921  static int PSrelease(struct inode *inode
         struct cvdv_cards *card = minorlist[MINOR(inode->i_rdev) % MAXDEV];     // minor number modulo 16          struct cvdv_cards *card = minorlist[MINOR(inode->i_rdev) % MAXDEV];     // minor number modulo 16
         int channel = MINOR(inode->i_rdev) / MAXDEV;    // minor number div. 16          int channel = MINOR(inode->i_rdev) / MAXDEV;    // minor number div. 16
         int i, closed;          int i, closed;
           int count;
           count = ring_read_rest(&(card->rbuf));
           if (count > 0 ) card->DMAABusy = 1;
         if (card != NULL) {          if (card != NULL) {
                 printk(KERN_DEBUG LOGNAME ": -- PSrelease\n");                  printk(KERN_DEBUG LOGNAME ": -- PSrelease\n");
                 if (!card->open[channel])                                  if (!card->open[channel])
                         printk(KERN_DEBUG LOGNAME                          printk(KERN_DEBUG LOGNAME
                                ": PSrelease - not open: channel %d\n",                                 ": PSrelease - not open: channel %d\n",
                                channel);                                 channel);
                 card->open[channel]--;                  card->open[channel]--;
                   
                 //MOD_DEC_USE_COUNT;                  //MOD_DEC_USE_COUNT;
                 if (!card->open[channel]) {                  if (!card->open[channel]) {
                         closed = 1;                          closed = 1;
Line 938  static int PSrelease(struct inode *inode Line 942  static int PSrelease(struct inode *inode
                                 printk(KERN_DEBUG LOGNAME                                  printk(KERN_DEBUG LOGNAME
                                        ": PSrelease - last close\n");                                         ": PSrelease - last close\n");
                                 // flush remaining data                                  // flush remaining data
                                 MargiFlush(card);  
   
                                 card->channelApos = 0;                                  card->channelApos = 0;
                                 card->channelBpos = 0;                                  card->channelBpos = 0;
   
                                 if ((card->DMAABusy || card->DMABBusy) && (card->intdecodestatus)) {    // ongoing DMA?                                   if ((card->DMAABusy || card->DMABBusy 
                                        || count >1000 ) && 
                                       (card->intdecodestatus)) {  
                                           // ongoing DMA? 
                                         printk(KERN_DEBUG LOGNAME                                          printk(KERN_DEBUG LOGNAME
                                                ": Delayed closing: A=%d B=%d\n",                                                 ": Delayed closing: A=%d B=%d\n",
                                                card->DMAABusy,                                                 card->DMAABusy,
Line 951  static int PSrelease(struct inode *inode Line 957  static int PSrelease(struct inode *inode
                                         card->closing = 1;      // then delay closing until DMA finished,                                          card->closing = 1;      // then delay closing until DMA finished,
                                 } else {        // otherwise                                  } else {        // otherwise
                                         CloseCard(card);        // close immediately                                          CloseCard(card);        // close immediately
                                         L64021Init(card);                                          printk(KERN_DEBUG LOGNAME
                                                  ": closing now\n");
                                 }                                  }
                         }                          }
                 }                  }

Removed from v.1.3  
changed lines
  Added in v.1.4


LinuxTV legacy CVS <linuxtv.org/cvs>