Commit 8c41dd3c authored by Natanael Copa's avatar Natanael Copa

extra/dahdi-linux-grsec: renamed dahdi-linux, upgrade to 2.2.0

parent e4b88884
# Contributor: Timo Teras <timo.teras@iki.fi>
# Maintainer: Timo Teras <timo.teras@iki.fi>
pkgname=dahdi-linux
_kernflavor=grsec
_kernver=2.6.28.9
pkgver=2.1.0.4
pkgrel=7
_flavor=grsec
# source the kernel version
if [ -f ../linux-${_flavor}/APKBUILD ]; then
. ../linux-${_flavor}/APKBUILD
fi
_abi_release=${pkgver:-2.6.29.5}-${_flavor}
_realname=dahdi-linux
pkgname=${_realname}-${_flavor}
pkgver=2.2.0
pkgrel=0
pkgdesc="Digium Asterisk Hardware Device Interface drivers"
url="http://www.asterisk.org"
license="GPL"
depends="linux-grsec"
depends=
# we need wget and tar because make install downloads firmware and uses fancy
# options for tar and wget.
makedepends="linux-grsec-dev linux-grsec-sources wget tar perl"
makedepends="linux-${_flavor}-dev wget tar perl"
install=
subpackages="$pkgname-dev $pkgname-grsec:mod"
source="http://downloads.digium.com/pub/telephony/dahdi-linux/releases/$pkgname-$pkgver.tar.gz
subpackages="$pkgname-dev"
source="http://downloads.digium.com/pub/telephony/dahdi-linux/releases/${_realname}-$pkgver.tar.gz
dahdi-depmod.patch
dahdi-bri_dchan.patch
dahdi-zaphfc.patch
zaphfc-dahdi-flortz.diff
$pkgname-2.1.0.4-hfc-4s.patch
dahdi-linux-2.2.0-hfc-4s.patch
"
build() {
local kout="$srcdir"/grsec
local ksrc="/usr/src/linux-$_kernver-$_kernflavor"
mkdir -p "$kout"
cd "$kout"
cp /boot/config-grsec .config
cp /boot/Module.symvers-grsec Module.symvers
make -C $ksrc O=$PWD silentoldconfig || return 1
make modules_prepare
cd "$srcdir/$pkgname-$pkgver"
for i in ../*.patch; do
cd "$srcdir/$_realname-$pkgver"
for i in ../*.patch ../*.diff; do
msg "Applying $i"
patch -p1 < $i || return 1;
done
make \
KVERS="$_kernver-$_kernflavor" KSRC="$kout" \
KCONFIG="$kout/.config" DYNFS="yes" MODULES_EXTRA="zaphfc" \
make KVERS="${_abi_release}" DYNFS="yes" MODULES_EXTRA="zaphfc" \
|| return 1
make DESTDIR="$pkgdir" \
KVERS="$_kernver-$_kernflavor" KSRC="$kout" \
KCONFIG="$kout/.config" DYNFS="yes" MODULES_EXTRA="zaphfc" \
install
make KVERS="${_abi_release}" DYNFS="yes" MODULES_EXTRA="zaphfc" \
DESTDIR="$pkgdir" install
}
md5sums="ef2d34c394e8b600ad392560efc56920 dahdi-linux-2.1.0.4.tar.gz
# since we sourced the APKBUILD above we got the dev() function there to
# so we override it again.
dev() {
default_dev
}
md5sums="a6b1a24a436e1c1fd08b99d27cfe3f38 dahdi-linux-2.2.0.tar.gz
c78fb8d80f9efdffd950297c88ff9273 dahdi-depmod.patch
1c9c44497fc883c6a5381abc93e5e6cf dahdi-bri_dchan.patch
4b41a82ff390ac64c08092c5a3eab6a8 dahdi-bri_dchan.patch
a822c092f0548cd13f5e8d8cba053af6 dahdi-zaphfc.patch
291c5c44c86ab02443a742415461ddca zaphfc-dahdi-flortz.diff
b01c57444be3a87f6f71dd71c4451ec7 dahdi-linux-2.1.0.4-hfc-4s.patch"
68dfe17a49cca15ae439fd83f4ccfbc5 dahdi-linux-2.2.0-hfc-4s.patch"
......@@ -37,8 +37,8 @@
struct dahdi_span {
spinlock_t lock;
--- a/drivers/dahdi/dahdi_config.h
+++ b/drivers/dahdi/dahdi_config.h
--- a/include/dahdi/dahdi_config.h
+++ b/include/dahdi/dahdi_config.h
@@ -174,4 +174,10 @@
*/
/* #define OPTIMIZE_CHANMUTE */
......
diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/dahdi/wcb4xxp/base.c
--- a/drivers/dahdi/wcb4xxp/base.c 2008-12-17 15:57:56.000000000 +0000
+++ b/drivers/dahdi/wcb4xxp/base.c 2009-03-10 00:47:02.000000000 +0000
--- a/drivers/dahdi/wcb4xxp/base.c 2009-06-24 13:17:03.000000000 +0000
+++ b/drivers/dahdi/wcb4xxp/base.c 2009-06-24 13:40:15.000000000 +0000
@@ -75,7 +75,7 @@
#define DBG_SPANFILTER ((1 << bspan->port) & spanfilter)
......@@ -10,31 +9,30 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
#ifdef LOOPBACK_SUPPORTED
static int loopback = 0;
#endif
@@ -110,10 +110,21 @@ static struct proc_dir_entry *myproc;
@@ -114,9 +114,21 @@
struct devtype {
char *desc;
unsigned int flags;
+ int ports; /* Number of ports the card has */
+ int has_ec; /* Does the card have an Echo Canceller */
+ enum cards_ids card_type; /* Card type - Digium B410P, ... */
+ int ports; /* Number of ports the card has */
+ int has_ec; /* Does the card have an Echo Canceller */
+ enum cards_ids card_type; /* Card type - Digium B410P, ... */
};
-static struct devtype wcb4xxp = { "Wildcard B410P", 0 };
-
+static struct devtype wcb4xxp = { "Wildcard B410P", .ports = 4, .has_ec = 1, .card_type = B410P };
+static struct devtype hfc2s = { "HFC-2S Junghanns.NET duoBRI PCI", .ports = 2, .has_ec = 0, .card_type = DUOBRI };
+static struct devtype hfc4s = { "HFC-4S Junghanns.NET quadBRI PCI", .ports = 4, .has_ec = 0, .card_type = QUADBRI };
+static struct devtype hfc8s = { "HFC-4S Junghanns.NET octoBRI PCI", .ports = 8, .has_ec = 0, .card_type = OCTOBRI };
+static struct devtype hfc2s = { "HFC-2S Junghanns.NET duoBRI PCI", .ports = 2, .has_ec = 0, .card_type = DUOBRI };
+static struct devtype hfc4s = { "HFC-4S Junghanns.NET quadBRI PCI", .ports = 4, .has_ec = 0, .card_type = QUADBRI };
+static struct devtype hfc8s = { "HFC-4S Junghanns.NET octoBRI PCI", .ports = 8, .has_ec = 0, .card_type = OCTOBRI };
+static struct devtype hfc2s_OV ={ "OpenVox B200P", .ports = 2, .has_ec = 0, .card_type = B200P_OV };
+static struct devtype hfc4s_OV ={ "OpenVox B400P", .ports = 4, .has_ec = 0, .card_type = B400P_OV };
+static struct devtype hfc8s_OV ={ "OpenVox B800P", .ports = 8, .has_ec = 0, .card_type = B800P_OV };
+static struct devtype hfc2s_BN ={ "BeroNet BN2S0", .ports = 2, .has_ec = 0, .card_type = BN2S0 };
+static struct devtype hfc4s_BN ={ "BeroNet BN4S0", .ports = 4, .has_ec = 0, .card_type = BN4S0 };
+static struct devtype hfc8s_BN ={ "BeroNet BN8S0", .ports = 8, .has_ec = 0, .card_type = BN8S0 };
+static struct devtype hfc8s_BN ={ "BeroNet BN8S0", .ports = 8, .has_ec = 0, .card_type = BN8S0 };
#if 0
static const char *wcb4xxp_rcsdata = "$RCSfile: base.c,v $ $Revision: 5576 $";
@@ -385,7 +396,14 @@ static void hfc_gpio_init(struct b4xxp *
static int echocan_create(struct dahdi_chan *chan, struct dahdi_echocanparams *ecp,
struct dahdi_echocanparam *p, struct dahdi_echocan_state **ec);
@@ -403,7 +415,14 @@
mb();
......@@ -50,7 +48,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
mb();
@@ -600,13 +618,16 @@ static void ec_init(struct b4xxp *b4)
@@ -618,13 +637,16 @@
unsigned char b;
unsigned int i, j, mask;
......@@ -68,7 +66,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
ec_write(b4, i, 0x1a8 + j, 0x00); /* GPIO out */
ec_write(b4, i, 0x1ac + j, 0x00); /* GPIO dir */
ec_write(b4, i, 0x1b0 + j, 0x00); /* GPIO sel */
@@ -990,7 +1011,15 @@ static void hfc_assign_dchan_fifo(struct
@@ -1008,7 +1030,15 @@
int fifo, hfc_chan;
unsigned long irq_flags;
......@@ -85,7 +83,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
hfc_chan = (port * 4) + 2;
/* record the host's FIFO # in the span fifo array */
@@ -1192,7 +1221,7 @@ static void hfc_update_st_timers(struct
@@ -1210,7 +1240,7 @@
int i, j;
struct b4xxp_span *s;
......@@ -94,7 +92,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
s = &b4->spans[i];
for (j=HFC_T1; j <= HFC_T3; j++) {
@@ -1394,12 +1423,21 @@ static void hfc_init_all_st(struct b4xxp
@@ -1413,12 +1443,21 @@
gpio = b4xxp_getreg8(b4, R_GPI_IN3);
......@@ -118,7 +116,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
s->te_mode = !nt;
dev_info(b4->dev, "Port %d: %s mode\n", i + 1, (nt ? "NT" : "TE"));
@@ -1755,9 +1793,15 @@ static void b4xxp_init_stage1(struct b4x
@@ -1774,9 +1813,15 @@
/*
* set up the clock controller
......@@ -136,7 +134,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
flush_pci();
udelay(100); /* wait a bit for clock to settle */
@@ -1788,7 +1832,7 @@ static void b4xxp_init_stage2(struct b4x
@@ -1807,7 +1852,7 @@
/*
* set up the flow controller.
......@@ -145,7 +143,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
* FIFO 0 connects Port 1 B0 using HFC channel 16 and PCM timeslots 0/1.
* FIFO 1 connects Port 1 B1 using HFC channel 17 and PCM timeslots 4/5.
* FIFO 2 connects Port 2 B0 using HFC channel 20 and PCM timeslots 8/9.
@@ -1803,14 +1847,35 @@ static void b4xxp_init_stage2(struct b4x
@@ -1822,14 +1867,35 @@
*
* D channels are handled by FIFOs 8-11.
* FIFO 8 connects Port 1 D using HFC channel 3
......@@ -155,8 +153,8 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
+ * FIFO 9 connects Port 2 D using HFC channel 7
+ * FIFO 10 connects Port 3 D using HFC channel 11
+ * FIFO 11 connects Port 4 D using HFC channel 15
*
* D channel FIFOs are operated in HDLC mode and interrupt on end of frame.
+ *
+ * D channel FIFOs are operated in HDLC mode and interrupt on end of frame.
+ *
+ * B channel map: (8 ports cards without Hardware Echo Cancel)
+ * FIFO 0 connects Port 1 B0 using HFC channel 0
......@@ -169,7 +167,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
+ *
+ * All B channel FIFOs have their HDLC controller in transparent mode,
+ * and only the FIFO for B0 on each port has its interrupt operational.
+ *
*
+ * D channels are handled by FIFOs 16-23.
+ * FIFO 16 connects Port 1 D using HFC channel 3
+ * FIFO 17 connects Port 2 D using HFC channel 7
......@@ -177,7 +175,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
+ * FIFO 19 connects Port 4 D using HFC channel 15
+ * ................
+ * FIFO 23 connects Port 8 D using HFC channel 31
+ * D channel FIFOs are operated in HDLC mode and interrupt on end of frame.
* D channel FIFOs are operated in HDLC mode and interrupt on end of frame.
*/
for (span=0; span < b4->numspans; span++) {
- if (vpmsupport) {
......@@ -185,7 +183,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
hfc_assign_bchan_fifo_ec(b4, span, 0);
hfc_assign_bchan_fifo_ec(b4, span, 1);
} else {
@@ -1835,6 +1900,145 @@ static void b4xxp_setleds(struct b4xxp *
@@ -1854,6 +1920,145 @@
ec_write(b4, 0, 0x1a8 + 3, val);
}
......@@ -331,7 +329,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
static void b4xxp_set_span_led(struct b4xxp *b4, int span, unsigned char val)
{
int shift, spanmask;
@@ -1852,6 +2056,18 @@ static void b4xxp_update_leds(struct b4x
@@ -1871,6 +2076,18 @@
int i;
struct b4xxp_span *bspan;
......@@ -350,16 +348,16 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
b4->blinktimer++;
for (i=0; i < b4->numspans; i++) {
bspan = &b4->spans[i];
@@ -2138,7 +2354,7 @@ static void init_spans(struct b4xxp *b4)
@@ -2174,7 +2391,7 @@
bspan->span.close = b4xxp_close;
bspan->span.ioctl = b4xxp_ioctl;
bspan->span.hdlc_hard_xmit = b4xxp_hdlc_hard_xmit;
- if (vpmsupport)
+ if (vpmsupport && b4->has_ec)
bspan->span.echocan = b4xxp_echocan;
bspan->span.echocan_create = echocan_create;
/* HDLC stuff */
@@ -2245,13 +2461,24 @@ DAHDI_IRQ_HANDLER(b4xxp_interrupt)
@@ -2281,13 +2498,24 @@
static void b4xxp_bottom_half(unsigned long data)
{
struct b4xxp *b4 = (struct b4xxp *)data;
......@@ -385,7 +383,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
for (i=0; i < 8; i++) {
b = b2 = b4->fifo_irqstatus[i];
@@ -2260,7 +2487,7 @@ static void b4xxp_bottom_half(unsigned l
@@ -2296,7 +2524,7 @@
fifo = i*4 + j;
if (b & V_IRQ_FIFOx_TX) {
......@@ -394,7 +392,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
/*
* WOW I don't like this.
* It's bad enough that I have to send a fake frame to get an HDLC TX FIFO interrupt,
@@ -2269,7 +2496,7 @@ static void b4xxp_bottom_half(unsigned l
@@ -2305,7 +2533,7 @@
* Yuck. It works well, but yuck.
*/
do {
......@@ -403,7 +401,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
} while (k);
} else {
if (printk_ratelimit())
@@ -2278,7 +2505,7 @@ static void b4xxp_bottom_half(unsigned l
@@ -2314,7 +2542,7 @@
}
if (b & V_IRQ_FIFOx_RX) {
......@@ -412,7 +410,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
/*
* I have to loop here until hdlc_rx_frame says there are no more frames waiting.
* for whatever reason, the HFC will not generate another interrupt if there are
@@ -2286,7 +2513,7 @@ static void b4xxp_bottom_half(unsigned l
@@ -2322,7 +2550,7 @@
* i.e. I get an int when F1 changes, not when F1 != F2.
*/
do {
......@@ -421,7 +419,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
} while (k);
} else {
if (printk_ratelimit())
@@ -2368,8 +2595,8 @@ static int b4xxp_proc_read_one(char *buf
@@ -2404,8 +2632,8 @@
sprintf(sBuf, "Card %d, PCI identifier %s, IRQ %d\n", b4->cardno + 1, b4->dev->bus_id, b4->irq);
strcat(sBuf,"Tx:\n");
......@@ -432,7 +430,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
chan = b4->spans[i/3].chans[i%3];
sprintf(str, "%02x ", chan->writechunk[j]);
strcat(sBuf, str);
@@ -2379,8 +2606,8 @@ static int b4xxp_proc_read_one(char *buf
@@ -2415,8 +2643,8 @@
}
strcat(sBuf, "\nRx:\n");
......@@ -443,7 +441,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
chan = b4->spans[i / 3].chans[i % 3];
sprintf(str, "%02x%c", chan->readchunk[j], (i == 11) ? '\n' : ' ');
strcat(sBuf, str);
@@ -2388,7 +2615,7 @@ static int b4xxp_proc_read_one(char *buf
@@ -2424,7 +2652,7 @@
}
strcat(sBuf, "\nPort states:\n");
......@@ -452,7 +450,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
int state;
char *x;
struct b4xxp_span *s = &b4->spans[i];
@@ -2483,7 +2710,8 @@ static int __devinit b4xx_probe(struct p
@@ -2519,7 +2747,8 @@
/* card found, enabled and main struct allocated. Fill it out. */
b4->magic = WCB4XXP_MAGIC;
b4->variety = dt->desc;
......@@ -462,7 +460,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
b4->pdev = pdev;
b4->dev = &pdev->dev;
pci_set_drvdata(pdev, b4);
@@ -2497,7 +2725,7 @@ static int __devinit b4xx_probe(struct p
@@ -2533,7 +2762,7 @@
spin_lock_init(&b4->fifolock);
x = b4xxp_getreg8(b4, R_CHIP_ID);
......@@ -471,7 +469,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
dev_err(&pdev->dev, "Unknown/unsupported controller detected (R_CHIP_ID = 0x%02x)\n", x);
goto err_out_free_mem;
}
@@ -2512,7 +2740,7 @@ static int __devinit b4xx_probe(struct p
@@ -2548,7 +2777,7 @@
*/
/* TODO: determine whether this is a 2, 4 or 8 port card */
......@@ -480,7 +478,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
b4->syncspan = -1; /* sync span is unknown */
if (b4->numspans > MAX_SPANS_PER_CARD) {
dev_err(b4->dev, "Driver does not know how to handle a %d span card!\n", b4->numspans);
@@ -2660,7 +2888,17 @@ static void __devexit b4xxp_remove(struc
@@ -2696,7 +2925,17 @@
static struct pci_device_id b4xx_ids[] __devinitdata =
{
{ 0xd161, 0xb410, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long)&wcb4xxp },
......@@ -499,7 +497,7 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
};
static struct pci_driver b4xx_driver = {
@@ -2719,7 +2957,7 @@ MODULE_PARM_DESC(timer_1_ms, "NT: msec t
@@ -2756,7 +2995,7 @@
MODULE_PARM_DESC(timer_3_ms, "TE: msec to wait for link activation, NT: unused.");
MODULE_AUTHOR("Digium Incorporated <support@digium.com>");
......@@ -508,9 +506,8 @@ diff -rupN /drivers/dahdi/wcb4xxp/base.c /usr/src/dahdi-linux-2.1.0.4/drivers/da
MODULE_LICENSE("GPL");
MODULE_DEVICE_TABLE(pci, b4xx_ids);
diff -rupN /usr/src/originales/dahdi-linux-2.1.0.4/drivers/dahdi/wcb4xxp/wcb4xxp.h /usr/src/dahdi-linux-2.1.0.4/drivers/dahdi/wcb4xxp/wcb4xxp.h
--- a/drivers/dahdi/wcb4xxp/wcb4xxp.h 2008-11-24 04:14:37.000000000 +0000
+++ b/drivers/dahdi/wcb4xxp/wcb4xxp.h 2009-03-09 23:50:18.000000000 +0000
--- a/drivers/dahdi/wcb4xxp/wcb4xxp.h 2009-06-24 13:17:03.000000000 +0000
+++ b/drivers/dahdi/wcb4xxp/wcb4xxp.h 2009-06-24 13:18:07.000000000 +0000
@@ -378,7 +378,7 @@
#define HFC_T3 2
......@@ -520,7 +517,7 @@ diff -rupN /usr/src/originales/dahdi-linux-2.1.0.4/drivers/dahdi/wcb4xxp/wcb4xxp
#define WCB4XXP_CHANNELS_PER_SPAN 3 /* 2 B-channels and 1 D-Channel for each BRI span */
#define WCB4XXP_HDLC_BUF_LEN 32 /* arbitrary, just the max # of byts we will send to DAHDI per call */
@@ -414,6 +414,19 @@ struct b4xxp_span {
@@ -415,6 +415,19 @@
struct dahdi_chan _chans[WCB4XXP_CHANNELS_PER_SPAN]; /* Backing memory */
};
......@@ -540,7 +537,7 @@ diff -rupN /usr/src/originales/dahdi-linux-2.1.0.4/drivers/dahdi/wcb4xxp/wcb4xxp
/* This structure exists one per card */
struct b4xxp {
unsigned magic; /* magic value to make sure we're looking at our struct */
@@ -448,10 +461,12 @@ struct b4xxp {
@@ -449,10 +462,12 @@
int globalconfig; /* Whether global setup has been done */
int syncspan; /* span that HFC uses for sync on this card */
int running; /* interrupts are enabled */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment