]> err.no Git - linux-2.6/blobdiff - drivers/bluetooth/dtl1_cs.c
[PATCH] md: reformat code in raid1_end_write_request to avoid goto
[linux-2.6] / drivers / bluetooth / dtl1_cs.c
index 416433b4a34822ebdc8a517b09ec01c7bf2790b0..ed8dca84ff690a9a9918fdf1f19ef6788ab3a441 100644 (file)
@@ -87,7 +87,7 @@ typedef struct dtl1_info_t {
 } dtl1_info_t;
 
 
-static void dtl1_config(struct pcmcia_device *link);
+static int dtl1_config(struct pcmcia_device *link);
 static void dtl1_release(struct pcmcia_device *link);
 
 static void dtl1_detach(struct pcmcia_device *p_dev);
@@ -159,7 +159,7 @@ static void dtl1_write_wakeup(dtl1_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 (!(skb = skb_dequeue(&(info->txq))))
@@ -423,6 +423,9 @@ static int dtl1_hci_send_frame(struct sk_buff *skb)
        nsh.len = skb->len;
 
        s = bt_skb_alloc(NSHL + skb->len + 1, GFP_ATOMIC);
+       if (!s)
+               return -ENOMEM;
+
        skb_reserve(s, NSHL);
        memcpy(skb_put(s, skb->len), skb->data, skb->len);
        if (skb->len & 0x0001)
@@ -555,7 +558,7 @@ static int dtl1_close(dtl1_info_t *info)
        return 0;
 }
 
-static int dtl1_attach(struct pcmcia_device *link)
+static int dtl1_probe(struct pcmcia_device *link)
 {
        dtl1_info_t *info;
 
@@ -578,10 +581,7 @@ static int dtl1_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;
-       dtl1_config(link);
-
-       return 0;
+       return dtl1_config(link);
 }
 
 
@@ -589,8 +589,7 @@ static void dtl1_detach(struct pcmcia_device *link)
 {
        dtl1_info_t *info = link->priv;
 
-       if (link->state & DEV_CONFIG)
-               dtl1_release(link);
+       dtl1_release(link);
 
        kfree(info);
 }
@@ -620,7 +619,7 @@ static int next_tuple(struct pcmcia_device *handle, tuple_t *tuple, cisparse_t *
        return get_tuple(handle, tuple, parse);
 }
 
-static void dtl1_config(struct pcmcia_device *link)
+static int dtl1_config(struct pcmcia_device *link)
 {
        dtl1_info_t *info = link->priv;
        tuple_t tuple;
@@ -644,9 +643,6 @@ static void dtl1_config(struct pcmcia_device *link)
        link->conf.ConfigBase = parse.config.base;
        link->conf.Present = parse.config.rmask[0];
 
-       /* Configure card */
-       link->state |= DEV_CONFIG;
-
        tuple.TupleData = (cisdata_t *)buf;
        tuple.TupleOffset = 0;
        tuple.TupleDataMax = 255;
@@ -691,15 +687,15 @@ static void dtl1_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:
        dtl1_release(link);
+       return -ENODEV;
 }
 
 
@@ -707,8 +703,7 @@ static void dtl1_release(struct pcmcia_device *link)
 {
        dtl1_info_t *info = link->priv;
 
-       if (link->state & DEV_PRESENT)
-               dtl1_close(info);
+       dtl1_close(info);
 
        pcmcia_disable_device(link);
 }
@@ -727,7 +722,7 @@ static struct pcmcia_driver dtl1_driver = {
        .drv            = {
                .name   = "dtl1_cs",
        },
-       .probe          = dtl1_attach,
+       .probe          = dtl1_probe,
        .remove         = dtl1_detach,
        .id_table       = dtl1_ids,
 };