summaryrefslogtreecommitdiff
path: root/wct4xxp.c
diff options
context:
space:
mode:
authorcitats <citats@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2004-04-25 23:59:25 +0000
committercitats <citats@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2004-04-25 23:59:25 +0000
commit2ddbe20046643511b4aba66119dc8c13301a8240 (patch)
treea5f9a5f3bd0cc6cf096728528a297243af850354 /wct4xxp.c
parentf822496f02b70bf91fd3afcedda1228198019d3b (diff)
Set timing source so zttool sees it correctly. Allow a span to be used for timing if in NOTOPEN state. Remove some now out of place comments
git-svn-id: http://svn.digium.com/svn/zaptel/trunk@374 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'wct4xxp.c')
-rwxr-xr-xwct4xxp.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/wct4xxp.c b/wct4xxp.c
index 2bbef11..18489fe 100755
--- a/wct4xxp.c
+++ b/wct4xxp.c
@@ -637,16 +637,28 @@ static void __t4_set_timing_source(struct t4 *wc, int unit)
{
unsigned int timing;
int x;
- timing = 0x34; /* CMR1: RCLK unit, 8.192 Mhz TCLK, RCLK is 8.192 Mhz */
- if ((unit > -1) && (unit < 4)) {
- timing |= (unit << 6);
- for (x=0;x<4;x++) /* set all 4 receive reference clocks to unit */
- __t4_framer_out(wc, x, 0x44, timing);
- __t4_pci_out(wc, WC_DMACTRL, wc->dmactrl | (1 << 29));
+ if (unit != wc->syncsrc) {
+ timing = 0x34; /* CMR1: RCLK unit, 8.192 Mhz TCLK, RCLK is 8.192 Mhz */
+ if ((unit > -1) && (unit < 4)) {
+ timing |= (unit << 6);
+ for (x=0;x<4;x++) /* set all 4 receive reference clocks to unit */
+ __t4_framer_out(wc, x, 0x44, timing);
+ __t4_pci_out(wc, WC_DMACTRL, wc->dmactrl | (1 << 29));
+ } else {
+ for (x=0;x<4;x++) /* set each receive reference clock to itself */
+ __t4_framer_out(wc, x, 0x44, timing | (x << 6));
+ __t4_pci_out(wc, WC_DMACTRL, wc->dmactrl);
+ }
+ wc->syncsrc = unit;
+ if ((unit < 0) || (unit > 3))
+ unit = 0;
+ else
+ unit++;
+ for (x=0;x<4;x++)
+ wc->spans[x].syncsrc = unit;
} else {
- for (x=0;x<4;x++) /* set each receive reference clock to itself */
- __t4_framer_out(wc, x, 0x44, timing | (x << 6));
- __t4_pci_out(wc, WC_DMACTRL, wc->dmactrl);
+ if (debug)
+ printk("TE410P: Timing source already set to %d\n", unit);
}
#if 0
printk("wct4xxp: Timing source set to %d\n",unit);
@@ -660,7 +672,7 @@ static void __t4_set_timing_source_auto(struct t4 *wc)
for (x=0;x<4;x++) {
if (wc->syncs[x]) {
if ((wc->spans[wc->syncs[x] - 1].flags & ZT_FLAG_RUNNING) &&
- !(wc->spans[wc->syncs[x] - 1].alarms & (ZT_ALARM_RED | ZT_ALARM_BLUE | ZT_ALARM_NOTOPEN) )) {
+ !(wc->spans[wc->syncs[x] - 1].alarms & (ZT_ALARM_RED | ZT_ALARM_BLUE) )) {
/* Valid timing sourc e*/
__t4_set_timing_source(wc, wc->syncs[x] - 1);
return;
@@ -1455,10 +1467,6 @@ static int __devinit t4_launch(struct t4 *wc)
zt_unregister(&wc->spans[2]);
return -1;
}
- if (debug)
- printk("Setting timing source\n");
- if (debug)
- printk("Timing source selected\n");
wc->checktiming = 1;
spin_lock_irqsave(&wc->reglock, flags);
__t4_set_timing_source(wc,4);