arcnet: Move files out of include/linux
authorJoe Perches <joe@perches.com>
Tue, 5 May 2015 17:06:03 +0000 (10:06 -0700)
committerMichael Grzeschik <m.grzeschik@pengutronix.de>
Wed, 23 Sep 2015 06:44:25 +0000 (08:44 +0200)
These #include files don't need to be in the include/linux directory
as they can be local to drivers/net/arcnet/

Move them and update the #include statements.

Update the MAINTAINERS file pattern by deleting arcdevice from the
NETWORKING block as arcnet is currently unmaintained.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
17 files changed:
MAINTAINERS
drivers/net/arcnet/arc-rawmode.c
drivers/net/arcnet/arc-rimi.c
drivers/net/arcnet/arcdevice.h [new file with mode: 0644]
drivers/net/arcnet/arcnet.c
drivers/net/arcnet/capmode.c
drivers/net/arcnet/com20020-isa.c
drivers/net/arcnet/com20020-pci.c
drivers/net/arcnet/com20020.c
drivers/net/arcnet/com20020.h [new file with mode: 0644]
drivers/net/arcnet/com20020_cs.c
drivers/net/arcnet/com90io.c
drivers/net/arcnet/com90xx.c
drivers/net/arcnet/rfc1051.c
drivers/net/arcnet/rfc1201.c
include/linux/arcdevice.h [deleted file]
include/linux/com20020.h [deleted file]

index 310da4295c7026e27698e9f8b980adcc1893b774..c978a257f4aac02b58b83823c0dcd10dfa4c3d89 100644 (file)
@@ -7292,7 +7292,6 @@ S:        Odd Fixes
 F:     drivers/net/
 F:     include/linux/if_*
 F:     include/linux/netdevice.h
-F:     include/linux/arcdevice.h
 F:     include/linux/etherdevice.h
 F:     include/linux/fcdevice.h
 F:     include/linux/fddidevice.h
index 59b3083c19f96c77a8400d2eb6c7026a049de8e2..35a747a7329ed3fa8d84ab3fb7dfebab2e649ba4 100644 (file)
@@ -33,7 +33,8 @@
 #include <net/arp.h>
 #include <linux/netdevice.h>
 #include <linux/skbuff.h>
-#include <linux/arcdevice.h>
+
+#include "arcdevice.h"
 
 static void rx(struct net_device *dev, int bufnum,
               struct archdr *pkthdr, int length);
index 8fa5eb43f30895a09ccb1d95bca6da84444cb86c..37406fffc001b3801fae4617d5516216d933251b 100644 (file)
@@ -37,7 +37,8 @@
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
-#include <linux/arcdevice.h>
+
+#include "arcdevice.h"
 
 /* Internal function declarations */
 
diff --git a/drivers/net/arcnet/arcdevice.h b/drivers/net/arcnet/arcdevice.h
new file mode 100644 (file)
index 0000000..9ca135d
--- /dev/null
@@ -0,0 +1,346 @@
+/*
+ * INET         An implementation of the TCP/IP protocol suite for the LINUX
+ *              operating system.  NET  is implemented using the  BSD Socket
+ *              interface as the means of communication with the user level.
+ *
+ *              Definitions used by the ARCnet driver.
+ *
+ * Authors:     Avery Pennarun and David Woodhouse
+ *
+ *              This program is free software; you can redistribute it and/or
+ *              modify it under the terms of the GNU General Public License
+ *              as published by the Free Software Foundation; either version
+ *              2 of the License, or (at your option) any later version.
+ *
+ */
+#ifndef _LINUX_ARCDEVICE_H
+#define _LINUX_ARCDEVICE_H
+
+#include <asm/timex.h>
+#include <linux/if_arcnet.h>
+
+#ifdef __KERNEL__
+#include  <linux/irqreturn.h>
+
+/*
+ * RECON_THRESHOLD is the maximum number of RECON messages to receive
+ * within one minute before printing a "cabling problem" warning. The
+ * default value should be fine.
+ *
+ * After that, a "cabling restored" message will be printed on the next IRQ
+ * if no RECON messages have been received for 10 seconds.
+ *
+ * Do not define RECON_THRESHOLD at all if you want to disable this feature.
+ */
+#define RECON_THRESHOLD 30
+
+/*
+ * Define this to the minimum "timeout" value.  If a transmit takes longer
+ * than TX_TIMEOUT jiffies, Linux will abort the TX and retry.  On a large
+ * network, or one with heavy network traffic, this timeout may need to be
+ * increased.  The larger it is, though, the longer it will be between
+ * necessary transmits - don't set this too high.
+ */
+#define TX_TIMEOUT (HZ * 200 / 1000)
+
+/* Display warnings about the driver being an ALPHA version. */
+#undef ALPHA_WARNING
+
+/*
+ * Debugging bitflags: each option can be enabled individually.
+ *
+ * Note: only debug flags included in the ARCNET_DEBUG_MAX define will
+ *   actually be available.  GCC will (at least, GCC 2.7.0 will) notice
+ *   lines using a BUGLVL not in ARCNET_DEBUG_MAX and automatically optimize
+ *   them out.
+ */
+#define D_NORMAL       1       /* important operational info             */
+#define D_EXTRA                2       /* useful, but non-vital information      */
+#define        D_INIT          4       /* show init/probe messages               */
+#define D_INIT_REASONS 8       /* show reasons for discarding probes     */
+#define D_RECON                32      /* print a message whenever token is lost */
+#define D_PROTO                64      /* debug auto-protocol support            */
+/* debug levels below give LOTS of output during normal operation! */
+#define D_DURING       128     /* trace operations (including irq's)     */
+#define D_TX           256     /* show tx packets                        */
+#define D_RX           512     /* show rx packets                        */
+#define D_SKB          1024    /* show skb's                             */
+#define D_SKB_SIZE     2048    /* show skb sizes                         */
+#define D_TIMING       4096    /* show time needed to copy buffers to card */
+#define D_DEBUG         8192    /* Very detailed debug line for line */
+
+#ifndef ARCNET_DEBUG_MAX
+#define ARCNET_DEBUG_MAX (127) /* change to ~0 if you want detailed debugging */
+#endif
+
+#ifndef ARCNET_DEBUG
+#define ARCNET_DEBUG (D_NORMAL | D_EXTRA)
+#endif
+extern int arcnet_debug;
+
+#define BUGLVL(x)      ((x) & ARCNET_DEBUG_MAX & arcnet_debug)
+
+/* macros to simplify debug checking */
+#define arc_printk(x, dev, fmt, ...)                                   \
+do {                                                                   \
+       if (BUGLVL(x)) {                                                \
+               if ((x) == D_NORMAL)                                    \
+                       netdev_warn(dev, fmt, ##__VA_ARGS__);           \
+               else if ((x) < D_DURING)                                \
+                       netdev_info(dev, fmt, ##__VA_ARGS__);           \
+               else                                                    \
+                       netdev_dbg(dev, fmt, ##__VA_ARGS__);            \
+       }                                                               \
+} while (0)
+
+#define arc_cont(x, fmt, ...)                                          \
+do {                                                                   \
+       if (BUGLVL(x))                                                  \
+               pr_cont(fmt, ##__VA_ARGS__);                            \
+} while (0)
+
+/* see how long a function call takes to run, expressed in CPU cycles */
+#define TIME(dev, name, bytes, call)                                   \
+do {                                                                   \
+       if (BUGLVL(D_TIMING)) {                                         \
+               unsigned long _x, _y;                                   \
+               _x = get_cycles();                                      \
+               call;                                                   \
+               _y = get_cycles();                                      \
+               arc_printk(D_TIMING, dev,                               \
+                          "%s: %d bytes in %lu cycles == %lu Kbytes/100Mcycle\n", \
+                          name, bytes, _y - _x,                        \
+                          100000000 / 1024 * bytes / (_y - _x + 1));   \
+       } else {                                                        \
+               call;                                                   \
+       }                                                               \
+} while (0)
+
+/*
+ * Time needed to reset the card - in ms (milliseconds).  This works on my
+ * SMC PC100.  I can't find a reference that tells me just how long I
+ * should wait.
+ */
+#define RESETtime (300)
+
+/*
+ * These are the max/min lengths of packet payload, not including the
+ * arc_hardware header, but definitely including the soft header.
+ *
+ * Note: packet sizes 254, 255, 256 are impossible because of the way
+ * ARCnet registers work  That's why RFC1201 defines "exception" packets.
+ * In non-RFC1201 protocols, we have to just tack some extra bytes on the
+ * end.
+ */
+#define MTU    253             /* normal packet max size */
+#define MinTU  257             /* extended packet min size */
+#define XMTU   508             /* extended packet max size */
+
+/* status/interrupt mask bit fields */
+#define TXFREEflag     0x01    /* transmitter available */
+#define TXACKflag       0x02   /* transmitted msg. ackd */
+#define RECONflag       0x04   /* network reconfigured */
+#define TESTflag        0x08   /* test flag */
+#define EXCNAKflag      0x08    /* excesive nak flag */
+#define RESETflag       0x10   /* power-on-reset */
+#define RES1flag        0x20   /* reserved - usually set by jumper */
+#define RES2flag        0x40   /* reserved - usually set by jumper */
+#define NORXflag        0x80   /* receiver inhibited */
+
+/* Flags used for IO-mapped memory operations */
+#define AUTOINCflag     0x40   /* Increase location with each access */
+#define IOMAPflag       0x02   /* (for 90xx) Use IO mapped memory, not mmap */
+#define ENABLE16flag    0x80   /* (for 90xx) Enable 16-bit mode */
+
+/* in the command register, the following bits have these meanings:
+ *                0-2     command
+ *                3-4     page number (for enable rcv/xmt command)
+ *                 7      receive broadcasts
+ */
+#define NOTXcmd         0x01   /* disable transmitter */
+#define NORXcmd         0x02   /* disable receiver */
+#define TXcmd           0x03   /* enable transmitter */
+#define RXcmd           0x04   /* enable receiver */
+#define CONFIGcmd       0x05   /* define configuration */
+#define CFLAGScmd       0x06   /* clear flags */
+#define TESTcmd         0x07   /* load test flags */
+
+/* flags for "clear flags" command */
+#define RESETclear      0x08   /* power-on-reset */
+#define CONFIGclear     0x10   /* system reconfigured */
+
+#define EXCNAKclear     0x0E    /* Clear and acknowledge the excive nak bit */
+
+/* flags for "load test flags" command */
+#define TESTload        0x08   /* test flag (diagnostic) */
+
+/* byte deposited into first address of buffers on reset */
+#define TESTvalue       0321   /* that's octal for 0xD1 :) */
+
+/* for "enable receiver" command */
+#define RXbcasts        0x80   /* receive broadcasts */
+
+/* flags for "define configuration" command */
+#define NORMALconf      0x00   /* 1-249 byte packets */
+#define EXTconf         0x08   /* 250-504 byte packets */
+
+/* card feature flags, set during auto-detection.
+ * (currently only used by com20020pci)
+ */
+#define ARC_IS_5MBIT    1   /* card default speed is 5MBit */
+#define ARC_CAN_10MBIT  2   /* card uses COM20022, supporting 10MBit,
+                                but default is 2.5MBit. */
+
+/* information needed to define an encapsulation driver */
+struct ArcProto {
+       char suffix;            /* a for RFC1201, e for ether-encap, etc. */
+       int mtu;                /* largest possible packet */
+       int is_ip;              /* This is a ip plugin - not a raw thing */
+
+       void (*rx)(struct net_device *dev, int bufnum,
+                  struct archdr *pkthdr, int length);
+       int (*build_header)(struct sk_buff *skb, struct net_device *dev,
+                           unsigned short ethproto, uint8_t daddr);
+
+       /* these functions return '1' if the skb can now be freed */
+       int (*prepare_tx)(struct net_device *dev, struct archdr *pkt,
+                         int length, int bufnum);
+       int (*continue_tx)(struct net_device *dev, int bufnum);
+       int (*ack_tx)(struct net_device *dev, int acked);
+};
+
+extern struct ArcProto *arc_proto_map[256], *arc_proto_default,
+       *arc_bcast_proto, *arc_raw_proto;
+
+/*
+ * "Incoming" is information needed for each address that could be sending
+ * to us.  Mostly for partially-received split packets.
+ */
+struct Incoming {
+       struct sk_buff *skb;    /* packet data buffer             */
+       __be16 sequence;        /* sequence number of assembly    */
+       uint8_t lastpacket,     /* number of last packet (from 1) */
+               numpackets;     /* number of packets in split     */
+};
+
+/* only needed for RFC1201 */
+struct Outgoing {
+       struct ArcProto *proto; /* protocol driver that owns this:
+                                *   if NULL, no packet is pending.
+                                */
+       struct sk_buff *skb;    /* buffer from upper levels */
+       struct archdr *pkt;     /* a pointer into the skb */
+       uint16_t length,        /* bytes total */
+               dataleft,       /* bytes left */
+               segnum,         /* segment being sent */
+               numsegs;        /* number of segments */
+};
+
+struct arcnet_local {
+       uint8_t config,         /* current value of CONFIG register */
+               timeout,        /* Extended timeout for COM20020 */
+               backplane,      /* Backplane flag for COM20020 */
+               clockp,         /* COM20020 clock divider */
+               clockm,         /* COM20020 clock multiplier flag */
+               setup,          /* Contents of setup1 register */
+               setup2,         /* Contents of setup2 register */
+               intmask;        /* current value of INTMASK register */
+       uint8_t default_proto[256];     /* default encap to use for each host */
+       int     cur_tx,         /* buffer used by current transmit, or -1 */
+               next_tx,        /* buffer where a packet is ready to send */
+               cur_rx;         /* current receive buffer */
+       int     lastload_dest,  /* can last loaded packet be acked? */
+               lasttrans_dest; /* can last TX'd packet be acked? */
+       int     timed_out;      /* need to process TX timeout and drop packet */
+       unsigned long last_timeout;     /* time of last reported timeout */
+       char *card_name;        /* card ident string */
+       int card_flags;         /* special card features */
+
+       /* On preemtive and SMB a lock is needed */
+       spinlock_t lock;
+
+       /*
+        * Buffer management: an ARCnet card has 4 x 512-byte buffers, each of
+        * which can be used for either sending or receiving.  The new dynamic
+        * buffer management routines use a simple circular queue of available
+        * buffers, and take them as they're needed.  This way, we simplify
+        * situations in which we (for example) want to pre-load a transmit
+        * buffer, or start receiving while we copy a received packet to
+        * memory.
+        *
+        * The rules: only the interrupt handler is allowed to _add_ buffers to
+        * the queue; thus, this doesn't require a lock.  Both the interrupt
+        * handler and the transmit function will want to _remove_ buffers, so
+        * we need to handle the situation where they try to do it at the same
+        * time.
+        *
+        * If next_buf == first_free_buf, the queue is empty.  Since there are
+        * only four possible buffers, the queue should never be full.
+        */
+       atomic_t buf_lock;
+       int buf_queue[5];
+       int next_buf, first_free_buf;
+
+       /* network "reconfiguration" handling */
+       unsigned long first_recon; /* time of "first" RECON message to count */
+       unsigned long last_recon;  /* time of most recent RECON */
+       int num_recons;         /* number of RECONs between first and last. */
+       int network_down;       /* do we think the network is down? */
+
+       int excnak_pending;    /* We just got an excesive nak interrupt */
+
+       struct {
+               uint16_t sequence;      /* sequence number (incs with each packet) */
+               __be16 aborted_seq;
+
+               struct Incoming incoming[256];  /* one from each address */
+       } rfc1201;
+
+       /* really only used by rfc1201, but we'll pretend it's not */
+       struct Outgoing outgoing;       /* packet currently being sent */
+
+       /* hardware-specific functions */
+       struct {
+               struct module *owner;
+               void (*command)(struct net_device *dev, int cmd);
+               int (*status)(struct net_device *dev);
+               void (*intmask)(struct net_device *dev, int mask);
+               int (*reset)(struct net_device *dev, int really_reset);
+               void (*open)(struct net_device *dev);
+               void (*close)(struct net_device *dev);
+
+               void (*copy_to_card)(struct net_device *dev, int bufnum,
+                                    int offset, void *buf, int count);
+               void (*copy_from_card)(struct net_device *dev, int bufnum,
+                                      int offset, void *buf, int count);
+       } hw;
+
+       void __iomem *mem_start;        /* pointer to ioremap'ed MMIO */
+};
+
+#define ARCRESET(x)  (lp->hw.reset(dev, (x)))
+#define ACOMMAND(x)  (lp->hw.command(dev, (x)))
+#define ASTATUS()    (lp->hw.status(dev))
+#define AINTMASK(x)  (lp->hw.intmask(dev, (x)))
+
+#if ARCNET_DEBUG_MAX & D_SKB
+void arcnet_dump_skb(struct net_device *dev, struct sk_buff *skb, char *desc);
+#else
+static inline
+void arcnet_dump_skb(struct net_device *dev, struct sk_buff *skb, char *desc)
+{
+}
+#endif
+
+void arcnet_unregister_proto(struct ArcProto *proto);
+irqreturn_t arcnet_interrupt(int irq, void *dev_id);
+struct net_device *alloc_arcdev(const char *name);
+
+int arcnet_open(struct net_device *dev);
+int arcnet_close(struct net_device *dev);
+netdev_tx_t arcnet_send_packet(struct sk_buff *skb,
+                              struct net_device *dev);
+void arcnet_timeout(struct net_device *dev);
+
+#endif                         /* __KERNEL__ */
+#endif                         /* _LINUX_ARCDEVICE_H */
index 00074e78135343f853254541af8f29c4b7c045d9..c8423ee24e71f7cab193eee4ee150174e25595e6 100644 (file)
 #include <linux/if_arp.h>
 #include <net/arp.h>
 #include <linux/init.h>
-#include <linux/arcdevice.h>
 #include <linux/jiffies.h>
 
+#include "arcdevice.h"
+
 /* "do nothing" functions for protocol drivers */
 static void null_rx(struct net_device *dev, int bufnum,
                    struct archdr *pkthdr, int length);
index 46a76dcc21aa84cf55276d0758566424c9829f6e..2f2d0d94a80d6872aa1824a21158fe9f37a59eeb 100644 (file)
@@ -35,7 +35,8 @@
 #include <net/arp.h>
 #include <linux/netdevice.h>
 #include <linux/skbuff.h>
-#include <linux/arcdevice.h>
+
+#include "arcdevice.h"
 
 /* packet receiver */
 static void rx(struct net_device *dev, int bufnum,
index 352500b8d8752cafe7ed3d92d912d68a806a6c7e..ab5202b506a61d5ec3f3c8d6a963089e8eea1845 100644 (file)
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/bootmem.h>
-#include <linux/arcdevice.h>
-#include <linux/com20020.h>
-
 #include <linux/io.h>
 
+#include "arcdevice.h"
+#include "com20020.h"
+
 /* We cannot (yet) probe for an IO mapped card, although we can check that
  * it's where we were told it was, and even do autoirq.
  */
index a28887dfcc9e0e5cd2ca110d3c3f3329251a052a..1a75a6982031b13eecddbe0299fc686d991e06b8 100644 (file)
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/pci.h>
-#include <linux/arcdevice.h>
-#include <linux/com20020.h>
 #include <linux/list.h>
-
 #include <linux/io.h>
 
+#include "arcdevice.h"
+#include "com20020.h"
+
 /* Module parameters */
 
 static int node;
index 00f910cf7b81b0da472139b3f57fbb0f96bd6cc2..f46e22093c5439585c1196796da724fe97dd0470 100644 (file)
 #include <linux/netdevice.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
-#include <linux/arcdevice.h>
-#include <linux/com20020.h>
-
 #include <linux/io.h>
 
+#include "arcdevice.h"
+#include "com20020.h"
+
 static char *clockrates[] = {
        "XXXXXXX", "XXXXXXXX", "XXXXXX",
        "2.5 Mb/s", "1.25Mb/s", "625 Kb/s", "312.5 Kb/s",
diff --git a/drivers/net/arcnet/com20020.h b/drivers/net/arcnet/com20020.h
new file mode 100644 (file)
index 0000000..8589899
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+ * Linux ARCnet driver - COM20020 chipset support - function declarations
+ * 
+ * Written 1997 by David Woodhouse.
+ * Written 1994-1999 by Avery Pennarun.
+ * Derived from skeleton.c by Donald Becker.
+ *
+ * Special thanks to Contemporary Controls, Inc. (www.ccontrols.com)
+ *  for sponsoring the further development of this driver.
+ *
+ * **********************
+ *
+ * The original copyright of skeleton.c was as follows:
+ *
+ * skeleton.c Written 1993 by Donald Becker.
+ * Copyright 1993 United States Government as represented by the
+ * Director, National Security Agency.  This software may only be used
+ * and distributed according to the terms of the GNU General Public License as
+ * modified by SRC, incorporated herein by reference.
+ *
+ * **********************
+ *
+ * For more details, see drivers/net/arcnet.c
+ *
+ * **********************
+ */
+#ifndef __COM20020_H
+#define __COM20020_H
+
+int com20020_check(struct net_device *dev);
+int com20020_found(struct net_device *dev, int shared);
+extern const struct net_device_ops com20020_netdev_ops;
+
+/* The number of low I/O ports used by the card. */
+#define ARCNET_TOTAL_SIZE 8
+
+/* various register addresses */
+#ifdef CONFIG_SA1100_CT6001
+#define BUS_ALIGN  2  /* 8 bit device on a 16 bit bus - needs padding */
+#else
+#define BUS_ALIGN  1
+#endif
+
+#define PLX_PCI_MAX_CARDS 2
+
+struct com20020_pci_channel_map {
+       u32 bar;
+       u32 offset;
+       u32 size;               /* 0x00 - auto, e.g. length of entire bar */
+};
+
+struct com20020_pci_card_info {
+       const char *name;
+       int devcount;
+
+       struct com20020_pci_channel_map chan_map_tbl[PLX_PCI_MAX_CARDS];
+
+       unsigned int flags;
+};
+
+struct com20020_priv {
+       struct com20020_pci_card_info *ci;
+       struct list_head list_dev;
+};
+
+struct com20020_dev {
+       struct list_head list;
+       struct net_device *dev;
+
+       struct com20020_priv *pci_priv;
+       int index;
+};
+
+#define _INTMASK  (ioaddr+BUS_ALIGN*0) /* writable */
+#define _STATUS   (ioaddr+BUS_ALIGN*0) /* readable */
+#define _COMMAND  (ioaddr+BUS_ALIGN*1) /* standard arcnet commands */
+#define _DIAGSTAT (ioaddr+BUS_ALIGN*1) /* diagnostic status register */
+#define _ADDR_HI  (ioaddr+BUS_ALIGN*2) /* control registers for IO-mapped memory */
+#define _ADDR_LO  (ioaddr+BUS_ALIGN*3)
+#define _MEMDATA  (ioaddr+BUS_ALIGN*4) /* data port for IO-mapped memory */
+#define _SUBADR   (ioaddr+BUS_ALIGN*5) /* the extended port _XREG refers to */
+#define _CONFIG   (ioaddr+BUS_ALIGN*6) /* configuration register */
+#define _XREG     (ioaddr+BUS_ALIGN*7) /* extra registers (indexed by _CONFIG
+                                       or _SUBADR) */
+
+/* in the ADDR_HI register */
+#define RDDATAflag     0x80    /* next access is a read (not a write) */
+
+/* in the DIAGSTAT register */
+#define NEWNXTIDflag   0x02    /* ID to which token is passed has changed */
+
+/* in the CONFIG register */
+#define RESETcfg       0x80    /* put card in reset state */
+#define TXENcfg                0x20    /* enable TX */
+
+/* in SETUP register */
+#define PROMISCset     0x10    /* enable RCV_ALL */
+#define P1MODE         0x80    /* enable P1-MODE for Backplane */
+#define SLOWARB                0x01    /* enable Slow Arbitration for >=5Mbps */
+
+/* COM2002x */
+#define SUB_TENTATIVE  0       /* tentative node ID */
+#define SUB_NODE       1       /* node ID */
+#define SUB_SETUP1     2       /* various options */
+#define SUB_TEST       3       /* test/diag register */
+
+/* COM20022 only */
+#define SUB_SETUP2     4       /* sundry options */
+#define SUB_BUSCTL     5       /* bus control options */
+#define SUB_DMACOUNT   6       /* DMA count options */
+
+#define SET_SUBADR(x) do { \
+       if ((x) < 4) \
+       { \
+               lp->config = (lp->config & ~0x03) | (x); \
+               SETCONF; \
+       } \
+       else \
+       { \
+               outb(x, _SUBADR); \
+       } \
+} while (0)
+
+#undef ARCRESET
+#undef ASTATUS
+#undef ACOMMAND
+#undef AINTMASK
+
+#define ARCRESET { outb(lp->config | 0x80, _CONFIG); \
+                   udelay(5);                        \
+                   outb(lp->config , _CONFIG);       \
+                  }
+#define ARCRESET0 { outb(0x18 | 0x80, _CONFIG);   \
+                   udelay(5);                       \
+                   outb(0x18 , _CONFIG);            \
+                  }
+
+#define ASTATUS()      inb(_STATUS)
+#define ADIAGSTATUS()  inb(_DIAGSTAT)
+#define ACOMMAND(cmd)  outb((cmd),_COMMAND)
+#define AINTMASK(msk)  outb((msk),_INTMASK)
+
+#define SETCONF                outb(lp->config, _CONFIG)
+
+#endif /* __COM20020_H */
index 854169489b686afb008c8b6bd7860339ecf11f68..5fdde69464276bfd168d6aa207fa2fcaed529acf 100644 (file)
 #include <linux/delay.h>
 #include <linux/module.h>
 #include <linux/netdevice.h>
-#include <linux/arcdevice.h>
-#include <linux/com20020.h>
-
+#include <linux/io.h>
 #include <pcmcia/cistpl.h>
 #include <pcmcia/ds.h>
 
-#include <linux/io.h>
+#include "arcdevice.h"
+#include "com20020.h"
 
 static void regdump(struct net_device *dev)
 {
index 9e779a53035de4d8fc14b5761c97e416d2dec555..ce15d191104835d25c4b2b23706b8d6fcda7e8a4 100644 (file)
@@ -38,7 +38,8 @@
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
-#include <linux/arcdevice.h>
+
+#include "arcdevice.h"
 
 /* Internal function declarations */
 
index 62100acfb6a7a82661380a2e909d8fc569c80ddf..b672795acaa70cb1a6637b0aa623451385d2d3db 100644 (file)
@@ -36,7 +36,8 @@
 #include <linux/netdevice.h>
 #include <linux/slab.h>
 #include <linux/io.h>
-#include <linux/arcdevice.h>
+
+#include "arcdevice.h"
 
 /* Define this to speed up the autoprobe by assuming if only one io port and
  * shmem are left in the list at Stage 5, they must correspond to each
index 691bee5bcd426c5c1a416580d86b84aeb9c010f7..4b1a75469cb10962f18f5958d94cb51fb51e18c9 100644 (file)
@@ -33,7 +33,8 @@
 #include <net/arp.h>
 #include <linux/netdevice.h>
 #include <linux/skbuff.h>
-#include <linux/arcdevice.h>
+
+#include "arcdevice.h"
 
 static __be16 type_trans(struct sk_buff *skb, struct net_device *dev);
 static void rx(struct net_device *dev, int bufnum,
index aaa1966593aa67a5205baa27508e3110061d254d..566da5ecdc9d6b6c26b0242543f52b1bc7be8766 100644 (file)
@@ -32,7 +32,8 @@
 #include <linux/if_arp.h>
 #include <linux/netdevice.h>
 #include <linux/skbuff.h>
-#include <linux/arcdevice.h>
+
+#include "arcdevice.h"
 
 MODULE_LICENSE("GPL");
 
diff --git a/include/linux/arcdevice.h b/include/linux/arcdevice.h
deleted file mode 100644 (file)
index 9ca135d..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * INET         An implementation of the TCP/IP protocol suite for the LINUX
- *              operating system.  NET  is implemented using the  BSD Socket
- *              interface as the means of communication with the user level.
- *
- *              Definitions used by the ARCnet driver.
- *
- * Authors:     Avery Pennarun and David Woodhouse
- *
- *              This program is free software; you can redistribute it and/or
- *              modify it under the terms of the GNU General Public License
- *              as published by the Free Software Foundation; either version
- *              2 of the License, or (at your option) any later version.
- *
- */
-#ifndef _LINUX_ARCDEVICE_H
-#define _LINUX_ARCDEVICE_H
-
-#include <asm/timex.h>
-#include <linux/if_arcnet.h>
-
-#ifdef __KERNEL__
-#include  <linux/irqreturn.h>
-
-/*
- * RECON_THRESHOLD is the maximum number of RECON messages to receive
- * within one minute before printing a "cabling problem" warning. The
- * default value should be fine.
- *
- * After that, a "cabling restored" message will be printed on the next IRQ
- * if no RECON messages have been received for 10 seconds.
- *
- * Do not define RECON_THRESHOLD at all if you want to disable this feature.
- */
-#define RECON_THRESHOLD 30
-
-/*
- * Define this to the minimum "timeout" value.  If a transmit takes longer
- * than TX_TIMEOUT jiffies, Linux will abort the TX and retry.  On a large
- * network, or one with heavy network traffic, this timeout may need to be
- * increased.  The larger it is, though, the longer it will be between
- * necessary transmits - don't set this too high.
- */
-#define TX_TIMEOUT (HZ * 200 / 1000)
-
-/* Display warnings about the driver being an ALPHA version. */
-#undef ALPHA_WARNING
-
-/*
- * Debugging bitflags: each option can be enabled individually.
- *
- * Note: only debug flags included in the ARCNET_DEBUG_MAX define will
- *   actually be available.  GCC will (at least, GCC 2.7.0 will) notice
- *   lines using a BUGLVL not in ARCNET_DEBUG_MAX and automatically optimize
- *   them out.
- */
-#define D_NORMAL       1       /* important operational info             */
-#define D_EXTRA                2       /* useful, but non-vital information      */
-#define        D_INIT          4       /* show init/probe messages               */
-#define D_INIT_REASONS 8       /* show reasons for discarding probes     */
-#define D_RECON                32      /* print a message whenever token is lost */
-#define D_PROTO                64      /* debug auto-protocol support            */
-/* debug levels below give LOTS of output during normal operation! */
-#define D_DURING       128     /* trace operations (including irq's)     */
-#define D_TX           256     /* show tx packets                        */
-#define D_RX           512     /* show rx packets                        */
-#define D_SKB          1024    /* show skb's                             */
-#define D_SKB_SIZE     2048    /* show skb sizes                         */
-#define D_TIMING       4096    /* show time needed to copy buffers to card */
-#define D_DEBUG         8192    /* Very detailed debug line for line */
-
-#ifndef ARCNET_DEBUG_MAX
-#define ARCNET_DEBUG_MAX (127) /* change to ~0 if you want detailed debugging */
-#endif
-
-#ifndef ARCNET_DEBUG
-#define ARCNET_DEBUG (D_NORMAL | D_EXTRA)
-#endif
-extern int arcnet_debug;
-
-#define BUGLVL(x)      ((x) & ARCNET_DEBUG_MAX & arcnet_debug)
-
-/* macros to simplify debug checking */
-#define arc_printk(x, dev, fmt, ...)                                   \
-do {                                                                   \
-       if (BUGLVL(x)) {                                                \
-               if ((x) == D_NORMAL)                                    \
-                       netdev_warn(dev, fmt, ##__VA_ARGS__);           \
-               else if ((x) < D_DURING)                                \
-                       netdev_info(dev, fmt, ##__VA_ARGS__);           \
-               else                                                    \
-                       netdev_dbg(dev, fmt, ##__VA_ARGS__);            \
-       }                                                               \
-} while (0)
-
-#define arc_cont(x, fmt, ...)                                          \
-do {                                                                   \
-       if (BUGLVL(x))                                                  \
-               pr_cont(fmt, ##__VA_ARGS__);                            \
-} while (0)
-
-/* see how long a function call takes to run, expressed in CPU cycles */
-#define TIME(dev, name, bytes, call)                                   \
-do {                                                                   \
-       if (BUGLVL(D_TIMING)) {                                         \
-               unsigned long _x, _y;                                   \
-               _x = get_cycles();                                      \
-               call;                                                   \
-               _y = get_cycles();                                      \
-               arc_printk(D_TIMING, dev,                               \
-                          "%s: %d bytes in %lu cycles == %lu Kbytes/100Mcycle\n", \
-                          name, bytes, _y - _x,                        \
-                          100000000 / 1024 * bytes / (_y - _x + 1));   \
-       } else {                                                        \
-               call;                                                   \
-       }                                                               \
-} while (0)
-
-/*
- * Time needed to reset the card - in ms (milliseconds).  This works on my
- * SMC PC100.  I can't find a reference that tells me just how long I
- * should wait.
- */
-#define RESETtime (300)
-
-/*
- * These are the max/min lengths of packet payload, not including the
- * arc_hardware header, but definitely including the soft header.
- *
- * Note: packet sizes 254, 255, 256 are impossible because of the way
- * ARCnet registers work  That's why RFC1201 defines "exception" packets.
- * In non-RFC1201 protocols, we have to just tack some extra bytes on the
- * end.
- */
-#define MTU    253             /* normal packet max size */
-#define MinTU  257             /* extended packet min size */
-#define XMTU   508             /* extended packet max size */
-
-/* status/interrupt mask bit fields */
-#define TXFREEflag     0x01    /* transmitter available */
-#define TXACKflag       0x02   /* transmitted msg. ackd */
-#define RECONflag       0x04   /* network reconfigured */
-#define TESTflag        0x08   /* test flag */
-#define EXCNAKflag      0x08    /* excesive nak flag */
-#define RESETflag       0x10   /* power-on-reset */
-#define RES1flag        0x20   /* reserved - usually set by jumper */
-#define RES2flag        0x40   /* reserved - usually set by jumper */
-#define NORXflag        0x80   /* receiver inhibited */
-
-/* Flags used for IO-mapped memory operations */
-#define AUTOINCflag     0x40   /* Increase location with each access */
-#define IOMAPflag       0x02   /* (for 90xx) Use IO mapped memory, not mmap */
-#define ENABLE16flag    0x80   /* (for 90xx) Enable 16-bit mode */
-
-/* in the command register, the following bits have these meanings:
- *                0-2     command
- *                3-4     page number (for enable rcv/xmt command)
- *                 7      receive broadcasts
- */
-#define NOTXcmd         0x01   /* disable transmitter */
-#define NORXcmd         0x02   /* disable receiver */
-#define TXcmd           0x03   /* enable transmitter */
-#define RXcmd           0x04   /* enable receiver */
-#define CONFIGcmd       0x05   /* define configuration */
-#define CFLAGScmd       0x06   /* clear flags */
-#define TESTcmd         0x07   /* load test flags */
-
-/* flags for "clear flags" command */
-#define RESETclear      0x08   /* power-on-reset */
-#define CONFIGclear     0x10   /* system reconfigured */
-
-#define EXCNAKclear     0x0E    /* Clear and acknowledge the excive nak bit */
-
-/* flags for "load test flags" command */
-#define TESTload        0x08   /* test flag (diagnostic) */
-
-/* byte deposited into first address of buffers on reset */
-#define TESTvalue       0321   /* that's octal for 0xD1 :) */
-
-/* for "enable receiver" command */
-#define RXbcasts        0x80   /* receive broadcasts */
-
-/* flags for "define configuration" command */
-#define NORMALconf      0x00   /* 1-249 byte packets */
-#define EXTconf         0x08   /* 250-504 byte packets */
-
-/* card feature flags, set during auto-detection.
- * (currently only used by com20020pci)
- */
-#define ARC_IS_5MBIT    1   /* card default speed is 5MBit */
-#define ARC_CAN_10MBIT  2   /* card uses COM20022, supporting 10MBit,
-                                but default is 2.5MBit. */
-
-/* information needed to define an encapsulation driver */
-struct ArcProto {
-       char suffix;            /* a for RFC1201, e for ether-encap, etc. */
-       int mtu;                /* largest possible packet */
-       int is_ip;              /* This is a ip plugin - not a raw thing */
-
-       void (*rx)(struct net_device *dev, int bufnum,
-                  struct archdr *pkthdr, int length);
-       int (*build_header)(struct sk_buff *skb, struct net_device *dev,
-                           unsigned short ethproto, uint8_t daddr);
-
-       /* these functions return '1' if the skb can now be freed */
-       int (*prepare_tx)(struct net_device *dev, struct archdr *pkt,
-                         int length, int bufnum);
-       int (*continue_tx)(struct net_device *dev, int bufnum);
-       int (*ack_tx)(struct net_device *dev, int acked);
-};
-
-extern struct ArcProto *arc_proto_map[256], *arc_proto_default,
-       *arc_bcast_proto, *arc_raw_proto;
-
-/*
- * "Incoming" is information needed for each address that could be sending
- * to us.  Mostly for partially-received split packets.
- */
-struct Incoming {
-       struct sk_buff *skb;    /* packet data buffer             */
-       __be16 sequence;        /* sequence number of assembly    */
-       uint8_t lastpacket,     /* number of last packet (from 1) */
-               numpackets;     /* number of packets in split     */
-};
-
-/* only needed for RFC1201 */
-struct Outgoing {
-       struct ArcProto *proto; /* protocol driver that owns this:
-                                *   if NULL, no packet is pending.
-                                */
-       struct sk_buff *skb;    /* buffer from upper levels */
-       struct archdr *pkt;     /* a pointer into the skb */
-       uint16_t length,        /* bytes total */
-               dataleft,       /* bytes left */
-               segnum,         /* segment being sent */
-               numsegs;        /* number of segments */
-};
-
-struct arcnet_local {
-       uint8_t config,         /* current value of CONFIG register */
-               timeout,        /* Extended timeout for COM20020 */
-               backplane,      /* Backplane flag for COM20020 */
-               clockp,         /* COM20020 clock divider */
-               clockm,         /* COM20020 clock multiplier flag */
-               setup,          /* Contents of setup1 register */
-               setup2,         /* Contents of setup2 register */
-               intmask;        /* current value of INTMASK register */
-       uint8_t default_proto[256];     /* default encap to use for each host */
-       int     cur_tx,         /* buffer used by current transmit, or -1 */
-               next_tx,        /* buffer where a packet is ready to send */
-               cur_rx;         /* current receive buffer */
-       int     lastload_dest,  /* can last loaded packet be acked? */
-               lasttrans_dest; /* can last TX'd packet be acked? */
-       int     timed_out;      /* need to process TX timeout and drop packet */
-       unsigned long last_timeout;     /* time of last reported timeout */
-       char *card_name;        /* card ident string */
-       int card_flags;         /* special card features */
-
-       /* On preemtive and SMB a lock is needed */
-       spinlock_t lock;
-
-       /*
-        * Buffer management: an ARCnet card has 4 x 512-byte buffers, each of
-        * which can be used for either sending or receiving.  The new dynamic
-        * buffer management routines use a simple circular queue of available
-        * buffers, and take them as they're needed.  This way, we simplify
-        * situations in which we (for example) want to pre-load a transmit
-        * buffer, or start receiving while we copy a received packet to
-        * memory.
-        *
-        * The rules: only the interrupt handler is allowed to _add_ buffers to
-        * the queue; thus, this doesn't require a lock.  Both the interrupt
-        * handler and the transmit function will want to _remove_ buffers, so
-        * we need to handle the situation where they try to do it at the same
-        * time.
-        *
-        * If next_buf == first_free_buf, the queue is empty.  Since there are
-        * only four possible buffers, the queue should never be full.
-        */
-       atomic_t buf_lock;
-       int buf_queue[5];
-       int next_buf, first_free_buf;
-
-       /* network "reconfiguration" handling */
-       unsigned long first_recon; /* time of "first" RECON message to count */
-       unsigned long last_recon;  /* time of most recent RECON */
-       int num_recons;         /* number of RECONs between first and last. */
-       int network_down;       /* do we think the network is down? */
-
-       int excnak_pending;    /* We just got an excesive nak interrupt */
-
-       struct {
-               uint16_t sequence;      /* sequence number (incs with each packet) */
-               __be16 aborted_seq;
-
-               struct Incoming incoming[256];  /* one from each address */
-       } rfc1201;
-
-       /* really only used by rfc1201, but we'll pretend it's not */
-       struct Outgoing outgoing;       /* packet currently being sent */
-
-       /* hardware-specific functions */
-       struct {
-               struct module *owner;
-               void (*command)(struct net_device *dev, int cmd);
-               int (*status)(struct net_device *dev);
-               void (*intmask)(struct net_device *dev, int mask);
-               int (*reset)(struct net_device *dev, int really_reset);
-               void (*open)(struct net_device *dev);
-               void (*close)(struct net_device *dev);
-
-               void (*copy_to_card)(struct net_device *dev, int bufnum,
-                                    int offset, void *buf, int count);
-               void (*copy_from_card)(struct net_device *dev, int bufnum,
-                                      int offset, void *buf, int count);
-       } hw;
-
-       void __iomem *mem_start;        /* pointer to ioremap'ed MMIO */
-};
-
-#define ARCRESET(x)  (lp->hw.reset(dev, (x)))
-#define ACOMMAND(x)  (lp->hw.command(dev, (x)))
-#define ASTATUS()    (lp->hw.status(dev))
-#define AINTMASK(x)  (lp->hw.intmask(dev, (x)))
-
-#if ARCNET_DEBUG_MAX & D_SKB
-void arcnet_dump_skb(struct net_device *dev, struct sk_buff *skb, char *desc);
-#else
-static inline
-void arcnet_dump_skb(struct net_device *dev, struct sk_buff *skb, char *desc)
-{
-}
-#endif
-
-void arcnet_unregister_proto(struct ArcProto *proto);
-irqreturn_t arcnet_interrupt(int irq, void *dev_id);
-struct net_device *alloc_arcdev(const char *name);
-
-int arcnet_open(struct net_device *dev);
-int arcnet_close(struct net_device *dev);
-netdev_tx_t arcnet_send_packet(struct sk_buff *skb,
-                              struct net_device *dev);
-void arcnet_timeout(struct net_device *dev);
-
-#endif                         /* __KERNEL__ */
-#endif                         /* _LINUX_ARCDEVICE_H */
diff --git a/include/linux/com20020.h b/include/linux/com20020.h
deleted file mode 100644 (file)
index 8589899..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Linux ARCnet driver - COM20020 chipset support - function declarations
- * 
- * Written 1997 by David Woodhouse.
- * Written 1994-1999 by Avery Pennarun.
- * Derived from skeleton.c by Donald Becker.
- *
- * Special thanks to Contemporary Controls, Inc. (www.ccontrols.com)
- *  for sponsoring the further development of this driver.
- *
- * **********************
- *
- * The original copyright of skeleton.c was as follows:
- *
- * skeleton.c Written 1993 by Donald Becker.
- * Copyright 1993 United States Government as represented by the
- * Director, National Security Agency.  This software may only be used
- * and distributed according to the terms of the GNU General Public License as
- * modified by SRC, incorporated herein by reference.
- *
- * **********************
- *
- * For more details, see drivers/net/arcnet.c
- *
- * **********************
- */
-#ifndef __COM20020_H
-#define __COM20020_H
-
-int com20020_check(struct net_device *dev);
-int com20020_found(struct net_device *dev, int shared);
-extern const struct net_device_ops com20020_netdev_ops;
-
-/* The number of low I/O ports used by the card. */
-#define ARCNET_TOTAL_SIZE 8
-
-/* various register addresses */
-#ifdef CONFIG_SA1100_CT6001
-#define BUS_ALIGN  2  /* 8 bit device on a 16 bit bus - needs padding */
-#else
-#define BUS_ALIGN  1
-#endif
-
-#define PLX_PCI_MAX_CARDS 2
-
-struct com20020_pci_channel_map {
-       u32 bar;
-       u32 offset;
-       u32 size;               /* 0x00 - auto, e.g. length of entire bar */
-};
-
-struct com20020_pci_card_info {
-       const char *name;
-       int devcount;
-
-       struct com20020_pci_channel_map chan_map_tbl[PLX_PCI_MAX_CARDS];
-
-       unsigned int flags;
-};
-
-struct com20020_priv {
-       struct com20020_pci_card_info *ci;
-       struct list_head list_dev;
-};
-
-struct com20020_dev {
-       struct list_head list;
-       struct net_device *dev;
-
-       struct com20020_priv *pci_priv;
-       int index;
-};
-
-#define _INTMASK  (ioaddr+BUS_ALIGN*0) /* writable */
-#define _STATUS   (ioaddr+BUS_ALIGN*0) /* readable */
-#define _COMMAND  (ioaddr+BUS_ALIGN*1) /* standard arcnet commands */
-#define _DIAGSTAT (ioaddr+BUS_ALIGN*1) /* diagnostic status register */
-#define _ADDR_HI  (ioaddr+BUS_ALIGN*2) /* control registers for IO-mapped memory */
-#define _ADDR_LO  (ioaddr+BUS_ALIGN*3)
-#define _MEMDATA  (ioaddr+BUS_ALIGN*4) /* data port for IO-mapped memory */
-#define _SUBADR   (ioaddr+BUS_ALIGN*5) /* the extended port _XREG refers to */
-#define _CONFIG   (ioaddr+BUS_ALIGN*6) /* configuration register */
-#define _XREG     (ioaddr+BUS_ALIGN*7) /* extra registers (indexed by _CONFIG
-                                       or _SUBADR) */
-
-/* in the ADDR_HI register */
-#define RDDATAflag     0x80    /* next access is a read (not a write) */
-
-/* in the DIAGSTAT register */
-#define NEWNXTIDflag   0x02    /* ID to which token is passed has changed */
-
-/* in the CONFIG register */
-#define RESETcfg       0x80    /* put card in reset state */
-#define TXENcfg                0x20    /* enable TX */
-
-/* in SETUP register */
-#define PROMISCset     0x10    /* enable RCV_ALL */
-#define P1MODE         0x80    /* enable P1-MODE for Backplane */
-#define SLOWARB                0x01    /* enable Slow Arbitration for >=5Mbps */
-
-/* COM2002x */
-#define SUB_TENTATIVE  0       /* tentative node ID */
-#define SUB_NODE       1       /* node ID */
-#define SUB_SETUP1     2       /* various options */
-#define SUB_TEST       3       /* test/diag register */
-
-/* COM20022 only */
-#define SUB_SETUP2     4       /* sundry options */
-#define SUB_BUSCTL     5       /* bus control options */
-#define SUB_DMACOUNT   6       /* DMA count options */
-
-#define SET_SUBADR(x) do { \
-       if ((x) < 4) \
-       { \
-               lp->config = (lp->config & ~0x03) | (x); \
-               SETCONF; \
-       } \
-       else \
-       { \
-               outb(x, _SUBADR); \
-       } \
-} while (0)
-
-#undef ARCRESET
-#undef ASTATUS
-#undef ACOMMAND
-#undef AINTMASK
-
-#define ARCRESET { outb(lp->config | 0x80, _CONFIG); \
-                   udelay(5);                        \
-                   outb(lp->config , _CONFIG);       \
-                  }
-#define ARCRESET0 { outb(0x18 | 0x80, _CONFIG);   \
-                   udelay(5);                       \
-                   outb(0x18 , _CONFIG);            \
-                  }
-
-#define ASTATUS()      inb(_STATUS)
-#define ADIAGSTATUS()  inb(_DIAGSTAT)
-#define ACOMMAND(cmd)  outb((cmd),_COMMAND)
-#define AINTMASK(msk)  outb((msk),_INTMASK)
-
-#define SETCONF                outb(lp->config, _CONFIG)
-
-#endif /* __COM20020_H */