summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Meyerriecks <rmeyerreicks@digium.com>2010-03-08 18:37:00 +0000
committerRuss Meyerriecks <rmeyerreicks@digium.com>2010-03-08 18:37:00 +0000
commitc2715f7534f6880fb371a284c0a30fcd9e1c7bac (patch)
treea716d4656314977addc45ad868d6e562f8473a81
parent65d996aea1dec7dfc9e84fd789d60671355d3960 (diff)
dahdi_maint: Added local loopback capability in E1 modes
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@8279 a0bf4364-ded3-4de4-8d8a-66a801d63aff
-rw-r--r--drivers/dahdi/wct4xxp/base.c8
-rw-r--r--drivers/dahdi/wcte12xp/base.c6
2 files changed, 12 insertions, 2 deletions
diff --git a/drivers/dahdi/wct4xxp/base.c b/drivers/dahdi/wct4xxp/base.c
index 62456f4..2109b34 100644
--- a/drivers/dahdi/wct4xxp/base.c
+++ b/drivers/dahdi/wct4xxp/base.c
@@ -1439,12 +1439,18 @@ static int t4_maint(struct dahdi_span *span, int cmd)
dev_info(&wc->dev->dev, "Clearing all maint modes\n");
break;
case DAHDI_MAINT_LOCALLOOP:
+ dev_info(&wc->dev->dev,
+ "Turning on local loopback\n");
+ t4_clear_maint(span);
+ reg = t4_framer_in(wc, span->offset, LIM0_T);
+ t4_framer_out(wc, span->offset, LIM0_T, (reg|LIM0_LL));
+ break;
case DAHDI_MAINT_REMOTELOOP:
case DAHDI_MAINT_LOOPUP:
case DAHDI_MAINT_LOOPDOWN:
case DAHDI_MAINT_LOOPSTOP:
dev_info(&wc->dev->dev,
- "Looping not supported in E1 mode\n");
+ "Only local loop supported in E1 mode\n");
break;
default:
dev_info(&wc->dev->dev,
diff --git a/drivers/dahdi/wcte12xp/base.c b/drivers/dahdi/wcte12xp/base.c
index 6c6078f..b7f8dc8 100644
--- a/drivers/dahdi/wcte12xp/base.c
+++ b/drivers/dahdi/wcte12xp/base.c
@@ -1113,11 +1113,15 @@ static int t1xxp_maint(struct dahdi_span *span, int cmd)
t1_info(wc, "Clearing all maint modes\n");
break;
case DAHDI_MAINT_LOCALLOOP:
+ t1xxp_clear_maint(span);
+ reg = t1_getreg(wc, LIM0);
+ t1_setreg(wc, LIM0, reg | LIM0_LL);
+ break;
case DAHDI_MAINT_REMOTELOOP:
case DAHDI_MAINT_LOOPUP:
case DAHDI_MAINT_LOOPDOWN:
case DAHDI_MAINT_LOOPSTOP:
- t1_info(wc, "Looping not supported in E1 mode\n");
+ t1_info(wc, "Only local loop supported in E1 mode\n");
break;
default:
t1_info(wc, "Unknown E1 maint command: %d\n", cmd);