summaryrefslogtreecommitdiff
path: root/xpp/xpp_zap.c
diff options
context:
space:
mode:
Diffstat (limited to 'xpp/xpp_zap.c')
-rw-r--r--xpp/xpp_zap.c168
1 files changed, 83 insertions, 85 deletions
diff --git a/xpp/xpp_zap.c b/xpp/xpp_zap.c
index dcbb435..77f3437 100644
--- a/xpp/xpp_zap.c
+++ b/xpp/xpp_zap.c
@@ -190,8 +190,7 @@ static void sync_master_is(xbus_t *xbus)
xpd_t *xpd = (xbus)? xpd_of(xbus, 0) : NULL;
if(xbus && !xpd) {
- NOTICE("Cannot set sync master to %s (has no XPD #0).\n",
- xbus->busname);
+ XBUS_NOTICE(xbus, "Cannot set sync master (has no XPD #0).\n");
xbus = NULL; /* Fallback to HOST */
}
DBG("SYNC MASTER CHANGING: %s => %s\n",
@@ -231,15 +230,16 @@ static inline void send_pcm_frame(xbus_t *xbus, xframe_t *xframe)
sec_diff = now.tv_sec - xbus->last_tx_sync.tv_sec;
usec_diff = sec_diff * 1000000 + (now.tv_usec - xbus->last_tx_sync.tv_usec);
if(unlikely(abs(sec_diff) > 2)) {
- DBG("%s: PCM TX timing restart (sec_diff=%ld)\n",
- xbus->busname, sec_diff);
+ XBUS_DBG(xbus, "PCM TX timing restart (sec_diff=%ld)\n", sec_diff);
xbus->last_tx_sync = now;
goto dropit;
}
if(abs(usec_diff - 1000) > TICK_TOLERANCE) {
- if(print_dbg && printk_ratelimit())
- DBG("%s: Bad PCM TX timing: usec_diff=%ld.\n",
- xbus->busname, usec_diff);
+ static int rate_limit;
+
+ if((rate_limit++ % 5003) == 0)
+ XBUS_DBG(xbus, "Bad PCM TX timing(%d): usec_diff=%ld.\n",
+ rate_limit, usec_diff);
}
if(usec_diff > xbus->max_tx_sync)
xbus->max_tx_sync = usec_diff;
@@ -372,7 +372,7 @@ static void xbus_tick(xbus_t *xbus)
if(!xframe) { /* Alloc frame */
xframe = xbus->ops->xframe_new(xbus, GFP_ATOMIC);
if (!xframe) {
- ERR("%s: failed to allocate new xframe\n", __FUNCTION__);
+ XBUS_ERR(xbus, "%s: failed to allocate new xframe\n", __FUNCTION__);
return;
}
}
@@ -435,7 +435,7 @@ void xpp_tick(unsigned long param)
if (!xbus->hardware_exists)
continue;
if(!down_read_trylock(&xbus->in_use)) {
- DBG("Dropped packet. %s is in_use\n", xbus->busname);
+ XBUS_DBG(xbus, "Dropped packet. Is in_use\n");
continue;
}
/* Reset sync LEDs once in a while */
@@ -444,7 +444,7 @@ void xpp_tick(unsigned long param)
if(atomic_dec_and_test(&xbus->pcm_nesting)) {
xbus_tick(xbus);
} else {
- ERR("%s: NESTING ATTEMPT: %d\n", xbus->busname, atomic_read(&xbus->pcm_nesting));
+ XBUS_ERR(xbus, "NESTING ATTEMPT: %d\n", atomic_read(&xbus->pcm_nesting));
}
atomic_inc(&xbus->pcm_nesting);
up_read(&xbus->in_use);
@@ -460,8 +460,7 @@ void got_sync_from(xpd_t *xpd)
static int rate_limit;
if((rate_limit++ % 1003) == 0)
- DBG("%s/%s: is not SYNC master. Go away! (%d)\n",
- xbus->busname, xpd->xpdname, rate_limit);
+ XPD_DBG(xpd, "is not SYNC master. Go away! (%d)\n", rate_limit);
return;
}
atomic_inc(&missed_ticks);
@@ -489,7 +488,7 @@ static void send_drift(int drift)
msg = "up";
else
msg = "down";
- DBG("DRIFT adjust %s (%d) (last update %ld seconds ago)\n",
+ XBUS_DBG(xbus, "DRIFT adjust %s (%d) (last update %ld seconds ago)\n",
msg, drift, now.tv_sec - xbus->pll_updated_at);
CALL_PROTO(GLOBAL, SYNC_SOURCE, xbus, NULL, SYNC_MODE_PLL, drift);
xbus->pll_updated_at = now.tv_sec;
@@ -570,30 +569,30 @@ static void xpd_free(xpd_t *xpd)
xbus = xpd->xbus;
if(!xbus)
return;
- DBG("%s/%s\n", xbus->busname, xpd->xpdname);
- xbus_unregister_xpd(xbus, xpd);
+ XPD_DBG(xpd, "\n");
#ifdef CONFIG_PROC_FS
if(xpd->proc_xpd_dir) {
if(xpd->proc_xpd_summary) {
- DBG("Removing proc '%s' for %s/%s\n", PROC_XPD_SUMMARY, xbus->busname, xpd->xpdname);
+ XPD_DBG(xpd, "Removing proc '%s'\n", PROC_XPD_SUMMARY);
remove_proc_entry(PROC_XPD_SUMMARY, xpd->proc_xpd_dir);
xpd->proc_xpd_summary = NULL;
}
if(xpd->proc_xpd_ztregister) {
- DBG("Removing proc '%s' for %s/%s\n", PROC_XPD_ZTREGISTER, xbus->busname, xpd->xpdname);
+ XPD_DBG(xpd, "Removing proc '%s'\n", PROC_XPD_ZTREGISTER);
remove_proc_entry(PROC_XPD_ZTREGISTER, xpd->proc_xpd_dir);
xpd->proc_xpd_ztregister = NULL;
}
if(xpd->proc_xpd_blink) {
- DBG("Removing proc '%s' for %s/%s\n", PROC_XPD_BLINK, xbus->busname, xpd->xpdname);
+ XPD_DBG(xpd, "Removing proc '%s'\n", PROC_XPD_BLINK);
remove_proc_entry(PROC_XPD_BLINK, xpd->proc_xpd_dir);
xpd->proc_xpd_blink = NULL;
}
- DBG("Removing proc directory for %s/%s\n", xbus->busname, xpd->xpdname);
+ XPD_DBG(xpd, "Removing proc directory\n");
remove_proc_entry(xpd->xpdname, xbus->proc_xbus_dir);
xpd->proc_xpd_dir = NULL;
}
#endif
+ xbus_unregister_xpd(xbus, xpd);
if(xpd->readchunk)
kfree((void *)xpd->readchunk);
xpd->readchunk = NULL;
@@ -632,6 +631,7 @@ void card_detected(struct card_desc_struct *card_desc)
xbus_t *xbus;
xpd_t *xpd = NULL;
byte type;
+ byte subtype;
int unit;
int subunit;
byte rev;
@@ -643,56 +643,57 @@ void card_detected(struct card_desc_struct *card_desc)
BUG_ON(card_desc->magic != CARD_DESC_MAGIC);
xbus = card_desc->xbus;
type = card_desc->type;
+ subtype = card_desc->subtype;
unit = card_desc->xpd_addr.unit;
subunit = card_desc->xpd_addr.subunit;
rev = card_desc->rev;
BUG_ON(!xbus);
if(!good_rev(rev)) {
- NOTICE("%s: XPD at %d%d: type=%d has bad firmware revision %d.%d\n",
- xbus->busname,
+ XBUS_NOTICE(xbus, "XPD at %d%d: type=%d.%d has bad firmware revision %d.%d\n",
unit, subunit,
- type, rev / 10, rev % 10);
+ type, subtype,
+ rev / 10, rev % 10);
goto err;
}
- INFO("%s: New XPD at %d%d type=%d Revision %d.%d\n", xbus->busname,
- unit, subunit, type, rev / 10, rev % 10);
+ XBUS_INFO(xbus, "New XPD at %d%d type=%d.%d Revision %d.%d\n",
+ unit, subunit, type, subtype, rev / 10, rev % 10);
xpd = xpd_byaddr(xbus, unit, subunit);
if(xpd) {
if(type == XPD_TYPE_NOMODULE) {
- NOTICE("%s: XPD at %d%d removed\n", __FUNCTION__,
+ XBUS_NOTICE(xbus, "XPD at %d%d removed\n",
unit, subunit);
BUG();
goto out;
}
- NOTICE("%s: XPD at %d%d already exists\n", __FUNCTION__,
+ XPD_NOTICE(xpd, "XPD at %d%d already exists\n",
unit, subunit);
goto out;
}
if(type == XPD_TYPE_NOMODULE) {
- NOTICE("%s: XPD at %d%d Missing\n", __FUNCTION__,
+ XBUS_NOTICE(xbus, "XPD at %d%d Missing\n",
unit, subunit);
goto out;
}
proto_table = xproto_get(type);
if(!proto_table) {
- NOTICE("%s: XPD at %d%d: missing protocol table for type=%d. Ignored.\n",
- __FUNCTION__,
+ XBUS_NOTICE(xbus, "XPD at %d%d: missing protocol table for type=%d. Ignored.\n",
unit, subunit,
type);
goto out;
}
xops = &proto_table->xops;
BUG_ON(!xops);
- xpd = xops->card_new(xbus, unit, subunit, proto_table, rev);
+ xpd = xops->card_new(xbus, unit, subunit, proto_table, subtype, rev);
if(!xpd) {
- NOTICE("card_new(%s,%d,%d,%d,%d) failed. Ignored.\n",
- xbus->busname, unit, subunit, proto_table->type, rev);
+ XBUS_NOTICE(xbus, "card_new(%d,%d,%d,%d,%d) failed. Ignored.\n",
+ unit, subunit, proto_table->type, subtype, rev);
xproto_put(xpd->xproto);
goto err;
}
xpd->addr = card_desc->xpd_addr;
xpd->xbus_idx = XPD_IDX(unit,subunit);
snprintf(xpd->xpdname, XPD_NAMELEN, "XPD-%1d%1d", unit, subunit);
+ xpd->subtype = card_desc->subtype;
xpd->offhook = card_desc->line_status;
/* For USB-1 disable some channels */
@@ -701,26 +702,27 @@ void card_detected(struct card_desc_struct *card_desc)
no_pcm = 0x7F | xpd->digital_outputs | xpd->digital_inputs;
xpd->no_pcm = no_pcm;
- NOTICE("%s: max packet size = %d, disabling some PCM channels. no_pcm=0x%04X\n",
- xbus->busname, xbus->max_packet_size, xpd->no_pcm);
+ XBUS_NOTICE(xbus, "max packet size = %d, disabling some PCM channels. no_pcm=0x%04X\n",
+ xbus->max_packet_size, xpd->no_pcm);
}
+ xbus_register_xpd(xbus, xpd);
#ifdef CONFIG_PROC_FS
- DBG("Creating xpd proc directory for %s/%s\n", xbus->busname, xpd->xpdname);
+ XPD_DBG(xpd, "Creating proc directory\n");
xpd->proc_xpd_dir = proc_mkdir(xpd->xpdname, xbus->proc_xbus_dir);
if(!xpd->proc_xpd_dir) {
- ERR("Failed to create proc directory for %s/%s\n", xbus->busname, xpd->xpdname);
+ XPD_ERR(xpd, "Failed to create proc directory\n");
goto err;
}
xpd->proc_xpd_summary = create_proc_read_entry(PROC_XPD_SUMMARY, 0444, xpd->proc_xpd_dir,
xpd_read_proc, xpd);
if(!xpd->proc_xpd_summary) {
- ERR("Failed to create proc '%s' for %s/%s\n", PROC_XPD_SUMMARY, xbus->busname, xpd->xpdname);
+ XPD_ERR(xpd, "Failed to create proc file '%s'\n", PROC_XPD_SUMMARY);
goto err;
}
xpd->proc_xpd_summary->owner = THIS_MODULE;
xpd->proc_xpd_ztregister = create_proc_entry(PROC_XPD_ZTREGISTER, 0644, xpd->proc_xpd_dir);
if (!xpd->proc_xpd_ztregister) {
- ERR("Failed to create proc '%s' for %s/%s\n", PROC_XPD_ZTREGISTER, xbus->busname, xpd->xpdname);
+ XPD_ERR(xpd, "Failed to create proc file '%s'\n", PROC_XPD_ZTREGISTER);
goto err;
}
xpd->proc_xpd_ztregister->owner = THIS_MODULE;
@@ -729,7 +731,7 @@ void card_detected(struct card_desc_struct *card_desc)
xpd->proc_xpd_ztregister->write_proc = proc_xpd_ztregister_write;
xpd->proc_xpd_blink = create_proc_entry(PROC_XPD_BLINK, 0644, xpd->proc_xpd_dir);
if (!xpd->proc_xpd_blink) {
- ERR("Failed to create proc '%s' for %s/%s\n", PROC_XPD_BLINK, xbus->busname, xpd->xpdname);
+ XPD_ERR(xpd, "Failed to create proc file '%s'\n", PROC_XPD_BLINK);
goto err;
}
xpd->proc_xpd_blink->owner = THIS_MODULE;
@@ -737,7 +739,6 @@ void card_detected(struct card_desc_struct *card_desc)
xpd->proc_xpd_blink->read_proc = proc_xpd_blink_read;
xpd->proc_xpd_blink->write_proc = proc_xpd_blink_write;
#endif
- xbus_register_xpd(xbus, xpd);
if(CALL_XMETHOD(card_init, xbus, xpd) < 0)
goto err;
CALL_XMETHOD(XPD_STATE, xbus, xpd, 0); /* Turn off all channels */
@@ -792,7 +793,8 @@ static int xpd_read_proc(char *page, char **start, off_t off, int count, int *eo
(xpd == sync_master) ? "SYNC MASTER" : "SYNC SLAVE",
xpd->timer_count, xpd->span.mainttimer
);
- len += sprintf(page + len, "Address: U=%d S=%d\n\n", xpd->addr.unit, xpd->addr.subunit);
+ len += sprintf(page + len, "Address: U=%d S=%d\n", xpd->addr.unit, xpd->addr.subunit);
+ len += sprintf(page + len, "Type: %d.%d\n\n", xpd->type, xpd->subtype);
len += sprintf(page + len, "pcm_len=%d\n\n", xpd->pcm_len);
len += sprintf(page + len, "wanted_pcm_mask=0x%04X\n\n", xpd->wanted_pcm_mask);
len += sprintf(page + len, "STATES:");
@@ -812,6 +814,10 @@ static int xpd_read_proc(char *page, char **start, off_t off, int count, int *eo
for_each_line(xpd, i) {
len += sprintf(page + len, "%d ", IS_SET(xpd->cid_on, i));
}
+ len += sprintf(page + len, "\n\t%-17s: ", "msg_waiting");
+ for_each_line(xpd, i) {
+ len += sprintf(page + len, "%d ", IS_SET(xpd->msg_waiting, i));
+ }
len += sprintf(page + len, "\n\t%-17s: ", "ringing");
for_each_line(xpd, i) {
len += sprintf(page + len, "%d ", xpd->ringing[i]);
@@ -898,7 +904,7 @@ xpd_t *xpd_alloc(size_t privsize, const xproto_table_t *proto_table, int channel
size_t alloc_size = sizeof(xpd_t) + privsize;
int type = proto_table->type;
- DBG("%s: type=%d channels=%d\n", __FUNCTION__, type, channels);
+ DBG("type=%d channels=%d\n", type, channels);
if(channels > CHANNELS_PERXPD) {
ERR("%s: type=%d: too many channels %d\n",
__FUNCTION__, type, channels);
@@ -971,7 +977,7 @@ void xpd_disconnect(xpd_t *xpd)
sync_master_is(NULL);
spin_lock_irqsave(&xpd->lock, flags);
- DBG("%s/%s (%p)\n", xpd->xbus->busname, xpd->xpdname, xpd->xproto);
+ XPD_DBG(xpd, "(%p)\n", xpd->xproto);
if(!xpd->card_present) /* Multiple reports */
goto out;
xpd->card_present = 0;
@@ -980,7 +986,7 @@ void xpd_disconnect(xpd_t *xpd)
update_xpd_status(xpd, ZT_ALARM_NOTOPEN);
/* TODO: Should this be done before releasing the spinlock? */
- DBG("Queuing ZT_EVENT_REMOVED on all channels to ask user to release them\n");
+ XPD_DBG(xpd, "Queuing ZT_EVENT_REMOVED on all channels to ask user to release them\n");
for (i=0; i<xpd->span.channels; i++)
zt_qevent_lock(&xpd->chans[i],ZT_EVENT_REMOVED);
}
@@ -994,8 +1000,7 @@ void xpd_remove(xpd_t *xpd)
BUG_ON(!xpd);
xbus = xpd->xbus;
- INFO("%s: Remove XPD-%1d%1d\n", xbus->busname,
- xpd->addr.unit, xpd->addr.subunit);
+ XPD_INFO(xpd, "Remove\n");
zaptel_unregister_xpd(xpd);
CALL_XMETHOD(card_remove, xbus, xpd);
xpd_free(xpd);
@@ -1006,7 +1011,7 @@ void update_xpd_status(xpd_t *xpd, int alarm_flag)
struct zt_span *span = &xpd->span;
if(!SPAN_REGISTERED(xpd)) {
- // NOTICE("%s: %s is not registered. Skipping.\n", __FUNCTION__, xpd->xpdname);
+ // XPD_NOTICE(xpd, "%s: XPD is not registered. Skipping.\n", __FUNCTION__);
return;
}
switch (alarm_flag) {
@@ -1021,7 +1026,7 @@ void update_xpd_status(xpd_t *xpd, int alarm_flag)
return;
span->alarms = alarm_flag;
zt_alarm_notify(span);
- DBG("Update XPD alarms: %s -> %02X\n", xpd->span.name, alarm_flag);
+ XPD_DBG(xpd, "Update XPD alarms: %s -> %02X\n", xpd->span.name, alarm_flag);
}
void update_line_status(xpd_t *xpd, int pos, bool to_offhook)
@@ -1042,8 +1047,7 @@ void update_line_status(xpd_t *xpd, int pos, bool to_offhook)
* it may call back into our xpp_hooksig() and cause
* a nested spinlock scenario
*/
- DBG("%s/%s/%d: rxsig=%s\n", xpd->xbus->busname, xpd->xpdname, pos,
- (rxsig == ZT_RXSIG_ONHOOK) ? "ONHOOK" : "OFFHOOK");
+ LINE_DBG(xpd, pos, "rxsig=%s\n", (rxsig == ZT_RXSIG_ONHOOK) ? "ONHOOK" : "OFFHOOK");
if(SPAN_REGISTERED(xpd))
zt_hooksig(&xpd->chans[pos], rxsig);
}
@@ -1205,8 +1209,7 @@ static int proc_xpd_ztregister_write(struct file *file, const char __user *buffe
ret = sscanf(buf, "%d", &zt_reg);
if(ret != 1)
return -EINVAL;
- DBG("%s: %s/%s %s\n", __FUNCTION__,
- xpd->xbus->busname, xpd->xpdname, (zt_reg) ? "register" : "unregister");
+ XPD_DBG(xpd, "%s\n", (zt_reg) ? "register" : "unregister");
if(zt_reg)
ret = zaptel_register_xpd(xpd);
else
@@ -1252,8 +1255,7 @@ static int proc_xpd_blink_write(struct file *file, const char __user *buffer, un
ret = sscanf(buf, "%d", &blink);
if(ret != 1)
return -EINVAL;
- DBG("%s: %s/%s %s\n", __FUNCTION__,
- xpd->xbus->busname, xpd->xpdname, (blink) ? "blink" : "unblink");
+ XPD_DBG(xpd, "%s\n", (blink) ? "blink" : "unblink");
xpd->blink_mode = blink;
return count;
}
@@ -1265,30 +1267,29 @@ static int proc_xpd_blink_write(struct file *file, const char __user *buffer, un
/*------------------------- Zaptel Interfaces ----------------------*/
-void pcm_recompute(xpd_t *xpd)
+void pcm_recompute(xpd_t *xpd, xpp_line_t pcm_mask)
{
int i;
- xpp_line_t tmp_pcm_mask;
int line_count = 0;
unsigned long flags;
- tmp_pcm_mask = (xpd->offhook | xpd->cid_on) & ~xpd->digital_signalling; /* without D-Channel */
+ pcm_mask &= ~xpd->digital_signalling; /* without D-Channel */
for_each_line(xpd, i)
- if(IS_SET(tmp_pcm_mask, i))
+ if(IS_SET(pcm_mask, i))
line_count++;
/*
* FIXME: Workaround a bug in sync code of the Astribank.
* Send dummy PCM for sync.
*/
- if(xpd->addr.unit == 0 && tmp_pcm_mask == 0) {
- tmp_pcm_mask = BIT(0);
+ if(xpd->addr.unit == 0 && pcm_mask == 0) {
+ pcm_mask = BIT(0);
line_count = 1;
}
spin_lock_irqsave(&xpd->lock, flags);
xpd->pcm_len = (line_count)
? RPACKET_HEADERSIZE + sizeof(xpp_line_t) + line_count * ZT_CHUNKSIZE
: 0L;
- xpd->wanted_pcm_mask = tmp_pcm_mask;
+ xpd->wanted_pcm_mask = pcm_mask;
spin_unlock_irqrestore(&xpd->lock, flags);
}
@@ -1349,7 +1350,7 @@ static void do_ec(xpd_t *xpd)
#if WITH_ECHO_SUPPRESSION
/* FIXME: need to Echo cancel double buffered data */
for (i = 0;i < xpd->span.channels; i++) {
- if(unlikely(IS_SET(xpd->digital_signalling, i))) /* Don't echo cancel BRI D-chans */
+ if(unlikely(IS_SET(xpd->digital_signalling, i))) /* Don't echo cancel PRI/BRI D-chans */
continue;
#ifdef XPP_EC_CHUNK
/* even if defined, parameterr xpp_ec can override at run-time */
@@ -1376,7 +1377,7 @@ static void xpp_receiveprep(xpd_t *xpd)
spin_lock_irqsave(&xpd->lock, flags);
// if((xpd->timer_count % 1000) == 0)
- // DBG("%d\n", xpd->timer_count);
+ // XPD_DBG(xpd, "%d\n", xpd->timer_count);
if (xpd->timer_count & 1) {
/* First part */
@@ -1452,7 +1453,7 @@ int xpp_close(struct zt_chan *chan)
xpd->xops->card_close(xpd, pos);
DBG("chan=%d (open_counter=%d, should_remove=%d)\n", pos, xbus->open_counter, should_remove);
if(should_remove) {
- DBG("Going to remove: %s\n", xbus->busname);
+ XBUS_DBG(xbus, "Going to remove\n");
xbus_remove(xbus);
}
return 0;
@@ -1509,7 +1510,7 @@ int xpp_maint(struct zt_span *span, int cmd)
#endif
BUG_ON(!xpd);
- DBG("%s: span->mainttimer=%d\n", __FUNCTION__, span->mainttimer);
+ DBG("span->mainttimer=%d\n", span->mainttimer);
switch(cmd) {
case ZT_MAINT_NONE:
printk("XXX Turn off local and remote loops XXX\n");
@@ -1619,7 +1620,7 @@ static int zaptel_unregister_xpd(xpd_t *xpd)
spin_lock_irqsave(&xpd->lock, flags);
if(!SPAN_REGISTERED(xpd)) {
- NOTICE("%s/%s is already unregistered\n", xpd->xbus->busname, xpd->xpdname);
+ XPD_NOTICE(xpd, "Already unregistered\n");
spin_unlock_irqrestore(&xpd->lock, flags);
return -EIDRM;
}
@@ -1627,7 +1628,7 @@ static int zaptel_unregister_xpd(xpd_t *xpd)
sync_master_is(NULL); // FIXME: it's better to elect a new prince
update_xpd_status(xpd, ZT_ALARM_NOTOPEN);
if(atomic_read(&xpd->open_counter)) {
- NOTICE("%s/%s is busy (open_counter=%d). Skipping.\n", xpd->xbus->busname, xpd->xpdname, atomic_read(&xpd->open_counter));
+ XPD_NOTICE(xpd, "Busy (open_counter=%d). Skipping.\n", atomic_read(&xpd->open_counter));
spin_unlock_irqrestore(&xpd->lock, flags);
return -EBUSY;
}
@@ -1657,12 +1658,11 @@ static int zaptel_register_xpd(xpd_t *xpd)
xbus = xpd->xbus;
if (SPAN_REGISTERED(xpd)) {
- ERR("xpd %s already registered\n", xpd->xpdname);
+ XPD_ERR(xpd, "Already registered\n");
return -EEXIST;
}
cn = xpd->channels;
- DBG("%s/%s: Initializing span: %d channels.\n",
- xbus->busname, xpd->xpdname, cn);
+ XPD_DBG(xpd, "Initializing span: %d channels.\n", cn);
memset(xpd->chans, 0, sizeof(struct zt_chan)*cn);
memset(&xpd->span, 0, sizeof(struct zt_span));
@@ -1689,13 +1689,12 @@ static int zaptel_register_xpd(xpd_t *xpd)
span->watchdog = xpp_watchdog;
#endif
- DBG("Registering span of %s.\n", xpd->xpdname);
snprintf(xpd->span.desc, MAX_SPANDESC, "Xorcom XPD #%02d/%1d%1d: %s",
xbus->num, xpd->addr.unit, xpd->addr.subunit, xpd->type_name);
+ XPD_DBG(xpd, "Registering span '%s'\n", xpd->span.desc);
xpd->xops->card_zaptel_preregistration(xpd, 1);
if(zt_register(&xpd->span, prefmaster)) {
- xbus_t *xbus = xpd->xbus;
- ERR("%s/%s: Failed to zt_register span\n", xbus->busname, xpd->xpdname);
+ XPD_ERR(xpd, "Failed to zt_register span\n");
return -ENODEV;
}
atomic_inc(&xpd->zt_registered);
@@ -1716,8 +1715,7 @@ static int zaptel_register_xpd(xpd_t *xpd)
struct zt_chan *chans = xpd->span.chans;
if(IS_SET(xpd->offhook, cn)) {
- NOTICE("%s/%s/%d: Report OFFHOOK to zaptel\n",
- xbus->busname, xpd->xpdname, cn);
+ LINE_NOTICE(xpd, cn, "Report OFFHOOK to zaptel\n");
zt_hooksig(&chans[cn], ZT_RXSIG_OFFHOOK);
}
}
@@ -1760,29 +1758,29 @@ int __init xpp_zap_init(void)
int ret = 0;
struct proc_dir_entry *ent;
- INFO("%s revision %s MAX_XPDS=%d (%d*%d)\n", THIS_MODULE->name, XPP_VERSION,
+ INFO("revision %s MAX_XPDS=%d (%d*%d)\n", XPP_VERSION,
MAX_XPDS, MAX_UNIT, MAX_SUBUNIT);
#if WITH_ECHO_SUPPRESSION
- INFO("FEATURE: %s with ECHO_SUPPRESSION\n", THIS_MODULE->name);
+ INFO("FEATURE: with ECHO_SUPPRESSION\n");
#else
- INFO("FEATURE: %s without ECHO_SUPPRESSION\n", THIS_MODULE->name);
+ INFO("FEATURE: without ECHO_SUPPRESSION\n");
#endif
if (xpp_ec)
- INFO("FEATURE: %s with XPP_EC_CHUNK\n", THIS_MODULE->name);
+ INFO("FEATURE: with XPP_EC_CHUNK\n");
else
- INFO("FEATURE: %s without XPP_EC_CHUNK\n", THIS_MODULE->name);
+ INFO("FEATURE: without XPP_EC_CHUNK\n");
#ifdef CONFIG_ZAPATA_BRI_DCHANS
- INFO("FEATURE: %s with BRISTUFF support\n", THIS_MODULE->name);
+ INFO("FEATURE: with BRISTUFF support\n");
#else
- INFO("FEATURE: %s without BRISTUFF support\n", THIS_MODULE->name);
+ INFO("FEATURE: without BRISTUFF support\n");
#endif
#ifdef ZAPTEL_SYNC_TICK
- INFO("FEATURE: %s with sync_tick() from ZAPTEL\n", THIS_MODULE->name);
+ INFO("FEATURE: with sync_tick() from ZAPTEL\n");
#else
- INFO("FEATURE: %s without sync_tick() from ZAPTEL\n", THIS_MODULE->name);
+ INFO("FEATURE: without sync_tick() from ZAPTEL\n");
#endif
#ifdef OPTIMIZE_CHANMUTE
- INFO("FEATURE: %s with CHANMUTE optimization\n", THIS_MODULE->name);
+ INFO("FEATURE: with CHANMUTE optimization\n");
#endif
#ifdef CONFIG_PROC_FS
xpp_proc_toplevel = proc_mkdir(PROC_DIR, NULL);