[dahdi-commits] sruffell: branch linux/2.6 r10565 - /linux/branches/2.6/drivers/dahdi/wct4xxp/

SVN commits to the DAHDI project dahdi-commits at lists.digium.com
Wed Mar 21 14:11:52 CDT 2012


Author: sruffell
Date: Wed Mar 21 14:11:49 2012
New Revision: 10565

URL: http://svnview.digium.com/svn/dahdi?view=rev&rev=10565
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>

Origin: http://svnview.digium.com/svn/dahdi?view=rev&rev=10559

Modified:
    linux/branches/2.6/drivers/dahdi/wct4xxp/base.c

Modified: linux/branches/2.6/drivers/dahdi/wct4xxp/base.c
URL: http://svnview.digium.com/svn/dahdi/linux/branches/2.6/drivers/dahdi/wct4xxp/base.c?view=diff&rev=10565&r1=10564&r2=10565
==============================================================================
--- linux/branches/2.6/drivers/dahdi/wct4xxp/base.c (original)
+++ linux/branches/2.6/drivers/dahdi/wct4xxp/base.c Wed Mar 21 14:11:49 2012
@@ -670,11 +670,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;
 }
 
@@ -700,11 +701,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 dahdi-commits mailing list