Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 10416568 authored by Felipe Balbi's avatar Felipe Balbi
Browse files

usb: gadget: udc: add a 'function' sysfs file



This file will print out the name of the currently running USB Gadget
Driver. It can be read even when there are no functions loaded.

Suggested-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent 06644aaf
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -91,3 +91,11 @@ Description:
		'configured', and 'suspended'; however not all USB Device
		Controllers support reporting all states.
Users:

What:		/sys/class/udc/<udc>/function
Date:		June 2017
KernelVersion:	4.13
Contact:	Felipe Balbi <balbi@kernel.org>
Description:
		Prints out name of currently running USB Gadget Driver.
Users:
+13 −0
Original line number Diff line number Diff line
@@ -1460,6 +1460,18 @@ static ssize_t state_show(struct device *dev, struct device_attribute *attr,
}
static DEVICE_ATTR_RO(state);

static ssize_t function_show(struct device *dev, struct device_attribute *attr,
			     char *buf)
{
	struct usb_udc		*udc = container_of(dev, struct usb_udc, dev);
	struct usb_gadget_driver *drv = udc->driver;

	if (!drv || !drv->function)
		return 0;
	return scnprintf(buf, PAGE_SIZE, "%s\n", drv->function);
}
static DEVICE_ATTR_RO(function);

#define USB_UDC_SPEED_ATTR(name, param)					\
ssize_t name##_show(struct device *dev,					\
		struct device_attribute *attr, char *buf)		\
@@ -1495,6 +1507,7 @@ static struct attribute *usb_udc_attrs[] = {
	&dev_attr_srp.attr,
	&dev_attr_soft_connect.attr,
	&dev_attr_state.attr,
	&dev_attr_function.attr,
	&dev_attr_current_speed.attr,
	&dev_attr_maximum_speed.attr,