[svn-commits] kpfleming: branch mogorman/zaptel-1.2-transcoder
r1951 - in /team/mogorman/za...
svn-commits at lists.digium.com
svn-commits at lists.digium.com
Tue Jan 23 20:26:38 MST 2007
Author: kpfleming
Date: Tue Jan 23 21:26:37 2007
New Revision: 1951
URL: http://svn.digium.com/view/zaptel?view=rev&rev=1951
Log:
remove kernel 2.4 support (which could not have worked anyway)
add module_printk and debug_printk macros
incorporate interrupt acknowledge fix
use proper firmware filename and fix up non-hotplug firmware loading case
Added:
team/mogorman/zaptel-1.2-transcoder/wctc4xxp/tc400m-firmware.bin
- copied unchanged from r1935, team/mogorman/zaptel-1.2-transcoder/wctc4xxp/wctc4xxb_firm.bin
Removed:
team/mogorman/zaptel-1.2-transcoder/wctc4xxp/wctc4xxb_firm.bin
Modified:
team/mogorman/zaptel-1.2-transcoder/Makefile
team/mogorman/zaptel-1.2-transcoder/wctc4xxp/Kbuild
team/mogorman/zaptel-1.2-transcoder/wctc4xxp/Makefile
team/mogorman/zaptel-1.2-transcoder/wctc4xxp/base.c
Modified: team/mogorman/zaptel-1.2-transcoder/Makefile
URL: http://svn.digium.com/view/zaptel/team/mogorman/zaptel-1.2-transcoder/Makefile?view=diff&rev=1951&r1=1950&r2=1951
==============================================================================
--- team/mogorman/zaptel-1.2-transcoder/Makefile (original)
+++ team/mogorman/zaptel-1.2-transcoder/Makefile Tue Jan 23 21:26:37 2007
@@ -137,7 +137,7 @@
all: $(BUILDVER) $(LIBTONEZONE_SO)
-linux24: prereq $(MODULESO) wct4xxp/wct4xxp.o wctc4xxp/wctc4xxp.o $(BINS)
+linux24: prereq $(MODULESO) wct4xxp/wct4xxp.o $(BINS)
linux26: prereq $(BINS)
@echo $(KSRC)
@@ -153,9 +153,6 @@
wct4xxp/wct4xxp.o:
$(MAKE) -C wct4xxp KFLAGS="$(KFLAGS) -I.." CFLAGS="$(CFLAGS) -I.."
-
-wctc4xxp/wctc4xxp.o:
- $(MAKE) -C wctc4xxp KFLAGS="$(KFLAGS) -I.." CFLAGS="$(CFLAGS) -I.."
devel: tor2ee
@@ -332,7 +329,7 @@
done; \
$(KMAKE_INST);
else
- for x in $(MODULESO) wct4xxp/wct4xxp.o wctc4xxp/wctc4xxp.o; do \
+ for x in $(MODULESO) wct4xxp/wct4xxp.o; do \
install -D -m 644 $$x $(INSTALL_PREFIX)/lib/modules/$(KVERS)/misc/$$x ; \
done;
Modified: team/mogorman/zaptel-1.2-transcoder/wctc4xxp/Kbuild
URL: http://svn.digium.com/view/zaptel/team/mogorman/zaptel-1.2-transcoder/wctc4xxp/Kbuild?view=diff&rev=1951&r1=1950&r2=1951
==============================================================================
--- team/mogorman/zaptel-1.2-transcoder/wctc4xxp/Kbuild (original)
+++ team/mogorman/zaptel-1.2-transcoder/wctc4xxp/Kbuild Tue Jan 23 21:26:37 2007
@@ -5,11 +5,11 @@
wctc4xxp-objs := base.o
ifneq ($(HOTPLUG_FIRMWARE),yes)
-wctc4xxp-objs += firmware_wctc4xxp.o
+wctc4xxp-objs += firmware_tc400m.o
endif
$(obj)/base.o: $(src)/../zaptel.h
-$(obj)/firmware_wctc4xxp.o: $(src)/wctc4xxp_firm.bin $(obj)/base.o
+$(obj)/firmware_tc400m.o: $(src)/tc400m-firmware.bin $(obj)/base.o
@echo Making firmware object file for $(notdir $<)
@cd $(src) && ../build_tools/make_firmware_object $(notdir $<) $@ $(obj)/base.o
Modified: team/mogorman/zaptel-1.2-transcoder/wctc4xxp/Makefile
URL: http://svn.digium.com/view/zaptel/team/mogorman/zaptel-1.2-transcoder/wctc4xxp/Makefile?view=diff&rev=1951&r1=1950&r2=1951
==============================================================================
--- team/mogorman/zaptel-1.2-transcoder/wctc4xxp/Makefile (original)
+++ team/mogorman/zaptel-1.2-transcoder/wctc4xxp/Makefile Tue Jan 23 21:26:37 2007
@@ -2,23 +2,4 @@
include $(obj)/Kbuild
-else
-
-all: wctc4xxp.o
-
-%.o: %.c
- $(CC) $(KFLAGS) -o $@ -c $<
-
-base.o: ../zaptel.h
-
-firmware_wctc4xxp.o: wctc4xxp_firm.bin base.o
- @echo Making firmware object file for $<
- ../build_tools/make_firmware_object $< $@ base.o
-
-wctc4xxp.o: base.o firmware_wctc4xxp.o
- $(LD) -r -o $@ $^
-
-clean:
- rm -f *.o
-
endif
Modified: team/mogorman/zaptel-1.2-transcoder/wctc4xxp/base.c
URL: http://svn.digium.com/view/zaptel/team/mogorman/zaptel-1.2-transcoder/wctc4xxp/base.c?view=diff&rev=1951&r1=1950&r2=1951
==============================================================================
--- team/mogorman/zaptel-1.2-transcoder/wctc4xxp/base.c (original)
+++ team/mogorman/zaptel-1.2-transcoder/wctc4xxp/base.c Tue Jan 23 21:26:37 2007
@@ -50,17 +50,25 @@
#include <linux/zaptel.h>
#endif
#include <linux/moduleparam.h>
-#ifdef HOTPLUG_FIRMWARE
+#if defined(LINUX26)
#include <linux/firmware.h>
-static const char *dte_firmware = "tc400m-firmware.bin";
#else
-struct firmware {
+ostruct firmware {
size_t size;
u8 *data;
};
-extern const u8 _binary_tc400m_firmware_bin_start[];
+#endif
+#if defined(HOTPLUG_FIRMWARE)
+static const char *tc400m_firmware = "tc400m-firmware.bin";
+#else
+extern u8 _binary_tc400m_firmware_bin_start[];
extern const size_t _binary_tc400m_firmware_bin_size;
#endif
+
+static struct pci_driver driver;
+
+#define module_printk(fmt, args...) printk("%s: " fmt, driver.name, ## args)
+#define debug_printk(test, fmt, args...) if (debug && (test)) printk("%s (%s): " fmt, driver.name, __FUNCTION__, ## args)
/* #define USE_TEST_HW */
#define USE_TDM_CONFIG
@@ -267,7 +275,7 @@
down(&wc->cmdqsem); \
wc->last_command_sent = hex; \
if ( (((wc->cmdq_wndx + 1) % MAX_COMMANDS) == wc->cmdq_rndx) && debug ) \
- printk("wcdte error: cmdq is full.\n"); \
+ module_printk("cmdq is full\n"); \
else { \
unsigned char fifo[OTHER_CMD_LEN] = command; \
int i; \
@@ -503,14 +511,14 @@
writechunk[j] = 0;
if (debug_packets) {
- printk("wcdte debug: TX: ");
+ module_printk("TX: ");
for (i = 0; i < debug_packets; i++)
printk("%02X ", writechunk[i]);
printk("\n");
}
if (debug_cmd_packets && (writechunk[12] == 0x88) && (writechunk[13] == 0x9B)) {
- printk("wcdte debug: TX: ");
+ module_printk("wcdte debug: TX: ");
for (i = 0; i < debug_cmd_packets; i++)
printk("%02X ", writechunk[i]);
printk("\n");
@@ -679,10 +687,10 @@
down(&wc->cmdqsem);
- if ( (((wc->cmdq_wndx + 1) % MAX_COMMANDS) == wc->cmdq_rndx) && debug ) {
- printk("wcdte error: cmdq is full.\n");
+ if (((wc->cmdq_wndx + 1) % MAX_COMMANDS) == wc->cmdq_rndx) {
+ debug_printk(1, "cmdq is full\n");
} else {
- wc->cmdq[wc->cmdq_wndx].cmdlen = CMD_MSG_IP_UDP_RTP_LEN+inbytes;
+ wc->cmdq[wc->cmdq_wndx].cmdlen = CMD_MSG_IP_UDP_RTP_LEN + inbytes;
for (i = 0; i < CMD_MSG_IP_UDP_RTP_LEN+inbytes; i++)
wc->cmdq[wc->cmdq_wndx].cmd[i] = fifo[i];
wc->cmdq_wndx = (wc->cmdq_wndx + 1) % MAX_COMMANDS;
@@ -731,7 +739,7 @@
o2 += ERING_SIZE * 4;
if (debug_packets) {
- printk("wctc4xxp: RX: ");
+ debug_printk(1, "RX: ");
for (i = 0; i < debug_packets; i++)
printk("%02X", readchunk[i]);
printk("\n");
@@ -740,7 +748,7 @@
if ((readchunk[12] == 0x88) && (readchunk[13] == 0x9B)) {
/* Control in packet */
if (debug_cmd_packets) {
- printk("wcdte debug: RX: ");
+ debug_printk(1, "RX: ");
for (i = 0; i < debug_cmd_packets; i++)
printk("%02X ", readchunk[i]);
printk("\n");
@@ -752,8 +760,8 @@
rseq = readchunk[16];
down(&wc->cmdqsem);
- if ((((wc->cmdq_wndx + 1) % MAX_COMMANDS) == wc->cmdq_rndx) && debug ) {
- printk("wcdte error: cmdq is full (rndx = %d, wndx = %d).\n", wc->cmdq_rndx, wc->cmdq_wndx);
+ if ((((wc->cmdq_wndx + 1) % MAX_COMMANDS) == wc->cmdq_rndx)) {
+ debug_printk(1, "cmdq is full\n");
} else {
u8 fifo[OTHER_CMD_LEN] = CMD_MSG_ACK(rseq++, rchannel);
@@ -786,8 +794,7 @@
ztc_ndx = rchannel >> 1;
if (ztc_ndx >= wc->numchannels) {
- if (debug)
- printk("wcdte error: Invalid channel number received (ztc_ndx = %d) (numchannels = %d)\n", ztc_ndx, wc->numchannels);
+ debug_printk(1, "Invalid channel number received (ztc_ndx = %d) (numchannels = %d)\n", ztc_ndx, wc->numchannels);
rcodec = DTE_FORMAT_UNDEF;
}
@@ -797,8 +804,7 @@
st = ztc->pvt;
if (zth == NULL) {
- if (debug)
- printk("wcdte error: Tried to put DTE data into a freed zth header!\n");
+ debug_printk(1, "Tried to put data into a freed zth header\n");
rcodec = DTE_FORMAT_UNDEF;
} else {
chars = (u8 *)(zth->dstdata + zth->dstoffset + zth->dstlen);
@@ -812,8 +818,7 @@
st = ztc->pvt;
if (zth == NULL) {
- if (debug)
- printk("wcdte error: Tried to put DTE data into a freed zth header!\n");
+ debug_printk(1, "Tried to put data into a freed zth header\n");
rcodec = DTE_FORMAT_UNDEF;
} else {
chars = (u8 *)(zth->dstdata + zth->dstoffset + zth->dstlen);
@@ -827,9 +832,7 @@
st->last_dte_seqno = rtp_rseq;
} else {
rtp_eseq = (st->last_dte_seqno + 1) & 0xFFFF;
- if ( (rtp_rseq != rtp_eseq) && debug )
- printk("wcdte error: Bad seqno from DTE! [%d][%d][%d]\n", rchannel, rtp_rseq, st->last_dte_seqno);
-
+ debug_printk(rtp_rseq != rtp_eseq, "Bad seqno from module [%d][%d][%d]\n", rchannel, rtp_rseq, st->last_dte_seqno);
st->last_dte_seqno = rtp_rseq;
}
@@ -970,12 +973,11 @@
struct wcdte *wc = dev_id;
unsigned int ints;
- /* Read and clear interrupts */
- ints = getctl(wc, 0x0028);
+ if (!(ints = getctl(wc, 0x0028)))
+ return IRQ_NONE;
+
setctl(wc, 0x0028, ints);
- if (!ints)
- return IRQ_NONE;
ints &= wc->intmask;
if (ints & 0x00000041) {
@@ -983,29 +985,17 @@
queue_work(wc->dte_wq, &wc->dte_work);
}
- if ((ints & 0x00008000) && debug)
- printk("wctc4xxp: Abnormal Interrupt: ");
-
- if ((ints & 0x00002000) && debug)
- printk("wctc4xxp: Fatal Bus Error INT\n");
-
- if ((ints & 0x00000100) && debug)
- printk("wctc4xxp: Receive Stopped INT\n");
-
- if ((ints & 0x00000080) && debug)
- printk("wctc4xxp: Receive Desciptor Unavailable INT\n");
-
- if ((ints & 0x00000020) && debug)
- printk("wctc4xxp: Transmit Under-flow INT\n");
-
- if ((ints & 0x00000008) && debug)
- printk("wctc4xxp: Jabber Timer Time-out INT\n");
-
- if ((ints & 0x00000004) && debug)
- printk("wctc4xxp: Transmit Descriptor Unavailable INT\n");
-
- if ((ints & 0x00000002) && debug)
- printk("wctc4xxp: Transmit Processor Stopped INT\n");
+ if (!debug)
+ return IRQ_RETVAL(1);
+
+ debug_printk(ints & 0x00008000, "Abnormal Interrupt\n");
+ debug_printk(ints & 0x00002000, "Fatal Bus Error\n");
+ debug_printk(ints & 0x00000100, "Receive Stopped\n");
+ debug_printk(ints & 0x00000080, "Receive Desciptor Unavailable\n");
+ debug_printk(ints & 0x00000020, "Transmit Under-flow\n");
+ debug_printk(ints & 0x00000008, "Jabber Timer Time-out\n");
+ debug_printk(ints & 0x00000004, "Transmit Descriptor Unavailable\n");
+ debug_printk(ints & 0x00000002, "Transmit Processor Stopped\n");
return IRQ_RETVAL(1);
}
@@ -1107,13 +1097,13 @@
if (ret < 0) {
if (debug)
- printk("wcdte error: Wait interrupted, need to stop boot (ret = %d)\n", ret);
+ module_printk("wcdte error: Wait interrupted, need to stop boot (ret = %d)\n", ret);
return 1;
}
if (ret == 0) {
if (debug)
- printk("wcdte error: Waitfor CSMENCAPS response timed out (ret = %d)\n", ret);
+ module_printk("wcdte error: Waitfor CSMENCAPS response timed out (ret = %d)\n", ret);
return 2;
}
@@ -1197,7 +1187,7 @@
/* Turn off auto negotiation */
write_phy(wc, 0, 0x2100);
if (debug)
- printk("wctc4xxp: PHY register 0 = %X", read_phy(wc, 0));
+ module_printk("wctc4xxp: PHY register 0 = %X", read_phy(wc, 0));
/* Set reset */
setctl(wc, 0x00A0, 0x04000000);
@@ -1216,7 +1206,7 @@
delay_count++;
if (delay_count >= 100) {
- printk("wcdte error: Failed to link to DTE processor!\n");
+ module_printk("wcdte error: Failed to link to DTE processor!\n");
return(1);
}
} while ((reg & 0xE0000000) != 0xE0000000);
@@ -1227,7 +1217,7 @@
reg = getctl(wc, 0x00fc);
if (debug)
- printk("wctc4xxp: LINK STATUS: reg(0xfc) = %X\n", reg);
+ module_printk("wctc4xxp: LINK STATUS: reg(0xfc) = %X\n", reg);
reg = getctl(wc, 0x00A0);
@@ -1242,7 +1232,7 @@
down(&wc->cmdqsem);
if ( (((wc->cmdq_wndx + 1) % MAX_COMMANDS) == wc->cmdq_rndx) && debug )
- printk("wcdte error: cmdq is full.\n");
+ module_printk("wcdte error: cmdq is full.\n");
else
{
wc->cmdq[wc->cmdq_wndx].cmdlen = length;
@@ -1270,7 +1260,7 @@
/* Turn on booted LED */
setctl(wc, 0x00A0, 0x04080000);
if (debug)
- printk("wctc4xxp: Successfully booted DTE processor.\n");
+ module_printk("wctc4xxp: Successfully booted DTE processor.\n");
return(0);
}
@@ -1374,20 +1364,16 @@
struct wcdte *wc;
struct wcdte_desc *d = (struct wcdte_desc *) ent->driver_data;
int x;
- u8 g729_numchannels, g723_numchannels, min_numchannels, dte_firmware_ver;
+ u8 g729_numchannels, g723_numchannels, min_numchannels, firmware_ver;
unsigned int complexfmts;
struct firmware embedded_firmware;
const struct firmware *firmware = &embedded_firmware;
-#if !defined(HOTPLUG_FIRMWARE)
- extern const u8 _binary_wctc4xxp_firm_bin_start[];
- extern const size_t _binary_wctc4xxp_firm_bin_size;
-#endif
for (x = 0; x < (sizeof(ifaces) / sizeof(ifaces[0])); x++)
if (!ifaces[x]) break;
if (x >= WC_MAX_IFACES) {
- printk("wctc4xxp: Too many interfaces\n");
+ module_printk("wctc4xxp: Too many interfaces\n");
return -EIO;
}
@@ -1417,7 +1403,7 @@
/* Allocate enough memory for all TX buffers, RX buffers, and descriptors */
wc->writechunk = (int *) pci_alloc_consistent(pdev, PCI_WINDOW_SIZE, &wc->writedma);
if (!wc->writechunk) {
- printk("wctc4xxp: Unable to allocate DMA-able memory\n");
+ module_printk("wctc4xxp: Unable to allocate DMA-able memory\n");
if (wc->freeregion)
release_region(wc->iobase, 0xff);
@@ -1431,7 +1417,7 @@
wc->descripdma = wc->readdma + (SFRAME_SIZE * ERING_SIZE); /* in bytes */
/* Initialize Write/Buffers to all blank data */
- memset((void *) wc->writechunk,0x00, SFRAME_SIZE * 2);
+ memset((void *) wc->writechunk, 0x00, SFRAME_SIZE * 2);
memset((void *) wc->readchunk, 0x00, SFRAME_SIZE * 2);
init_waitqueue_head(&wc->regq);
@@ -1439,19 +1425,19 @@
/* Initialize the work queue */
wc->dte_wq = create_workqueue("wctc4xxp");
- INIT_WORK(&wc->dte_work, (void (*)(void *))dte_wque_run, wc);
+ INIT_WORK(&wc->dte_work, (void (*)(void *)) dte_wque_run, wc);
#ifdef HOTPLUG_FIRMWARE
- if ((request_firmware(&firmware, dte_firmware, &wc->dev->dev) != 0) || !firmware) {
- printk("wctc4xxp: firmware %s not available from userspace\n", dte_firmware);
+ if ((request_firmware(&firmware, tc400m_firmware, &wc->dev->dev) != 0) || !firmware) {
+ module_printk("wctc4xxp: firmware %s not available from userspace\n", dte_firmware);
return -1;
}
#else
- embedded_firmware.data = _binary_wctc4xxp_firm_bin_start;
- embedded_firmware.size = _binary_wctc4xxp_firm_bin_size;
+ embedded_firmware.data = _binary_tc400m_firmware_bin_start;
+ embedded_firmware.size = _binary_tc400m_firmware_bin_size;
#endif
- dte_firmware_ver = firmware->data[0];
+ firmware_ver = firmware->data[0];
g729_numchannels = firmware->data[1];
g723_numchannels = firmware->data[2];
@@ -1526,7 +1512,7 @@
pci_set_drvdata(pdev, wc);
if (request_irq(pdev->irq, interrupt_handler, SA_SHIRQ, "tc400b", wc)) {
- printk("wctc4xxp: Unable to request IRQ %d\n", pdev->irq);
+ module_printk("wctc4xxp: Unable to request IRQ %d\n", pdev->irq);
if (wc->freeregion)
release_region(wc->iobase, 0xFF);
pci_free_consistent(pdev, PCI_WINDOW_SIZE, (void *) wc->writechunk, wc->writedma);
@@ -1583,9 +1569,9 @@
reg = getctl(wc, 0x00fc);
if (debug)
- printk("wcdte debug: (post-boot) Reg fc is %08x\n", reg);
-
- printk("wctc4xxp: %s supporting '%s' with firmware version '%d'\n", wc->variety, wc->complexname, dte_firmware_ver);
+ module_printk("wcdte debug: (post-boot) Reg fc is %08x\n", reg);
+
+ module_printk("wctc4xxp: %s supporting '%s' with firmware version '%d'\n", wc->variety, wc->complexname, firmware_ver);
res = 0;
@@ -1610,8 +1596,8 @@
return;
if (debug) {
- printk("wctc4xxp debug: wc->ztsnd_rtx = %d\n", wc->ztsnd_rtx);
- printk("wctc4xxp debug: wc->ztsnd_0010_rtx = %d\n", wc->ztsnd_0010_rtx);
+ module_printk("wctc4xxp debug: wc->ztsnd_rtx = %d\n", wc->ztsnd_rtx);
+ module_printk("wctc4xxp debug: wc->ztsnd_0010_rtx = %d\n", wc->ztsnd_0010_rtx);
for(i = 0; i < wc->numchannels; i++) {
ztc_en = &(wc->uencode->channels[i]);
@@ -1620,8 +1606,8 @@
ztc_de = &(wc->udecode->channels[i]);
st_de = ztc_de->pvt;
- printk("wctc4xxp debug: en[%d] snt = %d, rcv = %d [%d]\n", i, st_en->packets_sent, st_en->packets_received, st_en->packets_sent - st_en->packets_received);
- printk("wctc4xxp debug: de[%d] snt = %d, rcv = %d [%d]\n", i, st_de->packets_sent, st_de->packets_received, st_de->packets_sent - st_de->packets_received);
+ module_printk("wctc4xxp debug: en[%d] snt = %d, rcv = %d [%d]\n", i, st_en->packets_sent, st_en->packets_received, st_en->packets_sent - st_en->packets_received);
+ module_printk("wctc4xxp debug: de[%d] snt = %d, rcv = %d [%d]\n", i, st_de->packets_sent, st_de->packets_received, st_de->packets_sent - st_de->packets_received);
}
}
More information about the svn-commits
mailing list