From: Paul Fulghum 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 Signed-off-by: Andrew Morton --- drivers/char/synclinkmp.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) diff -puN drivers/char/synclinkmp.c~synclinkmpc-fix-async-internal-loopback drivers/char/synclinkmp.c --- 25/drivers/char/synclinkmp.c~synclinkmpc-fix-async-internal-loopback Wed Sep 7 15:52:14 2005 +++ 25-akpm/drivers/char/synclinkmp.c Wed Sep 7 15:52:14 2005 @@ -4480,11 +4480,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 @@ -4565,9 +4567,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. _