VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git] / drivers / pcmcia / yenta_socket.c
index 767b2c1..4c8a7a5 100644 (file)
@@ -445,10 +445,10 @@ static void yenta_interrupt_wrapper(unsigned long data)
 static void yenta_clear_maps(struct yenta_socket *socket)
 {
        int i;
+       struct resource res = { .start = 0, .end = 0x0fff };
        pccard_io_map io = { 0, 0, 0, 0, 1 };
-       pccard_mem_map mem = { 0, 0, 0, 0, 0, 0 };
+       pccard_mem_map mem = { .res = &res, .sys_stop = 0x0fff, };
 
-       mem.sys_stop = 0x0fff;
        yenta_set_socket(&socket->socket, &dead_socket);
        for (i = 0; i < 2; i++) {
                io.map = i;
@@ -668,6 +668,7 @@ static struct pccard_operations yenta_socket_operations = {
 #include "ti113x.h"
 #include "ricoh.h"
 #include "topic.h"
+#include "o2micro.h"
 
 enum {
        CARDBUS_TYPE_DEFAULT = -1,
@@ -676,7 +677,8 @@ enum {
        CARDBUS_TYPE_TI12XX,
        CARDBUS_TYPE_TI1250,
        CARDBUS_TYPE_RICOH,
-       CARDBUS_TYPE_TOPIC97
+       CARDBUS_TYPE_TOPIC97,
+       CARDBUS_TYPE_O2MICRO,
 };
 
 /*
@@ -716,6 +718,10 @@ struct cardbus_type cardbus_type[] = {
        [CARDBUS_TYPE_TOPIC97]  = {
                .override       = topic97_override,
        },
+       [CARDBUS_TYPE_O2MICRO]  = {
+               .override       = o2micro_override,
+               .restore_state  = o2micro_restore_state,
+       },
 };
 
 
@@ -1100,6 +1106,8 @@ static struct pci_device_id yenta_table [] = {
        CB_ID(PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_TOPIC97, TOPIC97),
        CB_ID(PCI_VENDOR_ID_TOSHIBA, PCI_DEVICE_ID_TOSHIBA_TOPIC100, TOPIC97),
 
+       CB_ID(PCI_VENDOR_ID_O2, PCI_ANY_ID, O2MICRO),
+
        /* match any cardbus bridge */
        CB_ID(PCI_ANY_ID, PCI_ANY_ID, DEFAULT),
        { /* all zeroes */ }