qlge: bugfix: Pad outbound frames smaller than 60 bytes.
[safe/jmp/linux-2.6] / drivers / pcmcia / vrc4171_card.c
index 3d2dca6..b2c4124 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * vrc4171_card.c, NEC VRC4171 Card Controller driver for Socket Services.
  *
- * Copyright (C) 2003-2005  Yoichi Yuasa <yuasa@hh.iij4u.or.jp>
+ * Copyright (C) 2003-2005  Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
  *
  *  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
@@ -22,8 +22,8 @@
 #include <linux/interrupt.h>
 #include <linux/module.h>
 #include <linux/spinlock.h>
-#include <linux/sched.h>
 #include <linux/types.h>
+#include <linux/platform_device.h>
 
 #include <asm/io.h>
 
@@ -32,7 +32,7 @@
 #include "i82365.h"
 
 MODULE_DESCRIPTION("NEC VRC4171 Card Controllers driver for Socket Services");
-MODULE_AUTHOR("Yoichi Yuasa <yuasa@hh.iij4u.or.jp>");
+MODULE_AUTHOR("Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>");
 MODULE_LICENSE("GPL");
 
 #define CARD_MAX_SLOTS         2
@@ -300,75 +300,6 @@ static int pccard_get_status(struct pcmcia_socket *sock, u_int *value)
        return 0;
 }
 
-static inline u_char get_Vcc_value(uint8_t voltage)
-{
-       switch (voltage) {
-       case VCC_STATUS_3V:
-               return 33;
-       case VCC_STATUS_5V:
-               return 50;
-       default:
-               break;
-       }
-
-       return 0;
-}
-
-static inline u_char get_Vpp_value(uint8_t power, u_char Vcc)
-{
-       if ((power & 0x03) == 0x01 || (power & 0x03) == 0x02)
-               return Vcc;
-
-       return 0;
-}
-
-static int pccard_get_socket(struct pcmcia_socket *sock, socket_state_t *state)
-{
-       unsigned int slot;
-       uint8_t power, voltage, control, cscint;
-
-       if (sock == NULL || sock->sock >= CARD_MAX_SLOTS || state == NULL)
-               return -EINVAL;
-
-       slot = sock->sock;
-
-       power = exca_read_byte(slot, I365_POWER);
-       voltage = exca_read_byte(slot, CARD_VOLTAGE_SELECT);
-
-       state->Vcc = get_Vcc_value(voltage);
-       state->Vpp = get_Vpp_value(power, state->Vcc);
-
-       state->flags = 0;
-       if (power & POWER_ENABLE)
-               state->flags |= SS_PWR_AUTO;
-       if (power & I365_PWR_OUT)
-               state->flags |= SS_OUTPUT_ENA;
-
-       control = exca_read_byte(slot, I365_INTCTL);
-       if (control & I365_PC_IOCARD)
-               state->flags |= SS_IOCARD;
-       if (!(control & I365_PC_RESET))
-               state->flags |= SS_RESET;
-
-        cscint = exca_read_byte(slot, I365_CSCINT);
-       state->csc_mask = 0;
-       if (state->flags & SS_IOCARD) {
-               if (cscint & I365_CSC_STSCHG)
-                       state->flags |= SS_STSCHG;
-       } else {
-               if (cscint & I365_CSC_BVD1)
-                       state->csc_mask |= SS_BATDEAD;
-               if (cscint & I365_CSC_BVD2)
-                       state->csc_mask |= SS_BATWARN;
-       }
-       if (cscint & I365_CSC_READY)
-               state->csc_mask |= SS_READY;
-       if (cscint & I365_CSC_DETECT)
-               state->csc_mask |= SS_DETECT;
-
-       return 0;
-}
-
 static inline uint8_t set_Vcc_value(u_char Vcc)
 {
        switch (Vcc) {
@@ -550,7 +481,6 @@ static int pccard_set_mem_map(struct pcmcia_socket *sock, struct pccard_mem_map
 static struct pccard_operations vrc4171_pccard_operations = {
        .init                   = pccard_init,
        .get_status             = pccard_get_status,
-       .get_socket             = pccard_get_socket,
        .set_socket             = pccard_set_socket,
        .set_io_map             = pccard_set_io_map,
        .set_mem_map            = pccard_set_mem_map,
@@ -583,7 +513,7 @@ static inline unsigned int get_events(int slot)
        return events;
 }
 
-static irqreturn_t pccard_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t pccard_interrupt(int irq, void *dev_id)
 {
        vrc4171_socket_t *socket;
        unsigned int events;
@@ -666,7 +596,7 @@ static int __devinit vrc4171_add_sockets(void)
                }
 
                sprintf(socket->name, "NEC VRC4171 Card Slot %1c", 'A' + slot);
-               socket->pcmcia_socket.dev.dev = &vrc4171_card_device.dev;
+               socket->pcmcia_socket.dev.parent = &vrc4171_card_device.dev;
                socket->pcmcia_socket.ops = &vrc4171_pccard_operations;
                socket->pcmcia_socket.owner = THIS_MODULE;
 
@@ -703,17 +633,17 @@ static void vrc4171_remove_sockets(void)
 static int __devinit vrc4171_card_setup(char *options)
 {
        if (options == NULL || *options == '\0')
-               return 0;
+               return 1;
 
        if (strncmp(options, "irq:", 4) == 0) {
                int irq;
                options += 4;
                irq = simple_strtoul(options, &options, 0);
-               if (irq >= 0 && irq < NR_IRQS)
+               if (irq >= 0 && irq < nr_irqs)
                        vrc4171_irq = irq;
 
                if (*options != ',')
-                       return 0;
+                       return 1;
                options++;
        }
 
@@ -732,10 +662,10 @@ static int __devinit vrc4171_card_setup(char *options)
                        }
 
                        if (*options != ',')
-                               return 0;
+                               return 1;
                        options++;
                } else
-                       return 0;
+                       return 1;
 
        }
 
@@ -757,7 +687,7 @@ static int __devinit vrc4171_card_setup(char *options)
                        }
 
                        if (*options != ',')
-                               return 0;
+                               return 1;
                        options++;
 
                        if (strncmp(options, "memnoprobe", 10) == 0)
@@ -769,7 +699,7 @@ static int __devinit vrc4171_card_setup(char *options)
                }
        }
 
-       return 0;
+       return 1;
 }
 
 __setup("vrc4171_card=", vrc4171_card_setup);
@@ -799,7 +729,7 @@ static int __devinit vrc4171_card_init(void)
 
        retval = vrc4171_add_sockets();
        if (retval == 0)
-               retval = request_irq(vrc4171_irq, pccard_interrupt, SA_SHIRQ,
+               retval = request_irq(vrc4171_irq, pccard_interrupt, IRQF_SHARED,
                                     vrc4171_card_name, vrc4171_sockets);
 
        if (retval < 0) {