summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2001-12-04 13:48:16 +0000
committerimp <imp@FreeBSD.org>2001-12-04 13:48:16 +0000
commit67df0b50e49952ce8509a859989e9f1bbb5bbb33 (patch)
tree17bed666724f6bc404a78936e52f08c24d9f5db0 /sys
parentbdd80c2551a79a514bfb5eaca6562177b2f37a57 (diff)
downloadFreeBSD-src-67df0b50e49952ce8509a859989e9f1bbb5bbb33.zip
FreeBSD-src-67df0b50e49952ce8509a859989e9f1bbb5bbb33.tar.gz
implement MFC links properly (and I think long links too). This make
the sprint wireless card try to attach. Sadly, the pci code at the bridge keeps this from happening. Bug w/o PR: jhb :-)
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/pccard/pccard_cis.c49
1 files changed, 7 insertions, 42 deletions
diff --git a/sys/dev/pccard/pccard_cis.c b/sys/dev/pccard/pccard_cis.c
index 452f60f..d05c5c1 100644
--- a/sys/dev/pccard/pccard_cis.c
+++ b/sys/dev/pccard/pccard_cis.c
@@ -168,7 +168,6 @@ pccard_scan_cis(device_t dev, int (*fct)(struct pccard_tuple *, void *),
ret = 1;
goto done;
}
- ret = 1; goto done; /* XXX IMP XXX */
tuple.ptr++;
break;
}
@@ -314,6 +313,7 @@ pccard_scan_cis(device_t dev, int (*fct)(struct pccard_tuple *, void *),
if ((i % 16) == 13)
DPRINTF(("\n"));
}
+
if ((i % 16) != 14)
DPRINTF(("\n"));
}
@@ -322,10 +322,6 @@ pccard_scan_cis(device_t dev, int (*fct)(struct pccard_tuple *, void *),
tuple.ptr += 2 + tuple.length;
}
-#ifdef XXX /* I'm not up to this tonight, need to implement new API */
- /* to deal with moving windows and such. At least that's */
- /* what it appears at this instant */
-
/*
* the chain is done. Clean up and move onto the next one,
* if any. The loop is here in the case that there is an MFC
@@ -335,29 +331,10 @@ pccard_scan_cis(device_t dev, int (*fct)(struct pccard_tuple *, void *),
*/
while (1) {
- pccard_chip_mem_unmap(pct, pch, window);
-
if (longlink_present) {
- /*
- * if the longlink is to attribute memory,
- * then it is unindexed. That is, if the
- * link value is 0x100, then the actual
- * memory address is 0x200. This means that
- * we need to multiply by 2 before calling
- * mem_map, and then divide the resulting ptr
- * by 2 after.
- */
-
- if (!longlink_common)
- longlink_addr *= 2;
-
- pccard_chip_mem_map(pct, pch, longlink_common ?
- PCCARD_MEM_COMMON : PCCARD_MEM_ATTR,
- longlink_addr, PCCARD_CIS_SIZE,
- &pcmh, &tuple.ptr, &window);
-
- if (!longlink_common)
- tuple.ptr /= 2;
+ CARD_SET_RES_FLAGS(device_get_parent(dev), dev,
+ SYS_RES_MEMORY, rid, longlink_common ?
+ PCCARD_A_MEM_ATTR : PCCARD_A_MEM_ATTR);
DPRINTF(("cis mem map %x\n",
(unsigned int) tuple.memh));
tuple.mult = longlink_common ? 1 : 2;
@@ -365,23 +342,13 @@ pccard_scan_cis(device_t dev, int (*fct)(struct pccard_tuple *, void *),
longlink_common = 1;
longlink_addr = 0;
} else if (mfc_count && (mfc_index < mfc_count)) {
- if (!mfc[mfc_index].common)
- mfc[mfc_index].addr *= 2;
-
- pccard_chip_mem_map(pct, pch,
- mfc[mfc_index].common ?
- PCCARD_MEM_COMMON : PCCARD_MEM_ATTR,
- mfc[mfc_index].addr, PCCARD_CIS_SIZE,
- &pcmh, &tuple.ptr, &window);
-
- if (!mfc[mfc_index].common)
- tuple.ptr /= 2;
+ CARD_SET_RES_FLAGS(device_get_parent(dev), dev,
+ SYS_RES_MEMORY, rid, mfc[mfc_index].common
+ ? PCCARD_A_MEM_ATTR : PCCARD_A_MEM_ATTR);
DPRINTF(("cis mem map %x\n",
(unsigned int) tuple.memh));
/* set parse state, and point at the next one */
-
tuple.mult = mfc[mfc_index].common ? 1 : 2;
-
mfc_index++;
} else {
goto done;
@@ -411,10 +378,8 @@ pccard_scan_cis(device_t dev, int (*fct)(struct pccard_tuple *, void *),
continue;
}
tuple.ptr += 2 + tuple.length;
-
break;
}
-#endif /* XXX */
}
done:
OpenPOWER on IntegriCloud