Compare commits

..

9 Commits

Author SHA1 Message Date
Shaun Ruffell
4d86a8f3f6 dahdi: struct file.f_dentry macro was removed in kernel 3.19
This is necessary to build against kernel version 3.19 since commit
(78d28e651f97866d608d9b41 "kill f_dentry macro") [1]

[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=78d28e651

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
2015-01-20 16:48:33 -06:00
Shaun Ruffell
e005030995 dahdi_dynamic: Release reference count on network device when destroying dynamic spans.
It was reported that for VLAN interfaces, failing to release this reference
count will prevent a system from rebooting properly, resulting in the need to
power cycle.

Reported-by: Assen Totin
Internal-Issue-ID: DAHLIN-343
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
2015-01-20 16:47:55 -06:00
Tzafrir Cohen
ee691c23f4 xpp: firmware: a stray ^Z in FPGA_1161.201.hex 2014-11-17 18:00:51 +02:00
Tzafrir Cohen
9698657f7a xpp: firmware: 203 as alias to (newer) 201
Latest Astribank firmware (as of Rev. 11426 also supports some newer
hardware types, which will have the ID 203. Anyone installing this newer
version will now have 203 as an alias, but older versions will not have
it.
2014-11-17 17:55:47 +02:00
Tzafrir Cohen
79bf41ea8b xpp: FPGA_1161.201.hex: module types detection
New firmware that includes a better way to identify hardware modules
type that does not require multiplexers.

This is firmware file FPGA_1161.201.hex rev. 11426.

Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
2014-11-05 20:08:47 +02:00
Shaun Ruffell
41b5353338 build_tools/dkms-helper: Use bash to process dkms-helper script.
Looks like there are some bashims in the script. Make this explicit in the
script until they can be taken out.

This fixes failures to run this script on Ubuntu when dash is the default shell.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
2014-10-20 11:26:14 -05:00
Shaun Ruffell
378986841c dahdi: smp_mb_{before,after}_clear_bit -> smp_mb_{before,after}_atomic.
This is needed to compile against upstream Linux 3.18 since commit
"locking: Remove deprecated smp_mb__() barriers" [1].

[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2e39465abc4b7856a0ea6fcf4f

Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
2014-10-20 11:26:14 -05:00
Shaun Ruffell
b9a8000bbd dahdi: Fix failure to read / write on kernel 3.16+
Kernel version 3.16+, since upstream commit (7f7f25e82d54870d "replace checking
for ->read/->aio_read presence with check in ->f_mode" )[1], does not like it
when dahdi changes the set of allowed file operations on a file descriptor
outside of the context of an open() system call.

DAHDI changes the available file operations when a channel is opened by first
opening /dev/dahdi/channel and then calling the DAHDI_SPECIFY ioctl to bind it
to a particular DAHDI channel. Until DAHDI_SPECIFY is called there weren't any
read()/write() callbacks implemented and therefore after the initial open, the
kernel was setting not setting FMODE_CAN_{WRITE,READ} on the file descriptor
indicating that those operations were not allowed.

Now define empty shell functions on the general dahdi_fops so the vfs layer will
not mark a file descriptor as unwritteable or unreadable on open.

[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7f7f25e82d54870df24d415a7007fbd327da027b

Internal-Issue-ID: DAHLIN-340
Reported-and-tested-by: Thomas B. Clark
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
2014-09-17 16:29:16 -05:00
Michael Walton
eedb4bf944 dynamic: Prevent oops due to inverted compile flag
The logic on ENABLE_TASKELETS compiler flag was inverted causing an oops on
normal dahdi_cfg of a dynamic span.

Issue-id: https://issues.asterisk.org/jira/browse/DAHLIN-328

Signed-off-by: Russ Meyerriecks <rmeyerriecks@digium.com>
Acked-by: Shaun Ruffell <sruffell@digium.com>
2014-08-15 14:58:47 -05:00
22 changed files with 84 additions and 93 deletions

View File

@@ -196,8 +196,7 @@ test:
docs: $(GENERATED_DOCS)
README.html: README
date=`stat -c "%y" $<`
$(ASCIIDOC_CMD) -a revdate="$$date" -o $@ $<
$(ASCIIDOC_CMD) -o $@ $<
dahdi-api.html: drivers/dahdi/dahdi-base.c
build_tools/kernel-doc --kernel $(KSRC) $^ >$@

View File

@@ -31,14 +31,14 @@ VPMADT032_VERSION:=1.25.0
HX8_VERSION:=2.06
VPMOCT032_VERSION:=1.12.0
WCT820_VERSION:=1.76
TE133_VERSION:=7a001e
TE133_VERSION:=780019
TE134_VERSION:=780017
TE435_VERSION:=13001e
TE435_VERSION:=e0019
TE436_VERSION:=10017
A8A_VERSION:=1d0017
A8B_VERSION:=1f001e
A8B_VERSION:=1d0019
A4A_VERSION:=a0017
A4B_VERSION:=d001e
A4B_VERSION:=b0019
FIRMWARE_URL:=http://downloads.digium.com/pub/telephony/firmware/releases

View File

@@ -1784,8 +1784,7 @@ static int __devinit pciradio_init_one(struct pci_dev *pdev, const struct pci_de
}
if (request_irq(pdev->irq, pciradio_interrupt,
IRQF_SHARED, "pciradio", rad)) {
if (request_irq(pdev->irq, pciradio_interrupt, DAHDI_IRQ_SHARED, "pciradio", rad)) {
printk(KERN_NOTICE "pciradio: Unable to request IRQ %d\n", pdev->irq);
if (rad->freeregion)
release_region(rad->ioaddr, 0xff);

View File

@@ -543,7 +543,7 @@ static int __devinit tor2_probe(struct pci_dev *pdev, const struct pci_device_id
for (x = 0; x < 256; x++)
writel(0x7f7f7f7f, &tor->mem32[x]);
if (request_irq(tor->irq, tor2_intr, IRQF_SHARED, "tor2", tor)) {
if (request_irq(tor->irq, tor2_intr, DAHDI_IRQ_SHARED_DISABLED, "tor2", tor)) {
printk(KERN_ERR "Unable to request tormenta IRQ %d\n", tor->irq);
goto err_out_release_all;
}
@@ -1200,7 +1200,6 @@ DAHDI_IRQ_HANDLER(tor2_intr)
unsigned char c, rxc;
unsigned char abits, bbits;
struct tor2 *tor = (struct tor2 *) dev_id;
unsigned long flags;
/* make sure its a real interrupt for us */
if (!(readb(&tor->mem8[STATREG]) & INTACTIVE)) /* if not, just return */
@@ -1208,8 +1207,6 @@ DAHDI_IRQ_HANDLER(tor2_intr)
return IRQ_NONE;
}
local_irq_save(flags);
if (tor->cardtype == TYPE_E1) {
/* set outbit, interrupt enable, and ack interrupt */
writeb(OUTBIT | INTENA | INTACK | E1DIV | tor->master,
@@ -1507,8 +1504,6 @@ DAHDI_IRQ_HANDLER(tor2_intr)
else
/* clear OUTBIT and enable interrupts */
writeb(INTENA | tor->master, &tor->mem8[CTLREG]);
local_irq_restore(flags);
return IRQ_RETVAL(1);
}

View File

@@ -1885,7 +1885,7 @@ __voicebus_init(struct voicebus *vb, const char *board_name,
goto cleanup;
#if !defined(CONFIG_VOICEBUS_TIMER)
retval = request_irq(vb->pdev->irq, vb_isr, IRQF_SHARED,
retval = request_irq(vb->pdev->irq, vb_isr, DAHDI_IRQ_SHARED,
board_name, vb);
if (retval) {
dev_warn(&vb->pdev->dev, "Failed to request interrupt line.\n");

View File

@@ -3886,9 +3886,9 @@ static int wcaxx_check_firmware(struct wcaxx *wc)
u32 firmware_version;
const bool force_firmware = false;
const unsigned int A4A_VERSION = 0x0a0017;
const unsigned int A4B_VERSION = 0x0d001e;
const unsigned int A4B_VERSION = 0x0b0019;
const unsigned int A8A_VERSION = 0x1d0017;
const unsigned int A8B_VERSION = 0x1f001e;
const unsigned int A8B_VERSION = 0x1d0019;
if (wc->desc == &device_a8a) {
firmware_version = A8A_VERSION;

View File

@@ -2572,7 +2572,6 @@ DAHDI_IRQ_HANDLER(b4xxp_interrupt)
{
struct b4xxp *b4 = dev_id;
unsigned char status;
unsigned long flags;
int i;
/* Make sure it's really for us */
@@ -2586,8 +2585,6 @@ DAHDI_IRQ_HANDLER(b4xxp_interrupt)
* That way if we get behind, we don't lose anything.
* We don't actually do any processing here, we simply flag the bottom-half to do the heavy lifting.
*/
local_irq_save(flags);
if (status & V_FR_IRQSTA) {
b4->fifo_irqstatus[0] |= __pci_in8(b4, R_IRQ_FIFO_BL0);
b4->fifo_irqstatus[1] |= __pci_in8(b4, R_IRQ_FIFO_BL1);
@@ -2623,8 +2620,6 @@ DAHDI_IRQ_HANDLER(b4xxp_interrupt)
/* tasklet_hi_schedule(&b4->b4xxp_tlet); */
b4xxp_bottom_half((unsigned long)b4);
local_irq_restore(flags);
return IRQ_RETVAL(1);
}
@@ -2956,7 +2951,7 @@ static int __devinit b4xx_probe(struct pci_dev *pdev, const struct pci_device_id
create_sysfs_files(b4);
if (request_irq(pdev->irq, b4xxp_interrupt, IRQF_SHARED, "b4xxp", b4)) {
if (request_irq(pdev->irq, b4xxp_interrupt, DAHDI_IRQ_SHARED_DISABLED, "b4xxp", b4)) {
dev_err(&b4->pdev->dev, "Unable to request IRQ %d\n",
pdev->irq);
ret = -EIO;

View File

@@ -972,7 +972,7 @@ static int __devinit wcfxo_init_one(struct pci_dev *pdev, const struct pci_devic
/* Keep track of which device we are */
pci_set_drvdata(pdev, wc);
if (request_irq(pdev->irq, wcfxo_interrupt, IRQF_SHARED, "wcfxo", wc)) {
if (request_irq(pdev->irq, wcfxo_interrupt, DAHDI_IRQ_SHARED, "wcfxo", wc)) {
printk(KERN_NOTICE "wcfxo: Unable to request IRQ %d\n", pdev->irq);
if (wc->freeregion)
release_region(wc->ioaddr, 0xff);

View File

@@ -1174,8 +1174,6 @@ DAHDI_IRQ_HANDLER(t1xxp_interrupt)
if (!ints)
return IRQ_NONE;
local_irq_save(flags);
outb(ints, wc->ioaddr + WC_INTSTAT);
if (!wc->intcount) {
@@ -1190,13 +1188,13 @@ DAHDI_IRQ_HANDLER(t1xxp_interrupt)
t1xxp_receiveprep(wc, ints);
t1xxp_transmitprep(wc, ints);
}
spin_lock(&wc->lock);
spin_lock_irqsave(&wc->lock, flags);
#if 1
__handle_leds(wc);
#endif
spin_unlock(&wc->lock);
spin_unlock_irqrestore(&wc->lock, flags);
/* Count down timers */
t1xxp_do_counters(wc);
@@ -1222,8 +1220,6 @@ DAHDI_IRQ_HANDLER(t1xxp_interrupt)
if (ints & 0x20)
printk(KERN_INFO "PCI Target abort\n");
local_irq_restore(flags);
return IRQ_RETVAL(1);
}
@@ -1337,7 +1333,7 @@ static int __devinit t1xxp_init_one(struct pci_dev *pdev, const struct pci_devic
/* Keep track of which device we are */
pci_set_drvdata(pdev, wc);
if (request_irq(pdev->irq, t1xxp_interrupt, IRQF_SHARED, "t1xxp", wc)) {
if (request_irq(pdev->irq, t1xxp_interrupt, DAHDI_IRQ_SHARED_DISABLED, "t1xxp", wc)) {
printk(KERN_NOTICE "t1xxp: Unable to request IRQ %d\n", pdev->irq);
kfree(wc);
return -EIO;

View File

@@ -5334,7 +5334,7 @@ t4_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
#ifdef SUPPORT_GEN1
if (request_irq(pdev->irq, (wc->devtype->flags & FLAG_2NDGEN) ?
t4_interrupt_gen2 : t4_interrupt,
IRQF_SHARED,
DAHDI_IRQ_SHARED,
(wc->numspans == 8) ? "wct8xxp" :
(wc->numspans == 2) ? "wct2xxp" :
"wct4xxp",
@@ -5348,7 +5348,7 @@ t4_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
}
if (request_irq(pdev->irq, t4_interrupt_gen2,
IRQF_SHARED, "t4xxp", wc)) {
DAHDI_IRQ_SHARED, "t4xxp", wc)) {
#endif
dev_notice(&wc->dev->dev, "Unable to request IRQ %d\n",
pdev->irq);

View File

@@ -375,7 +375,6 @@ struct wcdte {
#endif
struct timer_list watchdog;
u16 open_channels;
unsigned long reported_packet_errors;
};
struct wcdte_netdev_priv {
@@ -2020,16 +2019,14 @@ wctc4xxp_disable_polling(struct wcdte *wc)
static void wctc4xxp_check_for_rx_errors(struct wcdte *wc)
{
/* get_packet_errors() returns the accumulated total errors */
static unsigned long last_errors = 0;
unsigned long errors = wctc4xxp_get_packet_errors(wc->rxd);
/* Print warning when the number of errors changes */
if (wc->reported_packet_errors != errors) {
if (last_errors != errors) {
if (printk_ratelimit()) {
dev_err(&wc->pdev->dev,
"%lu errored receive packets.\n",
errors - wc->reported_packet_errors);
wc->reported_packet_errors = errors;
errors - last_errors);
last_errors = errors;
}
}
}
@@ -3870,7 +3867,6 @@ static int wctc4xxp_reset_driver_state(struct wcdte *wc)
release_firmware(firmware);
spin_lock_irqsave(&wc->rxd->lock, flags);
wc->rxd->packet_errors = 0;
wc->reported_packet_errors = 0;
spin_unlock_irqrestore(&wc->rxd->lock, flags);
return res;
}
@@ -4109,7 +4105,7 @@ wctc4xxp_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
pci_set_master(pdev);
pci_set_drvdata(pdev, wc);
res = request_irq(pdev->irq, wctc4xxp_interrupt,
IRQF_SHARED, wc->board_name, wc);
DAHDI_IRQ_SHARED, wc->board_name, wc);
if (res) {
dev_err(&wc->pdev->dev,
"Unable to request IRQ %d\n", pdev->irq);

View File

@@ -2684,8 +2684,7 @@ static int __devinit wctdm_init_one(struct pci_dev *pdev, const struct pci_devic
/* Keep track of which device we are */
pci_set_drvdata(pdev, wc);
if (request_irq(pdev->irq, wctdm_interrupt,
IRQF_SHARED, "wctdm", wc)) {
if (request_irq(pdev->irq, wctdm_interrupt, DAHDI_IRQ_SHARED, "wctdm", wc)) {
printk(KERN_NOTICE "wctdm: Unable to request IRQ %d\n", pdev->irq);
if (wc->freeregion)
release_region(wc->ioaddr, 0xff);

View File

@@ -1351,8 +1351,6 @@ DAHDI_IRQ_HANDLER(t1xxp_interrupt)
if (!ints)
return IRQ_NONE;
local_irq_save(flags);
outb(ints, wc->ioaddr + WC_INTSTAT);
if (!wc->intcount) {
@@ -1367,13 +1365,13 @@ DAHDI_IRQ_HANDLER(t1xxp_interrupt)
t1xxp_receiveprep(wc, ints);
t1xxp_transmitprep(wc, ints);
}
spin_lock(&wc->lock);
spin_lock_irqsave(&wc->lock, flags);
#if 1
__handle_leds(wc);
#endif
spin_unlock(&wc->lock);
spin_unlock_irqrestore(&wc->lock, flags);
/* Count down timers */
t1_do_counters(wc);
@@ -1400,7 +1398,6 @@ DAHDI_IRQ_HANDLER(t1xxp_interrupt)
if (ints & 0x20)
printk(KERN_NOTICE "PCI Target abort\n");
local_irq_restore(flags);
return IRQ_RETVAL(1);
}
@@ -1537,8 +1534,7 @@ static int __devinit t1xxp_init_one(struct pci_dev *pdev, const struct pci_devic
/* Keep track of which device we are */
pci_set_drvdata(pdev, wc);
if (request_irq(pdev->irq, t1xxp_interrupt,
IRQF_SHARED, "wcte11xp", wc)) {
if (request_irq(pdev->irq, t1xxp_interrupt, DAHDI_IRQ_SHARED_DISABLED, "wcte11xp", wc)) {
printk(KERN_NOTICE "wcte11xp: Unable to request IRQ %d\n", pdev->irq);
kfree(wc);
return -EIO;

View File

@@ -45,7 +45,7 @@
static const char *TE133_FW_FILENAME = "dahdi-fw-te133.bin";
static const char *TE134_FW_FILENAME = "dahdi-fw-te134.bin";
static const u32 TE133_FW_VERSION = 0x7a001e;
static const u32 TE133_FW_VERSION = 0x780019;
static const u32 TE134_FW_VERSION = 0x780017;
#define WC_MAX_IFACES 8

View File

@@ -66,7 +66,7 @@ static inline int delayed_work_pending(struct work_struct *work)
static const char *TE435_FW_FILENAME = "dahdi-fw-te435.bin";
static const char *TE436_FW_FILENAME = "dahdi-fw-te436.bin";
static const u32 TE435_VERSION = 0x13001e;
static const u32 TE435_VERSION = 0xe0019;
static const u32 TE436_VERSION = 0x10017;
/* #define RPC_RCLK */

View File

@@ -66,6 +66,7 @@
#define DRING_SIZE_MASK (DRING_SIZE-1)
#define DESC_EOR (1 << 0)
#define DESC_INT (1 << 1)
#define DESC_IO_ERROR (1 << 30)
#define DESC_OWN (1 << 31)
#define DESC_DEFAULT_STATUS 0xdeadbe00
#define DMA_CHAN_SIZE 128
@@ -357,25 +358,45 @@ static void _wcxb_reset_dring(struct wcxb *xb)
hdesc->control |= cpu_to_be32(DESC_EOR);
#ifdef DEBUG
xb->last_retry_count = 0;
xb->max_retry_count = 0;
xb->last_dma_time = 0;
xb->max_dma_time = 0;
#endif
iowrite32be(xb->hw_dring_phys, xb->membase + TDM_DRING_ADDR);
}
static void wcxb_handle_dma(struct wcxb *xb)
{
#ifdef DEBUG
bool did_retry_dma = false;
u8 retry;
#endif
struct wcxb_meta_desc *mdesc;
struct wcxb_hw_desc *tail = &(xb->hw_dring[xb->dma_tail]);
while (!(tail->control & cpu_to_be32(DESC_OWN))) {
u_char *frame;
if (tail->control & cpu_to_be32(DESC_IO_ERROR)) {
u32 ier;
unsigned long flags;
/* The firmware detected an error condition on the bus.
* Force an underrun by disabling the descriptor
* complete interrupt. When the driver processes the
* underrun it will reset the TDM engine. */
xb->flags.io_error = 1;
spin_lock_irqsave(&xb->lock, flags);
ier = ioread32be(xb->membase + IER);
iowrite32be(ier & ~DESC_COMPLETE, xb->membase + IER);
spin_unlock_irqrestore(&xb->lock, flags);
return;
}
#ifdef DEBUG
xb->last_retry_count =
((be32_to_cpu(tail->control) & 0x0000ff00) >> 8);
xb->last_dma_time = (be32_to_cpu(tail->status));
retry = be32_to_cpu(tail->status) & 0xff;
if (xb->last_retry_count != retry) {
xb->last_retry_count = retry;
did_retry_dma = true;
}
#endif
mdesc = &xb->meta_dring[xb->dma_tail];
@@ -399,17 +420,9 @@ static void wcxb_handle_dma(struct wcxb *xb)
}
#ifdef DEBUG
if (xb->last_retry_count > xb->max_retry_count) {
xb->max_retry_count = xb->last_retry_count;
if (did_retry_dma) {
dev_info(&xb->pdev->dev,
"New DMA max retries detected: %d\n",
xb->max_retry_count);
}
if (xb->last_dma_time > xb->max_dma_time) {
xb->max_dma_time = xb->last_dma_time;
dev_info(&xb->pdev->dev,
"New DMA max transfer time detected: %d\n",
xb->max_dma_time);
"DMA retries detected: %d\n", xb->last_retry_count);
}
#endif
}
@@ -438,7 +451,14 @@ static irqreturn_t _wcxb_isr(int irq, void *dev_id)
spin_lock(&xb->lock);
if (!xb->flags.latency_locked) {
if (xb->flags.io_error) {
/* Since an IO error is not necessarily because
* the host could not keep up, we do not want to
* bump the latency. */
xb->flags.io_error = 0;
dev_warn(&xb->pdev->dev,
"IO error reported by firmware.\n");
} else if (!xb->flags.latency_locked) {
/* bump latency */
xb->latency = min(xb->latency + 1,
@@ -685,7 +705,7 @@ int wcxb_init(struct wcxb *xb, const char *board_name, u32 int_mode)
xb->flags.have_msi = (int_mode) ? 0 : (0 == pci_enable_msi(pdev));
if (request_irq(pdev->irq, wcxb_isr,
(xb->flags.have_msi) ? 0 : IRQF_SHARED,
(xb->flags.have_msi) ? 0 : DAHDI_IRQ_SHARED,
board_name, xb)) {
dev_notice(&xb->pdev->dev, "Unable to request IRQ %d\n",
pdev->irq);

View File

@@ -24,7 +24,7 @@
#define __WCXB_H__
#define WCXB_DEFAULT_LATENCY 3U
#define WCXB_DEFAULT_MAXLATENCY 12U
#define WCXB_DEFAULT_MAXLATENCY 20U
#define WCXB_DMA_CHAN_SIZE 128
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)
@@ -66,7 +66,7 @@ struct wcxb {
#ifdef WCXB_PCI_DEV_DOES_NOT_HAVE_IS_PCIE
u32 is_pcie:1;
#endif
u32 dma_ins:1;
u32 io_error:1;
} flags;
void __iomem *membase;
struct wcxb_meta_desc *meta_dring;
@@ -78,9 +78,6 @@ struct wcxb {
unsigned long framecount;
#ifdef DEBUG
u8 last_retry_count;
u8 max_retry_count;
u32 last_dma_time;
u32 max_dma_time;
#endif
};

View File

@@ -2399,11 +2399,11 @@ static DEVICE_ATTR_WRITER(pri_protocol_store, dev, buf, count)
buf, i);
return -EINVAL;
}
if (strncasecmp(buf, "E1", 2) == 0)
if (strnicmp(buf, "E1", 2) == 0)
new_protocol = PRI_PROTO_E1;
else if (strncasecmp(buf, "T1", 2) == 0)
else if (strnicmp(buf, "T1", 2) == 0)
new_protocol = PRI_PROTO_T1;
else if (strncasecmp(buf, "J1", 2) == 0)
else if (strnicmp(buf, "J1", 2) == 0)
new_protocol = PRI_PROTO_J1;
else {
XPD_NOTICE(xpd,

View File

@@ -1,5 +1,5 @@
#
# $Id: USB_FW.201.hex 11453 2015-03-29 18:27:25Z dima $
# $Id: USB_FW.201.hex 10402 2012-02-15 15:34:50Z dima $
#
:03004300021F0099
:03005300021F0089
@@ -27,7 +27,7 @@
:050FF6000300000000F3
:100F3C0041E0370041E0B60042E0B1000041E0384A
:100F4C0000021BE0850218E07943E0B30000004D7D
:0F0F5C00E03931313435314D2020202020200064
:0F0F5C00E03931303339354D202020202020005E
:101D71008B538A548955E5581558AE57700215573B
:101D81004E6014AB530555E555AA54700205541421
:081D9100F9ED12077780DF2253
@@ -164,7 +164,7 @@
:100B7E00AB45AA46A9477401120777E4F550E55034
:100B8E00C454F0AB45AA46A94790000112078985C7
:100B9E004858854959854A5A755B08121A95AB48CB
:100BAE00AA49A94A90000212074AFE5407FFEE54C2
:100BAE00AA49A94A90000212074AFE5403FFEE54C6
:100BBE0070F55124E0602924F0604B24F0605D2430
:100BCE00F0606F24406003020C5675410185184297
:100BDE00851943EF24FE600624FE703B801C801FA7

View File

@@ -1,5 +1,5 @@
#
# $Id: USB_FW.hex 11452 2015-03-29 18:21:13Z dima $
# $Id: USB_FW.hex 10401 2012-02-15 15:30:24Z dima $
#
:03004300021F0099
:03005300021F0089
@@ -27,7 +27,7 @@
:051EF1000300000000E9
:1011F50041E0370041E0B70042E0B2000041E0388D
:1012050000021BE0860218E07A43E0B40000004EBD
:10121500E03931313435314D502020202020200057
:10121500E03931303339354D502020202020200051
:101D9A008B518A528953E5561556AE557002155520
:101DAA004E6014AB510553E553AA52700205521402
:081DBA00F9ED12077180DF2230
@@ -165,7 +165,7 @@
:100B7800AB43AA44A9457401120771E4F54EE54E4A
:100B8800C454F0AB43AA44A94590000112078385D9
:100B98004656854757854858755908121A94AB46E2
:100BA800AA47A948900002120744FE5407FFEE54D2
:100BA800AA47A948900002120744FE5403FFEE54D6
:100BB80070F54F24E0602924F0604B24F0605D2438
:100BC800F0606F24406003020C50753F01851840A7
:100BD800851941EF24FE600624FE703B801C801FAF

View File

@@ -80,8 +80,7 @@ static const xproto_table_t *xproto_table(xpd_type_t cardtype)
return xprotocol_tables[cardtype];
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0) || \
LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)
#define MODULE_REFCOUNT_FORMAT "%s refcount was %d\n"
#else
#define MODULE_REFCOUNT_FORMAT "%s refcount was %lu\n"

View File

@@ -76,6 +76,10 @@
#define HAVE_NET_DEVICE_OPS
#endif
#define DAHDI_IRQ_SHARED IRQF_SHARED
#define DAHDI_IRQ_DISABLED IRQF_DISABLED
#define DAHDI_IRQ_SHARED_DISABLED IRQF_SHARED | IRQF_DISABLED
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26)
# ifdef RHEL_RELEASE_VERSION
# if RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(5, 6)
@@ -1498,8 +1502,6 @@ void dahdi_pci_disable_link_state(struct pci_dev *pdev, int state);
#define list_first_entry(ptr, type, member) \
list_entry((ptr)->next, type, member)
#define strncasecmp strnicmp
#ifndef __packed
#define __packed __attribute__((packed))
#endif
@@ -1663,11 +1665,9 @@ struct mutex {
chan_printk(DEBUG, "-" #bits, chan, \
"%s: " fmt, __func__, ## __VA_ARGS__)))
#define dahdi_dev_dbg(bits, dev, fmt, ...) \
do { if (debug & (DAHDI_DBG_ ## bits)) { \
((void)((debug & (DAHDI_DBG_ ## bits)) && \
dev_printk(KERN_DEBUG, dev, \
"DBG-%s(%s): " fmt, #bits, __func__, ## __VA_ARGS__); \
} } while (0)
"DBG-%s(%s): " fmt, #bits, __func__, ## __VA_ARGS__)))
#endif /* DAHDI_PRINK_MACROS_USE_debug */
#endif /* _DAHDI_KERNEL_H */