Skip to content

Commit

Permalink
[PATCH] orinoco: don't put PCI resource data to the network device
Browse files Browse the repository at this point in the history
The resource data in the network device is intended for ISA and other
older busses, but not for PCI.  Don't put PCI data there.  Don't (ab)use
the network device for keeping the IRQ number.

Retire orinoco_pci_setup_netdev(), and print some minimal information to
the kernel log instead, identifying the network device and the driver
mostly to identify problems at startup.  Scripts should rely on sysfs.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Pavel Roskin authored and John W. Linville committed May 5, 2006
1 parent 95047dd commit 461c078
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 34 deletions.
5 changes: 3 additions & 2 deletions drivers/net/wireless/orinoco_nortel.c
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,6 @@ static int orinoco_nortel_init_one(struct pci_dev *pdev,
err = -EBUSY;
goto fail_irq;
}
orinoco_pci_setup_netdev(dev, pdev, 2);

err = orinoco_nortel_hw_init(card);
if (err) {
Expand All @@ -227,6 +226,8 @@ static int orinoco_nortel_init_one(struct pci_dev *pdev,
}

pci_set_drvdata(pdev, dev);
printk(KERN_DEBUG "%s: " DRIVER_NAME " at %s\n", dev->name,
pci_name(pdev));

return 0;

Expand Down Expand Up @@ -265,7 +266,7 @@ static void __devexit orinoco_nortel_remove_one(struct pci_dev *pdev)
iowrite16(0, card->bridge_io + 10);

unregister_netdev(dev);
free_irq(dev->irq, dev);
free_irq(pdev->irq, dev);
pci_set_drvdata(pdev, NULL);
free_orinocodev(dev);
pci_iounmap(pdev, priv->hw.iobase);
Expand Down
5 changes: 3 additions & 2 deletions drivers/net/wireless/orinoco_pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,6 @@ static int orinoco_pci_init_one(struct pci_dev *pdev,
err = -EBUSY;
goto fail_irq;
}
orinoco_pci_setup_netdev(dev, pdev, 0);

err = orinoco_pci_cor_reset(priv);
if (err) {
Expand All @@ -176,6 +175,8 @@ static int orinoco_pci_init_one(struct pci_dev *pdev,
}

pci_set_drvdata(pdev, dev);
printk(KERN_DEBUG "%s: " DRIVER_NAME " at %s\n", dev->name,
pci_name(pdev));

return 0;

Expand Down Expand Up @@ -204,7 +205,7 @@ static void __devexit orinoco_pci_remove_one(struct pci_dev *pdev)
struct orinoco_private *priv = netdev_priv(dev);

unregister_netdev(dev);
free_irq(dev->irq, dev);
free_irq(pdev->irq, dev);
pci_set_drvdata(pdev, NULL);
free_orinocodev(dev);
pci_iounmap(pdev, priv->hw.iobase);
Expand Down
26 changes: 0 additions & 26 deletions drivers/net/wireless/orinoco_pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,32 +18,6 @@ struct orinoco_pci_card {
void __iomem *attr_io;
};

/* Set base address or memory range of the network device based on
* the PCI device it's using. Specify BAR of the "main" resource.
* To be used after request_irq(). */
static inline void orinoco_pci_setup_netdev(struct net_device *dev,
struct pci_dev *pdev, int bar)
{
char *range_type;
unsigned long start = pci_resource_start(pdev, bar);
unsigned long len = pci_resource_len(pdev, bar);
unsigned long flags = pci_resource_flags(pdev, bar);
unsigned long end = start + len - 1;

dev->irq = pdev->irq;
if (flags & IORESOURCE_IO) {
dev->base_addr = start;
range_type = "ports";
} else {
dev->mem_start = start;
dev->mem_end = end;
range_type = "memory";
}

printk(KERN_DEBUG PFX "%s: irq %d, %s 0x%lx-0x%lx\n",
pci_name(pdev), pdev->irq, range_type, start, end);
}

#ifdef CONFIG_PM
static int orinoco_pci_suspend(struct pci_dev *pdev, pm_message_t state)
{
Expand Down
5 changes: 3 additions & 2 deletions drivers/net/wireless/orinoco_plx.c
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ static int orinoco_plx_init_one(struct pci_dev *pdev,
err = -EBUSY;
goto fail_irq;
}
orinoco_pci_setup_netdev(dev, pdev, 2);

err = orinoco_plx_hw_init(card);
if (err) {
Expand All @@ -266,6 +265,8 @@ static int orinoco_plx_init_one(struct pci_dev *pdev,
}

pci_set_drvdata(pdev, dev);
printk(KERN_DEBUG "%s: " DRIVER_NAME " at %s\n", dev->name,
pci_name(pdev));

return 0;

Expand Down Expand Up @@ -301,7 +302,7 @@ static void __devexit orinoco_plx_remove_one(struct pci_dev *pdev)
struct orinoco_pci_card *card = priv->card;

unregister_netdev(dev);
free_irq(dev->irq, dev);
free_irq(pdev->irq, dev);
pci_set_drvdata(pdev, NULL);
free_orinocodev(dev);
pci_iounmap(pdev, priv->hw.iobase);
Expand Down
5 changes: 3 additions & 2 deletions drivers/net/wireless/orinoco_tmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@ static int orinoco_tmd_init_one(struct pci_dev *pdev,
err = -EBUSY;
goto fail_irq;
}
orinoco_pci_setup_netdev(dev, pdev, 2);

err = orinoco_tmd_cor_reset(priv);
if (err) {
Expand All @@ -162,6 +161,8 @@ static int orinoco_tmd_init_one(struct pci_dev *pdev,
}

pci_set_drvdata(pdev, dev);
printk(KERN_DEBUG "%s: " DRIVER_NAME " at %s\n", dev->name,
pci_name(pdev));

return 0;

Expand Down Expand Up @@ -194,7 +195,7 @@ static void __devexit orinoco_tmd_remove_one(struct pci_dev *pdev)
struct orinoco_pci_card *card = priv->card;

unregister_netdev(dev);
free_irq(dev->irq, dev);
free_irq(pdev->irq, dev);
pci_set_drvdata(pdev, NULL);
free_orinocodev(dev);
pci_iounmap(pdev, priv->hw.iobase);
Expand Down

0 comments on commit 461c078

Please sign in to comment.