diff options
author | imp <imp@FreeBSD.org> | 2008-11-03 06:06:22 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2008-11-03 06:06:22 +0000 |
commit | 2ee7e7c4e9cb8490895edca9cbc8c1a2ae8fac82 (patch) | |
tree | 3c9dfe8effd7bc0526ffd3aab0d21a1c84c068aa /sys/dev/cardbus | |
parent | ab0c44b3d80c8ad5df3b3415c746dd9b6d0a14ab (diff) | |
download | FreeBSD-src-2ee7e7c4e9cb8490895edca9cbc8c1a2ae8fac82.zip FreeBSD-src-2ee7e7c4e9cb8490895edca9cbc8c1a2ae8fac82.tar.gz |
Use child (the card) in preference to cbdev (the bridge) when
allocating resources to read the CIS. I'm not sure when this changed,
but it is totally wrong. Also, add a minor improvement to the
debugging.
This should help everybody trying to run dumpcis on atheros wireless
card as well.
MFC after: 2 days
Diffstat (limited to 'sys/dev/cardbus')
-rw-r--r-- | sys/dev/cardbus/cardbus_cis.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/dev/cardbus/cardbus_cis.c b/sys/dev/cardbus/cardbus_cis.c index db1c606..a8cfa25 100644 --- a/sys/dev/cardbus/cardbus_cis.c +++ b/sys/dev/cardbus/cardbus_cis.c @@ -511,7 +511,7 @@ cardbus_read_tuple_init(device_t cbdev, device_t child, uint32_t *start, device_printf(cbdev, "Bad header in rom %d: " "[%x] %04x\n", romnum, imagebase + CARDBUS_EXROM_SIGNATURE, romsig); - bus_release_resource(cbdev, SYS_RES_MEMORY, + bus_release_resource(child, SYS_RES_MEMORY, *rid, res); *rid = 0; return (NULL); @@ -548,7 +548,7 @@ cardbus_read_tuple_init(device_t cbdev, device_t child, uint32_t *start, CARDBUS_EXROM_DATA_INDICATOR) & 0x80) != 0) { device_printf(cbdev, "Cannot find CIS in " "Option ROM\n"); - bus_release_resource(cbdev, SYS_RES_MEMORY, + bus_release_resource(child, SYS_RES_MEMORY, *rid, res); *rid = 0; return (NULL); @@ -559,6 +559,8 @@ cardbus_read_tuple_init(device_t cbdev, device_t child, uint32_t *start, } else { *start = *start & PCIM_CIS_ADDR_MASK; } + if (cardbus_cis_debug) + device_printf(cbdev, "CIS offset is %#x\n", *start); return (res); } |