diff options
author | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
---|---|---|
committer | Andrea Bastoni <bastoni@cs.unc.edu> | 2010-05-30 19:16:45 -0400 |
commit | ada47b5fe13d89735805b566185f4885f5a3f750 (patch) | |
tree | 644b88f8a71896307d71438e9b3af49126ffb22b /drivers/net/wireless/b43/pcmcia.c | |
parent | 43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff) | |
parent | 3280f21d43ee541f97f8cda5792150d2dbec20d5 (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.c | 27 |
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; |