Commit a7cba89b authored by Alexander Viro's avatar Alexander Viro Committed by Jeff Garzik

[PATCH] dscc4 iomem annotations

Signed-off-by: default avatarAl Viro <viro@parcelfarce.linux.theplanet.co.uk>
parent 8ff212f7
...@@ -230,6 +230,7 @@ struct dscc4_dev_priv { ...@@ -230,6 +230,7 @@ struct dscc4_dev_priv {
unsigned short parity; unsigned short parity;
struct net_device *dev; struct net_device *dev;
sync_serial_settings settings; sync_serial_settings settings;
void __iomem *base_addr;
u32 __pad __attribute__ ((aligned (4))); u32 __pad __attribute__ ((aligned (4)));
}; };
...@@ -353,7 +354,7 @@ struct dscc4_dev_priv { ...@@ -353,7 +354,7 @@ struct dscc4_dev_priv {
/* Functions prototypes */ /* Functions prototypes */
static void dscc4_rx_irq(struct dscc4_pci_priv *, struct dscc4_dev_priv *); static void dscc4_rx_irq(struct dscc4_pci_priv *, struct dscc4_dev_priv *);
static void dscc4_tx_irq(struct dscc4_pci_priv *, struct dscc4_dev_priv *); static void dscc4_tx_irq(struct dscc4_pci_priv *, struct dscc4_dev_priv *);
static int dscc4_found1(struct pci_dev *, unsigned long ioaddr); static int dscc4_found1(struct pci_dev *, void __iomem *ioaddr);
static int dscc4_init_one(struct pci_dev *, const struct pci_device_id *ent); static int dscc4_init_one(struct pci_dev *, const struct pci_device_id *ent);
static int dscc4_open(struct net_device *); static int dscc4_open(struct net_device *);
static int dscc4_start_xmit(struct sk_buff *, struct net_device *); static int dscc4_start_xmit(struct sk_buff *, struct net_device *);
...@@ -390,7 +391,7 @@ static void scc_patchl(u32 mask, u32 value, struct dscc4_dev_priv *dpriv, ...@@ -390,7 +391,7 @@ static void scc_patchl(u32 mask, u32 value, struct dscc4_dev_priv *dpriv,
state &= ~mask; state &= ~mask;
state |= value; state |= value;
dpriv->scc_regs[offset >> 2] = state; dpriv->scc_regs[offset >> 2] = state;
writel(state, dev->base_addr + SCC_REG_START(dpriv) + offset); writel(state, dpriv->base_addr + SCC_REG_START(dpriv) + offset);
} }
static void scc_writel(u32 bits, struct dscc4_dev_priv *dpriv, static void scc_writel(u32 bits, struct dscc4_dev_priv *dpriv,
...@@ -401,7 +402,7 @@ static void scc_writel(u32 bits, struct dscc4_dev_priv *dpriv, ...@@ -401,7 +402,7 @@ static void scc_writel(u32 bits, struct dscc4_dev_priv *dpriv,
* As of 2002/02/16, there are no thread racing for access. * As of 2002/02/16, there are no thread racing for access.
*/ */
dpriv->scc_regs[offset >> 2] = bits; dpriv->scc_regs[offset >> 2] = bits;
writel(bits, dev->base_addr + SCC_REG_START(dpriv) + offset); writel(bits, dpriv->base_addr + SCC_REG_START(dpriv) + offset);
} }
static inline u32 scc_readl(struct dscc4_dev_priv *dpriv, int offset) static inline u32 scc_readl(struct dscc4_dev_priv *dpriv, int offset)
...@@ -412,8 +413,8 @@ static inline u32 scc_readl(struct dscc4_dev_priv *dpriv, int offset) ...@@ -412,8 +413,8 @@ static inline u32 scc_readl(struct dscc4_dev_priv *dpriv, int offset)
static u32 scc_readl_star(struct dscc4_dev_priv *dpriv, struct net_device *dev) static u32 scc_readl_star(struct dscc4_dev_priv *dpriv, struct net_device *dev)
{ {
/* Cf errata DS5 p.4 */ /* Cf errata DS5 p.4 */
readl(dev->base_addr + SCC_REG_START(dpriv) + STAR); readl(dpriv->base_addr + SCC_REG_START(dpriv) + STAR);
return readl(dev->base_addr + SCC_REG_START(dpriv) + STAR); return readl(dpriv->base_addr + SCC_REG_START(dpriv) + STAR);
} }
static inline void dscc4_do_tx(struct dscc4_dev_priv *dpriv, static inline void dscc4_do_tx(struct dscc4_dev_priv *dpriv,
...@@ -421,9 +422,9 @@ static inline void dscc4_do_tx(struct dscc4_dev_priv *dpriv, ...@@ -421,9 +422,9 @@ static inline void dscc4_do_tx(struct dscc4_dev_priv *dpriv,
{ {
dpriv->ltda = dpriv->tx_fd_dma + dpriv->ltda = dpriv->tx_fd_dma +
((dpriv->tx_current-1)%TX_RING_SIZE)*sizeof(struct TxFD); ((dpriv->tx_current-1)%TX_RING_SIZE)*sizeof(struct TxFD);
writel(dpriv->ltda, dev->base_addr + CH0LTDA + dpriv->dev_id*4); writel(dpriv->ltda, dpriv->base_addr + CH0LTDA + dpriv->dev_id*4);
/* Flush posted writes *NOW* */ /* Flush posted writes *NOW* */
readl(dev->base_addr + CH0LTDA + dpriv->dev_id*4); readl(dpriv->base_addr + CH0LTDA + dpriv->dev_id*4);
} }
static inline void dscc4_rx_update(struct dscc4_dev_priv *dpriv, static inline void dscc4_rx_update(struct dscc4_dev_priv *dpriv,
...@@ -431,7 +432,7 @@ static inline void dscc4_rx_update(struct dscc4_dev_priv *dpriv, ...@@ -431,7 +432,7 @@ static inline void dscc4_rx_update(struct dscc4_dev_priv *dpriv,
{ {
dpriv->lrda = dpriv->rx_fd_dma + dpriv->lrda = dpriv->rx_fd_dma +
((dpriv->rx_dirty - 1)%RX_RING_SIZE)*sizeof(struct RxFD); ((dpriv->rx_dirty - 1)%RX_RING_SIZE)*sizeof(struct RxFD);
writel(dpriv->lrda, dev->base_addr + CH0LRDA + dpriv->dev_id*4); writel(dpriv->lrda, dpriv->base_addr + CH0LRDA + dpriv->dev_id*4);
} }
static inline unsigned int dscc4_tx_done(struct dscc4_dev_priv *dpriv) static inline unsigned int dscc4_tx_done(struct dscc4_dev_priv *dpriv)
...@@ -442,7 +443,7 @@ static inline unsigned int dscc4_tx_done(struct dscc4_dev_priv *dpriv) ...@@ -442,7 +443,7 @@ static inline unsigned int dscc4_tx_done(struct dscc4_dev_priv *dpriv)
static inline unsigned int dscc4_tx_quiescent(struct dscc4_dev_priv *dpriv, static inline unsigned int dscc4_tx_quiescent(struct dscc4_dev_priv *dpriv,
struct net_device *dev) struct net_device *dev)
{ {
return readl(dev->base_addr + CH0FTDA + dpriv->dev_id*4) == dpriv->ltda; return readl(dpriv->base_addr + CH0FTDA + dpriv->dev_id*4) == dpriv->ltda;
} }
int state_check(u32 state, struct dscc4_dev_priv *dpriv, struct net_device *dev, int state_check(u32 state, struct dscc4_dev_priv *dpriv, struct net_device *dev,
...@@ -554,7 +555,7 @@ static int dscc4_wait_ack_cec(struct dscc4_dev_priv *dpriv, ...@@ -554,7 +555,7 @@ static int dscc4_wait_ack_cec(struct dscc4_dev_priv *dpriv,
static int dscc4_do_action(struct net_device *dev, char *msg) static int dscc4_do_action(struct net_device *dev, char *msg)
{ {
unsigned long ioaddr = dev->base_addr; void __iomem *ioaddr = dscc4_priv(dev)->base_addr;
s16 i = 0; s16 i = 0;
writel(Action, ioaddr + GCMDR); writel(Action, ioaddr + GCMDR);
...@@ -603,11 +604,11 @@ static void dscc4_rx_reset(struct dscc4_dev_priv *dpriv, struct net_device *dev) ...@@ -603,11 +604,11 @@ static void dscc4_rx_reset(struct dscc4_dev_priv *dpriv, struct net_device *dev)
spin_lock_irqsave(&dpriv->pci_priv->lock, flags); spin_lock_irqsave(&dpriv->pci_priv->lock, flags);
/* Cf errata DS5 p.6 */ /* Cf errata DS5 p.6 */
writel(0x00000000, dev->base_addr + CH0LRDA + dpriv->dev_id*4); writel(0x00000000, dpriv->base_addr + CH0LRDA + dpriv->dev_id*4);
scc_patchl(PowerUp, 0, dpriv, dev, CCR0); scc_patchl(PowerUp, 0, dpriv, dev, CCR0);
readl(dev->base_addr + CH0LRDA + dpriv->dev_id*4); readl(dpriv->base_addr + CH0LRDA + dpriv->dev_id*4);
writel(MTFi|Rdr, dev->base_addr + dpriv->dev_id*0x0c + CH0CFG); writel(MTFi|Rdr, dpriv->base_addr + dpriv->dev_id*0x0c + CH0CFG);
writel(Action, dev->base_addr + GCMDR); writel(Action, dpriv->base_addr + GCMDR);
spin_unlock_irqrestore(&dpriv->pci_priv->lock, flags); spin_unlock_irqrestore(&dpriv->pci_priv->lock, flags);
} }
...@@ -629,7 +630,7 @@ static void dscc4_tx_reset(struct dscc4_dev_priv *dpriv, struct net_device *dev) ...@@ -629,7 +630,7 @@ static void dscc4_tx_reset(struct dscc4_dev_priv *dpriv, struct net_device *dev)
wmb(); wmb();
} }
writel(MTFi|Rdt, dev->base_addr + dpriv->dev_id*0x0c + CH0CFG); writel(MTFi|Rdt, dpriv->base_addr + dpriv->dev_id*0x0c + CH0CFG);
if (dscc4_do_action(dev, "Rdt") < 0) if (dscc4_do_action(dev, "Rdt") < 0)
printk(KERN_ERR "%s: Tx reset failed\n", dev->name); printk(KERN_ERR "%s: Tx reset failed\n", dev->name);
} }
...@@ -708,7 +709,7 @@ static int __devinit dscc4_init_one(struct pci_dev *pdev, ...@@ -708,7 +709,7 @@ static int __devinit dscc4_init_one(struct pci_dev *pdev,
struct dscc4_pci_priv *priv; struct dscc4_pci_priv *priv;
struct dscc4_dev_priv *dpriv; struct dscc4_dev_priv *dpriv;
static int cards_found = 0; static int cards_found = 0;
unsigned long ioaddr; void __iomem *ioaddr;
int i; int i;
printk(KERN_DEBUG "%s", version); printk(KERN_DEBUG "%s", version);
...@@ -727,7 +728,7 @@ static int __devinit dscc4_init_one(struct pci_dev *pdev, ...@@ -727,7 +728,7 @@ static int __devinit dscc4_init_one(struct pci_dev *pdev,
DRV_NAME); DRV_NAME);
goto err_out_free_mmio_region0; goto err_out_free_mmio_region0;
} }
ioaddr = (unsigned long)ioremap(pci_resource_start(pdev, 0), ioaddr = ioremap(pci_resource_start(pdev, 0),
pci_resource_len(pdev, 0)); pci_resource_len(pdev, 0));
if (!ioaddr) { if (!ioaddr) {
printk(KERN_ERR "%s: cannot remap MMIO region %lx @ %lx\n", printk(KERN_ERR "%s: cannot remap MMIO region %lx @ %lx\n",
...@@ -828,7 +829,7 @@ static int __devinit dscc4_init_one(struct pci_dev *pdev, ...@@ -828,7 +829,7 @@ static int __devinit dscc4_init_one(struct pci_dev *pdev,
err_out_free1: err_out_free1:
dscc4_free1(pdev); dscc4_free1(pdev);
err_out_iounmap: err_out_iounmap:
iounmap ((void *)ioaddr); iounmap (ioaddr);
err_out_free_mmio_region: err_out_free_mmio_region:
release_mem_region(pci_resource_start(pdev, 1), release_mem_region(pci_resource_start(pdev, 1),
pci_resource_len(pdev, 1)); pci_resource_len(pdev, 1));
...@@ -877,7 +878,7 @@ static inline int dscc4_set_quartz(struct dscc4_dev_priv *dpriv, int hz) ...@@ -877,7 +878,7 @@ static inline int dscc4_set_quartz(struct dscc4_dev_priv *dpriv, int hz)
return ret; return ret;
} }
static int dscc4_found1(struct pci_dev *pdev, unsigned long ioaddr) static int dscc4_found1(struct pci_dev *pdev, void __iomem *ioaddr)
{ {
struct dscc4_pci_priv *ppriv; struct dscc4_pci_priv *ppriv;
struct dscc4_dev_priv *root; struct dscc4_dev_priv *root;
...@@ -917,7 +918,7 @@ static int dscc4_found1(struct pci_dev *pdev, unsigned long ioaddr) ...@@ -917,7 +918,7 @@ static int dscc4_found1(struct pci_dev *pdev, unsigned long ioaddr)
struct net_device *d = dscc4_to_dev(dpriv); struct net_device *d = dscc4_to_dev(dpriv);
hdlc_device *hdlc = dev_to_hdlc(d); hdlc_device *hdlc = dev_to_hdlc(d);
d->base_addr = ioaddr; d->base_addr = (unsigned long)ioaddr;
d->init = NULL; d->init = NULL;
d->irq = pdev->irq; d->irq = pdev->irq;
d->open = dscc4_open; d->open = dscc4_open;
...@@ -931,6 +932,7 @@ static int dscc4_found1(struct pci_dev *pdev, unsigned long ioaddr) ...@@ -931,6 +932,7 @@ static int dscc4_found1(struct pci_dev *pdev, unsigned long ioaddr)
dpriv->dev_id = i; dpriv->dev_id = i;
dpriv->pci_priv = ppriv; dpriv->pci_priv = ppriv;
dpriv->base_addr = ioaddr;
spin_lock_init(&dpriv->lock); spin_lock_init(&dpriv->lock);
hdlc->xmit = dscc4_start_xmit; hdlc->xmit = dscc4_start_xmit;
...@@ -1009,7 +1011,7 @@ static int dscc4_loopback_check(struct dscc4_dev_priv *dpriv) ...@@ -1009,7 +1011,7 @@ static int dscc4_loopback_check(struct dscc4_dev_priv *dpriv)
* *
* This code doesn't need to be efficient. Keep It Simple * This code doesn't need to be efficient. Keep It Simple
*/ */
static void dscc4_pci_reset(struct pci_dev *pdev, unsigned long ioaddr) static void dscc4_pci_reset(struct pci_dev *pdev, void __iomem *ioaddr)
{ {
int i; int i;
...@@ -1476,7 +1478,7 @@ static irqreturn_t dscc4_irq(int irq, void *token, struct pt_regs *ptregs) ...@@ -1476,7 +1478,7 @@ static irqreturn_t dscc4_irq(int irq, void *token, struct pt_regs *ptregs)
struct dscc4_dev_priv *root = token; struct dscc4_dev_priv *root = token;
struct dscc4_pci_priv *priv; struct dscc4_pci_priv *priv;
struct net_device *dev; struct net_device *dev;
unsigned long ioaddr; void __iomem *ioaddr;
u32 state; u32 state;
unsigned long flags; unsigned long flags;
int i, handled = 1; int i, handled = 1;
...@@ -1486,7 +1488,7 @@ static irqreturn_t dscc4_irq(int irq, void *token, struct pt_regs *ptregs) ...@@ -1486,7 +1488,7 @@ static irqreturn_t dscc4_irq(int irq, void *token, struct pt_regs *ptregs)
spin_lock_irqsave(&priv->lock, flags); spin_lock_irqsave(&priv->lock, flags);
ioaddr = dev->base_addr; ioaddr = root->base_addr;
state = readl(ioaddr + GSTAR); state = readl(ioaddr + GSTAR);
if (!state) { if (!state) {
...@@ -1613,8 +1615,8 @@ static void dscc4_tx_irq(struct dscc4_pci_priv *ppriv, ...@@ -1613,8 +1615,8 @@ static void dscc4_tx_irq(struct dscc4_pci_priv *ppriv,
dpriv->flags = NeedIDT; dpriv->flags = NeedIDT;
/* Tx reset */ /* Tx reset */
writel(MTFi | Rdt, writel(MTFi | Rdt,
dev->base_addr + 0x0c*dpriv->dev_id + CH0CFG); dpriv->base_addr + 0x0c*dpriv->dev_id + CH0CFG);
writel(Action, dev->base_addr + GCMDR); writel(Action, dpriv->base_addr + GCMDR);
return; return;
} }
if (state & Cts) { if (state & Cts) {
...@@ -1629,7 +1631,8 @@ static void dscc4_tx_irq(struct dscc4_pci_priv *ppriv, ...@@ -1629,7 +1631,8 @@ static void dscc4_tx_irq(struct dscc4_pci_priv *ppriv,
goto try; goto try;
} }
if (state & Xpr) { if (state & Xpr) {
unsigned long scc_addr, ring; void __iomem *scc_addr;
unsigned long ring;
int i; int i;
/* /*
...@@ -1643,7 +1646,7 @@ static void dscc4_tx_irq(struct dscc4_pci_priv *ppriv, ...@@ -1643,7 +1646,7 @@ static void dscc4_tx_irq(struct dscc4_pci_priv *ppriv,
if (!i) if (!i)
printk(KERN_INFO "%s busy in irq\n", dev->name); printk(KERN_INFO "%s busy in irq\n", dev->name);
scc_addr = dev->base_addr + 0x0c*dpriv->dev_id; scc_addr = dpriv->base_addr + 0x0c*dpriv->dev_id;
/* Keep this order: IDT before IDR */ /* Keep this order: IDT before IDR */
if (dpriv->flags & NeedIDT) { if (dpriv->flags & NeedIDT) {
if (debug > 2) if (debug > 2)
...@@ -1801,12 +1804,12 @@ static void dscc4_rx_irq(struct dscc4_pci_priv *priv, ...@@ -1801,12 +1804,12 @@ static void dscc4_rx_irq(struct dscc4_pci_priv *priv,
*/ */
if (state & Rdo) { if (state & Rdo) {
struct RxFD *rx_fd; struct RxFD *rx_fd;
u32 scc_addr; void __iomem *scc_addr;
int cur; int cur;
//if (debug) //if (debug)
// dscc4_rx_dump(dpriv); // dscc4_rx_dump(dpriv);
scc_addr = dev->base_addr + 0x0c*dpriv->dev_id; scc_addr = dpriv->base_addr + 0x0c*dpriv->dev_id;
scc_patchl(RxActivate, 0, dpriv, dev, CCR2); scc_patchl(RxActivate, 0, dpriv, dev, CCR2);
/* /*
...@@ -1970,13 +1973,13 @@ static void __devexit dscc4_remove_one(struct pci_dev *pdev) ...@@ -1970,13 +1973,13 @@ static void __devexit dscc4_remove_one(struct pci_dev *pdev)
{ {
struct dscc4_pci_priv *ppriv; struct dscc4_pci_priv *ppriv;
struct dscc4_dev_priv *root; struct dscc4_dev_priv *root;
unsigned long ioaddr; void __iomem *ioaddr;
int i; int i;
ppriv = pci_get_drvdata(pdev); ppriv = pci_get_drvdata(pdev);
root = ppriv->root; root = ppriv->root;
ioaddr = dscc4_to_dev(root)->base_addr; ioaddr = root->base_addr;
dscc4_pci_reset(pdev, ioaddr); dscc4_pci_reset(pdev, ioaddr);
...@@ -1995,7 +1998,7 @@ static void __devexit dscc4_remove_one(struct pci_dev *pdev) ...@@ -1995,7 +1998,7 @@ static void __devexit dscc4_remove_one(struct pci_dev *pdev)
dscc4_free1(pdev); dscc4_free1(pdev);
iounmap((void *)ioaddr); iounmap(ioaddr);
release_mem_region(pci_resource_start(pdev, 1), release_mem_region(pci_resource_start(pdev, 1),
pci_resource_len(pdev, 1)); pci_resource_len(pdev, 1));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment