Message ID | 20240118125137.3996800-1-peter@korsgaard.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2] usb: gadget: f_fs: expose ready state in configfs | expand |
On Thu, Jan 18, 2024 at 01:51:37PM +0100, Peter Korsgaard wrote: > When a USB gadget is configured through configfs with 1 or more f_fs > functions, then the logic setting up the gadget configuration has to wait > until the user space code (typically separate applications) responsible for > those functions have written their descriptors before the gadget can be > activated. > > The f_fs instance already knows if this has been done, so expose it through > a "ready" attribute in configfs for easier synchronization. > > Signed-off-by: Peter Korsgaard <peter@korsgaard.com> > --- > Changes since v1: > - Add documentation snippet as requested by Greg. > > Documentation/usb/gadget-testing.rst | 8 ++++++++ Shouldn't this be documented in Documentation/ABI/ instead? thanks, greg k-h
>>>>> "Greg" == Greg Kroah-Hartman <gregkh@linuxfoundation.org> writes: > On Thu, Jan 18, 2024 at 01:51:37PM +0100, Peter Korsgaard wrote: >> When a USB gadget is configured through configfs with 1 or more f_fs >> functions, then the logic setting up the gadget configuration has to wait >> until the user space code (typically separate applications) responsible for >> those functions have written their descriptors before the gadget can be >> activated. >> >> The f_fs instance already knows if this has been done, so expose it through >> a "ready" attribute in configfs for easier synchronization. >> >> Signed-off-by: Peter Korsgaard <peter@korsgaard.com> >> --- >> Changes since v1: >> - Add documentation snippet as requested by Greg. >> >> Documentation/usb/gadget-testing.rst | 8 ++++++++ > Shouldn't this be documented in Documentation/ABI/ instead? Ahh, we have documentation in too many places. I'll add it to Documentation/ABI/testing/configfs-gadget-ffs as well and send a v3. Thanks.
diff --git a/Documentation/usb/gadget-testing.rst b/Documentation/usb/gadget-testing.rst index 29072c166d23..fcbd8bb22db4 100644 --- a/Documentation/usb/gadget-testing.rst +++ b/Documentation/usb/gadget-testing.rst @@ -206,6 +206,14 @@ the standard procedure for using FunctionFS (mount it, run the userspace process which implements the function proper). The gadget should be enabled by writing a suitable string to usb_gadget/<gadget>/UDC. +The FFS function provides just one attribute in its function directory: + + ready + +The attribute is read-only and signals if the function is ready (1) to be +used, E.G. if userspace has written descriptors and strings to ep0, so +the gadget can be enabled. + Testing the FFS function ------------------------ diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c index fdd0fc7b8f25..ae44dd5f3a94 100644 --- a/drivers/usb/gadget/function/f_fs.c +++ b/drivers/usb/gadget/function/f_fs.c @@ -3446,6 +3446,20 @@ static inline struct f_fs_opts *to_ffs_opts(struct config_item *item) func_inst.group); } +static ssize_t f_fs_opts_ready_show(struct config_item *item, char *page) +{ + struct f_fs_opts *opts = to_ffs_opts(item); + + return sprintf(page, "%d\n", opts->dev->desc_ready); +} + +CONFIGFS_ATTR_RO(f_fs_opts_, ready); + +static struct configfs_attribute *ffs_attrs[] = { + &f_fs_opts_attr_ready, + NULL, +}; + static void ffs_attr_release(struct config_item *item) { struct f_fs_opts *opts = to_ffs_opts(item); @@ -3459,6 +3473,7 @@ static struct configfs_item_operations ffs_item_ops = { static const struct config_item_type ffs_func_type = { .ct_item_ops = &ffs_item_ops, + .ct_attrs = ffs_attrs, .ct_owner = THIS_MODULE, };
When a USB gadget is configured through configfs with 1 or more f_fs functions, then the logic setting up the gadget configuration has to wait until the user space code (typically separate applications) responsible for those functions have written their descriptors before the gadget can be activated. The f_fs instance already knows if this has been done, so expose it through a "ready" attribute in configfs for easier synchronization. Signed-off-by: Peter Korsgaard <peter@korsgaard.com> --- Changes since v1: - Add documentation snippet as requested by Greg. Documentation/usb/gadget-testing.rst | 8 ++++++++ drivers/usb/gadget/function/f_fs.c | 15 +++++++++++++++ 2 files changed, 23 insertions(+)