fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / net / sb1000.c
index dcc64eb..b9fa4fb 100644 (file)
@@ -28,7 +28,7 @@
 
        Small changes to make it work with 2.1.x kernels. Hopefully,
        nothing major will change before official release of Linux 2.2.
 
        Small changes to make it work with 2.1.x kernels. Hopefully,
        nothing major will change before official release of Linux 2.2.
-       
+
        Merged with 2.2 - Alan Cox
 */
 
        Merged with 2.2 - Alan Cox
 */
 
@@ -57,9 +57,9 @@ static char version[] = "sb1000.c:v1.1.2 6/01/98 (fventuri@mediaone.net)\n";
 #include <asm/uaccess.h>
 
 #ifdef SB1000_DEBUG
 #include <asm/uaccess.h>
 
 #ifdef SB1000_DEBUG
-int sb1000_debug = SB1000_DEBUG;
+static int sb1000_debug = SB1000_DEBUG;
 #else
 #else
-int sb1000_debug = 1;
+static const int sb1000_debug = 1;
 #endif
 
 static const int SB1000_IO_EXTENT = 8;
 #endif
 
 static const int SB1000_IO_EXTENT = 8;
@@ -84,18 +84,17 @@ extern int sb1000_probe(struct net_device *dev);
 static int sb1000_open(struct net_device *dev);
 static int sb1000_dev_ioctl (struct net_device *dev, struct ifreq *ifr, int cmd);
 static int sb1000_start_xmit(struct sk_buff *skb, struct net_device *dev);
 static int sb1000_open(struct net_device *dev);
 static int sb1000_dev_ioctl (struct net_device *dev, struct ifreq *ifr, int cmd);
 static int sb1000_start_xmit(struct sk_buff *skb, struct net_device *dev);
-static irqreturn_t sb1000_interrupt(int irq, void *dev_id, struct pt_regs *regs);
+static irqreturn_t sb1000_interrupt(int irq, void *dev_id);
 static struct net_device_stats *sb1000_stats(struct net_device *dev);
 static int sb1000_close(struct net_device *dev);
 
 
 /* SB1000 hardware routines to be used during open/configuration phases */
 static struct net_device_stats *sb1000_stats(struct net_device *dev);
 static int sb1000_close(struct net_device *dev);
 
 
 /* SB1000 hardware routines to be used during open/configuration phases */
-static inline void nicedelay(unsigned long usecs);
 static inline int card_wait_for_busy_clear(const int ioaddr[],
        const char* name);
 static inline int card_wait_for_ready(const int ioaddr[], const char* name,
        unsigned char in[]);
 static inline int card_wait_for_busy_clear(const int ioaddr[],
        const char* name);
 static inline int card_wait_for_ready(const int ioaddr[], const char* name,
        unsigned char in[]);
-static inline int card_send_command(const int ioaddr[], const char* name,
+static int card_send_command(const int ioaddr[], const char* name,
        const unsigned char out[], unsigned char in[]);
 
 /* SB1000 hardware routines to be used during frame rx interrupt */
        const unsigned char out[], unsigned char in[]);
 
 /* SB1000 hardware routines to be used during frame rx interrupt */
@@ -116,15 +115,15 @@ static inline int sb1000_start_get_set_command(const int ioaddr[],
 static inline int sb1000_end_get_set_command(const int ioaddr[],
        const char* name);
 static inline int sb1000_activate(const int ioaddr[], const char* name);
 static inline int sb1000_end_get_set_command(const int ioaddr[],
        const char* name);
 static inline int sb1000_activate(const int ioaddr[], const char* name);
-static inline int sb1000_get_firmware_version(const int ioaddr[],
+static int sb1000_get_firmware_version(const int ioaddr[],
        const char* name, unsigned char version[], int do_end);
        const char* name, unsigned char version[], int do_end);
-static inline int sb1000_get_frequency(const int ioaddr[], const char* name,
+static int sb1000_get_frequency(const int ioaddr[], const char* name,
        int* frequency);
        int* frequency);
-static inline int sb1000_set_frequency(const int ioaddr[], const char* name,
+static int sb1000_set_frequency(const int ioaddr[], const char* name,
        int frequency);
        int frequency);
-static inline int sb1000_get_PIDs(const int ioaddr[], const char* name,
+static int sb1000_get_PIDs(const int ioaddr[], const char* name,
        short PID[]);
        short PID[]);
-static inline int sb1000_set_PIDs(const int ioaddr[], const char* name,
+static int sb1000_set_PIDs(const int ioaddr[], const char* name,
        const short PID[]);
 
 /* SB1000 commands for frame rx interrupt */
        const short PID[]);
 
 /* SB1000 commands for frame rx interrupt */
@@ -144,7 +143,7 @@ sb1000_probe_one(struct pnp_dev *pdev, const struct pnp_device_id *id)
        unsigned short ioaddr[2], irq;
        unsigned int serial_number;
        int error = -ENODEV;
        unsigned short ioaddr[2], irq;
        unsigned int serial_number;
        int error = -ENODEV;
-       
+
        if (pnp_device_attach(pdev) < 0)
                return -ENODEV;
        if (pnp_activate_dev(pdev) < 0)
        if (pnp_device_attach(pdev) < 0)
                return -ENODEV;
        if (pnp_activate_dev(pdev) < 0)
@@ -154,12 +153,12 @@ sb1000_probe_one(struct pnp_dev *pdev, const struct pnp_device_id *id)
                goto out_disable;
        if (!pnp_irq_valid(pdev, 0))
                goto out_disable;
                goto out_disable;
        if (!pnp_irq_valid(pdev, 0))
                goto out_disable;
-               
+
        serial_number = pdev->card->serial;
        serial_number = pdev->card->serial;
-               
+
        ioaddr[0] = pnp_port_start(pdev, 0);
        ioaddr[1] = pnp_port_start(pdev, 0);
        ioaddr[0] = pnp_port_start(pdev, 0);
        ioaddr[1] = pnp_port_start(pdev, 0);
-               
+
        irq = pnp_irq(pdev, 0);
 
        if (!request_region(ioaddr[0], 16, "sb1000"))
        irq = pnp_irq(pdev, 0);
 
        if (!request_region(ioaddr[0], 16, "sb1000"))
@@ -173,7 +172,7 @@ sb1000_probe_one(struct pnp_dev *pdev, const struct pnp_device_id *id)
                goto out_release_regions;
        }
 
                goto out_release_regions;
        }
 
-                
+
        dev->base_addr = ioaddr[0];
        /* mem_start holds the second I/O address */
        dev->mem_start = ioaddr[1];
        dev->base_addr = ioaddr[0];
        /* mem_start holds the second I/O address */
        dev->mem_start = ioaddr[1];
@@ -247,19 +246,12 @@ static struct pnp_driver sb1000_driver = {
        .remove         = sb1000_remove_one,
 };
 
        .remove         = sb1000_remove_one,
 };
 
-\f
+
 /*
  * SB1000 hardware routines to be used during open/configuration phases
  */
 
 /*
  * SB1000 hardware routines to be used during open/configuration phases
  */
 
-const int TimeOutJiffies = (875 * HZ) / 100;
-
-static inline void nicedelay(unsigned long usecs)
-{
-       current->state = TASK_INTERRUPTIBLE;
-       schedule_timeout(HZ);
-       return;
-}
+static const int TimeOutJiffies = (875 * HZ) / 100;
 
 /* Card Wait For Busy Clear (cannot be used during an interrupt) */
 static inline int
 
 /* Card Wait For Busy Clear (cannot be used during an interrupt) */
 static inline int
@@ -317,7 +309,7 @@ card_wait_for_ready(const int ioaddr[], const char* name, unsigned char in[])
 }
 
 /* Card Send Command (cannot be used during an interrupt) */
 }
 
 /* Card Send Command (cannot be used during an interrupt) */
-static inline int
+static int
 card_send_command(const int ioaddr[], const char* name,
        const unsigned char out[], unsigned char in[])
 {
 card_send_command(const int ioaddr[], const char* name,
        const unsigned char out[], unsigned char in[])
 {
@@ -359,11 +351,11 @@ card_send_command(const int ioaddr[], const char* name,
        return 0;
 }
 
        return 0;
 }
 
-\f
+
 /*
  * SB1000 hardware routines to be used during frame rx interrupt
  */
 /*
  * SB1000 hardware routines to be used during frame rx interrupt
  */
-const int Sb1000TimeOutJiffies = 7 * HZ;
+static const int Sb1000TimeOutJiffies = 7 * HZ;
 
 /* Card Wait For Ready (to be used during frame rx) */
 static inline int
 
 /* Card Wait For Ready (to be used during frame rx) */
 static inline int
@@ -457,7 +449,7 @@ sb1000_issue_read_command(const int ioaddr[], const char* name)
        return;
 }
 
        return;
 }
 
-\f
+
 /*
  * SB1000 commands for open/configuration
  */
 /*
  * SB1000 commands for open/configuration
  */
@@ -475,7 +467,7 @@ sb1000_reset(const int ioaddr[], const char* name)
        udelay(1000);
        outb(0x0, port);
        inb(port);
        udelay(1000);
        outb(0x0, port);
        inb(port);
-       nicedelay(60000);
+       ssleep(1);
        outb(0x4, port);
        inb(port);
        udelay(1000);
        outb(0x4, port);
        inb(port);
        udelay(1000);
@@ -537,7 +529,7 @@ sb1000_activate(const int ioaddr[], const char* name)
        const unsigned char Command0[6] = {0x80, 0x11, 0x00, 0x00, 0x00, 0x00};
        const unsigned char Command1[6] = {0x80, 0x16, 0x00, 0x00, 0x00, 0x00};
 
        const unsigned char Command0[6] = {0x80, 0x11, 0x00, 0x00, 0x00, 0x00};
        const unsigned char Command1[6] = {0x80, 0x16, 0x00, 0x00, 0x00, 0x00};
 
-       nicedelay(50000);
+       ssleep(1);
        if ((status = card_send_command(ioaddr, name, Command0, st)))
                return status;
        if ((status = card_send_command(ioaddr, name, Command1, st)))
        if ((status = card_send_command(ioaddr, name, Command0, st)))
                return status;
        if ((status = card_send_command(ioaddr, name, Command1, st)))
@@ -552,7 +544,7 @@ sb1000_activate(const int ioaddr[], const char* name)
 }
 
 /* get SB1000 firmware version */
 }
 
 /* get SB1000 firmware version */
-static inline int
+static int
 sb1000_get_firmware_version(const int ioaddr[], const char* name,
        unsigned char version[], int do_end)
 {
 sb1000_get_firmware_version(const int ioaddr[], const char* name,
        unsigned char version[], int do_end)
 {
@@ -575,7 +567,7 @@ sb1000_get_firmware_version(const int ioaddr[], const char* name,
 }
 
 /* get SB1000 frequency */
 }
 
 /* get SB1000 frequency */
-static inline int
+static int
 sb1000_get_frequency(const int ioaddr[], const char* name, int* frequency)
 {
        unsigned char st[7];
 sb1000_get_frequency(const int ioaddr[], const char* name, int* frequency)
 {
        unsigned char st[7];
@@ -592,7 +584,7 @@ sb1000_get_frequency(const int ioaddr[], const char* name, int* frequency)
 }
 
 /* set SB1000 frequency */
 }
 
 /* set SB1000 frequency */
-static inline int
+static int
 sb1000_set_frequency(const int ioaddr[], const char* name, int frequency)
 {
        unsigned char st[7];
 sb1000_set_frequency(const int ioaddr[], const char* name, int frequency)
 {
        unsigned char st[7];
@@ -622,7 +614,7 @@ sb1000_set_frequency(const int ioaddr[], const char* name, int frequency)
 }
 
 /* get SB1000 PIDs */
 }
 
 /* get SB1000 PIDs */
-static inline int
+static int
 sb1000_get_PIDs(const int ioaddr[], const char* name, short PID[])
 {
        unsigned char st[7];
 sb1000_get_PIDs(const int ioaddr[], const char* name, short PID[])
 {
        unsigned char st[7];
@@ -656,7 +648,7 @@ sb1000_get_PIDs(const int ioaddr[], const char* name, short PID[])
 }
 
 /* set SB1000 PIDs */
 }
 
 /* set SB1000 PIDs */
-static inline int
+static int
 sb1000_set_PIDs(const int ioaddr[], const char* name, const short PID[])
 {
        unsigned char st[7];
 sb1000_set_PIDs(const int ioaddr[], const char* name, const short PID[])
 {
        unsigned char st[7];
@@ -705,7 +697,7 @@ sb1000_set_PIDs(const int ioaddr[], const char* name, const short PID[])
        return sb1000_end_get_set_command(ioaddr, name);
 }
 
        return sb1000_end_get_set_command(ioaddr, name);
 }
 
-\f
+
 static inline void
 sb1000_print_status_buffer(const char* name, unsigned char st[],
        unsigned char buffer[], int size)
 static inline void
 sb1000_print_status_buffer(const char* name, unsigned char st[],
        unsigned char buffer[], int size)
@@ -924,7 +916,7 @@ sb1000_error_dpc(struct net_device *dev)
        return;
 }
 
        return;
 }
 
-\f
+
 /*
  * Linux interface functions
  */
 /*
  * Linux interface functions
  */
@@ -944,7 +936,7 @@ sb1000_open(struct net_device *dev)
        /* initialize sb1000 */
        if ((status = sb1000_reset(ioaddr, name)))
                return status;
        /* initialize sb1000 */
        if ((status = sb1000_reset(ioaddr, name)))
                return status;
-       nicedelay(200000);
+       ssleep(1);
        if ((status = sb1000_check_CRC(ioaddr, name)))
                return status;
 
        if ((status = sb1000_check_CRC(ioaddr, name)))
                return status;
 
@@ -1087,24 +1079,18 @@ sb1000_start_xmit(struct sk_buff *skb, struct net_device *dev)
 }
 
 /* SB1000 interrupt handler. */
 }
 
 /* SB1000 interrupt handler. */
-static irqreturn_t sb1000_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t sb1000_interrupt(int irq, void *dev_id)
 {
        char *name;
        unsigned char st;
        int ioaddr[2];
 {
        char *name;
        unsigned char st;
        int ioaddr[2];
-       struct net_device *dev = (struct net_device *) dev_id;
+       struct net_device *dev = dev_id;
        struct sb1000_private *lp = netdev_priv(dev);
 
        const unsigned char Command0[6] = {0x80, 0x2c, 0x00, 0x00, 0x00, 0x00};
        const unsigned char Command1[6] = {0x80, 0x2e, 0x00, 0x00, 0x00, 0x00};
        const int MaxRxErrorCount = 6;
 
        struct sb1000_private *lp = netdev_priv(dev);
 
        const unsigned char Command0[6] = {0x80, 0x2c, 0x00, 0x00, 0x00, 0x00};
        const unsigned char Command1[6] = {0x80, 0x2e, 0x00, 0x00, 0x00, 0x00};
        const int MaxRxErrorCount = 6;
 
-       if (dev == NULL) {
-               printk(KERN_ERR "sb1000_interrupt(): irq %d for unknown device.\n",
-                       irq);
-               return IRQ_NONE;
-       }
-
        ioaddr[0] = dev->base_addr;
        /* mem_start holds the second I/O address */
        ioaddr[1] = dev->mem_start;
        ioaddr[0] = dev->base_addr;
        /* mem_start holds the second I/O address */
        ioaddr[1] = dev->mem_start;
@@ -1163,7 +1149,7 @@ static int sb1000_close(struct net_device *dev)
                printk(KERN_DEBUG "%s: Shutting down sb1000.\n", dev->name);
 
        netif_stop_queue(dev);
                printk(KERN_DEBUG "%s: Shutting down sb1000.\n", dev->name);
 
        netif_stop_queue(dev);
-       
+
        ioaddr[0] = dev->base_addr;
        /* mem_start holds the second I/O address */
        ioaddr[1] = dev->mem_start;
        ioaddr[0] = dev->base_addr;
        /* mem_start holds the second I/O address */
        ioaddr[1] = dev->mem_start;