Skip to content

Commit

Permalink
tools: ffs-test: convert to new descriptor format fixing compilation …
Browse files Browse the repository at this point in the history
…error

Commit [ac8dde1: “usb: gadget: f_fs: Add flags to descriptors block”]
which introduced a new descriptor format for FunctionFS removed the
usb_functionfs_descs_head structure, which is still used by ffs-test.
tool.

Convert ffs-test by converting it to use the new header format.  For
testing kernels prior to 3.14 (when the new format was introduced) and
parsing of the legacy headers in the new kernels, provide a compilation
flag to make the tool use the old format.

Finally, include information as to when the legacy FunctionFS headers
format has been deprecated (which is also when the new one has been
introduced).

Reported-by: Lad, Prabhakar <[email protected]>
Signed-off-by: Michal Nazarewicz <[email protected]>
Signed-off-by: Felipe Balbi <[email protected]>
  • Loading branch information
mina86 authored and Felipe Balbi committed Jun 19, 2014
1 parent 5cd8c48 commit f2af741
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
2 changes: 1 addition & 1 deletion include/uapi/linux/usb/functionfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ struct usb_endpoint_descriptor_no_audio {
* structure. Any flags that are not recognised cause the whole block to be
* rejected with -ENOSYS.
*
* Legacy descriptors format:
* Legacy descriptors format (deprecated as of 3.14):
*
* | off | name | type | description |
* |-----+-----------+--------------+--------------------------------------|
Expand Down
6 changes: 5 additions & 1 deletion tools/usb/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ WARNINGS = -Wall -Wextra
CFLAGS = $(WARNINGS) -g -I../include
LDFLAGS = $(PTHREAD_LIBS)

all: testusb ffs-test
all: testusb ffs-test ffs-test-legacy

ffs-test-legacy: ffs-test.c
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) -DUSE_LEGACY_DESC_HEAD

%: %.c
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)

Expand Down
20 changes: 18 additions & 2 deletions tools/usb/ffs-test.c
Original file line number Diff line number Diff line change
@@ -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
* Author: Michal Nazarewicz <[email protected]>
Expand All @@ -21,6 +21,8 @@

/* $(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 */

Expand Down Expand Up @@ -106,15 +108,29 @@ static void _msg(unsigned level, const char *fmt, ...)
/******************** Descriptors and Strings *******************************/

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 usb_interface_descriptor intf;
struct usb_endpoint_descriptor_no_audio sink;
struct usb_endpoint_descriptor_no_audio source;
} __attribute__((packed)) fs_descs, hs_descs;
} __attribute__((packed)) descriptors = {
.header = {
#ifdef USE_LEGACY_DESC_HEAD
.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),
.fs_count = 3,
.hs_count = 3,
Expand Down

0 comments on commit f2af741

Please sign in to comment.