aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/can/sja1000/kvaser_pci.c
diff options
context:
space:
mode:
authorWolfgang Grandegger <wg@grandegger.com>2009-05-30 03:55:49 -0400
committerDavid S. Miller <davem@davemloft.net>2009-06-01 05:53:34 -0400
commit255a9154319d3cf475d527458037758935f6445b (patch)
tree317fd2edb63cfa222000cbfa4c4bed6da15c5420 /drivers/net/can/sja1000/kvaser_pci.c
parent128ced8f9d59bb3e36fbb4df87bd9d881f0a4463 (diff)
can: sja1000: stop misusing member base_addr of struct net_device
As discussed on the netdev mailing list, the member "base_addr" of "struct net_device" should not be (mis)used to store the virtual address to the SJA1000 register area. According to David Miller, it's only use is to allow ISA and similar primitive bus devices to have their I/O ports changed via ifconfig. The virtual address is now stored in the private data structure of the SJA1000 device and the callback functions use "struct sja1000_priv" instead of the unneeded "struct net_device". Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/can/sja1000/kvaser_pci.c')
-rw-r--r--drivers/net/can/sja1000/kvaser_pci.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/net/can/sja1000/kvaser_pci.c b/drivers/net/can/sja1000/kvaser_pci.c
index 00830b358c4f..7dd7769b9713 100644
--- a/drivers/net/can/sja1000/kvaser_pci.c
+++ b/drivers/net/can/sja1000/kvaser_pci.c
@@ -117,14 +117,15 @@ static struct pci_device_id kvaser_pci_tbl[] = {
117 117
118MODULE_DEVICE_TABLE(pci, kvaser_pci_tbl); 118MODULE_DEVICE_TABLE(pci, kvaser_pci_tbl);
119 119
120static u8 kvaser_pci_read_reg(const struct net_device *dev, int port) 120static u8 kvaser_pci_read_reg(const struct sja1000_priv *priv, int port)
121{ 121{
122 return ioread8((void __iomem *)(dev->base_addr + port)); 122 return ioread8(priv->reg_base + port);
123} 123}
124 124
125static void kvaser_pci_write_reg(const struct net_device *dev, int port, u8 val) 125static void kvaser_pci_write_reg(const struct sja1000_priv *priv,
126 int port, u8 val)
126{ 127{
127 iowrite8(val, (void __iomem *)(dev->base_addr + port)); 128 iowrite8(val, priv->reg_base + port);
128} 129}
129 130
130static void kvaser_pci_disable_irq(struct net_device *dev) 131static void kvaser_pci_disable_irq(struct net_device *dev)
@@ -199,7 +200,7 @@ static void kvaser_pci_del_chan(struct net_device *dev)
199 } 200 }
200 unregister_sja1000dev(dev); 201 unregister_sja1000dev(dev);
201 202
202 pci_iounmap(board->pci_dev, (void __iomem *)dev->base_addr); 203 pci_iounmap(board->pci_dev, priv->reg_base);
203 pci_iounmap(board->pci_dev, board->conf_addr); 204 pci_iounmap(board->pci_dev, board->conf_addr);
204 pci_iounmap(board->pci_dev, board->res_addr); 205 pci_iounmap(board->pci_dev, board->res_addr);
205 206
@@ -210,7 +211,7 @@ static int kvaser_pci_add_chan(struct pci_dev *pdev, int channel,
210 struct net_device **master_dev, 211 struct net_device **master_dev,
211 void __iomem *conf_addr, 212 void __iomem *conf_addr,
212 void __iomem *res_addr, 213 void __iomem *res_addr,
213 unsigned long base_addr) 214 void __iomem *base_addr)
214{ 215{
215 struct net_device *dev; 216 struct net_device *dev;
216 struct sja1000_priv *priv; 217 struct sja1000_priv *priv;
@@ -252,7 +253,7 @@ static int kvaser_pci_add_chan(struct pci_dev *pdev, int channel,
252 board->xilinx_ver = master_board->xilinx_ver; 253 board->xilinx_ver = master_board->xilinx_ver;
253 } 254 }
254 255
255 dev->base_addr = base_addr + channel * KVASER_PCI_PORT_BYTES; 256 priv->reg_base = base_addr + channel * KVASER_PCI_PORT_BYTES;
256 257
257 priv->read_reg = kvaser_pci_read_reg; 258 priv->read_reg = kvaser_pci_read_reg;
258 priv->write_reg = kvaser_pci_write_reg; 259 priv->write_reg = kvaser_pci_write_reg;
@@ -267,8 +268,8 @@ static int kvaser_pci_add_chan(struct pci_dev *pdev, int channel,
267 268
268 init_step = 4; 269 init_step = 4;
269 270
270 dev_info(&pdev->dev, "base_addr=%#lx conf_addr=%p irq=%d\n", 271 dev_info(&pdev->dev, "reg_base=%p conf_addr=%p irq=%d\n",
271 dev->base_addr, board->conf_addr, dev->irq); 272 priv->reg_base, board->conf_addr, dev->irq);
272 273
273 SET_NETDEV_DEV(dev, &pdev->dev); 274 SET_NETDEV_DEV(dev, &pdev->dev);
274 275
@@ -343,7 +344,7 @@ static int __devinit kvaser_pci_init_one(struct pci_dev *pdev,
343 for (i = 0; i < no_channels; i++) { 344 for (i = 0; i < no_channels; i++) {
344 err = kvaser_pci_add_chan(pdev, i, &master_dev, 345 err = kvaser_pci_add_chan(pdev, i, &master_dev,
345 conf_addr, res_addr, 346 conf_addr, res_addr,
346 (unsigned long)base_addr); 347 base_addr);
347 if (err) 348 if (err)
348 goto failure_cleanup; 349 goto failure_cleanup;
349 } 350 }