[dahdi-commits] dahdi/linux.git branch "master" updated.

SVN commits to the DAHDI project dahdi-commits at lists.digium.com
Mon Dec 2 16:25:10 CST 2013


branch "master" has been updated
       via  3707ee713ee4869f44db9c4b2db83f35e49f6636 (commit)
      from  f5d3b35d7bd8cad3b01eefeb1e46252cd19c072f (commit)

Summary of changes:
 drivers/dahdi/wcaxx-base.c |   42 +++++++++++++++++++-----------------------
 1 file changed, 19 insertions(+), 23 deletions(-)


- Log -----------------------------------------------------------------
commit 3707ee713ee4869f44db9c4b2db83f35e49f6636
Author: Shaun Ruffell <sruffell at digium.com>
Date:   Mon Dec 2 16:20:05 2013 -0600

    Revert "wcaxx: Use startup/shutdown callbacks to protect access to channel registers."
    
    This reverts commit 1cf7d9b08c892404791b25eff6a743af2a660428.
    
    It turns out this change was not necessary.
    
    Signed-off-by: Shaun Ruffell <sruffell at digium.com>

diff --git a/drivers/dahdi/wcaxx-base.c b/drivers/dahdi/wcaxx-base.c
index 6fe67ce..b0fa8c6 100644
--- a/drivers/dahdi/wcaxx-base.c
+++ b/drivers/dahdi/wcaxx-base.c
@@ -33,7 +33,6 @@
 #include <linux/moduleparam.h>
 #include <linux/firmware.h>
 #include <linux/crc32.h>
-#include <linux/interrupt.h>
 
 #include <stdbool.h>
 
@@ -1987,7 +1986,8 @@ static void wcaxx_handle_receive(struct wcxb *xb, void *_frame)
 		wc->module_poll_time = wc->framecount + MODULE_POLL_TIME_MS;
 	}
 
-	if (!test_bit(DAHDI_FLAGBIT_RUNNING, &wc->span.flags))
+	/* TODO: This protection needs to be thought about. */
+	if (!test_bit(DAHDI_FLAGBIT_REGISTERED, &wc->span.flags))
 		return;
 
 	for (j = 0; j < DAHDI_CHUNKSIZE; j++) {
@@ -2012,7 +2012,8 @@ static void wcaxx_handle_transmit(struct wcxb *xb, void *_frame)
 
 	wcxb_spi_handle_interrupt(wc->master);
 
-	if (!test_bit(DAHDI_FLAGBIT_RUNNING, &wc->span.flags))
+	/* TODO: This protection needs to be thought about. */
+	if (!test_bit(DAHDI_FLAGBIT_REGISTERED, &wc->span.flags))
 		return;
 
 	_dahdi_transmit(&wc->span);
@@ -3383,41 +3384,36 @@ wcaxx_chanconfig(struct file *file, struct dahdi_chan *chan, int sigtype)
 }
 
 /*
- * wcaxx_span_shutdown - Called when span is unassigned or shutdown.
- * @span:	The span that is shutdown
+ * wcaxx_assigned - Called when span is assigned.
+ * @span:	The span that is now assigned.
  *
- */
-static int wcaxx_span_shutdown(struct dahdi_span *span)
-{
-	struct wcaxx *wc = container_of(span, struct wcaxx, span);
-	clear_bit(DAHDI_FLAGBIT_RUNNING, &span->flags);
-	synchronize_irq(wc->xb.pdev->irq);
-	return 0;
-}
-
-/*
- * wcaxx_span_startup - Called when span is unassigned or shutdown.
- * @span:	The span that is shutdown
+ * This function is called by the core of DAHDI after the span number and
+ * channel numbers have been assigned.
  *
  */
-static int wcaxx_span_startup(struct file *file, struct dahdi_span *span)
+static void wcaxx_assigned(struct dahdi_span *span)
 {
-	set_bit(DAHDI_FLAGBIT_RUNNING, &span->flags);
-	return 0;
-}
+	struct dahdi_span *s;
+	struct dahdi_device *ddev = span->parent;
+	struct wcaxx *wc = NULL;
 
+	list_for_each_entry(s, &ddev->spans, device_node) {
+		wc = container_of(s, struct wcaxx, span);
+		if (!test_bit(DAHDI_FLAGBIT_REGISTERED, &s->flags))
+			return;
+	}
+}
 
 static const struct dahdi_span_ops wcaxx_span_ops = {
 	.owner = THIS_MODULE,
 	.hooksig = wcaxx_hooksig,
-	.shutdown = wcaxx_span_shutdown,
-	.startup = wcaxx_span_startup,
 	.open = wcaxx_open,
 	.close = wcaxx_close,
 	.ioctl = wcaxx_ioctl,
 	.watchdog = wcaxx_watchdog,
 	.chanconfig = wcaxx_chanconfig,
 	.dacs = wcaxx_dacs,
+	.assigned = wcaxx_assigned,
 #ifdef VPM_SUPPORT
 	.echocan_create = wcaxx_echocan_create,
 	.echocan_name = wcaxx_echocan_name,

-----------------------------------------------------------------------


-- 
dahdi/linux.git



More information about the dahdi-commits mailing list