Skip to content

Commit

Permalink
smc911x: Add IRQ polarity configuration
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Catalin Marinas authored and Jeff Garzik committed Oct 22, 2008
1 parent bd2c497 commit 319edaf
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
11 changes: 8 additions & 3 deletions drivers/net/smc911x.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ static void PRINT_PKT(u_char *buf, int length)
static void smc911x_reset(struct net_device *dev)
{
struct smc911x_local *lp = netdev_priv(dev);
unsigned int reg, timeout=0, resets=1;
unsigned int reg, timeout=0, resets=1, irq_cfg;
unsigned long flags;

DBG(SMC_DEBUG_FUNC, "%s: --> %s\n", dev->name, __func__);
Expand Down Expand Up @@ -252,7 +252,12 @@ static void smc911x_reset(struct net_device *dev)
* Deassert IRQ for 1*10us for edge type interrupts
* and drive IRQ pin push-pull
*/
SMC_SET_IRQ_CFG(lp, (1 << 24) | INT_CFG_IRQ_EN_ | INT_CFG_IRQ_TYPE_);
irq_cfg = (1 << 24) | INT_CFG_IRQ_EN_ | INT_CFG_IRQ_TYPE_;
#ifdef SMC_DYNAMIC_BUS_CONFIG
if (lp->cfg.irq_polarity)
irq_cfg |= INT_CFG_IRQ_POL_;
#endif
SMC_SET_IRQ_CFG(lp, irq_cfg);

/* clear anything saved */
if (lp->pending_tx_skb != NULL) {
Expand Down Expand Up @@ -2054,7 +2059,7 @@ static int __init smc911x_probe(struct net_device *dev)
*/
static int smc911x_drv_probe(struct platform_device *pdev)
{
struct smc91x_platdata *pd = pdev->dev.platform_data;
struct smc911x_platdata *pd = pdev->dev.platform_data;
struct net_device *ndev;
struct resource *res;
struct smc911x_local *lp;
Expand Down
1 change: 1 addition & 0 deletions include/linux/smc911x.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
struct smc911x_platdata {
unsigned long flags;
unsigned long irq_flags; /* IRQF_... */
int irq_polarity;
};

#endif /* __SMC911X_H__ */

0 comments on commit 319edaf

Please sign in to comment.