summaryrefslogtreecommitdiffstats
path: root/sys/dev/firewire/fwcrom.c
diff options
context:
space:
mode:
authorsimokawa <simokawa@FreeBSD.org>2004-03-26 23:17:10 +0000
committersimokawa <simokawa@FreeBSD.org>2004-03-26 23:17:10 +0000
commit3e9f33ddfa8ae2d049f8e827244fdb7ee5f13790 (patch)
treed9df20a1b244e854f2dbc94fb002b9471a60e817 /sys/dev/firewire/fwcrom.c
parentd5e8f62700d6cc71bdc98dcce5c75443c6b4a22b (diff)
downloadFreeBSD-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.c21
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);
OpenPOWER on IntegriCloud