[Pkg-voip-commits] r3648 - in zaptel1.2/trunk: cwain debian debian/patches qozap zaphfc ztgsm

tzafrir-guest at alioth.debian.org tzafrir-guest at alioth.debian.org
Wed Jun 6 05:04:03 UTC 2007


Author: tzafrir-guest
Date: 2007-06-06 05:04:03 +0000 (Wed, 06 Jun 2007)
New Revision: 3648

Added:
   zaptel1.2/trunk/cwain/zaptel.conf.hdlcnet
   zaptel1.2/trunk/cwain/zaptel.conf.hdlcnet.doubleE1
Modified:
   zaptel1.2/trunk/cwain/cwain.c
   zaptel1.2/trunk/cwain/cwain.h
   zaptel1.2/trunk/debian/changelog
   zaptel1.2/trunk/debian/control
   zaptel1.2/trunk/debian/patches/bristuff.dpatch
   zaptel1.2/trunk/qozap/qozap.c
   zaptel1.2/trunk/zaphfc/zaphfc.c
   zaptel1.2/trunk/ztgsm/ztgsm.c
Log:
* New upstream release (1.2.17.1)
* Bristuff 0.3.0-PRE-1y-f .
* There shouldn't be a conflict between this package and the zaptel-source
  of 1.4 (different location for headers)


Modified: zaptel1.2/trunk/cwain/cwain.c
===================================================================
--- zaptel1.2/trunk/cwain/cwain.c	2007-06-06 02:59:06 UTC (rev 3647)
+++ zaptel1.2/trunk/cwain/cwain.c	2007-06-06 05:04:03 UTC (rev 3648)
@@ -1294,11 +1294,7 @@
     return 0;
 }
 
-#ifdef LINUX26
-static irqreturn_t cwain_dummy_interrupt(int irq, void *dev_id, struct pt_regs *regs) {
-#else
-static void cwain_dummy_interrupt(int irq, void *dev_id, struct pt_regs *regs) {
-#endif
+ZAP_IRQ_HANDLER(cwain_dummy_interrupt) {
     struct zt_cwain_card *cwaintmp = dev_id;
     if (!cwaintmp) {
 #ifdef LINUX26
@@ -1315,11 +1311,7 @@
 }
 
 
-#ifdef LINUX26
-static irqreturn_t cwain_interrupt(int irq, void *dev_id, struct pt_regs *regs) {
-#else
-static void cwain_interrupt(int irq, void *dev_id, struct pt_regs *regs) {
-#endif
+ZAP_IRQ_HANDLER(cwain_interrupt) {
     struct zt_cwain_card *cwaintmp = dev_id;
     unsigned char status, status2, status_tmp, irq_misc, irq_misc2 = 0;
     unsigned long flags;
@@ -1842,11 +1834,17 @@
 
 static int ztcwain_spanconfig(struct zt_span *span,struct zt_lineconfig *lc) {
     struct zt_cwain_card *cwaincard = span->pvt;
-    span->lineconfig = lc->lineconfig;
-    span->syncsrc = lc->sync;
+    int alreadyrunning;
 
-    cwaincard->syncs[span->offset] = lc->sync;
-    cwaincard->syncsrc = -1;
+    alreadyrunning = span->flags & ZT_FLAG_RUNNING;
+
+    if (!alreadyrunning) {
+	span->lineconfig = lc->lineconfig;
+	span->syncsrc = lc->sync;
+
+	cwaincard->syncs[span->offset] = lc->sync;
+	cwaincard->syncsrc = -1;
+    }
 //    printk(KERN_INFO "span_config %d lineconfig=%d syncsrc=%d\n", span->spanno, lc->lineconfig, lc->sync);
 //    cwain_check_timing(cwaincard);
     return 0;

Modified: zaptel1.2/trunk/cwain/cwain.h
===================================================================
--- zaptel1.2/trunk/cwain/cwain.h	2007-06-06 02:59:06 UTC (rev 3647)
+++ zaptel1.2/trunk/cwain/cwain.h	2007-06-06 05:04:03 UTC (rev 3648)
@@ -1,7 +1,7 @@
 #define cwain_FIFO_SIZE	128
 #define cwain_DFIFO_SIZE	4096
 #define cwain_DFIFO_FRAMES	0x10
-#define cwain_FRAME_SIZE 64	/* has to be %4==0 */
+#define cwain_FRAME_SIZE 16	/* has to be %4==0 */
 #define cwain_FIFO_HW cwain_FRAME_SIZE * 2 + ZT_CHUNKSIZE
 #define cwain_TIMER_INT	(8000 / ZT_CHUNKSIZE)
 

Added: zaptel1.2/trunk/cwain/zaptel.conf.hdlcnet
===================================================================
--- zaptel1.2/trunk/cwain/zaptel.conf.hdlcnet	                        (rev 0)
+++ zaptel1.2/trunk/cwain/zaptel.conf.hdlcnet	2007-06-06 05:04:03 UTC (rev 3648)
@@ -0,0 +1,8 @@
+loadzone=nl
+defaultzone=nl
+span=1,1,3,ccs,hdb3,crc4
+
+; hdlc0
+hdlcnet=1
+
+

Added: zaptel1.2/trunk/cwain/zaptel.conf.hdlcnet.doubleE1
===================================================================
--- zaptel1.2/trunk/cwain/zaptel.conf.hdlcnet.doubleE1	                        (rev 0)
+++ zaptel1.2/trunk/cwain/zaptel.conf.hdlcnet.doubleE1	2007-06-06 05:04:03 UTC (rev 3648)
@@ -0,0 +1,10 @@
+loadzone=nl
+defaultzone=nl
+span=1,1,3,ccs,hdb3,crc4
+span=2,2,3,ccs,hdb3,crc4
+
+; hdlc0
+hdlcnet = 1
+
+; hdlc 1
+hdlcnet = 2
\ No newline at end of file

Modified: zaptel1.2/trunk/debian/changelog
===================================================================
--- zaptel1.2/trunk/debian/changelog	2007-06-06 02:59:06 UTC (rev 3647)
+++ zaptel1.2/trunk/debian/changelog	2007-06-06 05:04:03 UTC (rev 3648)
@@ -1,6 +1,10 @@
-zaptel1.2 (1:1.2.16~dfsg-2) UNRELEASED; urgency=low
+zaptel1.2 (1:1.2.17.1~dfsg-1) UNRELEASED; urgency=low
 
   * NOT YET RELEASED
+  * New upstream release.
+  * Bristuff 0.3.0-PRE-1y-f .
+  * There shouldn't be a conflict between this package and the zaptel-source
+    of 1.4 (different location for headers)
 
  -- Kilian Krause <kilian at debian.org>  Wed, 30 May 2007 19:46:56 +0200
 

Modified: zaptel1.2/trunk/debian/control
===================================================================
--- zaptel1.2/trunk/debian/control	2007-06-06 02:59:06 UTC (rev 3647)
+++ zaptel1.2/trunk/debian/control	2007-06-06 05:04:03 UTC (rev 3648)
@@ -34,7 +34,7 @@
 Section: libdevel
 Architecture: any
 Depends: libtonezone1.2 (= ${Source-Version})
-Conflicts: libtonezone-dev
+Depends: libtonezone1 (= ${Source-Version})
 Description: tonezone library (development)
  A library for generating tones used for telephone signalling.
  .
@@ -45,7 +45,7 @@
 Architecture: all
 Depends: debhelper (>> 4.0), module-assistant (>= 0.8.1), bzip2
 Recommends: zaptel1.2
-Conflicts: zaptel-source
+Conflicts: zaptel-source (<< 1.4.0-1)
 Suggests: rtai-source
 Description: Zapata telephony interface (source code for kernel driver)
  This package contains the source code for zaptel kernel module providing

Modified: zaptel1.2/trunk/debian/patches/bristuff.dpatch
===================================================================
--- zaptel1.2/trunk/debian/patches/bristuff.dpatch	2007-06-06 02:59:06 UTC (rev 3647)
+++ zaptel1.2/trunk/debian/patches/bristuff.dpatch	2007-06-06 05:04:03 UTC (rev 3648)
@@ -4,14 +4,14 @@
 ## All lines beginning with `## DP:' are a description of the patch.
 ## DP: This is the patch zaptel.patch from bristuff. Changes:
 ## DP: * Makefile removed.
-## DP: * zaptel.c renamed zaptel-base.c
-## DP: Version: bristuff-0.3.0-PRE-1y-b
+## DP: * modules.symvers removed. 
+## DP: Version: bristuff-0.3.0-PRE-1y-f
 
 @DPATCH@
-diff -urN zaptel-1.2.10.orig/zaptel.c zaptel-1.2.10/zaptel.c
---- zaptel-1.2.10.orig/zaptel-base.c	2006-09-16 09:45:04.000000000 +0200
-+++ zaptel-1.2.10/zaptel-base.c	2007-02-09 12:55:06.610589726 +0100
-@@ -139,6 +139,7 @@
+diff -urN zaptel-1.2.17.1.orig/zaptel-base.c zaptel-1.2.17.1/zaptel-base.c
+--- zaptel-1.2.17.1.orig/zaptel-base.c	2007-04-25 17:35:34.000000000 +0200
++++ zaptel-1.2.17.1/zaptel-base.c	2007-04-29 10:21:42.782123674 +0200
+@@ -138,6 +138,7 @@
  EXPORT_SYMBOL(zt_qevent_lock);
  EXPORT_SYMBOL(zt_hooksig);
  EXPORT_SYMBOL(zt_alarm_notify);
@@ -19,7 +19,7 @@
  EXPORT_SYMBOL(zt_set_dynamic_ioctl);
  EXPORT_SYMBOL(zt_ec_chunk);
  EXPORT_SYMBOL(zt_ec_span);
-@@ -556,6 +557,10 @@
+@@ -584,6 +585,10 @@
  		len += sprintf(page + len, "\tIRQ misses: %d\n", spans[span]->irqmisses);
  	len += sprintf(page + len, "\n");
  
@@ -30,7 +30,7 @@
  
          for (x=1;x<ZT_MAX_CHANNELS;x++) {	
  		if (chans[x]) {
-@@ -2700,6 +2705,30 @@
+@@ -2781,6 +2786,30 @@
  	}
  }
  
@@ -61,7 +61,7 @@
  #define VALID_SPAN(j) do { \
  	if ((j >= ZT_MAX_SPANS) || (j < 1)) \
  		return -EINVAL; \
-@@ -4928,11 +4957,40 @@
+@@ -5095,11 +5124,40 @@
  					*(txb++) = fasthdlc_tx_run_nocheck(&ms->txhdlc);
  				}
  				bytes -= left;
@@ -102,7 +102,7 @@
  			}
  			/* Check buffer status */
  			if (ms->writeidx[ms->outwritebuf] >= ms->writen[ms->outwritebuf]) {
-@@ -4977,6 +5035,17 @@
+@@ -5144,6 +5202,17 @@
  				/* Transmit a flag if this is an HDLC channel */
  				if (ms->flags & ZT_FLAG_HDLC)
  					fasthdlc_tx_frame_nocheck(&ms->txhdlc);
@@ -120,7 +120,16 @@
  #ifdef CONFIG_ZAPATA_NET
  				if (ms->flags & ZT_FLAG_NETDEV)
  					netif_wake_queue(ztchan_to_dev(ms));
-@@ -5033,6 +5102,12 @@
+@@ -5154,7 +5223,7 @@
+ 					tasklet_schedule(&ms->ppp_calls);
+ 				}
+ #endif
+-			}
++			} 
+ 		} else if (ms->curtone && !(ms->flags & ZT_FLAG_PSEUDO)) {
+ 			left = ms->curtone->tonesamples - ms->tonep;
+ 			if (left > bytes)
+@@ -5200,6 +5269,12 @@
  				memset(txb, 0xFF, bytes);
  			}
  			bytes = 0;
@@ -133,7 +142,7 @@
  		} else {
  			memset(txb, ZT_LIN2X(0, ms), bytes);	/* Lastly we use silence on telephony channels */
  			bytes = 0;
-@@ -5758,6 +5833,13 @@
+@@ -5993,6 +6068,13 @@
  	int left, x;
  
  	int bytes = ZT_CHUNKSIZE;
@@ -147,7 +156,7 @@
  
  	while(bytes) {
  #if defined(CONFIG_ZAPATA_NET)  || defined(CONFIG_ZAPATA_PPP)
-@@ -5816,6 +5898,19 @@
+@@ -6051,6 +6133,19 @@
  						}
  					}
  				}
@@ -167,10 +176,10 @@
  			} else {
  				/* Not HDLC */
  				memcpy(buf + ms->readidx[ms->inreadbuf], rxb, left);
-diff -urN zaptel-1.2.10.orig/zaptel.h zaptel-1.2.10/zaptel.h
---- zaptel-1.2.10.orig/zaptel.h	2005-12-17 03:04:05.000000000 +0100
-+++ zaptel-1.2.10/zaptel.h	2006-12-19 13:36:19.000000000 +0100
-@@ -994,6 +994,13 @@
+diff -urN zaptel-1.2.17.1.orig/zaptel.h zaptel-1.2.17.1/zaptel.h
+--- zaptel-1.2.17.1.orig/zaptel.h	2007-04-24 20:33:29.000000000 +0200
++++ zaptel-1.2.17.1/zaptel.h	2007-04-29 10:21:42.786124621 +0200
+@@ -1046,6 +1046,13 @@
  	int do_ppp_error;
  	struct sk_buff_head ppp_rq;
  #endif
@@ -184,7 +193,16 @@
  	spinlock_t lock;
  	char name[40];		/* Name */
  	/* Specified by zaptel */
-@@ -1231,6 +1238,10 @@
+@@ -1121,7 +1128,7 @@
+ 	int		txbufpolicy;			/* Buffer policy */
+ 	int		rxbufpolicy;			/* Buffer policy */
+ 	int		txdisable;				/* Disable transmitter */
+-	int 	rxdisable;				/* Disable receiver */
++	int 		rxdisable;				/* Disable receiver */
+ 	
+ 	
+ 	/* Tone zone stuff */
+@@ -1284,6 +1291,10 @@
  #define ZT_FLAG_T1PPP			(1 << 15)
  #define ZT_FLAG_SIGFREEZE		(1 << 16)	/* Freeze signalling */
  
@@ -195,7 +213,7 @@
  struct zt_span {
  	spinlock_t lock;
  	void *pvt;			/* Private stuff */
-@@ -1331,6 +1342,10 @@
+@@ -1384,6 +1395,10 @@
  	int watchcounter;
  	int watchstate;
  #endif	
@@ -205,21 +223,21 @@
 +#endif
  };
  
- #define ZT_WATCHDOG_NOINTS		(1 << 0)
-@@ -1404,6 +1419,9 @@
+ struct zt_transcoder_channel {
+@@ -1498,6 +1513,9 @@
  /* Notify a change possible change in alarm status */
- extern void zt_alarm_notify(struct zt_span *span);
+ void zt_alarm_notify(struct zt_span *span);
  
 +/* Notify a change possible change in alarm status, DONT change the zaptel master! */
 +extern void zt_alarm_notify_no_master_change(struct zt_span *span);
 +
  /* Initialize a tone state */
- extern void zt_init_tone_state(struct zt_tone_state *ts, struct zt_tone *zt);
+ void zt_init_tone_state(struct zt_tone_state *ts, struct zt_tone *zt);
  
-diff -urN zaptel-1.2.10.orig/zconfig.h zaptel-1.2.10/zconfig.h
---- zaptel-1.2.10.orig/zconfig.h	2005-11-29 19:42:08.000000000 +0100
-+++ zaptel-1.2.10/zconfig.h	2006-10-19 11:16:47.000000000 +0200
-@@ -49,11 +49,11 @@
+diff -urN zaptel-1.2.17.1.orig/zconfig.h zaptel-1.2.17.1/zconfig.h
+--- zaptel-1.2.17.1.orig/zconfig.h	2007-04-24 20:33:29.000000000 +0200
++++ zaptel-1.2.17.1/zconfig.h	2007-04-29 10:21:42.786124621 +0200
+@@ -53,11 +53,11 @@
  /* #define ECHO_CAN_MARK */
  /* #define ECHO_CAN_MARK2 */
  /* #define ECHO_CAN_MARK3 */
@@ -232,8 +250,8 @@
 +#define ECHO_CAN_MG2
  
  /*
-  * Uncomment for aggressive residual echo supression under 
-@@ -152,4 +152,10 @@
+  * This is only technically an "echo canceller"...
+@@ -163,4 +163,10 @@
   */
  /* #define FXSFLASH */
  
@@ -244,9 +262,9 @@
 +#define CONFIG_ZAPATA_BRI_DCHANS
 +
  #endif
-diff -urN zaptel-1.2.10.orig/ztcfg.c zaptel-1.2.10/ztcfg.c
---- zaptel-1.2.10.orig/ztcfg.c	2006-02-01 03:33:54.000000000 +0100
-+++ zaptel-1.2.10/ztcfg.c	2006-12-05 12:37:31.000000000 +0100
+diff -urN zaptel-1.2.17.1.orig/ztcfg.c zaptel-1.2.17.1/ztcfg.c
+--- zaptel-1.2.17.1.orig/ztcfg.c	2007-01-31 20:01:33.000000000 +0100
++++ zaptel-1.2.17.1/ztcfg.c	2007-04-29 10:21:42.806129356 +0200
 @@ -90,6 +90,10 @@
  
  static int stopmode = 0;
@@ -327,7 +345,7 @@
  					for (x=0;x<spans;x++) {
  						if (ioctl(fd, ZT_SPANCONFIG, lc + x)) {
  							fprintf(stderr, "ZT_SPANCONFIG failed on span %d: %s (%d)\n", lc[x].span, strerror(errno), errno);
-@@ -1348,12 +1378,25 @@
+@@ -1358,12 +1388,25 @@
  							exit(1);
  						}
  					}
@@ -354,9 +372,9 @@
  					}
  				}
  			}
-diff -urN zaptel-1.2.10.orig/ztpty.c zaptel-1.2.10/ztpty.c
---- zaptel-1.2.10.orig/ztpty.c	1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.2.10/ztpty.c	2006-10-19 11:16:47.000000000 +0200
+diff -urN zaptel-1.2.17.1.orig/ztpty.c zaptel-1.2.17.1/ztpty.c
+--- zaptel-1.2.17.1.orig/ztpty.c	1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.2.17.1/ztpty.c	2007-04-29 10:21:42.806129356 +0200
 @@ -0,0 +1,112 @@
 +#include <stdio.h>
 +#include <stdlib.h>

Modified: zaptel1.2/trunk/qozap/qozap.c
===================================================================
--- zaptel1.2/trunk/qozap/qozap.c	2007-06-06 02:59:06 UTC (rev 3647)
+++ zaptel1.2/trunk/qozap/qozap.c	2007-06-06 05:04:03 UTC (rev 3648)
@@ -115,41 +115,60 @@
 	    qoz_outb(qoztmp,qoz_R_GPIO_SEL,0x20 | 0x10);
     	    qoz_outb(qoztmp,qoz_R_GPIO_EN1,0xf);
 	    qoz_outb(qoztmp,qoz_R_GPIO_OUT1,(qoztmp->leds[0] | (qoztmp->leds[1] << 1) | (qoztmp->leds[2] << 2) | (qoztmp->leds[3] << 3)));
-    } else if ((qoztmp->type == 0xb550) && (qoztmp->stports == 4)){
+    } else if (((qoztmp->type == 0xb550)  || (qoztmp->type == 0xb556)) && (qoztmp->stports == 4)){
 	    qoz_outb(qoztmp,qoz_R_GPIO_SEL,0x80 | 0x40 | 0x20 | 0x10);
     	    qoz_outb(qoztmp,qoz_R_GPIO_EN1,0xff);
-	    if (qoztmp->leds[0] == 0) {
+	    leds = 0x10;
+	    if (qoztmp->leds[0] == 1) {
+		leds |= 0x04;
+	    }
+	    if (qoztmp->leds[1] == 1) {
+		leds |= 0x20;
+	    }
+	    if (qoztmp->leds[2] == 1) {
 		leds |= 0x80;
-	    } else {
+	    }
+	    if (qoztmp->leds[3] == 1) {
 		leds |= 0x40;
 	    }
-	    if (qoztmp->leds[1] == 0) {
+
+    /*
+	     03
+	     12
+	0x80 rr
+	     rg
+	0x40 rg
+	     rr
+	0x20 rr
+	     gr
+	0x04 gr
+	     rr
+    */
+	    qoz_outb(qoztmp,qoz_R_GPIO_OUT1, leds);
+
+    } else if (qoztmp->type == 0xb558) {
+	    qoz_outb(qoztmp,qoz_R_GPIO_SEL,0x80 | 0x40 | 0x20);
+    	    qoz_outb(qoztmp,qoz_R_GPIO_EN1,0x80 | 0x40 | 0x20 | 0x4);
+	    if (qoztmp->leds[0] == 1) {
 		leds |= 0x20;
-	    } else {
-		leds |= 0x10;
 	    }
-	    if (qoztmp->leds[2] == 0) {
-		leds |= 0x08;
-	    } else {
+	    if (qoztmp->leds[1] == 1) {
 		leds |= 0x04;
 	    }
-	    if (qoztmp->leds[3] == 0) {
-		leds |= 0x02;
-	    } else {
-		leds |= 0x01;
+	    if (qoztmp->leds[2] == 1) {
+		leds |= 0x40;
 	    }
-    /* 	0x80 st1g
-	0x40 st1r
-	0x20 st2r
-	0x10 st2g	
-	0x08 st3r
-	0x04 st3g
-	0x02 st4g
-	0x01 st4r
-    */
+	    if (qoztmp->leds[3] == 1) {
+		leds |= 0x80;
+	    }
+	    
 	    qoz_outb(qoztmp,qoz_R_GPIO_OUT1, leds);
-    } else if (qoztmp->type == 0xb556) {
-	/* TBD */
+	/*
+	    gpio_10 0
+	    gpio_13 1
+	    gpio_15 2
+	    gpio_14 3
+	*/	    
     } else if (qoztmp->type == 0xb55b) {
 	qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x21); 
     /* 0x01 g1 st1
@@ -197,17 +216,22 @@
 }
 
 void qoz_doWD(struct qoz_card *qoztmp) {
+    unsigned long flags;
     if (!qoztmp->wdp) {
 	return;
     }
-    if (qoztmp->wdp == 1) {
+    spin_lock_irqsave(&qoztmp->lock,flags);
+    qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x21); 
+	if (qoztmp->wdp == 1) {
 	    qoz_outdw_io(qoztmp,0x4000, qoz_WD_P2);
 	    qoztmp->wdp = 2;
-    } else {
+	} else {
 	    qoz_outdw_io(qoztmp,0x4000, qoz_WD_P1);
 	    qoztmp->wdp = 1;
-    }
-    qoz_inb_io(qoztmp,qoz_R_CHIP_ID);    
+	}
+	qoz_inb_io(qoztmp,qoz_R_CHIP_ID);    
+    qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x20); 
+    spin_unlock_irqrestore(&qoztmp->lock,flags);
 }
 
 void qoz_undoWD(struct qoz_card *qoztmp) {
@@ -216,9 +240,11 @@
     if (qoztmp->wdp) {
 	printk(KERN_INFO "qozap: Stopping hardware watchdog.\n");
 	spin_lock_irqsave(&qoztmp->lock,flags);
+	qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x21); 
 	qoz_outdw_io(qoztmp,0x4000, qoz_WD_P0);
 	qoztmp->wdp = 0;
 	qoz_inb_io(qoztmp,qoz_R_CHIP_ID);    
+	qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x20); 
 	spin_unlock_irqrestore(&qoztmp->lock,flags);
     }
 }
@@ -276,7 +302,6 @@
     qoz_outb(qoztmp,qoz_R_IRQMSK_MISC, 0x2); 
 
 
-
     /* all state changes */
     qoz_outb(qoztmp,qoz_R_SCI_MSK, 0xff); 
 
@@ -296,9 +321,13 @@
 	if (qoztmp->type == 0x08b4) {
 	    qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x0); 
 	} else if (qoztmp->type == 0xb550) {
-	    qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x23); 
+	    qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x20); 
 	} else if (qoztmp->type == 0xb556) {
-	    qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x23); 
+	    qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x20); 
+	} else if (qoztmp->type == 0xb557) {
+	    qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x20); 
+	} else if (qoztmp->type == 0xb558) {
+	    qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x20); 
 	} else if (qoztmp->type == 0xb520) {
 	    qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x20); 
 	} else {
@@ -318,14 +347,14 @@
     qoztmp->leds[6] = 0x0;
     qoztmp->leds[7] = 0x0;
 
-    /* Finally enable IRQ output */
-//    qoz_outb(qoztmp,qoz_R_IRQ_CTRL, 0x8 | 0x1); 
     if (qoztmp->type == 0xb552) {
 	qoztmp->stports = 8;
     } else if (qoztmp->type == 0xb55b) {
 	qoztmp->stports = 8;
     } else if (qoztmp->type == 0xb556) {
 	qoztmp->stports = 2;
+    } else if (qoztmp->type == 0xb557) {
+	qoztmp->stports = 2;
     } else {
 	qoztmp->stports = 4;
     }
@@ -339,6 +368,9 @@
     }
 
     qoz_outb(qoztmp,qoz_R_ST_SYNC,0x0);
+
+    /* IRQs off */
+    qoz_outb(qoztmp,qoz_R_IRQ_CTRL, 0); 
     
     spin_unlock_irqrestore(&(qoztmp->lock),flags);
 }
@@ -559,9 +591,8 @@
     		data = qoz_inb(qoztmp,qoz_A_FIFO_DATA0);
 	    }
 	    qoztmp->clicks++;
-//	    if ((qoztmp->clicks > 50) && (debug > 1)) {
-	    if (((qoztmp->clicks > 50) || (debug > 3)) && (mumbojumbo > 0)) {
-		printk(KERN_CRIT "qozap: dropped audio card %d cardid %d bytes %d z1 %d z2 %d\n", qoztmp->cardno, qoztmp->cardID, mumbojumbo, z1, z2);
+	    if (((qoztmp->clicks > 50) || (debug > 5)) && (mumbojumbo > 0)) {
+		printk(KERN_CRIT "qozap: dropped audio card %d cardid %d bytes %d z1 %d z2 %d fifo %d\n", qoztmp->cardno, qoztmp->cardID, mumbojumbo, z1, z2, fifo);
 		qoztmp->clicks = 0;
 	    }
 	}
@@ -708,7 +739,7 @@
 
 static void qoz_resync(struct qoz_card *qoztmp) {
     int i=0;
-    int best=99;
+    int best=9999;
     int src=-1;
 
     if (pcmslave) return;
@@ -719,13 +750,21 @@
 	    src = i;
 	}
     }
+    if (src < 0) {
+	for (i=0; i<qoztmp->stports; i++){
+	    if ((qoztmp->st_sync[i] > 0) && (qoztmp->st_sync[i] < best)) {
+		best = qoztmp->st_sync[i];
+	        src = i;
+	    }
+	}
+    }
     if (src == qoztmp->syncsrc)
 	return;
     if (src >= 0) {
 	qoztmp->syncsrc = src;
 	qoz_outb(qoztmp, qoz_R_ST_SYNC, src | 0x08);
 	if (debug > 2)
-	    printk(KERN_INFO "qozap: Sync source changed to span %d\n", src + 1);
+	    printk(KERN_INFO "qozap: card %d Sync source changed to span %d\n", qoztmp->cardno, src + 1);
     }
 }
 
@@ -826,11 +865,7 @@
     } 
 }
 
-#ifdef LINUX26
-static irqreturn_t qoz_interrupt(int irq, void *dev_id, struct pt_regs *regs) {
-#else
-static void qoz_interrupt(int irq, void *dev_id, struct pt_regs *regs) {
-#endif
+ZAP_IRQ_HANDLER(qoz_interrupt) {
     struct qoz_card *qoztmp = dev_id;
     unsigned long flags;
     unsigned char irq_misc,irq_sci,status,l1state,irq_foview,fi;
@@ -879,7 +914,7 @@
     /* state machine irq */
     if (irq_sci != 0) {
 	if (debug > 1) {
-	    printk(KERN_INFO "R_BERT_STA = %#x\n", qoz_inb(qoztmp, qoz_R_BERT_STA) & 7);
+	    printk(KERN_INFO "qozap: card %d R_BERT_STA = %#x\n", qoztmp->cardno, qoz_inb(qoztmp, qoz_R_BERT_STA) & 7);
 	}
 	if (qoztmp->type == 0xb552) {
 	    offset = 24;
@@ -894,7 +929,7 @@
 		qoz_outb(qoztmp,qoz_R_ST_SEL,st);
 		l1state = qoz_inb(qoztmp,qoz_A_ST_RD_STA) & 0xf;
 		if (debug > 1) {
-		    printk(KERN_INFO "A_ST_RD_STA = %#x\n", qoz_inb(qoztmp, qoz_A_ST_RD_STA));
+		    printk(KERN_INFO "qozap: card %d span %d A_ST_RD_STA = %#x\n", qoztmp->cardno, st+1, qoz_inb(qoztmp, qoz_A_ST_RD_STA));
 		}
 		qoztmp->st[st].layer1state = l1state;
 		if (qoztmp->st[st].nt_mode == 1) {
@@ -1430,7 +1465,7 @@
     
     for (s=0; s < qoztmp->stports; s++) {
 	memset(&qoztmp->spans[s],0,sizeof(struct zt_span));
-	sprintf(qoztmp->spans[s].name,"ztqoz/%d/%d",qoz_dev_count + 1,s + 1);
+	sprintf(qoztmp->spans[s].name,"ztqoz/%d/%d",qoztmp->cardno ,s + 1);
 	if (qoztmp->stports == 8) {
 	    if (qoztmp->st[s].nt_mode == 1){
 		sprintf(qoztmp->spans[s].desc,"octoBRI PCI ISDN Card %d Span %d [NT]",qoztmp->cardno,s + 1);
@@ -1480,7 +1515,7 @@
 
 	for (i=0; i < qoztmp->spans[s].channels; i++) {
 	    memset(&(qoztmp->chans[s][i]),0x0,sizeof(struct zt_chan));
-	    sprintf(qoztmp->chans[s][i].name,"ztqoz%d/%d/%d",qoz_dev_count + 1,s + 1,i + 1);
+	    sprintf(qoztmp->chans[s][i].name,"ztqoz%d/%d/%d",qoztmp->cardno,s + 1,i + 1);
 	    qoztmp->chans[s][i].pvt = qoztmp;
 	    qoztmp->chans[s][i].sigcap =  ZT_SIG_CLEAR | ZT_SIG_DACS;
 	    qoztmp->chans[s][i].chanpos = i + 1; 
@@ -1573,23 +1608,16 @@
 	
 	pci_write_config_word(qoztmp->pcidev, PCI_COMMAND, PCI_COMMAND_IO | PCI_COMMAND_MEMORY);
 
-	// disable ints
 	qoz_outb(qoztmp,qoz_R_IRQ_CTRL, 0); 
 
-	if (pcidid == PCI_DEVICE_ID_CCD_M) {
-	    qoztmp->stports = 8;
-	} else {
-	    if (tmp->subsystem_device <= 0xb555) {
-	        qoztmp->stports = 4;
-	    } else {
-	        qoztmp->stports = 2;
-	    }
-	}
+	qoztmp->type = tmp->subsystem_device;
+	qoz_resetCard(qoztmp);
 	
 
         if ((tmp->subsystem_device==0xb520) && (pcidid == PCI_DEVICE_ID_CCD_M4)) {
 	//    printk(KERN_INFO "MODES = %#x.\n",modes);
 	    qoz_outb(qoztmp,qoz_R_GPIO_SEL,0x80 | 0x40);
+	    qoz_outb(qoztmp,qoz_R_GPIO_EN1,0x00);
 	    dips = (qoz_inb(qoztmp,qoz_R_GPIO_IN1) >> 5);
 	    cid = 7;
 	    for (i=0;i<3;i++) {
@@ -1599,15 +1627,76 @@
 	    }
 	//	printk(KERN_INFO "DIPS = %#x CID= %#x\n",dips,cid);
         } else if ((tmp->subsystem_device==0xb550) && (pcidid == PCI_DEVICE_ID_CCD_M4)) {
+		/* quadBRI 2.0 */
 	//    printk(KERN_INFO "MODES = %#x.\n",modes);
-	    dips = ~(qoz_inb(qoztmp,qoz_R_GPI_IN3) & 7);
-	    cid = 0;
-	    for (i=0;i<3;i++) {
-	        if ((dips & (1 << i)) != 0) {
-	    	cid += (1 << i);
-	        }
-	    }
-	printk(KERN_INFO "DIPS = %#x CID= %#x\n",dips,cid);
+		qoz_outb(qoztmp,qoz_R_GPIO_SEL,0xF0);
+		qoz_outb(qoztmp,qoz_R_GPIO_EN0,0x00);
+		qoz_outb(qoztmp,qoz_R_GPIO_EN1,0x00);
+//		dips = qoz_inb(qoztmp,qoz_R_GPIO_IN1) >> 5;
+		dips = ((qoz_inb(qoztmp,qoz_R_GPI_IN3) & 80) >> 1) | ((qoz_inb(qoztmp,qoz_R_GPI_IN3) & 8) << 2) | qoz_inb(qoztmp,qoz_R_GPIO_IN1);
+
+		cid = 0;
+		for (i=0;i<3;i++) {
+	    	    if ((dips & (1 << i)) == 0) {
+	    		cid += (1 << i);
+		    }
+		}
+
+        } else if ((tmp->subsystem_device==0xb556) && (pcidid == PCI_DEVICE_ID_CCD_M4)) {
+		/* duoBRI */
+
+		/* gpi27 1 gpi23 2 */
+		qoz_outb(qoztmp,qoz_R_GPIO_SEL,0xf0);
+		qoz_outb(qoztmp,qoz_R_GPIO_EN0,0x00);
+		qoz_outb(qoztmp,qoz_R_GPIO_EN1,0x00);
+
+/*		dips = qoz_inb_io(qoztmp,0x4000);
+		dips = qoz_inb_io(qoztmp,0x4000);
+		dips = qoz_inb_io(qoztmp,0x4000);
+		dips = qoz_inb_io(qoztmp,0x4000);
+
+		qoz_outw_io(qoztmp,0x0,0x0);  */
+
+
+        } else if ((tmp->subsystem_device==0xb558) && (pcidid == PCI_DEVICE_ID_CCD_M4)) {
+		/* quadBRI minipCI */
+		qoz_outb(qoztmp,qoz_R_GPIO_SEL,0xF0);
+		qoz_outb(qoztmp,qoz_R_GPIO_EN0,0x00);
+		qoz_outb(qoztmp,qoz_R_GPIO_EN1,0x00);
+		dips = qoz_inb(qoztmp,qoz_R_GPIO_IN1) >> 5;
+/*	    printk(KERN_INFO "gpio_in1 %#x\n", qoz_inb(qoztmp,qoz_R_GPIO_IN1));
+
+	    printk(KERN_INFO "gpi_in2 %#x\n", qoz_inb(qoztmp,qoz_R_GPI_IN2));
+	    printk(KERN_INFO "dip1 %#x\n", (qoz_inb(qoztmp,qoz_R_GPI_IN3) & 80) >> 7);
+	    printk(KERN_INFO "gpi_in3 %#x\n", qoz_inb(qoztmp,qoz_R_GPI_IN3));
+	    printk(KERN_INFO "dip2 %#x\n", (qoz_inb(qoztmp,qoz_R_GPI_IN3) & 8) >> 3); >*/
+		cid = 0;
+		for (i=0;i<3;i++) {
+	    	    if ((dips & (1 << i)) != 0) {
+	    		cid += (1 << i);
+		    }
+		}
+//	    printk(KERN_INFO "DIPS = %#x CID= %#x\n",dips,cid);
+
+	} else if ((tmp->subsystem_device==0xb55b) && (pcidid == PCI_DEVICE_ID_CCD_M)){
+		qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x21); 
+
+		dips = ~qoz_inb_io(qoztmp,0x4000);
+		dips = ~qoz_inb_io(qoztmp,0x4000);
+		dips = ~qoz_inb_io(qoztmp,0x4000);
+		dips = ~qoz_inb_io(qoztmp,0x4000);
+
+		dips &= 0x3F;
+		qoz_outw_io(qoztmp,0x0,0x0); 
+
+		cid = 0;
+		for (i=0;i<6;i++) {
+	    	    if ((dips & (1 << i)) != 0) {
+	    		cid += (1 << i);
+		    }
+		}
+		qoz_outb(qoztmp,qoz_R_BRG_PCM_CFG,0x20); 
+		printk(KERN_CRIT "dips = %#x cid = %d\n", dips, cid);
         } else {
 	    cid = 0xff;
         }
@@ -1618,12 +1707,36 @@
     	    } else if ((tmp->subsystem_device==0xb550) && (pcidid == PCI_DEVICE_ID_CCD_M4)) {
 		qoz_outb(qoztmp,qoz_R_GPIO_SEL,0xff);
 		qoz_outb(qoztmp,qoz_R_GPIO_EN0,0x00);
-		printk(KERN_CRIT "gpio_in0 %#x \n", qoz_inb(qoztmp,qoz_R_GPIO_IN0));
-		printk(KERN_CRIT "gpio_in1 %#x \n", qoz_inb(qoztmp,qoz_R_GPIO_IN1));
-		printk(KERN_CRIT "gpi_in1 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN1));
-		printk(KERN_CRIT "gpi_in2 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN2));
-		printk(KERN_CRIT "gpi_in3 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN3));
+		if (debug) {
+		    printk(KERN_CRIT "gpio_in0 %#x \n", qoz_inb(qoztmp,qoz_R_GPIO_IN0));
+		    printk(KERN_CRIT "gpio_in1 %#x \n", qoz_inb(qoztmp,qoz_R_GPIO_IN1));
+		    printk(KERN_CRIT "gpi_in1 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN1));
+		    printk(KERN_CRIT "gpi_in2 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN2));
+		    printk(KERN_CRIT "gpi_in3 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN3));
+		}
 		modes = qoz_inb(qoztmp,qoz_R_GPI_IN3) >> 4;	    
+    	    } else if ((tmp->subsystem_device==0xb558) && (pcidid == PCI_DEVICE_ID_CCD_M4)) {
+		qoz_outb(qoztmp,qoz_R_GPIO_SEL,0xff);
+		qoz_outb(qoztmp,qoz_R_GPIO_EN0,0x00);
+		if (debug) {
+		    printk(KERN_CRIT "gpio_in0 %#x \n", qoz_inb(qoztmp,qoz_R_GPIO_IN0));
+		    printk(KERN_CRIT "gpio_in1 %#x \n", qoz_inb(qoztmp,qoz_R_GPIO_IN1));
+	    	    printk(KERN_CRIT "gpi_in1 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN1));
+		    printk(KERN_CRIT "gpi_in2 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN2));
+		    printk(KERN_CRIT "gpi_in3 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN3));
+		}
+		modes = qoz_inb(qoztmp,qoz_R_GPI_IN3) >> 4;	    
+    	    } else if ((tmp->subsystem_device==0xb556) && (pcidid == PCI_DEVICE_ID_CCD_M4)) {
+		qoz_outb(qoztmp,qoz_R_GPIO_SEL,0xff);
+		qoz_outb(qoztmp,qoz_R_GPIO_EN0,0x00);
+		if (debug) {
+		    printk(KERN_CRIT "gpio_in0 %#x \n", qoz_inb(qoztmp,qoz_R_GPIO_IN0));
+		    printk(KERN_CRIT "gpio_in1 %#x \n", qoz_inb(qoztmp,qoz_R_GPIO_IN1));
+		    printk(KERN_CRIT "gpi_in1 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN1));
+		    printk(KERN_CRIT "gpi_in2 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN2));
+		    printk(KERN_CRIT "gpi_in3 %#x \n", qoz_inb(qoztmp,qoz_R_GPI_IN3));
+		}
+		modes = qoz_inb(qoztmp,qoz_R_GPI_IN3) >> 4;
 	    } else {
 		modes = 0; // assume TE mode
 	    }
@@ -1662,6 +1775,20 @@
 		        qoztmp->irq, HZ, cid);
 		        totalBRIs += 2;
 		    break;
+		case 0xb557:
+			printk(KERN_INFO
+		        "qozap: Junghanns.NET duoBRI miniPCI card configured at io port %#x IRQ %d HZ %d CardID %d\n",
+		          (u_int) qoztmp->ioport,
+		        qoztmp->irq, HZ, cid);
+		        totalBRIs += 2;
+		    break;
+		case 0xb558:
+			printk(KERN_INFO
+		        "qozap: Junghanns.NET quadBRI miniPCI card configured at io port %#x IRQ %d HZ %d CardID %d\n",
+		          (u_int) qoztmp->ioport,
+		        qoztmp->irq, HZ, cid);
+		        totalBRIs += 4;
+		    break;
 	    } 
 	} else {
 	    switch (tmp->subsystem_device) {
@@ -1760,7 +1887,6 @@
     tmpcard = qoz_dev_list;
     while (tmpcard != NULL) {
 	ztqoz_initialize(tmpcard);
-	qoz_resetCard(tmpcard);
 	tmpcard = tmpcard->next;
     }
     return 0;

Modified: zaptel1.2/trunk/zaphfc/zaphfc.c
===================================================================
--- zaptel1.2/trunk/zaphfc/zaphfc.c	2007-06-06 02:59:06 UTC (rev 3647)
+++ zaptel1.2/trunk/zaphfc/zaphfc.c	2007-06-06 05:04:03 UTC (rev 3648)
@@ -27,6 +27,10 @@
 #include <zaptel.h>
 #include "zaphfc.h"
 
+#ifdef LINUX26
+#include <linux/moduleparam.h>
+#endif
+
 #if CONFIG_PCI
 
 #define CLKDEL_TE	0x0f	/* CLKDEL in TE mode */
@@ -539,11 +543,7 @@
 }
 
 #ifndef RTAITIMING
-#ifdef LINUX26
-static irqreturn_t hfc_interrupt(int irq, void *dev_id, struct pt_regs *regs) {
-#else
-static void hfc_interrupt(int irq, void *dev_id, struct pt_regs *regs) {
-#endif
+ZAP_IRQ_HANDLER(hfc_interrupt) {
     struct hfc_card *hfctmp = dev_id;
     unsigned long flags = 0;
     unsigned char stat;

Modified: zaptel1.2/trunk/ztgsm/ztgsm.c
===================================================================
--- zaptel1.2/trunk/ztgsm/ztgsm.c	2007-06-06 02:59:06 UTC (rev 3647)
+++ zaptel1.2/trunk/ztgsm/ztgsm.c	2007-06-06 05:04:03 UTC (rev 3648)
@@ -720,11 +720,7 @@
 
 
 
-#ifdef LINUX26
-static irqreturn_t ztgsm_interrupt(int irq, void *dev_id, struct pt_regs *regs) {
-#else
-static void ztgsm_interrupt(int irq, void *dev_id, struct pt_regs *regs) {
-#endif
+ZAP_IRQ_HANDLER(ztgsm_interrupt) {
     struct ztgsm_card *gsmtmp = dev_id;
     unsigned int ser_status = 0;
     unsigned char mods = 0;




More information about the Pkg-voip-commits mailing list