aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--misc/dahdi-kmod/Makefile2
-rw-r--r--misc/dahdi-kmod/distinfo6
-rw-r--r--misc/dahdi-kmod/files/patch-freebsd-drivers-dahdi-wctdm.c36
-rw-r--r--misc/dahdi-kmod/files/patch-freebsd-freebsd-Makefile12
-rw-r--r--misc/dahdi-kmod/files/patch-freebsd-freebsd-Makefile.inc14
-rw-r--r--misc/dahdi-kmod/files/patch-zaphfc191
-rw-r--r--misc/dahdi/Makefile2
-rw-r--r--misc/dahdi/distinfo6
-rw-r--r--misc/dahdi/files/patch-freebsd-drivers-dahdi-wctdm.c36
-rw-r--r--misc/dahdi/files/patch-freebsd-freebsd-Makefile12
-rw-r--r--misc/dahdi/files/patch-freebsd-freebsd-Makefile.inc14
-rw-r--r--misc/dahdi/files/patch-zaphfc191
12 files changed, 338 insertions, 184 deletions
diff --git a/misc/dahdi-kmod/Makefile b/misc/dahdi-kmod/Makefile
index f77482bf6580..369cc5e09031 100644
--- a/misc/dahdi-kmod/Makefile
+++ b/misc/dahdi-kmod/Makefile
@@ -23,7 +23,7 @@ COMMENT= Digium/Asterisk Hardware Device Interface
BUILD_DEPENDS= gmake:${PORTSDIR}/devel/gmake
LIB_DEPENDS= newt.52:${PORTSDIR}/devel/newt
-DAHDI_VERSION= 2.4.0-rc4
+DAHDI_VERSION= 2.4.0-rc5
DAHDI_TOOLS_VERSION= 2.4.0-rc1
OSLEC_VERSION= 2.6.35.4
ZAPHFC_VERSION= r5
diff --git a/misc/dahdi-kmod/distinfo b/misc/dahdi-kmod/distinfo
index 8ac4b0d5ce97..4a466a1643f8 100644
--- a/misc/dahdi-kmod/distinfo
+++ b/misc/dahdi-kmod/distinfo
@@ -1,6 +1,6 @@
-MD5 (dahdi-freebsd-complete-2.4.0-rc4+2.4.0-rc1.tar.gz) = 4246fd70cb196cbfd6eba16a9ce0e434
-SHA256 (dahdi-freebsd-complete-2.4.0-rc4+2.4.0-rc1.tar.gz) = 17530a885626ded8fb8d8dd6f04dbf3366e90bceda5a6a02a948d49a29ef8b4c
-SIZE (dahdi-freebsd-complete-2.4.0-rc4+2.4.0-rc1.tar.gz) = 2049406
+MD5 (dahdi-freebsd-complete-2.4.0-rc5+2.4.0-rc1.tar.gz) = 453d247ee3192851b4f624163aba9e41
+SHA256 (dahdi-freebsd-complete-2.4.0-rc5+2.4.0-rc1.tar.gz) = f364a13d10aa67ac26eb68babfcd4aa2a789f6ce074a923e20192f12fa02e3d2
+SIZE (dahdi-freebsd-complete-2.4.0-rc5+2.4.0-rc1.tar.gz) = 2049189
MD5 (oslec-linux-2.6.35.4.tar.gz) = e63e8e7cc4d7338bcb8e526594a34495
SHA256 (oslec-linux-2.6.35.4.tar.gz) = 01cfaa1ca64056c822d1a3ebf4f7b3c81127cd7b308ad5b0738ff4eb2026e261
SIZE (oslec-linux-2.6.35.4.tar.gz) = 12057
diff --git a/misc/dahdi-kmod/files/patch-freebsd-drivers-dahdi-wctdm.c b/misc/dahdi-kmod/files/patch-freebsd-drivers-dahdi-wctdm.c
deleted file mode 100644
index ae8499a5aba5..000000000000
--- a/misc/dahdi-kmod/files/patch-freebsd-drivers-dahdi-wctdm.c
+++ /dev/null
@@ -1,36 +0,0 @@
---- freebsd/drivers/dahdi/wctdm.c.orig 2010-09-01 22:06:31.000000000 +0700
-+++ freebsd/drivers/dahdi/wctdm.c 2010-09-01 22:17:48.000000000 +0700
-@@ -341,7 +341,11 @@
- static int boostringer = 0;
- static int fastringer = 0;
- static int _opermode = 0;
-+#if defined(__FreeBSD__)
-+static char opermode[16] = "FCC";
-+#else
- static char *opermode = "FCC";
-+#endif
- static int fxshonormode = 0;
- static int alawoverride = 0;
- static int fastpickup = 0;
-@@ -3141,6 +3145,7 @@
- {
- pci_unregister_driver(&wctdm_driver);
- }
-+#endif /* !__FreeBSD__ */
-
- module_param(debug, int, 0600);
- module_param(fxovoltage, int, 0600);
-@@ -3166,6 +3171,7 @@
- module_param(fxstxgain, int, 0600);
- module_param(fxsrxgain, int, 0600);
-
-+#if !defined(__FreeBSD__)
- MODULE_DESCRIPTION("Wildcard TDM400P Driver");
- MODULE_AUTHOR("Mark Spencer <markster@digium.com>");
- MODULE_ALIAS("wcfxs");
-@@ -3173,4 +3179,4 @@
-
- module_init(wctdm_init);
- module_exit(wctdm_cleanup);
--#endif /* !__FreeBSD__ */
-+#endif
diff --git a/misc/dahdi-kmod/files/patch-freebsd-freebsd-Makefile b/misc/dahdi-kmod/files/patch-freebsd-freebsd-Makefile
deleted file mode 100644
index 719fc111e697..000000000000
--- a/misc/dahdi-kmod/files/patch-freebsd-freebsd-Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
---- freebsd/freebsd/Makefile.orig 2010-09-01 01:13:18.000000000 +0700
-+++ freebsd/freebsd/Makefile 2010-09-01 01:13:33.000000000 +0700
-@@ -51,6 +51,9 @@
- wctc4xxp\
- dahdi-fw-tc400m.bin
-
-+# Additional drivers
-+SUBDIR+= ${ADDITIONAL_DRIVERS}
-+
- .if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64"
- _dahdi_vpmadt032_loader= dahdi_vpmadt032_loader
- .endif
diff --git a/misc/dahdi-kmod/files/patch-freebsd-freebsd-Makefile.inc b/misc/dahdi-kmod/files/patch-freebsd-freebsd-Makefile.inc
deleted file mode 100644
index a84f479c5094..000000000000
--- a/misc/dahdi-kmod/files/patch-freebsd-freebsd-Makefile.inc
+++ /dev/null
@@ -1,14 +0,0 @@
---- freebsd/freebsd/Makefile.inc.orig 2010-09-01 13:50:13.000000000 +0700
-+++ freebsd/freebsd/Makefile.inc 2010-09-01 13:50:34.000000000 +0700
-@@ -8,7 +8,11 @@
- #CFLAGS+= -DINVARIANT_SUPPORT -DINVARIANTS -DDIAGNOSTIC
-
- CP?= cp
-+.if defined(NO_FETCH)
-+FETCH?= @echo Skipping fetch
-+.else
- FETCH?= fetch
-+.endif
- MKDIR?= mkdir -p
- INSTALL_DATA?= ${INSTALL} -m ${SHAREMODE} -o ${SHAREOWN} -g ${SHAREGRP} -c
- TAR?= tar
diff --git a/misc/dahdi-kmod/files/patch-zaphfc b/misc/dahdi-kmod/files/patch-zaphfc
index 68fa04470388..fd8b72d1bca2 100644
--- a/misc/dahdi-kmod/files/patch-zaphfc
+++ b/misc/dahdi-kmod/files/patch-zaphfc
@@ -1,6 +1,6 @@
diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/base.c
--- freebsd/drivers/dahdi/zaphfc.orig/base.c 2010-09-01 00:55:30.000000000 +0700
-+++ freebsd/drivers/dahdi/zaphfc/base.c 2010-09-01 03:03:20.000000000 +0700
++++ freebsd/drivers/dahdi/zaphfc/base.c 2010-09-02 19:19:45.000000000 +0700
@@ -23,6 +23,50 @@
* Please read the README file for important infos.
*/
@@ -136,16 +136,29 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
spin_unlock(&chan->lock);
return -EBUSY;
}
-@@ -437,7 +508,7 @@
+@@ -437,7 +508,6 @@
}
chan->open_by_zaptel = TRUE;
- try_module_get(THIS_MODULE);
-+ (void) try_module_get(THIS_MODULE);
spin_unlock(&chan->lock);
switch (chan->number) {
-@@ -509,12 +580,12 @@
+@@ -484,7 +554,13 @@
+ hfc_outb(card, hfc_SCTRL, card->regs.sctrl);
+ hfc_outb(card, hfc_SCTRL_R, card->regs.sctrl_r);
+
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_update_fifo_state(card);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+
+ printk(KERN_INFO hfc_DRIVER_PREFIX
+ "card %d: "
+@@ -509,12 +585,12 @@
spin_lock(&chan->lock);
@@ -160,7 +173,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
chan->open_by_zaptel = FALSE;
spin_unlock(&chan->lock);
-@@ -538,8 +609,8 @@
+@@ -538,8 +614,8 @@
break;
}
@@ -171,7 +184,23 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card->regs.m2 &= ~hfc_M2_PROC_TRANS;
hfc_outb(card, hfc_INT_M2, card->regs.m2);
-@@ -591,7 +662,7 @@
+@@ -548,9 +624,13 @@
+ hfc_outb(card, hfc_SCTRL, card->regs.sctrl);
+ hfc_outb(card, hfc_SCTRL_R, card->regs.sctrl_r);
+
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_update_fifo_state(card);
+-
+- module_put(THIS_MODULE);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+
+ printk(KERN_INFO hfc_DRIVER_PREFIX
+ "card %d: "
+@@ -591,7 +671,7 @@
static int hfc_zap_startup(struct dahdi_span *span)
{
@@ -180,7 +209,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
struct hfc_card *hfctmp = zthfc->card;
int alreadyrunning;
-@@ -642,6 +713,20 @@
+@@ -642,6 +722,20 @@
return 0;
}
@@ -201,7 +230,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
static int hfc_zap_initialize(struct dahdi_hfc *hfccard)
{
struct hfc_card *hfctmp = hfccard->card;
-@@ -655,23 +740,14 @@
+@@ -655,23 +749,14 @@
hfctmp->nt_mode ? "NT" : "TE");
hfccard->span.spantype = hfctmp->nt_mode ? "NT" : "TE";
hfccard->span.manufacturer = "Cologne Chips";
@@ -229,7 +258,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
hfccard->span.chans = hfccard->_chans;
hfccard->span.channels = 3;
for (i = 0; i < hfccard->span.channels; i++)
-@@ -680,7 +756,6 @@
+@@ -680,7 +765,6 @@
hfccard->span.linecompat = DAHDI_CONFIG_AMI | DAHDI_CONFIG_CCS;
hfccard->span.offset = 0;
init_waitqueue_head(&hfccard->span.maintq);
@@ -237,7 +266,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
for (i = 0; i < hfccard->span.channels; i++) {
memset(&hfccard->chans[i], 0x0, sizeof(struct dahdi_chan));
-@@ -760,22 +835,20 @@
+@@ -760,22 +844,20 @@
static void hfc_frame_arrived(struct hfc_chan_duplex *chan);
static void hfc_handle_voice(struct hfc_card *card);
@@ -263,7 +292,114 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
spin_lock_irqsave(&card->lock, flags);
status = hfc_inb(card, hfc_STATUS);
-@@ -1179,7 +1252,9 @@
+@@ -832,21 +914,40 @@
+ /*
+ * D chan RX (bit 5)
+ */
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_frame_arrived(&card->chans[D]);
++
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+
+ if (s1 & hfc_INTS_B1REC) {
+ /*
+ * B1 chan RX (bit 3)
+ */
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_frame_arrived(&card->chans[B1]);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+
+ if (s1 & hfc_INTS_B2REC) {
+ /*
+ * B2 chan RX (bit 4)
+ */
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_frame_arrived(&card->chans[B2]);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+
+ if (s1 & hfc_INTS_DTRANS) {
+@@ -940,7 +1041,13 @@
+ card->regs.ctmt &= ~hfc_CTMT_TIMER_MASK;
+ hfc_outb(card, hfc_CTMT, card->regs.ctmt);
+
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_resume_fifo(card);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+ }
+
+@@ -971,11 +1078,17 @@
+ hfc_outb(card, hfc_STATES, hfc_STATES_LOAD_STATE | 3);
+ }
+
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ if (new_state == 3 && card->l1_state != 3)
+ hfc_resume_fifo(card);
+
+ if (new_state != 3 && card->l1_state == 3)
+ hfc_suspend_fifo(card);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+
+ } else {
+ if (new_state == 3) {
+@@ -1015,7 +1128,13 @@
+ /*
+ * TE has become inactive, disable FIFO
+ */
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_suspend_fifo(card);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+ }
+
+@@ -1040,6 +1159,9 @@
+ available_bytes >= DAHDI_CHUNKSIZE + hfc_RX_FIFO_PRELOAD) {
+ card->ticks = 0;
+
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ if (available_bytes > DAHDI_CHUNKSIZE*2 + hfc_RX_FIFO_PRELOAD) {
+ card->late_irqs++;
+ /*
+@@ -1064,6 +1186,9 @@
+ } else {
+ hfc_handle_voice(card);
+ }
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+
+ card->ticks++;
+@@ -1179,7 +1304,9 @@
{
struct hfc_card *card = chan->card;
int antiloop = 16;
@@ -273,7 +409,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
while (hfc_fifo_has_frames(&chan->rx) && --antiloop) {
int frame_size = hfc_fifo_get_frame_size(&chan->rx);
-@@ -1229,6 +1304,7 @@
+@@ -1229,6 +1356,7 @@
break;
}
@@ -281,7 +417,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
skb = dev_alloc_skb(frame_size - 3);
if (!skb) {
-@@ -1254,6 +1330,7 @@
+@@ -1254,6 +1382,7 @@
#else
skb->ip_summed = CHECKSUM_HW;
#endif
@@ -289,7 +425,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
if (chan->open_by_zaptel) {
card->chans[D].rx.ugly_framebuf_size = frame_size - 1;
-@@ -1261,20 +1338,26 @@
+@@ -1261,20 +1390,26 @@
if (hfc_fifo_get_frame(&card->chans[D].rx,
card->chans[D].rx.ugly_framebuf,
frame_size - 1) == -1) {
@@ -316,7 +452,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
}
}
-@@ -1289,8 +1372,12 @@
+@@ -1289,8 +1424,12 @@
* Module initialization and cleanup
******************************************/
@@ -329,7 +465,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
{
static int cardnum;
int err;
-@@ -1298,6 +1385,12 @@
+@@ -1298,6 +1437,12 @@
struct hfc_card *card = NULL;
struct dahdi_hfc *zthfc = NULL;
@@ -342,7 +478,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card = kmalloc(sizeof(struct hfc_card), GFP_KERNEL);
if (!card) {
printk(KERN_CRIT hfc_DRIVER_PREFIX
-@@ -1307,10 +1400,48 @@
+@@ -1307,10 +1452,48 @@
}
memset(card, 0x00, sizeof(struct hfc_card));
@@ -392,7 +528,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
pci_set_drvdata(pci_dev, card);
err = pci_enable_device(pci_dev);
-@@ -1403,6 +1534,7 @@
+@@ -1403,6 +1586,7 @@
card->cardnum);
goto err_request_irq;
}
@@ -400,7 +536,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card->nt_mode = FALSE;
-@@ -1419,7 +1551,7 @@
+@@ -1419,7 +1603,7 @@
*/
card->chans[D].card = card;
card->chans[D].name = "D";
@@ -409,7 +545,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card->chans[D].number = D;
spin_lock_init(&card->chans[D].lock);
-@@ -1460,7 +1592,7 @@
+@@ -1460,7 +1644,7 @@
*/
card->chans[B1].card = card;
card->chans[B1].name = "B1";
@@ -418,7 +554,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card->chans[B1].number = B1;
card->chans[B1].protocol = 0;
spin_lock_init(&card->chans[B1].lock);
-@@ -1502,7 +1634,7 @@
+@@ -1502,7 +1686,7 @@
*/
card->chans[B2].card = card;
card->chans[B2].name = "B2";
@@ -427,7 +563,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card->chans[B2].number = B2;
card->chans[B2].protocol = 0;
spin_lock_init(&card->chans[B2].lock);
-@@ -1555,14 +1687,17 @@
+@@ -1555,14 +1739,17 @@
hfc_zap_initialize(zthfc);
card->ztdev = zthfc;
@@ -445,7 +581,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
printk(KERN_INFO hfc_DRIVER_PREFIX
"card %d configured for %s mode at mem %#lx (0x%p) IRQ %u\n",
card->cardnum,
-@@ -1570,28 +1705,103 @@
+@@ -1570,28 +1757,106 @@
card->io_bus_mem,
card->io_mem,
card->pcidev->irq);
@@ -520,6 +656,9 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
+{
+ struct hfc_card *card = device_get_softc(dev);
+
++ if (dahdi_module_usecount(THIS_MODULE) > 0)
++ return (EBUSY);
++
+ hfc_softreset(card);
+ dahdi_unregister(&card->ztdev->span);
+ hfc_release_resources(card);
@@ -542,14 +681,14 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
+
+static devclass_t wcb1xxp_devclass;
+
-+DAHDI_DRIVER_MODULE(wcb1xxp, pci, wcb1xxp_pci_driver, wcb1xxp_devclass, 0, 0);
++DAHDI_DRIVER_MODULE(wcb1xxp, pci, wcb1xxp_pci_driver, wcb1xxp_devclass);
+MODULE_DEPEND(wcb1xxp, pci, 1, 1, 1);
+MODULE_DEPEND(wcb1xxp, dahdi, 1, 1, 1);
+#else
static void __devexit hfc_remove(struct pci_dev *pci_dev)
{
struct hfc_card *card = pci_get_drvdata(pci_dev);
-@@ -1671,8 +1881,6 @@
+@@ -1671,8 +1936,6 @@
module_exit(hfc_module_exit);
@@ -558,7 +697,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
MODULE_DESCRIPTION(hfc_DRIVER_DESCR);
MODULE_AUTHOR("Jens Wilke <jw_vzaphfc@headissue.com>, "
"Daniele (Vihai) Orlandi <daniele@orlandi.com>, "
-@@ -1681,15 +1889,18 @@
+@@ -1681,15 +1944,18 @@
#ifdef MODULE_LICENSE
MODULE_LICENSE("GPL");
#endif
diff --git a/misc/dahdi/Makefile b/misc/dahdi/Makefile
index f77482bf6580..369cc5e09031 100644
--- a/misc/dahdi/Makefile
+++ b/misc/dahdi/Makefile
@@ -23,7 +23,7 @@ COMMENT= Digium/Asterisk Hardware Device Interface
BUILD_DEPENDS= gmake:${PORTSDIR}/devel/gmake
LIB_DEPENDS= newt.52:${PORTSDIR}/devel/newt
-DAHDI_VERSION= 2.4.0-rc4
+DAHDI_VERSION= 2.4.0-rc5
DAHDI_TOOLS_VERSION= 2.4.0-rc1
OSLEC_VERSION= 2.6.35.4
ZAPHFC_VERSION= r5
diff --git a/misc/dahdi/distinfo b/misc/dahdi/distinfo
index 8ac4b0d5ce97..4a466a1643f8 100644
--- a/misc/dahdi/distinfo
+++ b/misc/dahdi/distinfo
@@ -1,6 +1,6 @@
-MD5 (dahdi-freebsd-complete-2.4.0-rc4+2.4.0-rc1.tar.gz) = 4246fd70cb196cbfd6eba16a9ce0e434
-SHA256 (dahdi-freebsd-complete-2.4.0-rc4+2.4.0-rc1.tar.gz) = 17530a885626ded8fb8d8dd6f04dbf3366e90bceda5a6a02a948d49a29ef8b4c
-SIZE (dahdi-freebsd-complete-2.4.0-rc4+2.4.0-rc1.tar.gz) = 2049406
+MD5 (dahdi-freebsd-complete-2.4.0-rc5+2.4.0-rc1.tar.gz) = 453d247ee3192851b4f624163aba9e41
+SHA256 (dahdi-freebsd-complete-2.4.0-rc5+2.4.0-rc1.tar.gz) = f364a13d10aa67ac26eb68babfcd4aa2a789f6ce074a923e20192f12fa02e3d2
+SIZE (dahdi-freebsd-complete-2.4.0-rc5+2.4.0-rc1.tar.gz) = 2049189
MD5 (oslec-linux-2.6.35.4.tar.gz) = e63e8e7cc4d7338bcb8e526594a34495
SHA256 (oslec-linux-2.6.35.4.tar.gz) = 01cfaa1ca64056c822d1a3ebf4f7b3c81127cd7b308ad5b0738ff4eb2026e261
SIZE (oslec-linux-2.6.35.4.tar.gz) = 12057
diff --git a/misc/dahdi/files/patch-freebsd-drivers-dahdi-wctdm.c b/misc/dahdi/files/patch-freebsd-drivers-dahdi-wctdm.c
deleted file mode 100644
index ae8499a5aba5..000000000000
--- a/misc/dahdi/files/patch-freebsd-drivers-dahdi-wctdm.c
+++ /dev/null
@@ -1,36 +0,0 @@
---- freebsd/drivers/dahdi/wctdm.c.orig 2010-09-01 22:06:31.000000000 +0700
-+++ freebsd/drivers/dahdi/wctdm.c 2010-09-01 22:17:48.000000000 +0700
-@@ -341,7 +341,11 @@
- static int boostringer = 0;
- static int fastringer = 0;
- static int _opermode = 0;
-+#if defined(__FreeBSD__)
-+static char opermode[16] = "FCC";
-+#else
- static char *opermode = "FCC";
-+#endif
- static int fxshonormode = 0;
- static int alawoverride = 0;
- static int fastpickup = 0;
-@@ -3141,6 +3145,7 @@
- {
- pci_unregister_driver(&wctdm_driver);
- }
-+#endif /* !__FreeBSD__ */
-
- module_param(debug, int, 0600);
- module_param(fxovoltage, int, 0600);
-@@ -3166,6 +3171,7 @@
- module_param(fxstxgain, int, 0600);
- module_param(fxsrxgain, int, 0600);
-
-+#if !defined(__FreeBSD__)
- MODULE_DESCRIPTION("Wildcard TDM400P Driver");
- MODULE_AUTHOR("Mark Spencer <markster@digium.com>");
- MODULE_ALIAS("wcfxs");
-@@ -3173,4 +3179,4 @@
-
- module_init(wctdm_init);
- module_exit(wctdm_cleanup);
--#endif /* !__FreeBSD__ */
-+#endif
diff --git a/misc/dahdi/files/patch-freebsd-freebsd-Makefile b/misc/dahdi/files/patch-freebsd-freebsd-Makefile
deleted file mode 100644
index 719fc111e697..000000000000
--- a/misc/dahdi/files/patch-freebsd-freebsd-Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
---- freebsd/freebsd/Makefile.orig 2010-09-01 01:13:18.000000000 +0700
-+++ freebsd/freebsd/Makefile 2010-09-01 01:13:33.000000000 +0700
-@@ -51,6 +51,9 @@
- wctc4xxp\
- dahdi-fw-tc400m.bin
-
-+# Additional drivers
-+SUBDIR+= ${ADDITIONAL_DRIVERS}
-+
- .if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64"
- _dahdi_vpmadt032_loader= dahdi_vpmadt032_loader
- .endif
diff --git a/misc/dahdi/files/patch-freebsd-freebsd-Makefile.inc b/misc/dahdi/files/patch-freebsd-freebsd-Makefile.inc
deleted file mode 100644
index a84f479c5094..000000000000
--- a/misc/dahdi/files/patch-freebsd-freebsd-Makefile.inc
+++ /dev/null
@@ -1,14 +0,0 @@
---- freebsd/freebsd/Makefile.inc.orig 2010-09-01 13:50:13.000000000 +0700
-+++ freebsd/freebsd/Makefile.inc 2010-09-01 13:50:34.000000000 +0700
-@@ -8,7 +8,11 @@
- #CFLAGS+= -DINVARIANT_SUPPORT -DINVARIANTS -DDIAGNOSTIC
-
- CP?= cp
-+.if defined(NO_FETCH)
-+FETCH?= @echo Skipping fetch
-+.else
- FETCH?= fetch
-+.endif
- MKDIR?= mkdir -p
- INSTALL_DATA?= ${INSTALL} -m ${SHAREMODE} -o ${SHAREOWN} -g ${SHAREGRP} -c
- TAR?= tar
diff --git a/misc/dahdi/files/patch-zaphfc b/misc/dahdi/files/patch-zaphfc
index 68fa04470388..fd8b72d1bca2 100644
--- a/misc/dahdi/files/patch-zaphfc
+++ b/misc/dahdi/files/patch-zaphfc
@@ -1,6 +1,6 @@
diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/base.c
--- freebsd/drivers/dahdi/zaphfc.orig/base.c 2010-09-01 00:55:30.000000000 +0700
-+++ freebsd/drivers/dahdi/zaphfc/base.c 2010-09-01 03:03:20.000000000 +0700
++++ freebsd/drivers/dahdi/zaphfc/base.c 2010-09-02 19:19:45.000000000 +0700
@@ -23,6 +23,50 @@
* Please read the README file for important infos.
*/
@@ -136,16 +136,29 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
spin_unlock(&chan->lock);
return -EBUSY;
}
-@@ -437,7 +508,7 @@
+@@ -437,7 +508,6 @@
}
chan->open_by_zaptel = TRUE;
- try_module_get(THIS_MODULE);
-+ (void) try_module_get(THIS_MODULE);
spin_unlock(&chan->lock);
switch (chan->number) {
-@@ -509,12 +580,12 @@
+@@ -484,7 +554,13 @@
+ hfc_outb(card, hfc_SCTRL, card->regs.sctrl);
+ hfc_outb(card, hfc_SCTRL_R, card->regs.sctrl_r);
+
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_update_fifo_state(card);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+
+ printk(KERN_INFO hfc_DRIVER_PREFIX
+ "card %d: "
+@@ -509,12 +585,12 @@
spin_lock(&chan->lock);
@@ -160,7 +173,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
chan->open_by_zaptel = FALSE;
spin_unlock(&chan->lock);
-@@ -538,8 +609,8 @@
+@@ -538,8 +614,8 @@
break;
}
@@ -171,7 +184,23 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card->regs.m2 &= ~hfc_M2_PROC_TRANS;
hfc_outb(card, hfc_INT_M2, card->regs.m2);
-@@ -591,7 +662,7 @@
+@@ -548,9 +624,13 @@
+ hfc_outb(card, hfc_SCTRL, card->regs.sctrl);
+ hfc_outb(card, hfc_SCTRL_R, card->regs.sctrl_r);
+
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_update_fifo_state(card);
+-
+- module_put(THIS_MODULE);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+
+ printk(KERN_INFO hfc_DRIVER_PREFIX
+ "card %d: "
+@@ -591,7 +671,7 @@
static int hfc_zap_startup(struct dahdi_span *span)
{
@@ -180,7 +209,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
struct hfc_card *hfctmp = zthfc->card;
int alreadyrunning;
-@@ -642,6 +713,20 @@
+@@ -642,6 +722,20 @@
return 0;
}
@@ -201,7 +230,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
static int hfc_zap_initialize(struct dahdi_hfc *hfccard)
{
struct hfc_card *hfctmp = hfccard->card;
-@@ -655,23 +740,14 @@
+@@ -655,23 +749,14 @@
hfctmp->nt_mode ? "NT" : "TE");
hfccard->span.spantype = hfctmp->nt_mode ? "NT" : "TE";
hfccard->span.manufacturer = "Cologne Chips";
@@ -229,7 +258,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
hfccard->span.chans = hfccard->_chans;
hfccard->span.channels = 3;
for (i = 0; i < hfccard->span.channels; i++)
-@@ -680,7 +756,6 @@
+@@ -680,7 +765,6 @@
hfccard->span.linecompat = DAHDI_CONFIG_AMI | DAHDI_CONFIG_CCS;
hfccard->span.offset = 0;
init_waitqueue_head(&hfccard->span.maintq);
@@ -237,7 +266,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
for (i = 0; i < hfccard->span.channels; i++) {
memset(&hfccard->chans[i], 0x0, sizeof(struct dahdi_chan));
-@@ -760,22 +835,20 @@
+@@ -760,22 +844,20 @@
static void hfc_frame_arrived(struct hfc_chan_duplex *chan);
static void hfc_handle_voice(struct hfc_card *card);
@@ -263,7 +292,114 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
spin_lock_irqsave(&card->lock, flags);
status = hfc_inb(card, hfc_STATUS);
-@@ -1179,7 +1252,9 @@
+@@ -832,21 +914,40 @@
+ /*
+ * D chan RX (bit 5)
+ */
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_frame_arrived(&card->chans[D]);
++
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+
+ if (s1 & hfc_INTS_B1REC) {
+ /*
+ * B1 chan RX (bit 3)
+ */
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_frame_arrived(&card->chans[B1]);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+
+ if (s1 & hfc_INTS_B2REC) {
+ /*
+ * B2 chan RX (bit 4)
+ */
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_frame_arrived(&card->chans[B2]);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+
+ if (s1 & hfc_INTS_DTRANS) {
+@@ -940,7 +1041,13 @@
+ card->regs.ctmt &= ~hfc_CTMT_TIMER_MASK;
+ hfc_outb(card, hfc_CTMT, card->regs.ctmt);
+
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_resume_fifo(card);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+ }
+
+@@ -971,11 +1078,17 @@
+ hfc_outb(card, hfc_STATES, hfc_STATES_LOAD_STATE | 3);
+ }
+
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ if (new_state == 3 && card->l1_state != 3)
+ hfc_resume_fifo(card);
+
+ if (new_state != 3 && card->l1_state == 3)
+ hfc_suspend_fifo(card);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+
+ } else {
+ if (new_state == 3) {
+@@ -1015,7 +1128,13 @@
+ /*
+ * TE has become inactive, disable FIFO
+ */
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ hfc_suspend_fifo(card);
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+ }
+
+@@ -1040,6 +1159,9 @@
+ available_bytes >= DAHDI_CHUNKSIZE + hfc_RX_FIFO_PRELOAD) {
+ card->ticks = 0;
+
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_POSTREAD);
++#endif
+ if (available_bytes > DAHDI_CHUNKSIZE*2 + hfc_RX_FIFO_PRELOAD) {
+ card->late_irqs++;
+ /*
+@@ -1064,6 +1186,9 @@
+ } else {
+ hfc_handle_voice(card);
+ }
++#if defined(__FreeBSD__)
++ bus_dmamap_sync(card->dma_tag, card->dma_map, BUS_DMASYNC_PREWRITE);
++#endif
+ }
+
+ card->ticks++;
+@@ -1179,7 +1304,9 @@
{
struct hfc_card *card = chan->card;
int antiloop = 16;
@@ -273,7 +409,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
while (hfc_fifo_has_frames(&chan->rx) && --antiloop) {
int frame_size = hfc_fifo_get_frame_size(&chan->rx);
-@@ -1229,6 +1304,7 @@
+@@ -1229,6 +1356,7 @@
break;
}
@@ -281,7 +417,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
skb = dev_alloc_skb(frame_size - 3);
if (!skb) {
-@@ -1254,6 +1330,7 @@
+@@ -1254,6 +1382,7 @@
#else
skb->ip_summed = CHECKSUM_HW;
#endif
@@ -289,7 +425,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
if (chan->open_by_zaptel) {
card->chans[D].rx.ugly_framebuf_size = frame_size - 1;
-@@ -1261,20 +1338,26 @@
+@@ -1261,20 +1390,26 @@
if (hfc_fifo_get_frame(&card->chans[D].rx,
card->chans[D].rx.ugly_framebuf,
frame_size - 1) == -1) {
@@ -316,7 +452,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
}
}
-@@ -1289,8 +1372,12 @@
+@@ -1289,8 +1424,12 @@
* Module initialization and cleanup
******************************************/
@@ -329,7 +465,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
{
static int cardnum;
int err;
-@@ -1298,6 +1385,12 @@
+@@ -1298,6 +1437,12 @@
struct hfc_card *card = NULL;
struct dahdi_hfc *zthfc = NULL;
@@ -342,7 +478,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card = kmalloc(sizeof(struct hfc_card), GFP_KERNEL);
if (!card) {
printk(KERN_CRIT hfc_DRIVER_PREFIX
-@@ -1307,10 +1400,48 @@
+@@ -1307,10 +1452,48 @@
}
memset(card, 0x00, sizeof(struct hfc_card));
@@ -392,7 +528,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
pci_set_drvdata(pci_dev, card);
err = pci_enable_device(pci_dev);
-@@ -1403,6 +1534,7 @@
+@@ -1403,6 +1586,7 @@
card->cardnum);
goto err_request_irq;
}
@@ -400,7 +536,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card->nt_mode = FALSE;
-@@ -1419,7 +1551,7 @@
+@@ -1419,7 +1603,7 @@
*/
card->chans[D].card = card;
card->chans[D].name = "D";
@@ -409,7 +545,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card->chans[D].number = D;
spin_lock_init(&card->chans[D].lock);
-@@ -1460,7 +1592,7 @@
+@@ -1460,7 +1644,7 @@
*/
card->chans[B1].card = card;
card->chans[B1].name = "B1";
@@ -418,7 +554,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card->chans[B1].number = B1;
card->chans[B1].protocol = 0;
spin_lock_init(&card->chans[B1].lock);
-@@ -1502,7 +1634,7 @@
+@@ -1502,7 +1686,7 @@
*/
card->chans[B2].card = card;
card->chans[B2].name = "B2";
@@ -427,7 +563,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
card->chans[B2].number = B2;
card->chans[B2].protocol = 0;
spin_lock_init(&card->chans[B2].lock);
-@@ -1555,14 +1687,17 @@
+@@ -1555,14 +1739,17 @@
hfc_zap_initialize(zthfc);
card->ztdev = zthfc;
@@ -445,7 +581,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
printk(KERN_INFO hfc_DRIVER_PREFIX
"card %d configured for %s mode at mem %#lx (0x%p) IRQ %u\n",
card->cardnum,
-@@ -1570,28 +1705,103 @@
+@@ -1570,28 +1757,106 @@
card->io_bus_mem,
card->io_mem,
card->pcidev->irq);
@@ -520,6 +656,9 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
+{
+ struct hfc_card *card = device_get_softc(dev);
+
++ if (dahdi_module_usecount(THIS_MODULE) > 0)
++ return (EBUSY);
++
+ hfc_softreset(card);
+ dahdi_unregister(&card->ztdev->span);
+ hfc_release_resources(card);
@@ -542,14 +681,14 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
+
+static devclass_t wcb1xxp_devclass;
+
-+DAHDI_DRIVER_MODULE(wcb1xxp, pci, wcb1xxp_pci_driver, wcb1xxp_devclass, 0, 0);
++DAHDI_DRIVER_MODULE(wcb1xxp, pci, wcb1xxp_pci_driver, wcb1xxp_devclass);
+MODULE_DEPEND(wcb1xxp, pci, 1, 1, 1);
+MODULE_DEPEND(wcb1xxp, dahdi, 1, 1, 1);
+#else
static void __devexit hfc_remove(struct pci_dev *pci_dev)
{
struct hfc_card *card = pci_get_drvdata(pci_dev);
-@@ -1671,8 +1881,6 @@
+@@ -1671,8 +1936,6 @@
module_exit(hfc_module_exit);
@@ -558,7 +697,7 @@ diff -ruN freebsd/drivers/dahdi/zaphfc.orig/base.c freebsd/drivers/dahdi/zaphfc/
MODULE_DESCRIPTION(hfc_DRIVER_DESCR);
MODULE_AUTHOR("Jens Wilke <jw_vzaphfc@headissue.com>, "
"Daniele (Vihai) Orlandi <daniele@orlandi.com>, "
-@@ -1681,15 +1889,18 @@
+@@ -1681,15 +1944,18 @@
#ifdef MODULE_LICENSE
MODULE_LICENSE("GPL");
#endif