Commit 319edafef64406c971035c56bd68480e5a82b581

Authored by Catalin Marinas
Committed by Jeff Garzik
1 parent bd2c4972ff

smc911x: Add IRQ polarity configuration

Platforms like ARM Ltd's RealView require the IRQ polarity bit to be set
for the SMC9118 chip. This patch allows the dynamic configuration via
the smc911x_platdata structure.

This patch also changes the smc91x_platdata structure name to the
correct smc911x_platdata in the smc911x_drv_probe() function.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>

Showing 2 changed files with 9 additions and 3 deletions Side-by-side Diff

drivers/net/smc911x.c
... ... @@ -180,7 +180,7 @@
180 180 static void smc911x_reset(struct net_device *dev)
181 181 {
182 182 struct smc911x_local *lp = netdev_priv(dev);
183   - unsigned int reg, timeout=0, resets=1;
  183 + unsigned int reg, timeout=0, resets=1, irq_cfg;
184 184 unsigned long flags;
185 185  
186 186 DBG(SMC_DEBUG_FUNC, "%s: --> %s\n", dev->name, __func__);
... ... @@ -252,7 +252,12 @@
252 252 * Deassert IRQ for 1*10us for edge type interrupts
253 253 * and drive IRQ pin push-pull
254 254 */
255   - SMC_SET_IRQ_CFG(lp, (1 << 24) | INT_CFG_IRQ_EN_ | INT_CFG_IRQ_TYPE_);
  255 + irq_cfg = (1 << 24) | INT_CFG_IRQ_EN_ | INT_CFG_IRQ_TYPE_;
  256 +#ifdef SMC_DYNAMIC_BUS_CONFIG
  257 + if (lp->cfg.irq_polarity)
  258 + irq_cfg |= INT_CFG_IRQ_POL_;
  259 +#endif
  260 + SMC_SET_IRQ_CFG(lp, irq_cfg);
256 261  
257 262 /* clear anything saved */
258 263 if (lp->pending_tx_skb != NULL) {
... ... @@ -2054,7 +2059,7 @@
2054 2059 */
2055 2060 static int smc911x_drv_probe(struct platform_device *pdev)
2056 2061 {
2057   - struct smc91x_platdata *pd = pdev->dev.platform_data;
  2062 + struct smc911x_platdata *pd = pdev->dev.platform_data;
2058 2063 struct net_device *ndev;
2059 2064 struct resource *res;
2060 2065 struct smc911x_local *lp;
include/linux/smc911x.h
... ... @@ -7,6 +7,7 @@
7 7 struct smc911x_platdata {
8 8 unsigned long flags;
9 9 unsigned long irq_flags; /* IRQF_... */
  10 + int irq_polarity;
10 11 };
11 12  
12 13 #endif /* __SMC911X_H__ */