summaryrefslogtreecommitdiff
path: root/xpp/card_bri.c
diff options
context:
space:
mode:
Diffstat (limited to 'xpp/card_bri.c')
-rw-r--r--xpp/card_bri.c152
1 files changed, 76 insertions, 76 deletions
diff --git a/xpp/card_bri.c b/xpp/card_bri.c
index a2d4539..ce7b0c7 100644
--- a/xpp/card_bri.c
+++ b/xpp/card_bri.c
@@ -42,6 +42,7 @@ static const char rcsid[] = "$Id$";
DEF_PARM(int, print_dbg, 0, 0644, "Print DBG statements"); /* must be before zap_debug.h */
DEF_PARM(uint, poll_interval, 500, 0644, "Poll channel state interval in milliseconds (0 - disable)");
+DEF_PARM_BOOL(nt_keepalive, 1, 0644, "Force BRI_NT to keep trying connection");
#ifdef DEBUG_PCMTX
DEF_PARM(int, pcmtx, -1, 0644, "Forced PCM value to transmit (negative to disable)");
DEF_PARM(int, pcmtx_chan, 0, 0644, "channel to force PCM value");
@@ -262,7 +263,7 @@ static void dump_hex_buf(xpd_t *xpd, char *msg, byte *buf, size_t len)
debug_buf[0] = '\0';
for(i = 0; i < len && n < DEBUG_BUF_SIZE; i++)
n += snprintf(&debug_buf[n], DEBUG_BUF_SIZE - n, "%02X ", buf[i]);
- XPD_DBG(xpd, "%s[0..%d]: %s%s\n", msg, len-1, debug_buf,
+ XPD_DBG(GENERAL, xpd, "%s[0..%d]: %s%s\n", msg, len-1, debug_buf,
(n >= DEBUG_BUF_SIZE)?"...":"");
}
@@ -310,7 +311,7 @@ static void layer1_state(xpd_t *xpd, bool up)
if(priv->layer1_up == up)
return;
priv->layer1_up = up;
- XPD_DBG(xpd, "STATE CHANGE: Layer1 %s\n", (up)?"UP":"DOWN");
+ XPD_DBG(SIGNAL, xpd, "STATE CHANGE: Layer1 %s\n", (up)?"UP":"DOWN");
}
static void dchan_state(xpd_t *xpd, bool up)
@@ -323,10 +324,10 @@ static void dchan_state(xpd_t *xpd, bool up)
if(priv->dchan_alive == up)
return;
if(up) {
- XPD_DBG(xpd, "STATE CHANGE: D-Channel RUNNING\n");
+ XPD_DBG(SIGNAL, xpd, "STATE CHANGE: D-Channel RUNNING\n");
priv->dchan_alive = 1;
} else {
- XPD_DBG(xpd, "STATE CHANGE: D-Channel STOPPED\n");
+ XPD_DBG(SIGNAL, xpd, "STATE CHANGE: D-Channel STOPPED\n");
priv->dchan_rx_counter = priv->dchan_tx_counter = priv->dchan_rx_drops = 0;
priv->dchan_alive = 0;
priv->dchan_alive_ticks = 0;
@@ -342,27 +343,27 @@ static void xpd_activation(xpd_t *xpd, bool on)
priv = xpd->priv;
BUG_ON(!priv);
xbus = xpd->xbus;
- XPD_DBG(xpd, "%s\n", (on)?"ON":"OFF");
+ XPD_DBG(SIGNAL, xpd, "%s\n", (on)?"ON":"OFF");
switch(xpd->type) {
case XPD_TYPE_BRI_TE:
if(on) {
- XPD_DBG(xpd, "HFC_L1_ACTIVATE_TE\n");
+ XPD_DBG(SIGNAL, xpd, "HFC_L1_ACTIVATE_TE\n");
set_bit(HFC_L1_ACTIVATING, &priv->l1_flags);
write_state_register(xpd, STA_ACTIVATE);
priv->t3 = HFC_TIMER_T3;
} else {
- XPD_DBG(xpd, "HFC_L1_FORCE_DEACTIVATE_TE\n");
+ XPD_DBG(SIGNAL, xpd, "HFC_L1_FORCE_DEACTIVATE_TE\n");
write_state_register(xpd, STA_DEACTIVATE);
}
break;
case XPD_TYPE_BRI_NT:
if(on) {
- XPD_DBG(xpd, "HFC_L1_ACTIVATE_NT\n");
+ XPD_DBG(SIGNAL, xpd, "HFC_L1_ACTIVATE_NT\n");
priv->t1 = TIMER_T1_MAX;
set_bit(HFC_L1_ACTIVATING, &priv->l1_flags);
write_state_register(xpd, STA_ACTIVATE | V_SU_SET_G2_G3);
} else {
- XPD_DBG(xpd, "HFC_L1_DEACTIVATE_NT\n");
+ XPD_DBG(SIGNAL, xpd, "HFC_L1_DEACTIVATE_NT\n");
write_state_register(xpd, STA_DEACTIVATE);
}
break;
@@ -408,7 +409,7 @@ static int rx_dchan(xpd_t *xpd, reg_cmd_t *regcmd)
static int rate_limit;
if((rate_limit++ % 1000) == 0)
- XPD_DBG(xpd, "D-Chan unused\n");
+ XPD_DBG(SIGNAL, xpd, "D-Chan unused\n");
dchan->bytes2receive = 0;
dchan->bytes2transmit = 0;
goto out;
@@ -489,7 +490,7 @@ static int send_bri_multibyte(xpd_t *xpd, byte *buf, int len, bool eoftx)
if(len > 0) {
memcpy(REG_XDATA(reg_cmd), (byte *)buf, len);
} else {
- XPD_DBG(xpd, "Magic Packet (eoftx=%d)\n", eoftx);
+ XPD_DBG(REGS, xpd, "Magic Packet (eoftx=%d)\n", eoftx);
}
#ifdef XPP_DEBUGFS
xbus_log(xbus, xpd, 1, reg_cmd, sizeof(reg_cmd_t)); /* 1 = TX */
@@ -523,7 +524,7 @@ static int tx_dchan(xpd_t *xpd)
/* timer expired ? */
if (--priv->t3 == 0) {
if ((rate_limit % 1003) >= 5)
- XPD_DBG(xpd, "T3 expired\n");
+ XPD_DBG(SIGNAL, xpd, "T3 expired\n");
priv->t3 = HFC_TIMER_OFF;
clear_bit(HFC_L1_ACTIVATING, &priv->l1_flags);
xpd_activation(xpd, 0); /* Deactivate TE */
@@ -533,7 +534,7 @@ static int tx_dchan(xpd_t *xpd)
/* timer expired ? */
if (--priv->t4 == 0) {
if ((rate_limit % 1003) >= 5)
- XPD_DBG(xpd, "T4 expired\n");
+ XPD_DBG(SIGNAL, xpd, "T4 expired\n");
priv->t4 = HFC_TIMER_OFF;
}
}
@@ -555,7 +556,7 @@ static int tx_dchan(xpd_t *xpd)
return -EINVAL;
}
if(!test_bit(HFC_L1_ACTIVATED, &priv->l1_flags) && !test_bit(HFC_L1_ACTIVATING, &priv->l1_flags)) {
- XPD_DBG(xpd, "Kick D-Channel transmiter\n");
+ XPD_DBG(SIGNAL, xpd, "Want to transmit: Kick D-Channel transmiter\n");
xpd_activation(xpd, 1);
return 0;
}
@@ -581,7 +582,7 @@ static xpd_t *BRI_card_new(xbus_t *xbus, int unit, int subunit, const xproto_tab
xpd_t *xpd = NULL;
int channels = min(3, CHANNELS_PERXPD);
- XBUS_DBG(xbus, "\n");
+ XBUS_DBG(GENERAL, xbus, "\n");
xpd = xpd_alloc(sizeof(struct BRI_priv_data), proto_table, channels);
if(!xpd)
return NULL;
@@ -597,15 +598,15 @@ static void clean_proc(xbus_t *xbus, xpd_t *xpd)
BUG_ON(!xpd);
priv = xpd->priv;
- XPD_DBG(xpd, "\n");
+ XPD_DBG(PROC, xpd, "\n");
#ifdef CONFIG_PROC_FS
if(priv->regfile) {
- XPD_DBG(xpd, "Removing registers file\n");
+ XPD_DBG(PROC, xpd, "Removing registers file\n");
priv->regfile->data = NULL;
remove_proc_entry(PROC_REGISTER_FNAME, xpd->proc_xpd_dir);
}
if(priv->bri_info) {
- XPD_DBG(xpd, "Removing xpd BRI_INFO file\n");
+ XPD_DBG(PROC, xpd, "Removing xpd BRI_INFO file\n");
remove_proc_entry(PROC_BRI_INFO_FNAME, xpd->proc_xpd_dir);
}
#endif
@@ -617,10 +618,10 @@ static int BRI_card_init(xbus_t *xbus, xpd_t *xpd)
int ret = 0;
BUG_ON(!xpd);
- XPD_DBG(xpd, "\n");
+ XPD_DBG(GENERAL, xpd, "\n");
priv = xpd->priv;
#ifdef CONFIG_PROC_FS
- XPD_DBG(xpd, "Creating BRI_INFO file\n");
+ XPD_DBG(PROC, xpd, "Creating BRI_INFO file\n");
priv->bri_info = create_proc_read_entry(PROC_BRI_INFO_FNAME, 0444, xpd->proc_xpd_dir, proc_bri_info_read, xpd);
if(!priv->bri_info) {
XPD_ERR(xpd, "Failed to create proc file '%s'\n", PROC_BRI_INFO_FNAME);
@@ -628,7 +629,7 @@ static int BRI_card_init(xbus_t *xbus, xpd_t *xpd)
goto err;
}
priv->bri_info->owner = THIS_MODULE;
- XPD_DBG(xpd, "Creating registers file\n");
+ XPD_DBG(PROC, xpd, "Creating registers file\n");
priv->regfile = create_proc_entry(PROC_REGISTER_FNAME, 0644, xpd->proc_xpd_dir);
if(!priv->regfile) {
XPD_ERR(xpd, "Failed to create proc file '%s'\n", PROC_REGISTER_FNAME);
@@ -648,7 +649,7 @@ static int BRI_card_init(xbus_t *xbus, xpd_t *xpd)
* Force HOST sync *before* sending PCM
*/
CALL_PROTO(GLOBAL, SYNC_SOURCE, xbus, NULL, SYNC_MODE_HOST, 0);
- XPD_DBG(xpd, "done\n");
+ XPD_DBG(PROC, xpd, "done\n");
priv->initialized = 1;
return 0;
err:
@@ -663,7 +664,7 @@ static int BRI_card_remove(xbus_t *xbus, xpd_t *xpd)
BUG_ON(!xpd);
priv = xpd->priv;
- XPD_DBG(xpd, "\n");
+ XPD_DBG(GENERAL, xpd, "\n");
clean_proc(xbus, xpd);
return 0;
}
@@ -681,7 +682,7 @@ static int BRI_card_zaptel_preregistration(xpd_t *xpd, bool on)
xbus = xpd->xbus;
priv = xpd->priv;
BUG_ON(!xbus);
- XPD_DBG(xpd, "%s\n", (on)?"on":"off");
+ XPD_DBG(GENERAL, xpd, "%s\n", (on)?"on":"off");
if(!on) {
/* Nothing to do yet */
return 0;
@@ -692,7 +693,7 @@ static int BRI_card_zaptel_preregistration(xpd_t *xpd, bool on)
for_each_line(xpd, i) {
struct zt_chan *cur_chan = &xpd->chans[i];
- XPD_DBG(xpd, "setting BRI channel %d\n", i);
+ XPD_DBG(GENERAL, xpd, "setting BRI channel %d\n", i);
snprintf(cur_chan->name, MAX_CHANNAME, "XPP_%s/%02d/%1d%1d/%d",
xpd->xproto->name, xbus->num,
xpd->addr.unit, xpd->addr.subunit, i);
@@ -756,13 +757,13 @@ static int BRI_card_zaptel_postregistration(xpd_t *xpd, bool on)
xbus = xpd->xbus;
priv = xpd->priv;
BUG_ON(!xbus);
- XPD_DBG(xpd, "%s\n", (on)?"on":"off");
+ XPD_DBG(GENERAL, xpd, "%s\n", (on)?"on":"off");
return(0);
}
int BRI_card_hooksig(xbus_t *xbus, xpd_t *xpd, int pos, zt_txsig_t txsig)
{
- LINE_DBG(xpd, pos, "%s\n", txsig2str(txsig));
+ LINE_DBG(SIGNAL, xpd, pos, "%s\n", txsig2str(txsig));
return 0;
}
@@ -847,9 +848,16 @@ static int BRI_card_tick(xbus_t *xbus, xpd_t *xpd)
if(!priv->initialized)
return 0;
if(poll_interval != 0 && (priv->tick_counter % poll_interval) == 0) {
- // XPD_DBG(xpd, "%d\n", priv->tick_counter);
+ // XPD_DBG(GENERAL, xpd, "%d\n", priv->tick_counter);
priv->poll_counter++;
CALL_PROTO(BRI, REGISTER_REQUEST, xbus, xpd, 0, 0, 0, A_SU_RD_STA, 0, 0, 0);
+
+ if(IS_NT(xpd) && nt_keepalive &&
+ !test_bit(HFC_L1_ACTIVATED, &priv->l1_flags) &&
+ !test_bit(HFC_L1_ACTIVATING, &priv->l1_flags)) {
+ XPD_DBG(SIGNAL, xpd, "Kick NT D-Channel\n");
+ xpd_activation(xpd, 1);
+ }
}
/* Detect D-Channel disconnect heuristic */
priv->dchan_notx_ticks++;
@@ -876,10 +884,10 @@ static int BRI_card_tick(xbus_t *xbus, xpd_t *xpd)
handle_leds(xbus, xpd);
tx_dchan(xpd);
/* Detect T1 timer expiry on NT */
- if(IS_NT(xpd)) {
+ if(IS_NT(xpd) && !nt_keepalive) {
if (priv->t1 > HFC_TIMER_OFF) {
if (--priv->t1 == 0) {
- XPD_DBG(xpd, "T1 Expired. Kick NT\n");
+ XPD_DBG(SIGNAL, xpd, "T1 Expired. Deactivate NT\n");
priv->t1 = HFC_TIMER_OFF;
clear_bit(HFC_L1_ACTIVATING, &priv->l1_flags);
write_state_register(xpd, STA_DEACTIVATE);
@@ -930,7 +938,7 @@ static int bri_spanconfig(struct zt_span *span, struct zt_lineconfig *lc)
/* E1's can enable CRC checking */
if (lc->lineconfig & ZT_CONFIG_CRC4)
crcstr = "CRC4";
- XPD_DBG(xpd, "[%s]: span=%d (%s) lbo=%d lineconfig=%s/%s/%s (0x%X) sync=%d\n",
+ XPD_DBG(GENERAL, xpd, "[%s]: span=%d (%s) lbo=%d lineconfig=%s/%s/%s (0x%X) sync=%d\n",
IS_NT(xpd)?"NT":"TE",
lc->span,
lc->name,
@@ -952,7 +960,7 @@ static int bri_spanconfig(struct zt_span *span, struct zt_lineconfig *lc)
*/
static int bri_chanconfig(struct zt_chan *chan, int sigtype)
{
- DBG("channel %d (%s) -> %s\n", chan->channo, chan->name, sig2str(sigtype));
+ DBG(GENERAL, "channel %d (%s) -> %s\n", chan->channo, chan->name, sig2str(sigtype));
// FIXME: sanity checks:
// - should be supported (within the sigcap)
// - should not replace fxs <->fxo ??? (covered by previous?)
@@ -972,10 +980,10 @@ static int bri_startup(struct zt_span *span)
priv = xpd->priv;
BUG_ON(!priv);
if(!xpd->xbus->hardware_exists) {
- XPD_DBG(xpd, "Startup called by zaptel. No Hardware. Ignored\n");
+ XPD_DBG(GENERAL, xpd, "Startup called by zaptel. No Hardware. Ignored\n");
return -ENODEV;
}
- XPD_DBG(xpd, "STARTUP\n");
+ XPD_DBG(GENERAL, xpd, "STARTUP\n");
// Turn on all channels
CALL_XMETHOD(XPD_STATE, xpd->xbus, xpd, 1);
write_state_register(xpd, 0); /* Enable L1 state machine */
@@ -1007,10 +1015,10 @@ static int bri_shutdown(struct zt_span *span)
priv = xpd->priv;
BUG_ON(!priv);
if(!xpd->xbus->hardware_exists) {
- XPD_DBG(xpd, "Shutdown called by zaptel. No Hardware. Ignored\n");
+ XPD_DBG(GENERAL, xpd, "Shutdown called by zaptel. No Hardware. Ignored\n");
return -ENODEV;
}
- XPD_DBG(xpd, "SHUTDOWN\n");
+ XPD_DBG(GENERAL, xpd, "SHUTDOWN\n");
// Turn off all channels
CALL_XMETHOD(XPD_STATE, xpd->xbus, xpd, 0);
if(IS_NT(xpd))
@@ -1118,16 +1126,14 @@ static void BRI_card_pcm_tospan(xbus_t *xbus, xpd_t *xpd, xpacket_t *pack)
reg_cmd_t *reg_cmd;
if(!xbus) {
- DBG("NO XBUS\n");
+ DBG(GENERAL, "NO XBUS\n");
return -EINVAL;
}
XFRAME_NEW(xframe, pack, xbus, BRI, REGISTER_REQUEST, xpd->xbus_idx);
-#if 0
- LINE_DBG(xpd, chipsel, "%c%c R%02X S%02X %02X %02X\n",
+ LINE_DBG(REGS, xpd, chipsel, "%c%c R%02X S%02X %02X %02X\n",
(writing)?'W':'R',
(do_subreg)?'S':'D',
regnum, subreg, data_low, data_high);
-#endif
reg_cmd = &RPACKET_FIELD(pack, BRI, REGISTER_REQUEST, reg_cmd);
reg_cmd->bytes = sizeof(*reg_cmd) - 1; // do not count the 'bytes' field
REG_FIELD(reg_cmd, chipsel) = chipsel;
@@ -1144,7 +1150,7 @@ static void BRI_card_pcm_tospan(xbus_t *xbus, xpd_t *xpd, xpacket_t *pack)
/* 0x0F */ HOSTCMD(BRI, XPD_STATE, bool on)
{
BUG_ON(!xpd);
- XPD_DBG(xpd, "%s\n", (on)?"ON":"OFF");
+ XPD_DBG(GENERAL, xpd, "%s\n", (on)?"ON":"OFF");
xpd_activation(xpd, on);
return 0;
}
@@ -1172,11 +1178,9 @@ static void BRI_card_pcm_tospan(xbus_t *xbus, xpd_t *xpd, xpacket_t *pack)
BUG_ON(!xbus);
priv = xpd->priv;
BUG_ON(!priv);
-#if 0
- XPD_DBG(xpd, "%s -> %d\n",
+ XPD_DBG(LEDS, xpd, "%s -> %d\n",
(which_led)?"RED":"GREEN",
to_led_state);
-#endif
XFRAME_NEW(xframe, pack, xbus, BRI, SET_LED, xpd->xbus_idx);
bri_leds = &RPACKET_FIELD(pack, BRI, SET_LED, bri_leds);
bri_leds->state = to_led_state;
@@ -1191,7 +1195,7 @@ static int write_state_register(xpd_t *xpd, byte value)
{
int ret;
- XPD_DBG(xpd, "value = 0x%02X\n", value);
+ XPD_DBG(REGS, xpd, "value = 0x%02X\n", value);
ret = CALL_PROTO(BRI, REGISTER_REQUEST, xpd->xbus, xpd,
0, /* chipsel */
1, /* writing */
@@ -1250,32 +1254,32 @@ static void su_new_state(xpd_t *xpd, byte reg_x30)
}
if (priv->state_register.bits.v_su_sta == new_state.bits.v_su_sta)
return; /* same same */
- DBG("%02X ---> %02X\n", priv->state_register.reg, reg_x30);
- XPD_DBG(xpd, "%s%i\n", IS_NT(xpd)?"G":"F", new_state.bits.v_su_sta);
+ DBG(SIGNAL, "%02X ---> %02X\n", priv->state_register.reg, reg_x30);
+ XPD_DBG(SIGNAL, xpd, "%s%i\n", IS_NT(xpd)?"G":"F", new_state.bits.v_su_sta);
if(!IS_NT(xpd)) {
/* disable T3 ? */
if ((new_state.bits.v_su_sta <= ST_TE_DEACTIVATED) || (new_state.bits.v_su_sta >= ST_TE_ACTIVATED)) {
- XPD_DBG(xpd, "Disable T3 ?\n");
+ XPD_DBG(SIGNAL, xpd, "Disable T3 ?\n");
priv->t3 = HFC_TIMER_OFF;
}
switch (new_state.bits.v_su_sta) {
case ST_TE_DEACTIVATED: /* F3 */
- XPD_DBG(xpd, "State ST_TE_DEACTIVATED (F3)\n");
+ XPD_DBG(SIGNAL, xpd, "State ST_TE_DEACTIVATED (F3)\n");
if (test_and_clear_bit(HFC_L1_ACTIVATED, &priv->l1_flags))
priv->t4 = HFC_TIMER_T4;
break;
case ST_TE_SIGWAIT: /* F4 */
- XPD_DBG(xpd, "State ST_TE_SIGWAIT (F4)\n");
+ XPD_DBG(SIGNAL, xpd, "State ST_TE_SIGWAIT (F4)\n");
break;
case ST_TE_IDENT: /* F5 */
- XPD_DBG(xpd, "State ST_TE_IDENT (F5)\n");
+ XPD_DBG(SIGNAL, xpd, "State ST_TE_IDENT (F5)\n");
break;
case ST_TE_SYNCED: /* F6 */
- XPD_DBG(xpd, "State ST_TE_SYNCED (F6)\n");
+ XPD_DBG(SIGNAL, xpd, "State ST_TE_SYNCED (F6)\n");
break;
case ST_TE_ACTIVATED: /* F7 */
- XPD_DBG(xpd, "State ST_TE_ACTIVATED (F7)\n");
+ XPD_DBG(SIGNAL, xpd, "State ST_TE_ACTIVATED (F7)\n");
if (priv->t4 > HFC_TIMER_OFF)
priv->t4 = HFC_TIMER_OFF;
clear_bit(HFC_L1_ACTIVATING, &priv->l1_flags);
@@ -1284,7 +1288,7 @@ static void su_new_state(xpd_t *xpd, byte reg_x30)
break;
case ST_TE_LOST_FRAMING: /* F8 */
- XPD_DBG(xpd, "State ST_TE_LOST_FRAMING (F8)\n");
+ XPD_DBG(SIGNAL, xpd, "State ST_TE_LOST_FRAMING (F8)\n");
priv->t4 = HFC_TIMER_OFF;
break;
default:
@@ -1295,22 +1299,22 @@ static void su_new_state(xpd_t *xpd, byte reg_x30)
} else if(IS_NT(xpd)) {
switch (new_state.bits.v_su_sta) {
case ST_NT_DEACTIVATED: /* G1 */
- XPD_DBG(xpd, "State ST_NT_DEACTIVATED (G1)\n");
+ XPD_DBG(SIGNAL, xpd, "State ST_NT_DEACTIVATED (G1)\n");
clear_bit(HFC_L1_ACTIVATED, &priv->l1_flags);
priv->t1 = HFC_TIMER_OFF;
break;
case ST_NT_ACTIVATING: /* G2 */
- XPD_DBG(xpd, "State ST_NT_ACTIVATING (G2)\n");
+ XPD_DBG(SIGNAL, xpd, "State ST_NT_ACTIVATING (G2)\n");
xpd_activation(xpd, 1);
break;
case ST_NT_ACTIVATED: /* G3 */
- XPD_DBG(xpd, "State ST_NT_ACTIVATED (G3)\n");
+ XPD_DBG(SIGNAL, xpd, "State ST_NT_ACTIVATED (G3)\n");
clear_bit(HFC_L1_ACTIVATING, &priv->l1_flags);
set_bit(HFC_L1_ACTIVATED, &priv->l1_flags);
priv->t1 = HFC_TIMER_OFF;
break;
case ST_NT_DEACTIVTING: /* G4 */
- XPD_DBG(xpd, "State ST_NT_DEACTIVTING (G4)\n");
+ XPD_DBG(SIGNAL, xpd, "State ST_NT_DEACTIVTING (G4)\n");
priv->t1 = HFC_TIMER_OFF;
break;
default:
@@ -1338,21 +1342,17 @@ HANDLER_DEF(BRI, REGISTER_REPLY)
spin_lock_irqsave(&xpd->lock, flags);
priv = xpd->priv;
BUG_ON(!priv);
-#if 0
if(REG_FIELD(info, do_subreg)) {
- XPD_DBG(xpd, "REGISTER_REPLY: RS %02X %02X %02X\n",
+ XPD_DBG(REGS, xpd, "REGISTER_REPLY: RS %02X %02X %02X\n",
REG_FIELD(info, regnum), REG_FIELD(info, subreg), REG_FIELD(info, data_low));
} else {
if (REG_FIELD(info, regnum) != A_SU_RD_STA)
- XPD_DBG(xpd, "REGISTER_REPLY: RD %02X %02X\n",
+ XPD_DBG(REGS, xpd, "REGISTER_REPLY: RD %02X %02X\n",
REG_FIELD(info, regnum), REG_FIELD(info, data_low));
}
-#endif
if(info->multibyte) {
-#if 0
- XPD_DBG(xpd, "Got Multibyte: %d bytes, eoframe: %d\n",
+ XPD_DBG(REGS, xpd, "Got Multibyte: %d bytes, eoframe: %d\n",
info->bytes, info->eoframe);
-#endif
ret = rx_dchan(xpd, info);
if (ret < 0) {
priv->dchan_rx_drops++;
@@ -1437,7 +1437,7 @@ static bool bri_packet_is_valid(xpacket_t *pack)
{
const xproto_entry_t *xe_nt = NULL;
const xproto_entry_t *xe_te = NULL;
- // DBG("\n");
+ // DBG(GENERAL, "\n");
xe_nt = xproto_card_entry(&PROTO_TABLE(BRI_NT), pack->opcode);
xe_te = xproto_card_entry(&PROTO_TABLE(BRI_TE), pack->opcode);
return xe_nt != NULL || xe_te != NULL;
@@ -1445,7 +1445,7 @@ static bool bri_packet_is_valid(xpacket_t *pack)
static void bri_packet_dump(const char *msg, xpacket_t *pack)
{
- DBG("%s\n", msg);
+ DBG(GENERAL, "%s\n", msg);
}
/*------------------------- REGISTER Handling --------------------------*/
@@ -1456,7 +1456,7 @@ static int proc_bri_info_read(char *page, char **start, off_t off, int count, in
xpd_t *xpd = data;
struct BRI_priv_data *priv;
- DBG("\n");
+ DBG(PROC, "\n");
if(!xpd)
return -ENODEV;
spin_lock_irqsave(&xpd->lock, flags);
@@ -1543,6 +1543,10 @@ static int handle_register_command(xpd_t *xpd, char *cmdline)
struct BRI_priv_data *priv;
byte buf[MAX_PROC_WRITE];
+ BUG_ON(!xpd);
+ xbus = xpd->xbus;
+ priv = xpd->priv;
+ BUG_ON(!priv);
if((p = strchr(cmdline, '#')) != NULL) /* Truncate comments */
*p = '\0';
if((p = strchr(cmdline, ';')) != NULL) /* Truncate comments */
@@ -1558,7 +1562,7 @@ static int handle_register_command(xpd_t *xpd, char *cmdline)
&op, &reg_type, &reg_num,
&subreg,
&data, &xdata1, &xdata2);
- // DBG("'%s': %d %c%c %02X %02X %02X\n", cmdline, chipsel, op, reg_type, reg_num, subreg, data);
+ XPD_DBG(PROC, xpd, "'%s': %d %c%c %02X %02X %02X\n", cmdline, chipsel, op, reg_type, reg_num, subreg, data);
if(elements < 3) { // At least: chipsel, op, reg_type, reg_num
ERR("Not enough arguments: (%d args) '%s'\n", elements, cmdline);
return -EINVAL;
@@ -1623,14 +1627,10 @@ static int handle_register_command(xpd_t *xpd, char *cmdline)
regcmd.bytes = sizeof(regcmd) - 1;
REG_FIELD(&regcmd, read_request) = writing;
REG_FIELD(&regcmd, data_high) = 0;
- BUG_ON(!xpd);
- xbus = xpd->xbus;
if(!down_read_trylock(&xbus->in_use)) {
- XBUS_DBG(xbus, "Dropped packet. Is in_use\n");
+ XBUS_DBG(GENERAL, xbus, "Dropped packet. Is in_use\n");
return -EBUSY;
}
- priv = xpd->priv;
- BUG_ON(!priv);
priv->requested_reply = regcmd;
if(print_dbg)
dump_reg_cmd("BRI", &regcmd, 1);
@@ -1720,7 +1720,7 @@ static int proc_xpd_register_read(char *page, char **start, off_t off, int count
int __init card_bri_startup(void)
{
- DBG("\n");
+ DBG(GENERAL, "\n");
INFO("revision %s\n", XPP_VERSION);
xproto_register(&PROTO_TABLE(BRI_NT));
@@ -1730,7 +1730,7 @@ int __init card_bri_startup(void)
void __exit card_bri_cleanup(void)
{
- DBG("\n");
+ DBG(GENERAL, "\n");
xproto_unregister(&PROTO_TABLE(BRI_NT));
xproto_unregister(&PROTO_TABLE(BRI_TE));
}