'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:
 
 }
 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)               \
        &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,