2005-09-07 17:45:11

by Paul Fulghum

[permalink] [raw]
Subject: [patch] synclinkmp.c fix async internal loopback

[patch] synclinkmp.c fix async internal loopback

From: Paul Fulghum <[email protected]>

Fix async internal loopback by not using
enable_loopback function which reprograms
clocking and should only be used for hdlc mode.

Signed-off-by: Paul Fulghum <[email protected]>

--- linux-2.6.13/drivers/char/synclinkmp.c 2005-08-28 18:41:01.000000000 -0500
+++ linux-2.6.13-mg/drivers/char/synclinkmp.c 2005-09-07 12:28:21.000000000 -0500
@@ -4489,11 +4489,13 @@ void async_mode(SLMP_INFO *info)
/* MD2, Mode Register 2
*
* 07..02 Reserved, must be 0
- * 01..00 CNCT<1..0> Channel connection, 0=normal
+ * 01..00 CNCT<1..0> Channel connection, 00=normal 11=local loopback
*
* 0000 0000
*/
RegValue = 0x00;
+ if (info->params.loopback)
+ RegValue |= (BIT1 + BIT0);
write_reg(info, MD2, RegValue);

/* RXS, Receive clock source
@@ -4574,9 +4576,6 @@ void async_mode(SLMP_INFO *info)
write_reg(info, IE2, info->ie2_value);

set_rate( info, info->params.data_rate * 16 );
-
- if (info->params.loopback)
- enable_loopback(info,1);
}

/* Program the SCA for HDLC communications.