Module Name:    src
Committed By:   cegger
Date:           Thu Aug 26 07:36:53 UTC 2010

Modified Files:
        src/sys/dev/ieee1394: fwcrom.c iec13213.h

Log Message:
- print expected crc when it does not match
- add and print secondary text leaf. This prints the model name of my webcam.
- add csr keys that are printed as 'unknown' otherwise


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/ieee1394/fwcrom.c
cvs rdiff -u -r1.4 -r1.5 src/sys/dev/ieee1394/iec13213.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/ieee1394/fwcrom.c
diff -u src/sys/dev/ieee1394/fwcrom.c:1.12 src/sys/dev/ieee1394/fwcrom.c:1.13
--- src/sys/dev/ieee1394/fwcrom.c:1.12	Sat Apr 24 21:34:29 2010
+++ src/sys/dev/ieee1394/fwcrom.c	Thu Aug 26 07:36:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: fwcrom.c,v 1.12 2010/04/24 21:34:29 cegger Exp $	*/
+/*	$NetBSD: fwcrom.c,v 1.13 2010/08/26 07:36:53 cegger Exp $	*/
 /*-
  * Copyright (c) 2002-2003
  * 	Hidetoshi Shimokawa. All rights reserved.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fwcrom.c,v 1.12 2010/04/24 21:34:29 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fwcrom.c,v 1.13 2010/08/26 07:36:53 cegger Exp $");
 
 #include <sys/param.h>
 #ifdef _KERNEL
@@ -178,10 +178,16 @@
 		return;
 
 	reg = crom_get(cc);
-	if (reg->key != CROM_TEXTLEAF ||
-	    (char *)(reg + reg->val) > CROM_END(cc)) {
-		strncpy(buf, nullstr, len);
-		return;
+	switch (reg->key) {
+	case CROM_TEXTLEAF:
+	case CROM_TEXTLEAF2:
+		break;
+	default:
+		if ((char *)(reg + reg->val) > CROM_END(cc)) {
+			strncpy(buf, nullstr, len);
+			return;
+		}
+		break;
 	}
 	textleaf = (struct csrtext *)(reg + reg->val);
 
@@ -288,7 +294,7 @@
 	switch (reg->key & CSRTYPE_MASK) {
 	case CSRTYPE_I:
 #if 0
-		len -= snprintf(buf, len, "%d", reg->val);
+		len -= snprintf(buf, len, "0x%x", reg->val);
 		buf += strlen(buf);
 #else
 		*buf = '\0';
@@ -304,33 +310,43 @@
 	case CSRTYPE_D:
 		dir = (struct csrdirectory *) (reg + reg->val);
 		crc = crom_crc((uint32_t *)dir->entry, dir->crc_len);
-		len -= snprintf(buf, len, "len=%d crc=0x%04x(%s) ",
-		    dir->crc_len, dir->crc, (crc == dir->crc) ? "OK" : "NG");
+		len -= snprintf(buf, len, "len=%d crc=0x%04x ",
+		    dir->crc_len, crc);
+		buf += strlen(buf);
+
+		if (crc == dir->crc)
+			len -= snprintf(buf, len, "(OK) ");
+		else
+			len -= snprintf(buf, len, "(NG, 0x%x) ",
+			    dir->crc);
 		buf += strlen(buf);
 	}
 	switch (reg->key) {
-	case 0x03:
+	case CSRKEY_VENDOR: /* 0x03 */
 		desc = "module_vendor_ID";
 		break;
-	case 0x04:
+	case CSRKEY_HW: /* 0x04 */
 		desc = "hardware_version";
 		break;
-	case 0x0c:
+	case CSRKEY_NCAP: /* 0x0c */
 		desc = "node_capabilities";
 		break;
-	case 0x12:
+	case CSRKEY_SPEC: /* 0x12 */
 		desc = "unit_spec_ID";
 		break;
-	case 0x13:
+	case CSRKEY_VER: /* 0x13 */
 		desc = "unit_sw_version";
 		crom_desc_specver(0, reg->val, buf, len);
 		break;
-	case 0x14:
+	case CSRKEY_DINFO: /* 0x14 */
 		desc = "logical_unit_number";
 		break;
-	case 0x17:
+	case CSRKEY_MODEL: /* 0x17 */
 		desc = "model_ID";
 		break;
+	case CSRKEY_REV: /* 0x21 */
+		desc = "revision_ID";
+		break;
 	case 0x38:
 		desc = "command_set_spec_ID";
 		break;
@@ -349,13 +365,20 @@
 	case 0x3d:
 		desc = "reconnect_timeout";
 		break;
+	case 0x40:
+		desc = "command_regs_base";
+		break;
 	case 0x54:
 		desc = "management_agent";
 		break;
-	case 0x81:
+	case CROM_TEXTLEAF: /* 0x81 */
+	case CROM_TEXTLEAF2: /* 0x82 */
 		desc = "text_leaf";
 		crom_parse_text(cc, buf + strlen(buf), len);
 		break;
+	case CROM_NODEID: /* 0x8d */
+		desc = "node_unique_ID";
+		break;
 	case 0xd1:
 		desc = "unit_directory";
 		break;

Index: src/sys/dev/ieee1394/iec13213.h
diff -u src/sys/dev/ieee1394/iec13213.h:1.4 src/sys/dev/ieee1394/iec13213.h:1.5
--- src/sys/dev/ieee1394/iec13213.h:1.4	Mon Mar 29 03:05:28 2010
+++ src/sys/dev/ieee1394/iec13213.h	Thu Aug 26 07:36:53 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: iec13213.h,v 1.4 2010/03/29 03:05:28 kiyohara Exp $	*/
+/*	$NetBSD: iec13213.h,v 1.5 2010/08/26 07:36:53 cegger Exp $	*/
 /*-
  * Copyright (c) 2003 Hidetoshi Shimokawa
  * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa
@@ -105,8 +105,10 @@
 
 #define CROM_UDIR	(CSRTYPE_D | CSRKEY_UNIT)  /* 0x81 Unit directory */
 #define CROM_TEXTLEAF	(CSRTYPE_L | CSRKEY_DESC)  /* 0x81 Text leaf */
+#define CROM_TEXTLEAF2	(CSRTYPE_L | CSRKEY_BDINFO)/* 0x82 Text leaf2 */
 #define CROM_LUN	(CSRTYPE_I | CSRKEY_DINFO) /* 0x14 Logical unit num. */
 #define CROM_MGM	(CSRTYPE_C | CSRKEY_DINFO) /* 0x54 Management agent */
+#define CROM_NODEID	0x8d /* only valid for IEEE 1394-1995 digital camera */
 
 #define CSRVAL_VENDOR_PRIVATE	0xacde48
 #define CSRVAL_1394TA	0x00a02d

Reply via email to