SOURCES: zaptel-bristuff.patch - updated for 1.4.11
arekm
arekm at pld-linux.org
Wed Jul 16 21:52:08 CEST 2008
Author: arekm Date: Wed Jul 16 19:52:08 2008 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- updated for 1.4.11
---- Files affected:
SOURCES:
zaptel-bristuff.patch (1.4 -> 1.5)
---- Diffs:
================================================================
Index: SOURCES/zaptel-bristuff.patch
diff -u SOURCES/zaptel-bristuff.patch:1.4 SOURCES/zaptel-bristuff.patch:1.5
--- SOURCES/zaptel-bristuff.patch:1.4 Sun May 25 14:13:22 2008
+++ SOURCES/zaptel-bristuff.patch Wed Jul 16 21:52:03 2008
@@ -1,7 +1,7 @@
-diff -urN zaptel-1.4.8.org/cwain/cwain.c zaptel-1.4.8/cwain/cwain.c
---- zaptel-1.4.8.org/cwain/cwain.c 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/cwain/cwain.c 2008-02-09 17:56:18.498299056 +0100
-@@ -0,0 +1,2206 @@
+diff -urN zaptel-1.4.11.org/cwain/cwain.c zaptel-1.4.11/cwain/cwain.c
+--- zaptel-1.4.11.org/cwain/cwain.c 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/cwain/cwain.c 2008-07-16 21:26:32.000000000 +0200
+@@ -0,0 +1,2236 @@
+/*
+ * cwain.c - Zaptel driver for the Junghanns.NET E1 card
+ *
@@ -157,7 +157,7 @@
+ if (!(cwaintmp->span.flags & ZT_FLAG_RUNNING)) {
+ return;
+ }
-+ if ((cwaintmp->type == 0xb553) || (cwaintmp->type == 0xb554)) {
++ if ((cwaintmp->type == 0xb553) || (cwaintmp->type == 0xb554) || (cwaintmp->type == 0xb555)) {
+ /* sync status */
+ if (((cwaintmp->sync_sta & 0x07) == 0x07) && cwaintmp->sync) {
+ cwaintmp->leds[0] = 1;
@@ -235,8 +235,14 @@
+ cwain_outb(cwaintmp,cwain_R_CTRL,0x0);
+
+ /* no blinky blink */
-+ cwain_outb(cwaintmp,cwain_R_GPIO_SEL,0x20 | 0x10);
-+ cwain_outb(cwaintmp,cwain_R_GPIO_EN1,0x0f);
++ if (cwaintmp->type == 0xb555) {
++ cwain_outb(cwaintmp,cwain_R_GPIO_SEL,0x20 | 0x10 | 0x02);
++ cwain_outb(cwaintmp,cwain_R_GPIO_EN1,0x0f);
++ cwain_outb(cwaintmp,cwain_R_GPIO_EN0,0x08 | 0x04);
++ } else {
++ cwain_outb(cwaintmp,cwain_R_GPIO_SEL,0x20 | 0x10);
++ cwain_outb(cwaintmp,cwain_R_GPIO_EN1,0x0f);
++ }
+ cwain_outb(cwaintmp,cwain_R_GPIO_OUT1,0x0f);
+
+ /* IRQs off */
@@ -329,13 +335,14 @@
+
+ spin_lock_init(&cwaintmp->lock);
+ cwaintmp->pcibus = cwainspan->pcibus;
-+ cwaintmp->spans = cwainspan->type - 46419;
++// cwaintmp->spans = cwainspan->type - 46419;
++ cwaintmp->spans = (cwainspan->type & (2321 * 20)) - 46419;
+ cwaintmp->span[0] = cwainspan;
+ cwaintmp->cardID = cwainspan->cardID;
+ cwaintmp->syncs[0] = -1;
+ cwain_register_card(cwaintmp);
+ } else {
-+ cwaintmp->spans = cwainspan->type - 46418;
++ cwaintmp->spans = (cwainspan->type & (2321 * 20)) - 46418;
+ if (cwainspan->cardID < cwaintmp->cardID) {
+ cwaintmp->cardID = cwainspan->cardID;
+ cwaintmp->span[1] = cwaintmp->span[0];
@@ -346,8 +353,8 @@
+ cwaintmp->syncs[1] = -1;
+ }
+ printk(KERN_INFO
-+ "cwain: Junghanns.NET doubleE1 PCI ISDN card configured at mem (%lx / %lx) IRQ %d HZ %d CardID (%d / %d) bus %#x\n",
-+ (unsigned long) cwaintmp->span[0]->pci_io, (unsigned long) cwaintmp->span[1]->pci_io,
++ "cwain: Junghanns.NET doubleE1 PCI ISDN %d.0 card configured at mem (%lx / %lx) IRQ %d HZ %d CardID (%d / %d) bus %#x\n",
++ (cwainspan->type - 0xb553), (unsigned long) cwaintmp->span[0]->pci_io, (unsigned long) cwaintmp->span[1]->pci_io,
+ cwaintmp->span[0]->irq, HZ, cwaintmp->span[0]->cardID, cwaintmp->span[1]->cardID, cwaintmp->pcibus);
+ }
+ }
@@ -1110,6 +1117,16 @@
+
+static inline void cwain_audio_run(struct zt_cwain *cwaintmp) {
+ int fifo=0;
++
++ if (cwaintmp->wdp) {
++ if (cwaintmp->wdp == 0x04) {
++ cwaintmp->wdp = 0x08;
++ } else {
++ cwaintmp->wdp = 0x04;
++ }
++ cwain_outb(cwaintmp, cwain_R_GPIO_OUT0, cwaintmp->wdp);
++ }
++
+ if (hdlcnet) return;
+
+ if (hw_hdlc) {
@@ -1231,19 +1248,25 @@
+ if (sync_ok) {
+ switch (cwainspan->type) {
+ case 0xb553:
-+ sprintf(cwainspan->span.desc,"Junghanns.NET singleE1 PCI ISDN Card %d (cardID %d) SYNCED",cwainspan->cardno,cwainspan->cardID);
++ snprintf(cwainspan->span.desc, sizeof(cwainspan->span.desc), "Junghanns.NET singleE1 PCI ISDN %d (cardID %d) SYNCED",cwainspan->cardno,cwainspan->cardID);
+ break;
+ case 0xb554:
-+ sprintf(cwainspan->span.desc,"Junghanns.NET doubleE1 PCI ISDN Card %d (cardID %d) (1 E1 port) SYNCED",cwainspan->cardno,cwainspan->cardID);
++ snprintf(cwainspan->span.desc, sizeof(cwainspan->span.desc), "Junghanns.NET doubleE1 PCI ISDN %d (cardID %d) (1 E1 port) SYNCED",cwainspan->cardno,cwainspan->cardID);
++ break;
++ case 0xb555:
++ snprintf(cwainspan->span.desc, sizeof(cwainspan->span.desc), "Junghanns.NET doubleE1 PCI ISDN 2.0 %d (cardID %d) (1 E1 port) SYNCED",cwainspan->cardno,cwainspan->cardID);
+ break;
+ }
+ } else {
+ switch (cwainspan->type) {
+ case 0xb553:
-+ sprintf(cwainspan->span.desc,"Junghanns.NET singleE1 PCI ISDN Card %d (cardID %d) NO SYNC (sync_sta = %#x)",cwainspan->cardno,cwainspan->cardID, sync_sta);
++ snprintf(cwainspan->span.desc, sizeof(cwainspan->span.desc), "Junghanns.NET singleE1 PCI ISDN %d (cardID %d) NO SYNC (sync_sta = %#x)",cwainspan->cardno,cwainspan->cardID, sync_sta);
+ break;
+ case 0xb554:
-+ sprintf(cwainspan->span.desc,"Junghanns.NET doubleE1 PCI ISDN Card %d (cardID %d) (1 E1 port) NO SYNC (sync_sta = %#x)",cwainspan->cardno,cwainspan->cardID, sync_sta);
++ snprintf(cwainspan->span.desc, sizeof(cwainspan->span.desc), "Junghanns.NET doubleE1 PCI ISDN %d (cardID %d) (1 E1 port) NO SYNC (sync_sta = %#x)",cwainspan->cardno,cwainspan->cardID, sync_sta);
++ break;
++ case 0xb555:
++ snprintf(cwainspan->span.desc, sizeof(cwainspan->span.desc), "Junghanns.NET doubleE1 PCI ISDN 2.0 %d (cardID %d) (1 E1 port) NO SYNC (sync_sta = %#x)",cwainspan->cardno,cwainspan->cardID, sync_sta);
+ break;
+ }
+ }
@@ -1817,6 +1840,9 @@
+ cwain_outb(cwaintmp,cwain_R_IRQ_CTRL, 0);
+ cwain_inb(cwaintmp,cwain_R_STATUS);
+
++ cwain_outb(cwaintmp,cwain_R_GPIO_EN0,0x00);
++ cwain_outb(cwaintmp,cwain_R_GPIO_EN1,0x00);
++
+
+ span->flags &= ~ZT_FLAG_RUNNING;
+
@@ -1861,10 +1887,14 @@
+ sprintf(cwaintmp->span.name,"cwain/%d",cwaintmp->cardno);
+ switch (cwaintmp->type) {
+ case 0xb553:
-+ sprintf(cwaintmp->span.desc,"Junghanns.NET singleE1 PCI ISDN Card %d (cardID %d)",cwaintmp->cardno,cwaintmp->cardID);
++ snprintf(cwaintmp->span.desc, sizeof(cwaintmp->span.desc), "Junghanns.NET singleE1 PCI ISDN %d (cardID %d)",cwaintmp->cardno,cwaintmp->cardID);
+ break;
+ case 0xb554:
-+ sprintf(cwaintmp->span.desc,"Junghanns.NET doubleE1 PCI ISDN Card %d (cardID %d) (1 E1 port)",cwaintmp->cardno,cwaintmp->cardID);
++ snprintf(cwaintmp->span.desc, sizeof(cwaintmp->span.desc), "Junghanns.NET doubleE1 PCI ISDN %d (cardID %d) (1 E1 port)",cwaintmp->cardno,cwaintmp->cardID);
++ break;
++ case 0xb555:
++ snprintf(cwaintmp->span.desc, sizeof(cwaintmp->span.desc), "Junghanns.NET doubleE1 PCI ISDN 2.0 %d (cardID %d) (1 E1 port)",cwaintmp->cardno,cwaintmp->cardID);
++ cwaintmp->wdp = 0x04;
+ break;
+ default:
+ return -1;
@@ -2042,7 +2072,7 @@
+ /* disable interrupts */
+ cwain_outb(cwaintmp,cwain_R_IRQ_CTRL, 0);
+
-+ if (((tmp->subsystem_device==0xb553) || (tmp->subsystem_device==0xb554))&& (pcidid == PCI_DEVICE_ID_CCD_E)) {
++ if (((tmp->subsystem_device==0xb553)|| (tmp->subsystem_device==0xb554) || (tmp->subsystem_device==0xb555))&& (pcidid == PCI_DEVICE_ID_CCD_E)) {
+ dips = (cwain_inb(cwaintmp,cwain_R_GPI_IN0) >> 5);
+ cid = 7;
+ for (i=0;i<3;i++) {
@@ -2208,10 +2238,10 @@
+#ifdef MODULE_LICENSE
+MODULE_LICENSE("GPL");
+#endif
-diff -urN zaptel-1.4.8.org/cwain/cwain.h zaptel-1.4.8/cwain/cwain.h
---- zaptel-1.4.8.org/cwain/cwain.h 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/cwain/cwain.h 2008-02-09 17:56:18.498299056 +0100
-@@ -0,0 +1,251 @@
+diff -urN zaptel-1.4.11.org/cwain/cwain.h zaptel-1.4.11/cwain/cwain.h
+--- zaptel-1.4.11.org/cwain/cwain.h 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/cwain/cwain.h 2008-07-16 21:26:32.000000000 +0200
+@@ -0,0 +1,252 @@
+#define cwain_FIFO_SIZE 128
+#define cwain_DFIFO_SIZE 4096
+#define cwain_DFIFO_FRAMES 0x10
@@ -2247,6 +2277,7 @@
+
+ /* blinky blink */
+ unsigned char leds[4];
++ unsigned int wdp;
+
+ /* B chan buffers */
+ unsigned char rxbuf[31][ZT_CHUNKSIZE];
@@ -2463,9 +2494,9 @@
+#define CLKDEL_TE 0xe /* CLKDEL in TE mode */
+#define CLKDEL_NT 0xc /* CLKDEL in NT mode */
+
-diff -urN zaptel-1.4.8.org/cwain/Makefile zaptel-1.4.8/cwain/Makefile
---- zaptel-1.4.8.org/cwain/Makefile 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/cwain/Makefile 2008-02-09 17:56:18.501632550 +0100
+diff -urN zaptel-1.4.11.org/cwain/Makefile zaptel-1.4.11/cwain/Makefile
+--- zaptel-1.4.11.org/cwain/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/cwain/Makefile 2008-07-16 21:26:32.000000000 +0200
@@ -0,0 +1,88 @@
+KINCLUDES = /usr/src/linux/include
+BRISTUFFBASE = $(shell dirname `pwd`)
@@ -2555,14 +2586,14 @@
+
+unload:
+ rmmod cwain zaptel
-diff -urN zaptel-1.4.8.org/cwain/TODO zaptel-1.4.8/cwain/TODO
---- zaptel-1.4.8.org/cwain/TODO 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/cwain/TODO 2008-02-09 17:56:18.498299056 +0100
+diff -urN zaptel-1.4.11.org/cwain/TODO zaptel-1.4.11/cwain/TODO
+--- zaptel-1.4.11.org/cwain/TODO 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/cwain/TODO 2008-07-16 21:26:32.000000000 +0200
@@ -0,0 +1 @@
+
-diff -urN zaptel-1.4.8.org/cwain/zapata.conf zaptel-1.4.8/cwain/zapata.conf
---- zaptel-1.4.8.org/cwain/zapata.conf 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/cwain/zapata.conf 2008-02-09 17:56:18.501632550 +0100
+diff -urN zaptel-1.4.11.org/cwain/zapata.conf zaptel-1.4.11/cwain/zapata.conf
+--- zaptel-1.4.11.org/cwain/zapata.conf 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/cwain/zapata.conf 2008-07-16 21:26:32.000000000 +0200
@@ -0,0 +1,32 @@
+;
+; Zapata telephony interface
@@ -2596,9 +2627,9 @@
+group = 1
+channel => 1-15,17-31
+
-diff -urN zaptel-1.4.8.org/cwain/zapata.conf.doubleE1 zaptel-1.4.8/cwain/zapata.conf.doubleE1
---- zaptel-1.4.8.org/cwain/zapata.conf.doubleE1 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/cwain/zapata.conf.doubleE1 2008-02-09 17:56:18.501632550 +0100
+diff -urN zaptel-1.4.11.org/cwain/zapata.conf.doubleE1 zaptel-1.4.11/cwain/zapata.conf.doubleE1
+--- zaptel-1.4.11.org/cwain/zapata.conf.doubleE1 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/cwain/zapata.conf.doubleE1 2008-07-16 21:26:32.000000000 +0200
@@ -0,0 +1,35 @@
+;
+; Zapata telephony interface
@@ -2635,9 +2666,9 @@
+group = 2
+channel => 32-46,48-62
+
-diff -urN zaptel-1.4.8.org/cwain/zaptel.conf zaptel-1.4.8/cwain/zaptel.conf
---- zaptel-1.4.8.org/cwain/zaptel.conf 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/cwain/zaptel.conf 2008-02-09 17:56:18.498299056 +0100
+diff -urN zaptel-1.4.11.org/cwain/zaptel.conf zaptel-1.4.11/cwain/zaptel.conf
+--- zaptel-1.4.11.org/cwain/zaptel.conf 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/cwain/zaptel.conf 2008-07-16 21:26:32.000000000 +0200
@@ -0,0 +1,11 @@
+loadzone=nl
+defaultzone=nl
@@ -2650,9 +2681,9 @@
+bchan=17-31
+
+
-diff -urN zaptel-1.4.8.org/cwain/zaptel.conf.doubleE1 zaptel-1.4.8/cwain/zaptel.conf.doubleE1
---- zaptel-1.4.8.org/cwain/zaptel.conf.doubleE1 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/cwain/zaptel.conf.doubleE1 2008-02-09 17:56:18.498299056 +0100
+diff -urN zaptel-1.4.11.org/cwain/zaptel.conf.doubleE1 zaptel-1.4.11/cwain/zaptel.conf.doubleE1
+--- zaptel-1.4.11.org/cwain/zaptel.conf.doubleE1 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/cwain/zaptel.conf.doubleE1 2008-07-16 21:26:32.000000000 +0200
@@ -0,0 +1,14 @@
+loadzone=nl
+defaultzone=nl
@@ -2668,9 +2699,9 @@
+bchan=32-46
+dchan=47
+bchan=48-62
-diff -urN zaptel-1.4.8.org/cwain/zaptel.conf.hdlcnet zaptel-1.4.8/cwain/zaptel.conf.hdlcnet
---- zaptel-1.4.8.org/cwain/zaptel.conf.hdlcnet 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/cwain/zaptel.conf.hdlcnet 2008-02-09 17:56:18.501632550 +0100
+diff -urN zaptel-1.4.11.org/cwain/zaptel.conf.hdlcnet zaptel-1.4.11/cwain/zaptel.conf.hdlcnet
+--- zaptel-1.4.11.org/cwain/zaptel.conf.hdlcnet 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/cwain/zaptel.conf.hdlcnet 2008-07-16 21:26:32.000000000 +0200
@@ -0,0 +1,8 @@
+loadzone=nl
+defaultzone=nl
@@ -2680,9 +2711,9 @@
+hdlcnet=1
+
+
-diff -urN zaptel-1.4.8.org/cwain/zaptel.conf.hdlcnet.doubleE1 zaptel-1.4.8/cwain/zaptel.conf.hdlcnet.doubleE1
---- zaptel-1.4.8.org/cwain/zaptel.conf.hdlcnet.doubleE1 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/cwain/zaptel.conf.hdlcnet.doubleE1 2008-02-09 17:56:18.501632550 +0100
+diff -urN zaptel-1.4.11.org/cwain/zaptel.conf.hdlcnet.doubleE1 zaptel-1.4.11/cwain/zaptel.conf.hdlcnet.doubleE1
+--- zaptel-1.4.11.org/cwain/zaptel.conf.hdlcnet.doubleE1 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/cwain/zaptel.conf.hdlcnet.doubleE1 2008-07-16 21:26:32.000000000 +0200
@@ -0,0 +1,10 @@
+loadzone=nl
+defaultzone=nl
@@ -2695,9 +2726,9 @@
+; hdlc 1
+hdlcnet = 2
\ Brak znaku nowej linii na końcu pliku
-diff -urN zaptel-1.4.8.org/ds1x1f.c zaptel-1.4.8/ds1x1f.c
---- zaptel-1.4.8.org/ds1x1f.c 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/ds1x1f.c 2008-02-09 17:56:18.508299536 +0100
+diff -urN zaptel-1.4.11.org/ds1x1f.c zaptel-1.4.11/ds1x1f.c
+--- zaptel-1.4.11.org/ds1x1f.c 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/ds1x1f.c 2008-07-16 21:26:32.000000000 +0200
@@ -0,0 +1,2089 @@
+//=======================================================================
+// T1/E1 PCI card with failover DS1x1F card Driver
@@ -4788,49 +4819,188 @@
+module_init(ds1_init);
+module_exit(ds1_cleanup);
+
-diff -urN zaptel-1.4.8.org/Makefile zaptel-1.4.8/Makefile
---- zaptel-1.4.8.org/Makefile 2008-01-08 23:09:08.000000000 +0100
-+++ zaptel-1.4.8/Makefile 2008-02-09 17:56:55.610077902 +0100
-@@ -105,8 +105,8 @@
- endif
- #SUBDIRS_UTILS += ppp
-
--TOPDIR_MODULES:=pciradio tor2 torisa wcfxo wct1xxp wctdm wcte11xp wcusb zaptel ztd-eth ztd-loc ztdummy ztdynamic zttranscode
--SUBDIR_MODULES:=wct4xxp wctc4xxp xpp wctdm24xxp wcte12xp
-+TOPDIR_MODULES:=pciradio tor2 torisa wcfxo wct1xxp wctdm wcte11xp wcusb zaptel ztd-eth ztd-loc ztdummy ztdynamic zttranscode opvxa1200 wcopenpci
-+SUBDIR_MODULES:=wct4xxp wctc4xxp xpp wctdm24xxp wcte12xp cwain qozap vzaphfc zaphfc ztgsm
- TOPDIR_MODULES+=$(MODULES_EXTRA)
- SUBDIR_MODULES+=$(SUBDIRS_EXTRA)
- BUILD_TOPDIR_MODULES:=$(filter-out $(MENUSELECT_MODULES),$(TOPDIR_MODULES))
-@@ -440,6 +440,20 @@
- tar -zxf mISDNuser-$(MISDNUSERVERSION).tar.gz
- $(MAKE) -C mISDNuser-$(MISDNUSERVERSION) install
+diff -urN zaptel-1.4.11.org/kernel/zaptel-base.c zaptel-1.4.11/kernel/zaptel-base.c
+--- zaptel-1.4.11.org/kernel/zaptel-base.c 2008-05-11 03:57:08.000000000 +0200
++++ zaptel-1.4.11/kernel/zaptel-base.c 2008-07-16 21:30:39.658027584 +0200
+@@ -136,6 +136,7 @@
+ EXPORT_SYMBOL(zt_qevent_lock);
+ EXPORT_SYMBOL(zt_hooksig);
+ EXPORT_SYMBOL(zt_alarm_notify);
++EXPORT_SYMBOL(zt_alarm_notify_no_master_change);
+ EXPORT_SYMBOL(zt_set_dynamic_ioctl);
+ EXPORT_SYMBOL(zt_ec_chunk);
+ EXPORT_SYMBOL(zt_ec_span);
+@@ -609,6 +610,10 @@
+ len += sprintf(page + len, "\tTiming slips: %d\n", spans[span]->timingslips);
+ len += sprintf(page + len, "\n");
-+# copy bristuff files from subdirectories
-+# provide zaphfc.[ch] from zaphfc/zaphfc.[ch] etc. Any better way?
-+ztgsm.%: ztgsm/ztgsm.%
-+ cp $^ $@
++ if (spans[span]->proc_read) {
++ len += spans[span]->proc_read(spans[span], page + len);
++ }
+
-+zaphfc.%: zaphfc/zaphfc.%
-+ cp $^ $@
+
+ for (x=1;x<ZT_MAX_CHANNELS;x++) {
+ if (chans[x]) {
+@@ -3191,6 +3196,30 @@
+ }
+ }
+
++void zt_alarm_notify_no_master_change(struct zt_span *span)
++{
++ int j;
++ int x;
+
-+qozap.%: qozap/qozap.%
-+ cp $^ $@
++ span->alarms &= ~ZT_ALARM_LOOPBACK;
++ /* Determine maint status */
++ if (span->maintstat || span->mainttimer)
++ span->alarms |= ZT_ALARM_LOOPBACK;
++ /* DON'T CHANGE THIS AGAIN. THIS WAS DONE FOR A REASON.
++ The expression (a != b) does *NOT* do the same thing
++ as ((!a) != (!b)) */
++ /* if change in general state */
++ if ((!span->alarms) != (!span->lastalarms)) {
++ if (span->alarms)
++ j = ZT_EVENT_ALARM;
++ else
++ j = ZT_EVENT_NOALARM;
++ span->lastalarms = span->alarms;
++ for (x=0;x < span->channels;x++)
++ zt_qevent_lock(&span->chans[x], j);
++ }
++}
+
-+cwain.%: cwain/cwain.%
-+ cp $^ $@
+ #define VALID_SPAN(j) do { \
+ if ((j >= ZT_MAX_SPANS) || (j < 1)) \
+ return -EINVAL; \
+@@ -5744,11 +5773,40 @@
+ *(txb++) = fasthdlc_tx_run_nocheck(&ms->txhdlc);
+ }
+ bytes -= left;
++#ifdef CONFIG_ZAPATA_BRI_DCHANS
++ } else if (ms->flags & ZT_FLAG_BRIDCHAN) {
++ /*
++ * Let's get this right, we want to transmit complete frames only.
++ * The card driver will do the dirty HDLC work for us.
++ * txb (transmit buffer) is supposed to be big enough to store one frame
++ * we will make this as big as the D fifo (1KB or 2KB)
++ */
+
- $(UTILS): %: %.o
- $(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LDLIBS)
++ /* there are 'left' bytes in the user buffer left to transmit */
++ left = ms->writen[ms->outwritebuf] - ms->writeidx[ms->outwritebuf] - 2;
++ if (left > ms->maxbytes2transmit) {
++ memcpy(txb, buf + ms->writeidx[ms->outwritebuf], ms->maxbytes2transmit);
++ ms->writeidx[ms->outwritebuf] += ms->maxbytes2transmit;
++ txb += ms->maxbytes2transmit;
++ ms->bytes2transmit = ms->maxbytes2transmit;
++ ms->eoftx = 0;
++ } else {
++ memcpy(txb, buf + ms->writeidx[ms->outwritebuf], left);
++ ms->writeidx[ms->outwritebuf] += left + 2;
++ txb += left + 2;
++ ms->bytes2transmit = left;
++ ms->eoftx = 1;
++ }
++ bytes = 0;
++#endif
+ } else {
+ memcpy(txb, buf + ms->writeidx[ms->outwritebuf], left);
+ ms->writeidx[ms->outwritebuf]+=left;
+ txb += left;
+ bytes -= left;
++#if defined(CONFIG_ZAPATA_BRI_DCHANS)
++ ms->bytes2transmit=ZT_CHUNKSIZE;
++#endif
+ }
+ /* Check buffer status */
+ if (ms->writeidx[ms->outwritebuf] >= ms->writen[ms->outwritebuf]) {
+@@ -5805,6 +5863,17 @@
+ /* Transmit a flag if this is an HDLC channel */
+ if (ms->flags & ZT_FLAG_HDLC)
+ fasthdlc_tx_frame_nocheck(&ms->txhdlc);
++#if defined(CONFIG_ZAPATA_BRI_DCHANS)
++ if(ms->flags & ZT_FLAG_BRIDCHAN) {
++ // if (ms->bytes2transmit > 0) {
++ // txb += 2;
++ // ms->bytes2transmit -= 2;
++ bytes=0;
++ ms->eoftx = 1;
++// printk(KERN_CRIT "zaptel EOF(%d) bytes2transmit %d\n",ms->eoftx,ms->bytes2transmit);
++ // }
++ }
++#endif
+ #ifdef CONFIG_ZAPATA_NET
+ if (ms->flags & ZT_FLAG_NETDEV)
+ netif_wake_queue(ztchan_to_dev(ms));
+@@ -5865,6 +5934,12 @@
+ memset(txb, 0xFF, bytes);
+ }
+ bytes = 0;
++#if defined(CONFIG_ZAPATA_BRI_DCHANS)
++ } else if(ms->flags & ZT_FLAG_BRIDCHAN) {
++ ms->bytes2transmit = 0;
++ ms->eoftx = 0;
++ bytes = 0;
++#endif
+ } else {
+ memset(txb, ZT_LIN2X(0, ms), bytes); /* Lastly we use silence on telephony channels */
+ bytes = 0;
+@@ -6683,6 +6758,14 @@
+ int res;
+ int left, x;
-diff -urN zaptel-1.4.8.org/opvxa1200.c zaptel-1.4.8/opvxa1200.c
---- zaptel-1.4.8.org/opvxa1200.c 1970-01-01 01:00:00.000000000 +0100
-+++ zaptel-1.4.8/opvxa1200.c 2008-02-09 17:56:18.504966042 +0100
-@@ -0,0 +1,2718 @@
++#if defined(CONFIG_ZAPATA_BRI_DCHANS)
++ if (ms->flags & ZT_FLAG_BRIDCHAN) {
++ bytes = ms->bytes2receive;
++ if (bytes < 1) return;
++// printk(KERN_CRIT "bytes2receive %d\n",ms->bytes2receive);
++ }
++#endif
++
+ while(bytes) {
+ #if defined(CONFIG_ZAPATA_NET) || defined(CONFIG_ZAPATA_PPP)
+ skb = NULL;
+@@ -6740,6 +6823,19 @@
+ }
+ }
+ }
++#ifdef CONFIG_ZAPATA_BRI_DCHANS
++ } else if (ms->flags & ZT_FLAG_BRIDCHAN) {
++ memcpy(buf + ms->readidx[ms->inreadbuf], rxb, left);
++ rxb += left;
++ ms->readidx[ms->inreadbuf] += left;
++ bytes -= left;
++ if (ms->eofrx == 1) {
++ eof=1;
++ }
++// printk(KERN_CRIT "receiving %d bytes\n",ms->bytes2receive);
++ ms->bytes2receive = 0;
++ ms->eofrx = 0;
++#endif
+ } else {
+ /* Not HDLC */
+ memcpy(buf + ms->readidx[ms->inreadbuf], rxb, left);
+diff -urN zaptel-1.4.11.org/kernel/zaptel-base.c.orig zaptel-1.4.11/kernel/zaptel-base.c.orig
+--- zaptel-1.4.11.org/kernel/zaptel-base.c.orig 1970-01-01 01:00:00.000000000 +0100
++++ zaptel-1.4.11/kernel/zaptel-base.c.orig 2008-05-11 03:57:08.000000000 +0200
+@@ -0,0 +1,7801 @@
+/*
-+ * OpenVox A1200P FXS/FXO Interface Driver for Zapata Telephony interface
++ * Zapata Telephony Interface Driver
+ *
-+ * Modify from wctdm.c by MiaoLin<miaolin at openvox.com.cn>
++ * Written by Mark Spencer <markster at digium.com>
++ * Based on previous works, designs, and architectures conceived and
++ * written by Jim Dixon <jim at lambdatel.com>.
++ *
++ * Special thanks to Steve Underwood <steve at coppice.org>
++ * for substantial contributions to signal processing functions
++ * in zaptel and the zapata library.
++ *
++ * Yury Bokhoncovich <byg at cf1.ru>
++ * Adaptation for 2.4.20+ kernels (HDLC API was changed)
++ * The work has been performed as a part of our move
++ * from Cisco 3620 to IBM x305 here in F1 Group
++ *
++ * Copyright (C) 2001 Jim Dixon / Zapata Telephony.
++ * Copyright (C) 2001 -2006 Digium, Inc.
+ *
+ * All rights reserved.
+ *
@@ -4847,82 +5017,10283 @@
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
+ */
+
-+/* Rev histroy
-+ *
-+ * Rev 0.10 initial version
-+ * Rev 0.11
-+ * fixed the led light on/off bug.
-+ * modify some wctdm print to opvxa1200
-+ * support firmware version 1.2, faster i/o operation, and better LED control.
-+ *
-+ * Rev 0.12 patched to support new pci id 0x8519
-+ *
-+ *
-+ *
-+ *
-+ *
-+ *
-+ *
-+ *
-+ *
-+ *
-+ *
-+ *
-+ *
-+ */
++
++#include "zconfig.h"
++#include "../version.h"
+
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/errno.h>
++#include <linux/proc_fs.h>
+#include <linux/pci.h>
-+#include <linux/interrupt.h>
-+#include <asm/io.h>
-+#include "proslic.h"
-+#include "wctdm.h"
-+
-+//miaolin
-+#include <linux/string.h>
-+#include <asm/uaccess.h> // get_fs(), set_fs(), KERNEL_DS
-+#include <linux/file.h> // fput()
-+//miaolin
-+
++#include <linux/init.h>
++#include <linux/version.h>
++#include <linux/ctype.h>
++#include <linux/kmod.h>
++#ifdef CONFIG_DEVFS_FS
++#include <linux/devfs_fs_kernel.h>
++#endif /* CONFIG_DEVFS_FS */
++#ifdef CONFIG_ZAPATA_NET
++#include <linux/netdevice.h>
++#endif /* CONFIG_ZAPATA_NET */
++#include <linux/ppp_defs.h>
++#ifdef CONFIG_ZAPATA_PPP
++#include <linux/netdevice.h>
++#include <linux/if.h>
++#include <linux/if_ppp.h>
++#endif
++#include <asm/atomic.h>
+
-+/*
-+ * Define for audio vs. register based ring detection
-+ *
-+ */
-+/* #define AUDIO_RINGCHECK */
++#ifndef CONFIG_OLD_HDLC_API
++#define NEW_HDLC_INTERFACE
++#endif
+
-+/*
-+ Experimental max loop current limit for the proslic
-+ Loop current limit is from 20 mA to 41 mA in steps of 3
-+ (according to datasheet)
-+ So set the value below to:
<<Diff was trimmed, longer than 597 lines>>
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/zaptel-bristuff.patch?r1=1.4&r2=1.5&f=u
More information about the pld-cvs-commit
mailing list