[PATCH] smc91x needs settable IRQ trigger type
For boards that invert the SMC91x IRQ line (maybe an FPGA inverts it), the set_irq_type() call can't assume IRQT_RISING. These particular boards currently use OMAP-specific calls to change the trigger type, but the boards break when set_irq_type() stops being a NOP. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
This commit is contained in:
committed by
Jeff Garzik
parent
a5fe736eaf
commit
5f13e7ec5c
@@ -1998,7 +1998,7 @@ static int __init smc_probe(struct net_device *dev, void __iomem *ioaddr)
|
|||||||
if (retval)
|
if (retval)
|
||||||
goto err_out;
|
goto err_out;
|
||||||
|
|
||||||
set_irq_type(dev->irq, IRQT_RISING);
|
set_irq_type(dev->irq, SMC_IRQ_TRIGGER_TYPE);
|
||||||
|
|
||||||
#ifdef SMC_USE_PXA_DMA
|
#ifdef SMC_USE_PXA_DMA
|
||||||
{
|
{
|
||||||
|
@@ -182,6 +182,16 @@ SMC_outw(u16 val, void __iomem *ioaddr, int reg)
|
|||||||
#define SMC_insl(a, r, p, l) readsl((a) + (r), p, l)
|
#define SMC_insl(a, r, p, l) readsl((a) + (r), p, l)
|
||||||
#define SMC_outsl(a, r, p, l) writesl((a) + (r), p, l)
|
#define SMC_outsl(a, r, p, l) writesl((a) + (r), p, l)
|
||||||
|
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/arch/cpu.h>
|
||||||
|
|
||||||
|
#define SMC_IRQ_TRIGGER_TYPE (( \
|
||||||
|
machine_is_omap_h2() \
|
||||||
|
|| machine_is_omap_h3() \
|
||||||
|
|| (machine_is_omap_innovator() && !cpu_is_omap150()) \
|
||||||
|
) ? IRQT_FALLING : IRQT_RISING)
|
||||||
|
|
||||||
|
|
||||||
#elif defined(CONFIG_SH_SH4202_MICRODEV)
|
#elif defined(CONFIG_SH_SH4202_MICRODEV)
|
||||||
|
|
||||||
#define SMC_CAN_USE_8BIT 0
|
#define SMC_CAN_USE_8BIT 0
|
||||||
@@ -300,6 +310,9 @@ static inline void SMC_outsw (unsigned long a, int r, unsigned char* p, int l)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef SMC_IRQ_TRIGGER_TYPE
|
||||||
|
#define SMC_IRQ_TRIGGER_TYPE IRQT_RISING
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef SMC_USE_PXA_DMA
|
#ifdef SMC_USE_PXA_DMA
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user