MODULE_DESCRIPTION("Essential RoadRunner HIPPI driver");
MODULE_LICENSE("GPL");
-static char version[] __initdata = "rrunner.c: v0.50 11/11/2002 Jes Sorensen (jes@wildopensource.com)\n";
+static char version[] __devinitdata = "rrunner.c: v0.50 11/11/2002 Jes Sorensen (jes@wildopensource.com)\n";
/*
* Implementation notes:
* Remap the regs into kernel space.
*/
- rrpriv->regs = (struct rr_regs *)ioremap(dev->base_addr, 0x1000);
+ rrpriv->regs = ioremap(dev->base_addr, 0x1000);
if (!rrpriv->regs){
printk(KERN_ERR "%s: Unable to map I/O register, "
* Don't access any register before this point!
*/
#ifdef __BIG_ENDIAN
- writel(readl(®s->HostCtrl) | NO_SWAP, ®s->HostCtrl);
+ writel(readl(&rrpriv->regs->HostCtrl) | NO_SWAP,
+ &rrpriv->regs->HostCtrl);
#endif
/*
* Need to add a case for little-endian 64-bit hosts here.
*/
static void rr_issue_cmd(struct rr_private *rrpriv, struct cmd *cmd)
{
- struct rr_regs *regs;
+ struct rr_regs __iomem *regs;
u32 idx;
regs = rrpriv->regs;
static int rr_reset(struct net_device *dev)
{
struct rr_private *rrpriv;
- struct rr_regs *regs;
+ struct rr_regs __iomem *regs;
struct eeprom *hw = NULL;
u32 start_pc;
int i;
unsigned char *buf,
unsigned long length)
{
- struct rr_regs *regs = rrpriv->regs;
+ struct rr_regs __iomem *regs = rrpriv->regs;
u32 misc, io, host, i;
io = readl(®s->ExtIo);
unsigned char *buf,
unsigned long length)
{
- struct rr_regs *regs = rrpriv->regs;
+ struct rr_regs __iomem *regs = rrpriv->regs;
u32 misc, io, data, i, j, ready, error = 0;
io = readl(®s->ExtIo);
static int __init rr_init(struct net_device *dev)
{
struct rr_private *rrpriv;
- struct rr_regs *regs;
+ struct rr_regs __iomem *regs;
struct eeprom *hw = NULL;
u32 sram_size, rev;
int i;
static int rr_init1(struct net_device *dev)
{
struct rr_private *rrpriv;
- struct rr_regs *regs;
+ struct rr_regs __iomem *regs;
unsigned long myjif, flags;
struct cmd cmd;
u32 hostctrl;
for (i = 0; i < TX_RING_ENTRIES; i++) {
rrpriv->tx_ring[i].size = 0;
set_rraddr(&rrpriv->tx_ring[i].addr, 0);
- rrpriv->tx_skbuff[i] = 0;
+ rrpriv->tx_skbuff[i] = NULL;
}
rrpriv->info->tx_ctrl.entry_size = sizeof(struct tx_desc);
rrpriv->info->tx_ctrl.entries = TX_RING_ENTRIES;
rrpriv->rx_ring[i].size = 0;
set_rraddr(&rrpriv->rx_ring[i].addr, 0);
dev_kfree_skb(skb);
- rrpriv->rx_skbuff[i] = 0;
+ rrpriv->rx_skbuff[i] = NULL;
}
}
return ecode;
static u32 rr_handle_event(struct net_device *dev, u32 prodidx, u32 eidx)
{
struct rr_private *rrpriv;
- struct rr_regs *regs;
+ struct rr_regs __iomem *regs;
u32 tmp;
rrpriv = netdev_priv(dev);
static void rx_int(struct net_device *dev, u32 rxlimit, u32 index)
{
struct rr_private *rrpriv = netdev_priv(dev);
- struct rr_regs *regs = rrpriv->regs;
+ struct rr_regs __iomem *regs = rrpriv->regs;
do {
struct rx_desc *desc;
static irqreturn_t rr_interrupt(int irq, void *dev_id, struct pt_regs *ptregs)
{
struct rr_private *rrpriv;
- struct rr_regs *regs;
+ struct rr_regs __iomem *regs;
struct net_device *dev = (struct net_device *)dev_id;
u32 prodidx, rxindex, eidx, txcsmr, rxlimit, txcon;
return IRQ_HANDLED;
}
+static inline void rr_raz_tx(struct rr_private *rrpriv,
+ struct net_device *dev)
+{
+ int i;
+
+ for (i = 0; i < TX_RING_ENTRIES; i++) {
+ struct sk_buff *skb = rrpriv->tx_skbuff[i];
+
+ if (skb) {
+ struct tx_desc *desc = &(rrpriv->tx_ring[i]);
+
+ pci_unmap_single(rrpriv->pci_dev, desc->addr.addrlo,
+ skb->len, PCI_DMA_TODEVICE);
+ desc->size = 0;
+ set_rraddr(&desc->addr, 0);
+ dev_kfree_skb(skb);
+ rrpriv->tx_skbuff[i] = NULL;
+ }
+ }
+}
+
+
+static inline void rr_raz_rx(struct rr_private *rrpriv,
+ struct net_device *dev)
+{
+ int i;
+
+ for (i = 0; i < RX_RING_ENTRIES; i++) {
+ struct sk_buff *skb = rrpriv->rx_skbuff[i];
+
+ if (skb) {
+ struct rx_desc *desc = &(rrpriv->rx_ring[i]);
+
+ pci_unmap_single(rrpriv->pci_dev, desc->addr.addrlo,
+ dev->mtu + HIPPI_HLEN, PCI_DMA_FROMDEVICE);
+ desc->size = 0;
+ set_rraddr(&desc->addr, 0);
+ dev_kfree_skb(skb);
+ rrpriv->rx_skbuff[i] = NULL;
+ }
+ }
+}
+
static void rr_timer(unsigned long data)
{
struct net_device *dev = (struct net_device *)data;
struct rr_private *rrpriv = netdev_priv(dev);
- struct rr_regs *regs = rrpriv->regs;
+ struct rr_regs __iomem *regs = rrpriv->regs;
unsigned long flags;
if (readl(®s->HostCtrl) & NIC_HALTED){
{
struct rr_private *rrpriv = netdev_priv(dev);
struct pci_dev *pdev = rrpriv->pci_dev;
- struct rr_regs *regs;
+ struct rr_regs __iomem *regs;
int ecode = 0;
unsigned long flags;
dma_addr_t dma_addr;
}
-static inline void rr_raz_tx(struct rr_private *rrpriv,
- struct net_device *dev)
-{
- int i;
-
- for (i = 0; i < TX_RING_ENTRIES; i++) {
- struct sk_buff *skb = rrpriv->tx_skbuff[i];
-
- if (skb) {
- struct tx_desc *desc = &(rrpriv->tx_ring[i]);
-
- pci_unmap_single(rrpriv->pci_dev, desc->addr.addrlo,
- skb->len, PCI_DMA_TODEVICE);
- desc->size = 0;
- set_rraddr(&desc->addr, 0);
- dev_kfree_skb(skb);
- rrpriv->tx_skbuff[i] = NULL;
- }
- }
-}
-
-
-static inline void rr_raz_rx(struct rr_private *rrpriv,
- struct net_device *dev)
-{
- int i;
-
- for (i = 0; i < RX_RING_ENTRIES; i++) {
- struct sk_buff *skb = rrpriv->rx_skbuff[i];
-
- if (skb) {
- struct rx_desc *desc = &(rrpriv->rx_ring[i]);
-
- pci_unmap_single(rrpriv->pci_dev, desc->addr.addrlo,
- dev->mtu + HIPPI_HLEN, PCI_DMA_FROMDEVICE);
- desc->size = 0;
- set_rraddr(&desc->addr, 0);
- dev_kfree_skb(skb);
- rrpriv->rx_skbuff[i] = NULL;
- }
- }
-}
-
static void rr_dump(struct net_device *dev)
{
struct rr_private *rrpriv;
- struct rr_regs *regs;
+ struct rr_regs __iomem *regs;
u32 index, cons;
short i;
int len;
if (rrpriv->tx_skbuff[cons]){
len = min_t(int, 0x80, rrpriv->tx_skbuff[cons]->len);
printk("skbuff for cons %i is valid - dumping data (0x%x bytes - skbuff len 0x%x)\n", cons, len, rrpriv->tx_skbuff[cons]->len);
- printk("mode 0x%x, size 0x%x,\n phys %08x, skbuff-addr %08lx, truesize 0x%x\n",
+ printk("mode 0x%x, size 0x%x,\n phys %08Lx, skbuff-addr %08lx, truesize 0x%x\n",
rrpriv->tx_ring[cons].mode,
rrpriv->tx_ring[cons].size,
- rrpriv->tx_ring[cons].addr.addrlo,
+ (unsigned long long) rrpriv->tx_ring[cons].addr.addrlo,
(unsigned long)rrpriv->tx_skbuff[cons]->data,
(unsigned int)rrpriv->tx_skbuff[cons]->truesize);
for (i = 0; i < len; i++){
printk("dumping TX ring info:\n");
for (i = 0; i < TX_RING_ENTRIES; i++)
- printk("mode 0x%x, size 0x%x, phys-addr %08x\n",
+ printk("mode 0x%x, size 0x%x, phys-addr %08Lx\n",
rrpriv->tx_ring[i].mode,
rrpriv->tx_ring[i].size,
- rrpriv->tx_ring[i].addr.addrlo);
+ (unsigned long long) rrpriv->tx_ring[i].addr.addrlo);
}
static int rr_close(struct net_device *dev)
{
struct rr_private *rrpriv;
- struct rr_regs *regs;
+ struct rr_regs __iomem *regs;
unsigned long flags;
u32 tmp;
short i;
static int rr_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct rr_private *rrpriv = netdev_priv(dev);
- struct rr_regs *regs = rrpriv->regs;
+ struct rr_regs __iomem *regs = rrpriv->regs;
struct ring_ctrl *txctrl;
unsigned long flags;
u32 index, len = skb->len;
static int rr_load_firmware(struct net_device *dev)
{
struct rr_private *rrpriv;
- struct rr_regs *regs;
+ struct rr_regs __iomem *regs;
unsigned long eptr, segptr;
int i, j;
u32 localctrl, sptr, len, tmp;