|
@@ -1,5 +1,5 @@
|
|
/*
|
|
/*
|
|
- * ffs-test.c.c -- user mode filesystem api for usb composite function
|
|
|
|
|
|
+ * ffs-test.c -- user mode filesystem api for usb composite function
|
|
*
|
|
*
|
|
* Copyright (C) 2010 Samsung Electronics
|
|
* Copyright (C) 2010 Samsung Electronics
|
|
* Author: Michal Nazarewicz <mina86@mina86.com>
|
|
* Author: Michal Nazarewicz <mina86@mina86.com>
|
|
@@ -21,6 +21,8 @@
|
|
|
|
|
|
/* $(CROSS_COMPILE)cc -Wall -Wextra -g -o ffs-test ffs-test.c -lpthread */
|
|
/* $(CROSS_COMPILE)cc -Wall -Wextra -g -o ffs-test ffs-test.c -lpthread */
|
|
|
|
|
|
|
|
+/* Uncomment to make the tool use legacy FFS descriptor headers. */
|
|
|
|
+/* #define USE_LEGACY_DESC_HEAD */
|
|
|
|
|
|
#define _BSD_SOURCE /* for endian.h */
|
|
#define _BSD_SOURCE /* for endian.h */
|
|
|
|
|
|
@@ -106,7 +108,15 @@ static void _msg(unsigned level, const char *fmt, ...)
|
|
/******************** Descriptors and Strings *******************************/
|
|
/******************** Descriptors and Strings *******************************/
|
|
|
|
|
|
static const struct {
|
|
static const struct {
|
|
- struct usb_functionfs_descs_head header;
|
|
|
|
|
|
+ struct {
|
|
|
|
+ __le32 magic;
|
|
|
|
+ __le32 length;
|
|
|
|
+#ifndef USE_LEGACY_DESC_HEAD
|
|
|
|
+ __le32 flags;
|
|
|
|
+#endif
|
|
|
|
+ __le32 fs_count;
|
|
|
|
+ __le32 hs_count;
|
|
|
|
+ } __attribute__((packed)) header;
|
|
struct {
|
|
struct {
|
|
struct usb_interface_descriptor intf;
|
|
struct usb_interface_descriptor intf;
|
|
struct usb_endpoint_descriptor_no_audio sink;
|
|
struct usb_endpoint_descriptor_no_audio sink;
|
|
@@ -114,7 +124,13 @@ static const struct {
|
|
} __attribute__((packed)) fs_descs, hs_descs;
|
|
} __attribute__((packed)) fs_descs, hs_descs;
|
|
} __attribute__((packed)) descriptors = {
|
|
} __attribute__((packed)) descriptors = {
|
|
.header = {
|
|
.header = {
|
|
|
|
+#ifdef USE_LEGACY_DESC_HEAD
|
|
.magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC),
|
|
.magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC),
|
|
|
|
+#else
|
|
|
|
+ .magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC_V2),
|
|
|
|
+ .flags = cpu_to_le32(FUNCTIONFS_HAS_FS_DESC |
|
|
|
|
+ FUNCTIONFS_HAS_HS_DESC),
|
|
|
|
+#endif
|
|
.length = cpu_to_le32(sizeof descriptors),
|
|
.length = cpu_to_le32(sizeof descriptors),
|
|
.fs_count = 3,
|
|
.fs_count = 3,
|
|
.hs_count = 3,
|
|
.hs_count = 3,
|