pcmcia: deprecate CS_BAD_VCC and CS_BAD_VPP
Dominik Brodowski [Sun, 3 Aug 2008 08:56:13 +0000 (10:56 +0200)]
They were either used to report that changing voltage is not allowed, or that
changing voltage failed.

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>

drivers/pcmcia/ds.c
drivers/pcmcia/pcmcia_resource.c
include/pcmcia/cs.h

index 4a658e2..f6ff121 100644 (file)
@@ -82,8 +82,7 @@ static const lookup_t error_table[] = {
     { CS_BAD_PAGE,             "Bad page number" },
     { CS_BAD_SIZE,             "Bad size" },
     { CS_BAD_TYPE,             "Bad type" },
-    { CS_BAD_VCC,              "Bad Vcc" },
-    { CS_BAD_VPP,              "Bad Vpp" },
+    { -EIO,                    "Input/Output error" },
     { CS_NO_CARD,              "No card present" },
     { -EINVAL,                 "Bad parameter" },
     { CS_GENERAL_FAILURE,      "General failure" },
index 3b8b0e1..9b61265 100644 (file)
@@ -291,20 +291,28 @@ int pcmcia_modify_configuration(struct pcmcia_device *p_dev,
                s->ops->set_socket(s, &s->socket);
        }
 
-       if (mod->Attributes & CONF_VCC_CHANGE_VALID)
-               return CS_BAD_VCC;
+       if (mod->Attributes & CONF_VCC_CHANGE_VALID) {
+               ds_dbg(s, 0, "changing Vcc is not allowed at this time\n");
+               return -EINVAL;
+       }
 
        /* We only allow changing Vpp1 and Vpp2 to the same value */
        if ((mod->Attributes & CONF_VPP1_CHANGE_VALID) &&
            (mod->Attributes & CONF_VPP2_CHANGE_VALID)) {
                if (mod->Vpp1 != mod->Vpp2)
-                       return CS_BAD_VPP;
+                       ds_dbg(s, 0, "Vpp1 and Vpp2 must be the same\n");
+                       return -EINVAL;
                s->socket.Vpp = mod->Vpp1;
-               if (s->ops->set_socket(s, &s->socket))
-                       return CS_BAD_VPP;
+               if (s->ops->set_socket(s, &s->socket)) {
+                       dev_printk(KERN_WARNING, &s->dev,
+                                  "Unable to set VPP\n");
+                       return -EIO;
+               }
        } else if ((mod->Attributes & CONF_VPP1_CHANGE_VALID) ||
-                  (mod->Attributes & CONF_VPP2_CHANGE_VALID))
-               return CS_BAD_VPP;
+                  (mod->Attributes & CONF_VPP2_CHANGE_VALID)) {
+               ds_dbg(s, 0, "changing Vcc is not allowed at this time\n");
+               return -EINVAL;
+       }
 
        if (mod->Attributes & CONF_IO_CHANGE_WIDTH) {
                pccard_io_map io_off = { 0, 0, 0, 0, 1 };
@@ -485,8 +493,11 @@ int pcmcia_request_configuration(struct pcmcia_device *p_dev,
 
        /* Do power control.  We don't allow changes in Vcc. */
        s->socket.Vpp = req->Vpp;
-       if (s->ops->set_socket(s, &s->socket))
-               return CS_BAD_VPP;
+       if (s->ops->set_socket(s, &s->socket)) {
+               dev_printk(KERN_WARNING, &s->dev,
+                          "Unable to set socket state\n");
+               return -EINVAL;
+       }
 
        /* Pick memory or I/O card, DMA mode, interrupt */
        c->IntType = req->IntType;
index 6b51d27..5d1ed8e 100644 (file)
@@ -300,8 +300,8 @@ typedef struct error_info_t {
 #define CS_BAD_SIZE            0x0a
 #define CS_BAD_SOCKET          -EINVAL
 #define CS_BAD_TYPE            0x0d
-#define CS_BAD_VCC             0x0e
-#define CS_BAD_VPP             0x0f
+#define CS_BAD_VCC             -EINVAL
+#define CS_BAD_VPP             -EINVAL
 #define CS_BAD_WINDOW          -ENODEV
 #define CS_WRITE_FAILURE       -EIO
 #define CS_NO_CARD             0x14