summaryrefslogtreecommitdiff
path: root/drivers/dahdi/wct4xxp
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2011-01-17 17:17:39 +0000
committerShaun Ruffell <sruffell@digium.com>2011-01-17 17:17:39 +0000
commit4b08c12f2662dd32c8c04383a056ca878654aac7 (patch)
treec25c102193b9346f27440cbad1c726804499467a /drivers/dahdi/wct4xxp
parent1ee13e88650447a7321ac36aff86833d1cf97e25 (diff)
wct4xxp: Perform an extended reset on PCI-Express cards by default.
Extended reset is needed primarily with the PCI express version of the dual and quad-span cards. Enable it by default for those cards and allow it to be forced on or off globally for the driver as a compile time option. The options to force it should be able to come out if there aren't any further reports that the compile time option needs to be set. DAHDI-773 Signed-off-by: Shaun Ruffell <sruffell@digium.com> git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9635 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/wct4xxp')
-rw-r--r--drivers/dahdi/wct4xxp/base.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/dahdi/wct4xxp/base.c b/drivers/dahdi/wct4xxp/base.c
index 322a702..15397e8 100644
--- a/drivers/dahdi/wct4xxp/base.c
+++ b/drivers/dahdi/wct4xxp/base.c
@@ -169,12 +169,18 @@ static inline int t4_queue_work(struct workqueue_struct *wq, struct work_struct
#endif
/*
- * Define CONFIG_EXTENDED_RESET to allow the qfalc framer extra time
+ * Define CONFIG_FORCE_EXTENDED_RESET to allow the qfalc framer extra time
* to reset itself upon hardware initialization. This exits for rare
* cases for customers who are seeing the qfalc returning unexpected
* information at initialization
*/
-#undef CONFIG_EXTENDED_RESET
+/* #define CONFIG_FORCE_EXTENDED_RESET */
+/* #define CONFIG_NOEXTENDED_RESET */
+
+#if defined(CONFIG_FORCE_EXTENDED_RESET) && defined(CONFIG_NOEXTENDED_RESET)
+#error "You cannot define both CONFIG_FORCE_EXTENDED_RESET and " \
+ "CONFIG_NOEXTENDED_RESET."
+#endif
static int pedanticpci = 1;
static int debug=0;
@@ -4445,7 +4451,8 @@ static void t4_tsi_unassign(struct t4 *wc, int tospan, int tochan)
__t4_pci_out(wc, WC_DMACTRL, wc->dmactrl);
spin_unlock_irqrestore(&wc->reglock, flags);
}
-#ifdef CONFIG_EXTENDED_RESET
+
+#ifndef CONFIG_NOEXTENDED_RESET
static void t4_extended_reset(struct t4 *wc)
{
unsigned int oldreg = t4_pci_in(wc, 0x4);
@@ -4486,8 +4493,11 @@ static int t4_hardware_init_1(struct t4 *wc, unsigned int cardflags)
dev_info(&wc->dev->dev, "Work Queues: Enabled\n");
#endif
-#ifdef CONFIG_EXTENDED_RESET
+#if defined(CONFIG_FORCE_EXTENDED_RESET)
t4_extended_reset(wc);
+#elif !defined(CONFIG_NOEXTENDED_RESET)
+ if (wc->flags & FLAG_EXPRESS)
+ t4_extended_reset(wc);
#endif
/* Make sure DMA engine is not running and interrupts are acknowledged */