[svn-commits] sruffell: linux/trunk r10559 - /linux/trunk/drivers/dahdi/wct4xxp/base.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Mar 21 11:34:10 CDT 2012


Author: sruffell
Date: Wed Mar 21 11:34:06 2012
New Revision: 10559

URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=10559
Log:
wct4xxp: __t4_frame_in and __t4_framer_out slowdowns.

This is a partial revert of r10234 "wct4xxp: __t4_framer_in and
__t4_framer_out speedups."

There were some platform + firmware version combinations that would fail to
properly configure the framer with the aforementioned speedups. The originally
reported sympton was that interrupts would fail to start and while
troubleshooting I also saw cases where one of the spans would stay in alarm
after starting. By adding in additional reads to the version register, the
overall process of writing / reading from the framer control registers is
slowed down which increases reliability.

This change does *not* affect the main path of TDM data which is DMAed
directly into buffers in host memory and are not read / written to / from
framer registers directly.

Reported-and-Tested-by: Vahan Yerkanian <vahan at arminco.com>
Signed-off-by: Shaun Ruffell <sruffell at digium.com>

Modified:
    linux/trunk/drivers/dahdi/wct4xxp/base.c

Modified: linux/trunk/drivers/dahdi/wct4xxp/base.c
URL: http://svnview.digium.com/svn/dahdi/linux/trunk/drivers/dahdi/wct4xxp/base.c?view=diff&rev=10559&r1=10558&r2=10559
==============================================================================
--- linux/trunk/drivers/dahdi/wct4xxp/base.c (original)
+++ linux/trunk/drivers/dahdi/wct4xxp/base.c Wed Mar 21 11:34:06 2012
@@ -680,11 +680,12 @@
 
 	val = ((unit & 0x3) << 8) | (addr & 0xff) | haddr;
 	writel(val, wc_laddr);
-	/* readl(wc_version); */
+	readl(wc_version);
 	writel(val | WC_LFRMR_CS | WC_LREAD, wc_laddr);
 	readl(wc_version);
 	ret = readb(wc_ldata);
 	writel(val, wc_laddr);
+	readl(wc_version);
 	return ret;
 }
 
@@ -710,11 +711,13 @@
 
 	val = ((unit & 0x3) << 8) | (addr & 0xff) | haddr;
 	writel(val, wc_laddr);
+	readl(wc_version);
 	writel(value, wc_ldata);
 	readl(wc_version);
 	writel(val | WC_LFRMR_CS | WC_LWRITE, wc_laddr);
-	/* readl(wc_version); */
+	readl(wc_version);
 	writel(val, wc_laddr);
+	readl(wc_version);
 }
 
 static void t4_framer_out(struct t4 *wc, int unit,




More information about the svn-commits mailing list