diff options
author | simokawa <simokawa@FreeBSD.org> | 2004-03-26 23:17:10 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2004-03-26 23:17:10 +0000 |
commit | 3e9f33ddfa8ae2d049f8e827244fdb7ee5f13790 (patch) | |
tree | d9df20a1b244e854f2dbc94fb002b9471a60e817 /sys/dev/firewire/fwcrom.c | |
parent | d5e8f62700d6cc71bdc98dcce5c75443c6b4a22b (diff) | |
download | FreeBSD-src-3e9f33ddfa8ae2d049f8e827244fdb7ee5f13790.zip FreeBSD-src-3e9f33ddfa8ae2d049f8e827244fdb7ee5f13790.tar.gz |
MFp4: FireWire
* all
- s/__FUNCTION__/__func__/.
Submitted by: Stefan Farfeleder <stefan@fafoe.narf.at>
- Compatibility for RELENG_4 and DragonFly.
* firewire
- Timestamp just before queuing.
- Retry bus probe if it fails.
- Use device_printf() for debug message.
- Invalidiate CROM while update.
- Don't process minimum/invalid CROM.
* sbp
- Add ORB_SHORTAGE flag.
- Add sbp.tags tunable.
- Revive doorbell support. It's not enabled by default.
Diffstat (limited to 'sys/dev/firewire/fwcrom.c')
-rw-r--r-- | sys/dev/firewire/fwcrom.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/sys/dev/firewire/fwcrom.c b/sys/dev/firewire/fwcrom.c index 15dd818..25524c0 100644 --- a/sys/dev/firewire/fwcrom.c +++ b/sys/dev/firewire/fwcrom.c @@ -32,8 +32,10 @@ * SUCH DAMAGE. */ +#ifdef __FreeBSD__ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#endif #include <sys/param.h> #if defined(_KERNEL) || defined(TEST) @@ -50,8 +52,14 @@ __FBSDID("$FreeBSD$"); #include <stdlib.h> #include <string.h> #endif + +#ifdef __DragonFly__ +#include "firewire.h" +#include "iec13213.h" +#else #include <dev/firewire/firewire.h> #include <dev/firewire/iec13213.h> +#endif #define MAX_ROM (1024 - sizeof(u_int32_t) * 5) #define CROM_END(cc) ((vm_offset_t)(cc)->stack[0].dir + MAX_ROM - 1) @@ -62,9 +70,10 @@ crom_init_context(struct crom_context *cc, u_int32_t *p) struct csrhdr *hdr; hdr = (struct csrhdr *)p; - if (hdr->info_len == 1) { - /* minimum ROM */ + if (hdr->info_len <= 1) { + /* minimum or invalid ROM */ cc->depth = -1; + return; } p += 1 + hdr->info_len; @@ -436,7 +445,7 @@ crom_add_simple_text(struct crom_src *src, struct crom_chunk *parent, len = strlen(buf); if (len > MAX_TEXT) { -#if __FreeBSD_version < 500000 +#if defined(__DragonFly__) || __FreeBSD_version < 500000 printf("text(%d) trancated to %d.\n", len, MAX_TEXT); #else printf("text(%d) trancated to %td.\n", len, MAX_TEXT); @@ -574,9 +583,15 @@ main () { /* private company_id */ crom_add_entry(&root, CSRKEY_VENDOR, 0xacde48); +#ifdef __DragonFly__ + crom_add_simple_text(&src, &root, &text1, "DragonFly"); + crom_add_entry(&root, CSRKEY_HW, __DragonFly_cc_version); + crom_add_simple_text(&src, &root, &text2, "DragonFly-1"); +#else crom_add_simple_text(&src, &root, &text1, "FreeBSD"); crom_add_entry(&root, CSRKEY_HW, __FreeBSD_version); crom_add_simple_text(&src, &root, &text2, "FreeBSD-5"); +#endif /* SBP unit directory */ crom_add_chunk(&src, &root, &unit1, CROM_UDIR); |