arcnet: Add com9026.h to standardize COM9026_REG_<foo>
[cascardo/linux.git] / drivers / net / arcnet / arc-rimi.c
index 7360214..a07e249 100644 (file)
@@ -37,7 +37,9 @@
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
-#include <linux/arcdevice.h>
+
+#include "arcdevice.h"
+#include "com9026.h"
 
 /* Internal function declarations */
 
@@ -49,8 +51,8 @@ static void arcrimi_setmask(struct net_device *dev, int mask);
 static int arcrimi_reset(struct net_device *dev, int really_reset);
 static void arcrimi_copy_to_card(struct net_device *dev, int bufnum, int offset,
                                 void *buf, int count);
-static void arcrimi_copy_from_card(struct net_device *dev, int bufnum, int offset,
-                                  void *buf, int count);
+static void arcrimi_copy_from_card(struct net_device *dev, int bufnum,
+                                  int offset, void *buf, int count);
 
 /* Handy defines for ARCnet specific stuff */
 
@@ -58,25 +60,6 @@ static void arcrimi_copy_from_card(struct net_device *dev, int bufnum, int offse
 #define BUFFER_SIZE    (512)
 #define MIRROR_SIZE    (BUFFER_SIZE * 4)
 
-/* COM 9026 controller chip --> ARCnet register addresses */
-#define _INTMASK       (ioaddr + 0)    /* writable */
-#define _STATUS                (ioaddr + 0)    /* readable */
-#define _COMMAND       (ioaddr + 1)    /* writable, returns random vals on read (?) */
-#define _RESET         (ioaddr + 8)    /* software reset (on read) */
-#define _MEMDATA       (ioaddr + 12)   /* Data port for IO-mapped memory */
-#define _ADDR_HI       (ioaddr + 15)   /* Control registers for said */
-#define _ADDR_LO       (ioaddr + 14)
-#define _CONFIG                (ioaddr + 2)    /* Configuration register */
-
-#undef ASTATUS
-#undef ACOMMAND
-#undef AINTMASK
-
-#define ASTATUS()      readb(_STATUS)
-#define ACOMMAND(cmd)  writeb((cmd), _COMMAND)
-#define AINTMASK(msk)  writeb((msk), _INTMASK)
-#define SETCONF()      writeb(lp->config, _CONFIG)
-
 /* We cannot probe for a RIM I card; one reason is I don't know how to reset
  * them.  In fact, we can't even get their node ID automatically.  So, we
  * need to be passed a specific shmem address, IRQ, and node ID.
@@ -123,7 +106,7 @@ static int check_mirror(unsigned long addr, size_t size)
 
        p = ioremap(addr, size);
        if (p) {
-               if (readb(p) == TESTvalue)
+               if (arcnet_readb(p, COM9026_REG_R_STATUS) == TESTvalue)
                        res = 1;
                else
                        res = 0;
@@ -161,8 +144,9 @@ static int __init arcrimi_found(struct net_device *dev)
        }
 
        shmem = dev->mem_start;
-       writeb(TESTvalue, p);
-       writeb(dev->dev_addr[0], p + 1);        /* actually the node ID */
+       arcnet_writeb(TESTvalue, p, COM9026_REG_W_INTMASK);
+       arcnet_writeb(TESTvalue, p, COM9026_REG_W_COMMAND);
+                                       /* actually the station/node ID */
 
        /* find the real shared memory start/end points, including mirrors */
 
@@ -171,7 +155,7 @@ static int __init arcrimi_found(struct net_device *dev)
         * 2k (or there are no mirrors at all) but on some, it's 4k.
         */
        mirror_size = MIRROR_SIZE;
-       if (readb(p) == TESTvalue &&
+       if (arcnet_readb(p, COM9026_REG_R_STATUS) == TESTvalue &&
            check_mirror(shmem - MIRROR_SIZE, MIRROR_SIZE) == 0 &&
            check_mirror(shmem - 2 * MIRROR_SIZE, MIRROR_SIZE) == 1)
                mirror_size = 2 * MIRROR_SIZE;
@@ -215,14 +199,15 @@ static int __init arcrimi_found(struct net_device *dev)
                goto err_free_irq;
        }
 
-       lp->mem_start = ioremap(dev->mem_start, dev->mem_end - dev->mem_start + 1);
+       lp->mem_start = ioremap(dev->mem_start,
+                               dev->mem_end - dev->mem_start + 1);
        if (!lp->mem_start) {
                arc_printk(D_NORMAL, dev, "Can't remap device memory!\n");
                goto err_release_mem;
        }
 
        /* get and check the station ID from offset 1 in shmem */
-       dev->dev_addr[0] = readb(lp->mem_start + 1);
+       dev->dev_addr[0] = arcnet_readb(lp->mem_start, COM9026_REG_R_STATION);
 
        arc_printk(D_NORMAL, dev, "ARCnet RIM I: station %02Xh found at IRQ %d, ShMem %lXh (%ld*%d bytes)\n",
                   dev->dev_addr[0],
@@ -258,17 +243,18 @@ static int arcrimi_reset(struct net_device *dev, int really_reset)
        void __iomem *ioaddr = lp->mem_start + 0x800;
 
        arc_printk(D_INIT, dev, "Resetting %s (status=%02Xh)\n",
-                  dev->name, ASTATUS());
+                  dev->name, arcnet_readb(ioaddr, COM9026_REG_R_STATUS));
 
        if (really_reset) {
-               writeb(TESTvalue, ioaddr - 0x800);      /* fake reset */
+               arcnet_writeb(TESTvalue, ioaddr, -0x800);       /* fake reset */
                return 0;
        }
-       ACOMMAND(CFLAGScmd | RESETclear);       /* clear flags & end reset */
-       ACOMMAND(CFLAGScmd | CONFIGclear);
+       /* clear flags & end reset */
+       arcnet_writeb(CFLAGScmd | RESETclear, ioaddr, COM9026_REG_W_COMMAND);
+       arcnet_writeb(CFLAGScmd | CONFIGclear, ioaddr, COM9026_REG_W_COMMAND);
 
        /* enable extended (512-byte) packets */
-       ACOMMAND(CONFIGcmd | EXTconf);
+       arcnet_writeb(CONFIGcmd | EXTconf, ioaddr, COM9026_REG_W_COMMAND);
 
        /* done!  return success. */
        return 0;
@@ -279,7 +265,7 @@ static void arcrimi_setmask(struct net_device *dev, int mask)
        struct arcnet_local *lp = netdev_priv(dev);
        void __iomem *ioaddr = lp->mem_start + 0x800;
 
-       AINTMASK(mask);
+       arcnet_writeb(mask, ioaddr, COM9026_REG_W_INTMASK);
 }
 
 static int arcrimi_status(struct net_device *dev)
@@ -287,7 +273,7 @@ static int arcrimi_status(struct net_device *dev)
        struct arcnet_local *lp = netdev_priv(dev);
        void __iomem *ioaddr = lp->mem_start + 0x800;
 
-       return ASTATUS();
+       return arcnet_readb(ioaddr, COM9026_REG_R_STATUS);
 }
 
 static void arcrimi_command(struct net_device *dev, int cmd)
@@ -295,7 +281,7 @@ static void arcrimi_command(struct net_device *dev, int cmd)
        struct arcnet_local *lp = netdev_priv(dev);
        void __iomem *ioaddr = lp->mem_start + 0x800;
 
-       ACOMMAND(cmd);
+       arcnet_writeb(cmd, ioaddr, COM9026_REG_W_COMMAND);
 }
 
 static void arcrimi_copy_to_card(struct net_device *dev, int bufnum, int offset,
@@ -307,8 +293,8 @@ static void arcrimi_copy_to_card(struct net_device *dev, int bufnum, int offset,
        TIME(dev, "memcpy_toio", count, memcpy_toio(memaddr, buf, count));
 }
 
-static void arcrimi_copy_from_card(struct net_device *dev, int bufnum, int offset,
-                                  void *buf, int count)
+static void arcrimi_copy_from_card(struct net_device *dev, int bufnum,
+                                  int offset, void *buf, int count)
 {
        struct arcnet_local *lp = netdev_priv(dev);
        void __iomem *memaddr = lp->mem_start + 0x800 + bufnum * 512 + offset;