]> err.no Git - linux-2.6/blobdiff - drivers/bluetooth/bluecard_cs.c
[PATCH] w1 exports
[linux-2.6] / drivers / bluetooth / bluecard_cs.c
index e557f2359ccc8029b1e5a6bf35d387477903ea1f..473a13b22b298e09a20f63749e8ce9f2d576f06f 100644 (file)
@@ -85,7 +85,7 @@ typedef struct bluecard_info_t {
 } bluecard_info_t;
 
 
-static void bluecard_config(struct pcmcia_device *link);
+static int bluecard_config(struct pcmcia_device *link);
 static void bluecard_release(struct pcmcia_device *link);
 
 static void bluecard_detach(struct pcmcia_device *p_dev);
@@ -244,7 +244,7 @@ static void bluecard_write_wakeup(bluecard_info_t *info)
 
                clear_bit(XMIT_WAKEUP, &(info->tx_state));
 
-               if (!(info->p_dev->state & DEV_PRESENT))
+               if (!pcmcia_dev_present(info->p_dev))
                        return;
 
                if (test_bit(XMIT_BUFFER_NUMBER, &(info->tx_state))) {
@@ -856,7 +856,7 @@ static int bluecard_close(bluecard_info_t *info)
        return 0;
 }
 
-static int bluecard_attach(struct pcmcia_device *link)
+static int bluecard_probe(struct pcmcia_device *link)
 {
        bluecard_info_t *info;
 
@@ -879,10 +879,7 @@ static int bluecard_attach(struct pcmcia_device *link)
        link->conf.Attributes = CONF_ENABLE_IRQ;
        link->conf.IntType = INT_MEMORY_AND_IO;
 
-       link->state |= DEV_PRESENT | DEV_CONFIG_PENDING;
-       bluecard_config(link);
-
-       return 0;
+       return bluecard_config(link);
 }
 
 
@@ -890,9 +887,7 @@ static void bluecard_detach(struct pcmcia_device *link)
 {
        bluecard_info_t *info = link->priv;
 
-       if (link->state & DEV_CONFIG)
-               bluecard_release(link);
-
+       bluecard_release(link);
        kfree(info);
 }
 
@@ -912,7 +907,7 @@ static int first_tuple(struct pcmcia_device *handle, tuple_t *tuple, cisparse_t
        return pcmcia_parse_tuple(handle, tuple, parse);
 }
 
-static void bluecard_config(struct pcmcia_device *link)
+static int bluecard_config(struct pcmcia_device *link)
 {
        bluecard_info_t *info = link->priv;
        tuple_t tuple;
@@ -935,9 +930,6 @@ static void bluecard_config(struct pcmcia_device *link)
        link->conf.ConfigBase = parse.config.base;
        link->conf.Present = parse.config.rmask[0];
 
-       /* Configure card */
-       link->state |= DEV_CONFIG;
-
        link->conf.ConfigIndex = 0x20;
        link->io.NumPorts1 = 64;
        link->io.IOAddrLines = 6;
@@ -971,15 +963,15 @@ static void bluecard_config(struct pcmcia_device *link)
 
        strcpy(info->node.dev_name, info->hdev->name);
        link->dev_node = &info->node;
-       link->state &= ~DEV_CONFIG_PENDING;
 
-       return;
+       return 0;
 
 cs_failed:
        cs_error(link, last_fn, last_ret);
 
 failed:
        bluecard_release(link);
+       return -ENODEV;
 }
 
 
@@ -987,8 +979,7 @@ static void bluecard_release(struct pcmcia_device *link)
 {
        bluecard_info_t *info = link->priv;
 
-       if (link->state & DEV_PRESENT)
-               bluecard_close(info);
+       bluecard_close(info);
 
        del_timer(&(info->timer));
 
@@ -1008,7 +999,7 @@ static struct pcmcia_driver bluecard_driver = {
        .drv            = {
                .name   = "bluecard_cs",
        },
-       .probe          = bluecard_attach,
+       .probe          = bluecard_probe,
        .remove         = bluecard_detach,
        .id_table       = bluecard_ids,
 };