tools/firewire/decode-fcp.c

Source file repositories/reference/linux-study-clean/tools/firewire/decode-fcp.c

File Facts

System
Linux kernel
Corpus path
tools/firewire/decode-fcp.c
Extension
.c
Size
5653 bytes
Lines
215
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: implementation source
Status
source implementation candidate

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

struct avc_enum {
	int value;
	const char *name;
};

struct avc_field {
	const char *name;	/* Short name for field. */
	int offset;		/* Location of field, specified in bits; */
				/* negative means from end of packet.    */
	int width;		/* Width of field, 0 means use data_length. */
	struct avc_enum *names;
};

struct avc_opcode_info {
	const char *name;
	struct avc_field fields[8];
};

struct avc_enum power_field_names[] = {
	{ 0x70, "on" },
	{ 0x60, "off" },
	{ }
};

static const struct avc_opcode_info opcode_info[256] = {

	/* TA Document 1999026 */
	/* AV/C Digital Interface Command Set General Specification 4.0 */
	[0xb2] = { "power", {
			{ "state", 0, 8, power_field_names }
		}
	},
	[0x30] = { "unit info", {
			{ "foo", 0, 8 },
			{ "unit_type", 8, 5 },
			{ "unit", 13, 3 },
			{ "company id", 16, 24 },
		}
	},
	[0x31] = { "subunit info" },
	[0x01] = { "reserve" },
	[0xb0] = { "version" },
	[0x00] = { "vendor dependent" },
	[0x02] = { "plug info" },
	[0x12] = { "channel usage" },
	[0x24] = { "connect" },
	[0x20] = { "connect av" },
	[0x22] = { "connections" },
	[0x11] = { "digital input" },
	[0x10] = { "digital output" },
	[0x25] = { "disconnect" },
	[0x21] = { "disconnect av" },
	[0x19] = { "input plug signal format" },
	[0x18] = { "output plug signal format" },
	[0x1f] = { "general bus setup" },

	/* TA Document 1999025 */
	/* AV/C Descriptor Mechanism Specification Version 1.0 */
	[0x0c] = { "create descriptor" },
	[0x08] = { "open descriptor" },
	[0x09] = { "read descriptor" },
	[0x0a] = { "write descriptor" },
	[0x05] = { "open info block" },
	[0x06] = { "read info block" },
	[0x07] = { "write info block" },
	[0x0b] = { "search descriptor" },
	[0x0d] = { "object number select" },

	/* TA Document 1999015 */
	/* AV/C Command Set for Rate Control of Isochronous Data Flow 1.0 */
	[0xb3] = { "rate", {
			{ "subfunction", 0, 8 },
			{ "result", 8, 8 },
			{ "plug_type", 16, 8 },
			{ "plug_id", 16, 8 },
		}
	},

	/* TA Document 1999008 */
	/* AV/C Audio Subunit Specification 1.0 */
	[0xb8] = { "function block" },

	/* TA Document 2001001 */
	/* AV/C Panel Subunit Specification 1.1 */
	[0x7d] = { "gui update" },
	[0x7e] = { "push gui data" },
	[0x7f] = { "user action" },
	[0x7c] = { "pass through" },

	/* */

Annotation

Implementation Notes