548 lines
16 KiB
Plaintext
548 lines
16 KiB
Plaintext
--- wanpipe_tdm_api.c 2007-04-24 19:14:40.000000000 -0400
|
|
+++ /root/2.3.4/wanpipe/patches/kdrivers/src/net/wanpipe_tdm_api.c 2007-07-11 17:37:54.000000000 -0400
|
|
@@ -5,7 +5,7 @@
|
|
*
|
|
* Authors: Nenad Corbic <ncorbic@sangoma.com>
|
|
*
|
|
-* Copyright: (c) 2003-2007 Sangoma Technologies Inc.
|
|
+* Copyright: (c) 2003-2005 Sangoma Technologies Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
@@ -48,7 +48,6 @@
|
|
# include <linux/wanpipe_defines.h>
|
|
# include <linux/wanpipe.h>
|
|
# include <linux/if_wanpipe.h>
|
|
-# include <linux/wanpipe_cfg.h>
|
|
# include <linux/wanpipe_tdm_api.h>
|
|
#endif
|
|
|
|
@@ -62,6 +61,7 @@
|
|
#define WP_TDMAPI_MINOR_OFFSET 0
|
|
#define WP_TDMAPI_MAX_MINORS 1024
|
|
|
|
+
|
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) || defined(__WINDOWS__)
|
|
|
|
|
|
@@ -128,7 +128,6 @@
|
|
static int wp_tdmapi_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long data);
|
|
|
|
static void wanpipe_tdm_api_rbs_poll(wanpipe_tdm_api_dev_t *tdm_api);
|
|
-static void wanpipe_tdm_api_fe_alarm_event(wanpipe_tdm_api_dev_t *tdm_api, int state);
|
|
|
|
static void wp_tdmapi_rbsbits(void* card_id, int channel, unsigned char rbsbits);
|
|
static void wp_tdmapi_alarms(void* card_id, unsigned long alarams);
|
|
@@ -227,11 +226,10 @@
|
|
.owner = THIS_MODULE,
|
|
};
|
|
|
|
-
|
|
static int wp_tdmapi_reg_globals(void)
|
|
{
|
|
int err=0;
|
|
-
|
|
+
|
|
rx_gains=NULL;
|
|
tx_gains=NULL;
|
|
wan_spin_lock_init(&wp_tdmapi_hash_lock);
|
|
@@ -349,9 +347,9 @@
|
|
|
|
if (tdm_api->cfg.idle_flag == 0) {
|
|
tdm_api->cfg.idle_flag=0xFF;
|
|
- }
|
|
+ }
|
|
}
|
|
-
|
|
+
|
|
|
|
tdm_api->critical=0;
|
|
wan_clear_bit(0,&tdm_api->used);
|
|
@@ -441,15 +439,16 @@
|
|
return -ENODEV;
|
|
}
|
|
|
|
- tdm_api->state = (u8)state;
|
|
- tdm_api->cfg.fe_alarms = (state == WAN_CONNECTED ? 0 : 1);
|
|
+ if (tdm_api->state != state) {
|
|
+ tdm_api->state = (u8)state;
|
|
|
|
- if (wan_test_bit(0,&tdm_api->used)) {
|
|
- wanpipe_tdm_api_fe_alarm_event(tdm_api,state);
|
|
+ if (wan_test_bit(0,&tdm_api->used)) {
|
|
+ DEBUG_EVENT("%s: UPDATE STATE API\n",tdm_api->name);
|
|
#if !defined(__WINDOWS__)
|
|
- wp_wakeup_tdmapi(tdm_api);
|
|
+ wp_wakeup_tdmapi(tdm_api);
|
|
#endif
|
|
- }
|
|
+ }
|
|
+ }
|
|
|
|
return 0;
|
|
}
|
|
@@ -479,7 +478,6 @@
|
|
{
|
|
wanpipe_tdm_api_dev_t *tdm_api;
|
|
wan_smp_flag_t flags;
|
|
-
|
|
|
|
#if !defined(__WINDOWS__)
|
|
u32 tdm_span = WP_TDMAPI_GET_SPAN_FROM_MINOR(UNIT(file));
|
|
@@ -492,12 +490,12 @@
|
|
wan_spin_lock_irq(&wp_tdmapi_hash_lock,&flags);
|
|
tdm_api = wp_find_tdm_api_dev(wp_tdmapi_hash,
|
|
#if !defined(__WINDOWS__)
|
|
- UNIT(file),
|
|
+ UNIT(file),
|
|
#else
|
|
- (unsigned int)file,
|
|
+ (unsigned int)file,
|
|
#endif
|
|
- tdm_span,
|
|
- tdm_chan);
|
|
+ tdm_span,
|
|
+ tdm_chan);
|
|
|
|
if (!tdm_api){
|
|
wan_spin_unlock_irq(&wp_tdmapi_hash_lock,&flags);
|
|
@@ -1022,7 +1020,6 @@
|
|
/* Indicate an exception */
|
|
ret |= POLLPRI;
|
|
}
|
|
-
|
|
return ret;
|
|
}
|
|
|
|
@@ -1100,51 +1097,6 @@
|
|
#endif
|
|
}
|
|
|
|
-static void wanpipe_tdm_api_fe_alarm_event(wanpipe_tdm_api_dev_t *tdm_api, int state)
|
|
-{
|
|
- netskb_t *skb;
|
|
- wp_tdm_api_rx_hdr_t *rx_hdr = NULL;
|
|
-#if defined(__WINDOWS__)
|
|
- wp_tdm_api_rx_hdr_t tdm_api_hdr;
|
|
-#endif
|
|
-
|
|
- DEBUG_TEST("%s: TDM API State Event State=%i\n",
|
|
- tdm_api->name, tdm_api->state);
|
|
-
|
|
-#if defined(__WINDOWS__)
|
|
- rx_hdr = &tdm_api_hdr;
|
|
-#else
|
|
- if (wan_skb_queue_len(&tdm_api->wp_event_list) > WP_TDM_MAX_EVENT_Q_LEN) {
|
|
- return;
|
|
- }
|
|
- skb=wan_skb_alloc(sizeof(wp_tdm_api_rx_hdr_t));
|
|
- if (skb == NULL) {
|
|
- return;
|
|
- }
|
|
- rx_hdr=(wp_tdm_api_rx_hdr_t*)wan_skb_put(skb,sizeof(wp_tdm_api_rx_hdr_t));
|
|
-#endif/* #if !defined(__WINDOWS__) */
|
|
-
|
|
- memset(rx_hdr,0,sizeof(wp_tdm_api_rx_hdr_t));
|
|
- if (state == WAN_CONNECTED) {
|
|
- rx_hdr->wp_tdm_api_event_fe_alarm = 0;
|
|
- } else {
|
|
- rx_hdr->wp_tdm_api_event_fe_alarm = 1;
|
|
- }
|
|
- rx_hdr->wp_tdm_api_event_type = WP_TDM_EVENT_FE_ALARM;
|
|
-
|
|
-#if 0
|
|
- /* FIXME: NENAD TO ADD Timestamp */
|
|
- rx_hdr->event_time_stamp = gettimeofday();
|
|
-#endif
|
|
- rx_hdr->wp_tdm_api_event_channel = (u_int16_t)tdm_api->tdm_chan + 1;
|
|
-#if defined(__WINDOWS__)
|
|
- aft_te1_insert_tdm_api_event_in_to_rx_queue(tdm_api, rx_hdr);
|
|
- queue_tdm_api_rx_dpc(tdm_api);
|
|
-#else
|
|
- wan_skb_queue_tail(&tdm_api->wp_event_list,skb);
|
|
-#endif
|
|
-}
|
|
-
|
|
#if !defined(__WINDOWS__)
|
|
static
|
|
#endif
|
|
@@ -1156,6 +1108,7 @@
|
|
wanpipe_codec_ops_t *wp_codec_ops;
|
|
netskb_t *skb;
|
|
wan_event_ctrl_t event_ctrl;
|
|
+ sdla_t *card = (sdla_t*)tdm_api->card;
|
|
|
|
utdmapi = (wanpipe_tdm_api_cmd_t*)ifr->ifr_data;
|
|
|
|
@@ -1179,7 +1132,7 @@
|
|
#endif
|
|
cmd=usr_tdm_api.cmd;
|
|
|
|
- DEBUG_TDMAPI("%s: TDM API CMD: %i\n",tdm_api->name,cmd);
|
|
+ DEBUG_TEST("%s: TDM API CMD: %i\n",tdm_api->name,cmd);
|
|
|
|
wan_spin_lock(&tdm_api->lock);
|
|
|
|
@@ -1188,7 +1141,6 @@
|
|
case SIOC_WP_TDM_GET_USR_MTU_MRU:
|
|
case SIOC_WP_TDM_GET_STATS:
|
|
case SIOC_WP_TDM_GET_FULL_CFG:
|
|
- case SIOC_WP_TDM_READ_EVENT:
|
|
break;
|
|
default:
|
|
DEBUG_EVENT("%s: Invalid TDM API HDLC CMD %i\n", tdm_api->name,cmd);
|
|
@@ -1245,7 +1197,7 @@
|
|
goto tdm_api_exit;
|
|
}
|
|
|
|
- if (usr_tdm_api.tdm_codec >= WP_TDM_CODEC_MAX){
|
|
+ if ((int)usr_tdm_api.tdm_codec < 0 || usr_tdm_api.tdm_codec >= WP_TDM_CODEC_MAX){
|
|
err = -EINVAL;
|
|
goto tdm_api_exit;
|
|
}
|
|
@@ -1317,6 +1269,24 @@
|
|
}
|
|
break;
|
|
|
|
+ case SIOC_WP_TDM_ENABLE_HWEC:
|
|
+ if (card->wandev.ec_enable) {
|
|
+ wan_smp_flag_t smp_flags1;
|
|
+ card->hw_iface.hw_lock(card->hw,&smp_flags1);
|
|
+ card->wandev.ec_enable(card, 1, tdm_api->tdm_chan-1);
|
|
+ card->hw_iface.hw_unlock(card->hw,&smp_flags1);
|
|
+ }
|
|
+ break;
|
|
+
|
|
+ case SIOC_WP_TDM_DISABLE_HWEC:
|
|
+ if (card->wandev.ec_enable) {
|
|
+ wan_smp_flag_t smp_flags1;
|
|
+ card->hw_iface.hw_lock(card->hw,&smp_flags1);
|
|
+ card->wandev.ec_enable(card, 0, tdm_api->tdm_chan-1);
|
|
+ card->hw_iface.hw_unlock(card->hw,&smp_flags1);
|
|
+ }
|
|
+ break;
|
|
+
|
|
case SIOC_WP_TDM_GET_EC_TAP:
|
|
usr_tdm_api.ec_tap = tdm_api->cfg.ec_tap;
|
|
break;
|
|
@@ -1353,7 +1323,7 @@
|
|
event_ctrl.mode = WAN_EVENT_ENABLE;
|
|
event_ctrl.ts_map = tdm_api->active_ch;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
}
|
|
break;
|
|
|
|
@@ -1366,7 +1336,7 @@
|
|
event_ctrl.mode = WAN_EVENT_DISABLE;
|
|
event_ctrl.ts_map = tdm_api->active_ch;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
}
|
|
break;
|
|
|
|
@@ -1377,9 +1347,9 @@
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_DTMF;
|
|
event_ctrl.mode = WAN_EVENT_ENABLE;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
}
|
|
break;
|
|
case SIOC_WP_TDM_DISABLE_RM_DTMF_EVENTS:
|
|
@@ -1389,9 +1359,9 @@
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_DTMF;
|
|
event_ctrl.mode = WAN_EVENT_DISABLE;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
}
|
|
break;
|
|
|
|
@@ -1402,13 +1372,9 @@
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_LC;
|
|
event_ctrl.mode = WAN_EVENT_ENABLE;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
}
|
|
break;
|
|
|
|
@@ -1418,14 +1384,10 @@
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_LC;
|
|
event_ctrl.mode = WAN_EVENT_DISABLE;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
- }
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ }
|
|
break;
|
|
|
|
case SIOC_WP_TDM_ENABLE_RING_DETECT_EVENTS:
|
|
@@ -1435,14 +1397,10 @@
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_RING_DETECT;
|
|
event_ctrl.mode = WAN_EVENT_ENABLE;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
- }
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ }
|
|
break;
|
|
case SIOC_WP_TDM_DISABLE_RING_DETECT_EVENTS:
|
|
DEBUG_TDMAPI("%s: Disable Ring Detection Event on module %d!\n",
|
|
@@ -1451,14 +1409,10 @@
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_RING_DETECT;
|
|
event_ctrl.mode = WAN_EVENT_DISABLE;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
- }
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ }
|
|
break;
|
|
|
|
case SIOC_WP_TDM_ENABLE_RING_TRIP_DETECT_EVENTS:
|
|
@@ -1468,14 +1422,10 @@
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_RING_TRIP;
|
|
event_ctrl.mode = WAN_EVENT_ENABLE;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
- }
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ }
|
|
break;
|
|
case SIOC_WP_TDM_DISABLE_RING_TRIP_DETECT_EVENTS:
|
|
DEBUG_TDMAPI("%s: Disable Ring Trip Detection Event on module %d!\n",
|
|
@@ -1484,14 +1434,10 @@
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_RING_TRIP;
|
|
event_ctrl.mode = WAN_EVENT_DISABLE;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
- }
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ }
|
|
break;
|
|
|
|
case SIOC_WP_TDM_TXSIG_KEWL:
|
|
@@ -1500,14 +1446,10 @@
|
|
tdm_api->tdm_chan);
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_TXSIG_KEWL;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
- }
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ }
|
|
break;
|
|
|
|
case SIOC_WP_TDM_EVENT_TXSIG_START:
|
|
@@ -1516,14 +1458,10 @@
|
|
tdm_api->tdm_chan);
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_TXSIG_START;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
- }
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ }
|
|
break;
|
|
case SIOC_WP_TDM_EVENT_TXSIG_OFFHOOK:
|
|
DEBUG_TDMAPI("%s: TX Signalling OFFHOOK for module %d!\n",
|
|
@@ -1531,14 +1469,10 @@
|
|
tdm_api->tdm_chan);
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_TXSIG_OFFHOOK;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
- }
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ }
|
|
break;
|
|
case SIOC_WP_TDM_EVENT_TXSIG_ONHOOK:
|
|
DEBUG_TDMAPI("%s: TX Signalling ONHOOK for module %d!\n",
|
|
@@ -1546,14 +1480,10 @@
|
|
tdm_api->tdm_chan);
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_TXSIG_ONHOOK;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
- }
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ }
|
|
break;
|
|
case SIOC_WP_TDM_EVENT_ONHOOKTRANSFER:
|
|
DEBUG_TDMAPI("%s: RM ONHOOKTRANSFER for module %d!\n",
|
|
@@ -1561,30 +1491,22 @@
|
|
tdm_api->tdm_chan);
|
|
memset(&event_ctrl, 0, sizeof(wan_event_ctrl_t));
|
|
event_ctrl.type = WAN_EVENT_RM_ONHOOKTRANSFER;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
event_ctrl.ohttimer = usr_tdm_api.event.wp_tdm_api_event_ohttimer;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
- }
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ }
|
|
break;
|
|
case SIOC_WP_TDM_EVENT_SETPOLARITY:
|
|
DEBUG_EVENT("%s: RM SETPOLARITY for module %d!\n",
|
|
tdm_api->name,
|
|
tdm_api->tdm_chan);
|
|
event_ctrl.type = WAN_EVENT_RM_SETPOLARITY;
|
|
- event_ctrl.mod_no = tdm_api->tdm_chan-1;
|
|
+ event_ctrl.mod_no = tdm_api->tdm_chan;
|
|
event_ctrl.polarity = usr_tdm_api.event.wp_tdm_api_event_polarity;
|
|
if (tdm_api->event_ctrl){
|
|
- err = tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
- } else {
|
|
- DEBUG_EVENT("%s: Error: event_ctrl not supported!\n",
|
|
- tdm_api->name);
|
|
- err = -EINVAL;
|
|
- }
|
|
+ tdm_api->event_ctrl(tdm_api->chan, &event_ctrl);
|
|
+ }
|
|
break;
|
|
|
|
case SIOC_WP_TDM_WRITE_RBS_BITS:
|
|
@@ -1657,10 +1579,6 @@
|
|
|
|
break;
|
|
|
|
- case SIOC_WP_TDM_GET_FE_ALARMS:
|
|
- usr_tdm_api.fe_alarms = (tdm_api->state == WAN_CONNECTED ? 0 : 1);
|
|
- break;
|
|
-
|
|
case SIOC_WP_TDM_SET_TX_GAINS:
|
|
|
|
if (usr_tdm_api.data_len && utdmapi->data) {
|
|
@@ -1680,9 +1598,8 @@
|
|
}
|
|
|
|
#if defined(__WINDOWS__)
|
|
-//FIXME: implement
|
|
-//#error "FIX API CMD"
|
|
-// memcpy(&_api, ifr, sizeof(wanpipe_tdm_api_cmd_t));
|
|
+#error "FIX API CMD"
|
|
+ memcpy(&_api, ifr, sizeof(wanpipe_tdm_api_cmd_t));
|
|
#else
|
|
if (WAN_COPY_FROM_USER(tx_gains,
|
|
utdmapi->data,
|
|
@@ -1949,9 +1866,7 @@
|
|
for(i = 0; i < WP_TDMAPI_HASH_SZ; i++){
|
|
tdm_api = wp_tdmapi_hash[i];
|
|
|
|
- if (tdm_api == NULL || tdm_api->card != card){
|
|
- continue;
|
|
- }
|
|
+ if (tdm_api->card != card) continue;
|
|
if (wan_test_bit(fe_chan, &tdm_api->active_ch)){
|
|
return tdm_api;
|
|
}
|
|
@@ -1964,7 +1879,7 @@
|
|
{
|
|
sdla_t *card = (sdla_t*)card_id;
|
|
|
|
- DEBUG_EVENT("%s: Received RBS Event at TDM_API (not supported)!\n",
|
|
+ DEBUG_EVENT("ADBG> %s: Received RBS Event at TDM_API!\n",
|
|
card->devname);
|
|
return;
|
|
}
|
|
@@ -1973,7 +1888,7 @@
|
|
{
|
|
sdla_t *card = (sdla_t*)card_id;
|
|
|
|
- DEBUG_EVENT("%s: Received RBS Event at TDM_API (not supported)!\n",
|
|
+ DEBUG_EVENT("ADBG> %s: Received RBS Event at TDM_API!\n",
|
|
card->devname);
|
|
return;
|
|
}
|
|
@@ -2083,8 +1998,8 @@
|
|
#endif
|
|
|
|
memset(rx_hdr,0,sizeof(wp_tdm_api_rx_hdr_t));
|
|
- rx_hdr->wp_tdm_api_event_type = WP_TDM_EVENT_RXHOOK;
|
|
- rx_hdr->wp_tdm_api_event_channel = (u_int16_t)event->channel;
|
|
+ rx_hdr->wp_tdm_api_event_type = WP_TDM_EVENT_RXHOOK;
|
|
+ rx_hdr->wp_tdm_api_event_channel = (u_int16_t)event->channel;
|
|
rx_hdr->wp_tdm_api_event_rxhook_state = event->rxhook;
|
|
|
|
#if 0
|