{ -EIO,                    "Input/Output error" },
     { -ENODEV,                 "No card present" },
     { -EINVAL,                 "Bad parameter" },
-    { CS_BAD_ARGS,             "Bad arguments" },
     { -EACCES,                 "Configuration locked" },
     { -EBUSY,                  "Resource in use" },
     { -ENOSPC,                 "No more items" },
 
     case DS_GET_CONFIGURATION_INFO:
        if (buf->config.Function &&
           (buf->config.Function >= s->functions))
-           ret = CS_BAD_ARGS;
+           ret = -EINVAL;
        else {
            struct pcmcia_device *p_dev = get_pcmcia_device(s, buf->config.Function);
            ret = pccard_get_configuration_info(s, p_dev, &buf->config);
     case DS_GET_STATUS:
            if (buf->status.Function &&
                (buf->status.Function >= s->functions))
-                   ret = CS_BAD_ARGS;
+                   ret = -EINVAL;
            else {
                    struct pcmcia_device *p_dev = get_pcmcia_device(s, buf->status.Function);
                    ret = pccard_get_status(s, p_dev, &buf->status);
            goto free_out;
        }
 
-       ret = CS_BAD_ARGS;
+       ret = -EINVAL;
 
        if (!(buf->conf_reg.Function &&
             (buf->conf_reg.Function >= s->functions))) {
        case -ENOSYS:
            err = ret;
            break;
-       case CS_BAD_ARGS: case CS_BAD_TUPLE:
+       case CS_BAD_TUPLE:
            err = -EINVAL; break;
        case -ENOMEM:
            err = -ENOSPC; break;
 
                pcmcia_write_cis_mem(s, 1, addr, 1, &val);
                break;
        default:
-               return CS_BAD_ARGS;
+               return -EINVAL;
                break;
        }
        return 0;
            (c->io.NumPorts1 != req->NumPorts1) ||
            (c->io.BasePort2 != req->BasePort2) ||
            (c->io.NumPorts2 != req->NumPorts2))
-               return CS_BAD_ARGS;
+               return -EINVAL;
 
        c->state &= ~CONFIG_IO_REQ;
 
        if (req->Attributes & WIN_USE_WAIT)
                win->ctl.flags |= MAP_USE_WAIT;
        win->ctl.card_start = 0;
-       if (s->ops->set_mem_map(s, &win->ctl) != 0)
-               return CS_BAD_ARGS;
+       if (s->ops->set_mem_map(s, &win->ctl) != 0) {
+               ds_dbg(s, 0, "failed to set memory mapping\n");
+               return -EIO;
+       }
        s->state |= SOCKET_WIN_REQ(w);
 
        /* Return window handle */
 
 #define CS_BAD_BASE            -EINVAL
 #define CS_BAD_EDC             -ENODEV
 #define CS_BAD_IRQ             -EINVAL
-#define CS_BAD_OFFSET          -EIO
+#define CS_BAD_OFFSET          -EINVAL
 #define CS_BAD_PAGE            -EINVAL
 #define CS_READ_FAILURE                -EIO
 #define CS_BAD_SIZE            -EINVAL
 #define CS_GENERAL_FAILURE     -ETIMEDOUT
 #define CS_WRITE_PROTECTED     -EPERM
 #define CS_BAD_ARG_LENGTH      -ENODEV
-#define CS_BAD_ARGS            0x1c
+#define CS_BAD_ARGS            -EINVAL
 #define CS_CONFIGURATION_LOCKED        -EACCES
 #define CS_IN_USE              -EBUSY
 #define CS_NO_MORE_ITEMS       -ENOSPC