diff options
Diffstat (limited to 'drivers/pcmcia')
-rw-r--r-- | drivers/pcmcia/ds.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/pcmcia/ds.c b/drivers/pcmcia/ds.c index 6572b3850e55..5b302e822ef5 100644 --- a/drivers/pcmcia/ds.c +++ b/drivers/pcmcia/ds.c | |||
@@ -313,6 +313,7 @@ static int pcmcia_device_probe(struct device * dev) | |||
313 | struct pcmcia_driver *p_drv; | 313 | struct pcmcia_driver *p_drv; |
314 | struct pcmcia_device_id *did; | 314 | struct pcmcia_device_id *did; |
315 | struct pcmcia_socket *s; | 315 | struct pcmcia_socket *s; |
316 | cistpl_config_t cis_config; | ||
316 | int ret = 0; | 317 | int ret = 0; |
317 | 318 | ||
318 | dev = get_device(dev); | 319 | dev = get_device(dev); |
@@ -329,6 +330,18 @@ static int pcmcia_device_probe(struct device * dev) | |||
329 | goto put_dev; | 330 | goto put_dev; |
330 | } | 331 | } |
331 | 332 | ||
333 | /* set up some more device information */ | ||
334 | ret = pccard_read_tuple(p_dev->socket, p_dev->func, CISTPL_CONFIG, | ||
335 | &cis_config); | ||
336 | if (!ret) { | ||
337 | p_dev->conf.ConfigBase = cis_config.base; | ||
338 | p_dev->conf.Present = cis_config.rmask[0]; | ||
339 | } else { | ||
340 | printk(KERN_INFO "pcmcia: could not parse base and rmask0 of CIS\n"); | ||
341 | p_dev->conf.ConfigBase = 0; | ||
342 | p_dev->conf.Present = 0; | ||
343 | } | ||
344 | |||
332 | ret = p_drv->probe(p_dev); | 345 | ret = p_drv->probe(p_dev); |
333 | if (ret) | 346 | if (ret) |
334 | goto put_module; | 347 | goto put_module; |