![Andrzej Pietrasiewicz](/assets/img/avatar_default.png)
Add handling of OS Extended Compatibility descriptors from configfs interface. Hosts which expect the "OS Descriptors" ask only for configurations @ index 0, but linux-based USB devices can provide more than one configuration. This patch adds marking one of gadget's configurations the configuration to be reported at index 0, regardless of the actual sequence of usb_add_config invocations used for adding the configurations. The configuration is selected by creating a symbolic link pointing to it from the "os_desc" directory located at the top of a gadget's directory hierarchy. One kind of "OS Descriptors" are "Extended Compatibility Descriptors", which need to be specified per interface. This patch adds interface.<n> directory in function's configfs directory to represent each interface defined by the function. Each interface's directory contains two attributes: "compatible_id" and "sub_compatible_id", which represent 8-byte strings to be reported to the host as the "Compatible ID" and "Sub Compatible ID". Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@samsung.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
19 lines
493 B
C
19 lines
493 B
C
#ifndef USB__GADGET__CONFIGFS__H
|
|
#define USB__GADGET__CONFIGFS__H
|
|
|
|
#include <linux/configfs.h>
|
|
|
|
void unregister_gadget_item(struct config_item *item);
|
|
|
|
int usb_os_desc_prepare_interf_dir(struct config_group *parent,
|
|
int n_interf,
|
|
struct usb_os_desc **desc,
|
|
struct module *owner);
|
|
|
|
static inline struct usb_os_desc *to_usb_os_desc(struct config_item *item)
|
|
{
|
|
return container_of(to_config_group(item), struct usb_os_desc, group);
|
|
}
|
|
|
|
#endif /* USB__GADGET__CONFIGFS__H */
|