pcmcia: fix io_probe due to parent (PCI) resources
Similar to commit 7a96e87d
, we need to be aware of any parent PCI
device when requesting IO regions, even only for testing
("probing").
Reported-by: Komuro <komurojun-mbn@nifty.com>
Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
This commit is contained in:
parent
d3e03f4ea8
commit
509b0865fb
1 changed files with 9 additions and 3 deletions
|
@ -214,7 +214,7 @@ static void do_io_probe(struct pcmcia_socket *s, unsigned int base,
|
|||
return;
|
||||
}
|
||||
for (i = base, most = 0; i < base+num; i += 8) {
|
||||
res = claim_region(NULL, i, 8, IORESOURCE_IO, "PCMCIA ioprobe");
|
||||
res = claim_region(s, i, 8, IORESOURCE_IO, "PCMCIA ioprobe");
|
||||
if (!res)
|
||||
continue;
|
||||
hole = inb(i);
|
||||
|
@ -231,9 +231,14 @@ static void do_io_probe(struct pcmcia_socket *s, unsigned int base,
|
|||
|
||||
bad = any = 0;
|
||||
for (i = base; i < base+num; i += 8) {
|
||||
res = claim_region(NULL, i, 8, IORESOURCE_IO, "PCMCIA ioprobe");
|
||||
if (!res)
|
||||
res = claim_region(s, i, 8, IORESOURCE_IO, "PCMCIA ioprobe");
|
||||
if (!res) {
|
||||
if (!any)
|
||||
printk(" excluding");
|
||||
if (!bad)
|
||||
bad = any = i;
|
||||
continue;
|
||||
}
|
||||
for (j = 0; j < 8; j++)
|
||||
if (inb(i+j) != most)
|
||||
break;
|
||||
|
@ -253,6 +258,7 @@ static void do_io_probe(struct pcmcia_socket *s, unsigned int base,
|
|||
}
|
||||
if (bad) {
|
||||
if ((num > 16) && (bad == base) && (i == base+num)) {
|
||||
sub_interval(&s_data->io_db, bad, i-bad);
|
||||
printk(" nothing: probe failed.\n");
|
||||
return;
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue