[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