From e6b4234b0d5df0747b1ae44400d25464b608de31 Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Fri, 21 Jan 2011 05:33:17 +0000 Subject: 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 Origin: http://svnview.digium.com/svn/dahdi?view=rev&rev=9635 git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/branches/2.4@9695 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- drivers/dahdi/wct4xxp/base.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/dahdi/wct4xxp/base.c b/drivers/dahdi/wct4xxp/base.c index 506beae..72858c3 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; @@ -4413,7 +4419,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); @@ -4454,8 +4461,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 */ -- cgit v1.2.3