aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/b43/pcmcia.c
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
commitada47b5fe13d89735805b566185f4885f5a3f750 (patch)
tree644b88f8a71896307d71438e9b3af49126ffb22b /drivers/net/wireless/b43/pcmcia.c
parent43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff)
parent3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff)
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/net/wireless/b43/pcmcia.c')
-rw-r--r--drivers/net/wireless/b43/pcmcia.c27
1 files changed, 3 insertions, 24 deletions
diff --git a/drivers/net/wireless/b43/pcmcia.c b/drivers/net/wireless/b43/pcmcia.c
index 6c3a74964ab8..609e7051e018 100644
--- a/drivers/net/wireless/b43/pcmcia.c
+++ b/drivers/net/wireless/b43/pcmcia.c
@@ -24,6 +24,7 @@
24#include "pcmcia.h" 24#include "pcmcia.h"
25 25
26#include <linux/ssb/ssb.h> 26#include <linux/ssb/ssb.h>
27#include <linux/slab.h>
27 28
28#include <pcmcia/cs_types.h> 29#include <pcmcia/cs_types.h>
29#include <pcmcia/cs.h> 30#include <pcmcia/cs.h>
@@ -65,35 +66,15 @@ static int __devinit b43_pcmcia_probe(struct pcmcia_device *dev)
65 struct ssb_bus *ssb; 66 struct ssb_bus *ssb;
66 win_req_t win; 67 win_req_t win;
67 memreq_t mem; 68 memreq_t mem;
68 tuple_t tuple;
69 cisparse_t parse;
70 int err = -ENOMEM; 69 int err = -ENOMEM;
71 int res = 0; 70 int res = 0;
72 unsigned char buf[64];
73 71
74 ssb = kzalloc(sizeof(*ssb), GFP_KERNEL); 72 ssb = kzalloc(sizeof(*ssb), GFP_KERNEL);
75 if (!ssb) 73 if (!ssb)
76 goto out_error; 74 goto out_error;
77 75
78 err = -ENODEV; 76 err = -ENODEV;
79 tuple.DesiredTuple = CISTPL_CONFIG;
80 tuple.Attributes = 0;
81 tuple.TupleData = buf;
82 tuple.TupleDataMax = sizeof(buf);
83 tuple.TupleOffset = 0;
84 77
85 res = pcmcia_get_first_tuple(dev, &tuple);
86 if (res != 0)
87 goto err_kfree_ssb;
88 res = pcmcia_get_tuple_data(dev, &tuple);
89 if (res != 0)
90 goto err_kfree_ssb;
91 res = pcmcia_parse_tuple(&tuple, &parse);
92 if (res != 0)
93 goto err_kfree_ssb;
94
95 dev->conf.ConfigBase = parse.config.base;
96 dev->conf.Present = parse.config.rmask[0];
97 dev->conf.Attributes = CONF_ENABLE_IRQ; 78 dev->conf.Attributes = CONF_ENABLE_IRQ;
98 dev->conf.IntType = INT_MEMORY_AND_IO; 79 dev->conf.IntType = INT_MEMORY_AND_IO;
99 80
@@ -107,20 +88,18 @@ static int __devinit b43_pcmcia_probe(struct pcmcia_device *dev)
107 win.Base = 0; 88 win.Base = 0;
108 win.Size = SSB_CORE_SIZE; 89 win.Size = SSB_CORE_SIZE;
109 win.AccessSpeed = 250; 90 win.AccessSpeed = 250;
110 res = pcmcia_request_window(&dev, &win, &dev->win); 91 res = pcmcia_request_window(dev, &win, &dev->win);
111 if (res != 0) 92 if (res != 0)
112 goto err_kfree_ssb; 93 goto err_kfree_ssb;
113 94
114 mem.CardOffset = 0; 95 mem.CardOffset = 0;
115 mem.Page = 0; 96 mem.Page = 0;
116 res = pcmcia_map_mem_page(dev->win, &mem); 97 res = pcmcia_map_mem_page(dev, dev->win, &mem);
117 if (res != 0) 98 if (res != 0)
118 goto err_disable; 99 goto err_disable;
119 100
120 dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING; 101 dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
121 dev->irq.IRQInfo1 = IRQ_LEVEL_ID;
122 dev->irq.Handler = NULL; /* The handler is registered later. */ 102 dev->irq.Handler = NULL; /* The handler is registered later. */
123 dev->irq.Instance = NULL;
124 res = pcmcia_request_irq(dev, &dev->irq); 103 res = pcmcia_request_irq(dev, &dev->irq);
125 if (res != 0) 104 if (res != 0)
126 goto err_disable; 105 goto err_disable;