Re: [RFC] usb/gadget: slow start of the configfs interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/28/2012 09:31 PM, Michal Nazarewicz wrote:
On Wed, Nov 28 2012, Sebastian Andrzej Siewior wrote:
|# modprobe dummy_hcd num=2

|# find /sys/kernel/config/ -ls
|  6547    0 drwxr-xr-x   5 root     root            0 Nov 28 19:39 /sys/kernel/config/
|   532    0 drwxr-xr-x   2 root     root            0 Nov 28 19:39 /sys/kernel/config/dummy_udc.1
|   531    0 drwxr-xr-x   2 root     root            0 Nov 28 19:39 /sys/kernel/config/dummy_udc.0
|  6548    0 drwxr-xr-x   4 root     root            0 Nov 28 19:38 /sys/kernel/config/usb_gadget
|  6550    0 drwxr-xr-x   2 root     root            0 Nov 28 19:38 /sys/kernel/config/usb_gadget/gadgets
|  6549    0 drwxr-xr-x   2 root     root            0 Nov 28 19:38 /sys/kernel/config/usb_gadget/functions

| # lsmod
| Module                  Size  Used by
| dummy_hcd              20287  0
| libcomposite           17052  0

Did dummy_hcd pulled libcomposite here?

After double check, no. I had the configfs part as part of libcomposite
and my test script loaded it. After I moved it to udc where it fit
better together with the function.c file I did not update the script.
It gets loaded after "mkdir acm-bla"

| # mkdir /sys/kernel/config/usb_gadget/functions/acm_one

| # lsmod
| Module                  Size  Used by
| f_acm                   5306  0
| u_serial                9644  1 f_acm
| dummy_hcd              20287  0
| libcomposite           17052  1 f_acm

Now:
- the UDC (dummy_udc.[01]) is not within /usb_gadget/ folder where we
   have /gadgets/ and /functions/ subfolder. This is what
   spear13xx_pcie_gadget does as well. Is this okay or do we want to have
   them enumerated below /usb_gadget/ as well? If so we got to convince
   Joel to take Andrzej's patch for that.

Either way, I think they should be grouped in a “udcs” directory.
Otherwise, this, in my opinion, pollutes configfs' root directory.

Understood. So we have to create them on demand.

Whether they are under usb_gadget or outside, I don't have strong
opinions, even though I would see value in grouping USB gadget “stuff”
together.  Than again, someone may argue about UDCs which support OTG.

bah. So it is part host part device. We could still put it under /udcs/
don't see a reason why not. We don't have to put there anything host
specific.

- the function name for acm is taken from the dir name. Now Michał, is
   it too much of hackery?

Again, I don't really have strong opinions (on top of which, I feel like
I'm imposing my ideas without doing any coding), but I feel that using
“function/instance” rather than “function_instance” may make things
a bit easier since the name does not have to be parsed at all.

Especially since if we choose “_” than “mass_storage” would have to
change its name, right?  Maybe “.” as a separator would be better?  In
your example, this would definitely look consistent with what dummy_udc
does.

Okay. So the dot it is.

PS. Ah, and in general, if anyone cares about my opinion, I hate “_” and
     propose to use “-” instead whenever possible. :P

This is a slow start. Other comments?

Signed-off-by: Sebastian Andrzej Siewior<bigeasy@xxxxxxxxxxxxx>

diff --git a/drivers/usb/gadget/configfs.c b/drivers/usb/gadget/configfs.c

+struct configfs_subsystem *udc_add_configfs(struct device *dev)
+{
+	struct udc_configfs *udc_cfs;
+	struct configfs_subsystem *subsys;
+	int ret;
+
+	udc_cfs = kzalloc(sizeof(struct udc_configfs), GFP_KERNEL);
+	if (!udc_cfs)
+		return ERR_PTR(-ENOMEM);
+
+	subsys =&udc_cfs->subsys;
+	config_group_init_type_name(&subsys->su_group,
+			kobject_name(&dev->kobj),
+			&gadget_core_item);
+	ret = configfs_register_subsystem(subsys);
+	if (ret)
+		goto err;
+	return subsys;
+err:
+	kfree(udc_cfs);
+	return ERR_PTR(ret);

Maybe it's just me, but I don't like gotos where they can be avoided
(even though I have nothing against gotos in general):

The goto cleanup part is ready if new code should be added.

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux