aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn/hisax/sedlbauer_cs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/isdn/hisax/sedlbauer_cs.c')
-rw-r--r--drivers/isdn/hisax/sedlbauer_cs.c37
1 files changed, 1 insertions, 36 deletions
diff --git a/drivers/isdn/hisax/sedlbauer_cs.c b/drivers/isdn/hisax/sedlbauer_cs.c
index 0b06dbb2d52d..a024192b672a 100644
--- a/drivers/isdn/hisax/sedlbauer_cs.c
+++ b/drivers/isdn/hisax/sedlbauer_cs.c
@@ -171,8 +171,6 @@ static int sedlbauer_config_check(struct pcmcia_device *p_dev,
171 unsigned int vcc, 171 unsigned int vcc,
172 void *priv_data) 172 void *priv_data)
173{ 173{
174 win_req_t *req = priv_data;
175
176 if (cfg->index == 0) 174 if (cfg->index == 0)
177 return -ENODEV; 175 return -ENODEV;
178 176
@@ -219,31 +217,6 @@ static int sedlbauer_config_check(struct pcmcia_device *p_dev,
219 return -ENODEV; 217 return -ENODEV;
220 } 218 }
221 219
222 /*
223 Now set up a common memory window, if needed. There is room
224 in the struct pcmcia_device structure for one memory window handle,
225 but if the base addresses need to be saved, or if multiple
226 windows are needed, the info should go in the private data
227 structure for this device.
228
229 Note that the memory window base is a physical address, and
230 needs to be mapped to virtual space with ioremap() before it
231 is used.
232 */
233 if ((cfg->mem.nwin > 0) || (dflt->mem.nwin > 0)) {
234 cistpl_mem_t *mem = (cfg->mem.nwin) ? &cfg->mem : &dflt->mem;
235 req->Attributes = WIN_DATA_WIDTH_16|WIN_MEMORY_TYPE_CM;
236 req->Attributes |= WIN_ENABLE;
237 req->Base = mem->win[0].host_addr;
238 req->Size = mem->win[0].len;
239 req->AccessSpeed = 0;
240 if (pcmcia_request_window(p_dev, req, &p_dev->win) != 0)
241 return -ENODEV;
242
243 if (pcmcia_map_mem_page(p_dev, p_dev->win,
244 mem->win[0].card_addr) != 0)
245 return -ENODEV;
246 }
247 return 0; 220 return 0;
248} 221}
249 222
@@ -251,16 +224,11 @@ static int sedlbauer_config_check(struct pcmcia_device *p_dev,
251 224
252static int __devinit sedlbauer_config(struct pcmcia_device *link) 225static int __devinit sedlbauer_config(struct pcmcia_device *link)
253{ 226{
254 win_req_t *req;
255 int ret; 227 int ret;
256 IsdnCard_t icard; 228 IsdnCard_t icard;
257 229
258 dev_dbg(&link->dev, "sedlbauer_config(0x%p)\n", link); 230 dev_dbg(&link->dev, "sedlbauer_config(0x%p)\n", link);
259 231
260 req = kzalloc(sizeof(win_req_t), GFP_KERNEL);
261 if (!req)
262 return -ENOMEM;
263
264 /* 232 /*
265 In this loop, we scan the CIS for configuration table entries, 233 In this loop, we scan the CIS for configuration table entries,
266 each of which describes a valid card configuration, including 234 each of which describes a valid card configuration, including
@@ -273,7 +241,7 @@ static int __devinit sedlbauer_config(struct pcmcia_device *link)
273 these things without consulting the CIS, and most client drivers 241 these things without consulting the CIS, and most client drivers
274 will only use the CIS to fill in implementation-defined details. 242 will only use the CIS to fill in implementation-defined details.
275 */ 243 */
276 ret = pcmcia_loop_config(link, sedlbauer_config_check, req); 244 ret = pcmcia_loop_config(link, sedlbauer_config_check, NULL);
277 if (ret) 245 if (ret)
278 goto failed; 246 goto failed;
279 247
@@ -297,9 +265,6 @@ static int __devinit sedlbauer_config(struct pcmcia_device *link)
297 printk(" & %pR", link->resource[0]); 265 printk(" & %pR", link->resource[0]);
298 if (link->resource[1]) 266 if (link->resource[1])
299 printk(" & %pR", link->resource[1]); 267 printk(" & %pR", link->resource[1]);
300 if (link->win)
301 printk(", mem 0x%06lx-0x%06lx", req->Base,
302 req->Base+req->Size-1);
303 printk("\n"); 268 printk("\n");
304 269
305 icard.para[0] = link->irq; 270 icard.para[0] = link->irq;