For these functions, it has no special requirement when to activate them,
so activate their function at function.bind.

Signed-off-by: Peter Chen <peter.c...@freescale.com>
---
 drivers/usb/gadget/function/f_acm.c          |    2 ++
 drivers/usb/gadget/function/f_ecm.c          |    1 +
 drivers/usb/gadget/function/f_eem.c          |    1 +
 drivers/usb/gadget/function/f_fs.c           |    1 +
 drivers/usb/gadget/function/f_hid.c          |    1 +
 drivers/usb/gadget/function/f_loopback.c     |    1 +
 drivers/usb/gadget/function/f_mass_storage.c |    1 +
 drivers/usb/gadget/function/f_midi.c         |    1 +
 drivers/usb/gadget/function/f_ncm.c          |    1 +
 drivers/usb/gadget/function/f_phonet.c       |    1 +
 drivers/usb/gadget/function/f_rndis.c        |    1 +
 drivers/usb/gadget/function/f_serial.c       |    1 +
 drivers/usb/gadget/function/f_sourcesink.c   |    1 +
 drivers/usb/gadget/function/f_subset.c       |    1 +
 drivers/usb/gadget/function/f_uac1.c         |    1 +
 drivers/usb/gadget/function/f_uac2.c         |    1 +
 drivers/usb/gadget/legacy/printer.c          |    1 +
 drivers/usb/gadget/legacy/tcm_usb_gadget.c   |    1 +
 18 files changed, 19 insertions(+)

diff --git a/drivers/usb/gadget/function/f_acm.c 
b/drivers/usb/gadget/function/f_acm.c
index ab1065a..b0d635b 100644
--- a/drivers/usb/gadget/function/f_acm.c
+++ b/drivers/usb/gadget/function/f_acm.c
@@ -691,6 +691,8 @@ acm_bind(struct usb_configuration *c, struct usb_function 
*f)
        if (status)
                goto fail;
 
+       usb_function_activate(f);
+
        DBG(cdev, "acm ttyGS%d: %s speed IN/%s OUT/%s NOTIFY/%s\n",
                        acm->port_num,
                        gadget_is_superspeed(c->cdev->gadget) ? "super" :
diff --git a/drivers/usb/gadget/function/f_ecm.c 
b/drivers/usb/gadget/function/f_ecm.c
index 798760f..ac3b03e 100644
--- a/drivers/usb/gadget/function/f_ecm.c
+++ b/drivers/usb/gadget/function/f_ecm.c
@@ -807,6 +807,7 @@ ecm_bind(struct usb_configuration *c, struct usb_function 
*f)
        ecm->port.open = ecm_open;
        ecm->port.close = ecm_close;
 
+       usb_function_activate(f);
        DBG(cdev, "CDC Ethernet: %s speed IN/%s OUT/%s NOTIFY/%s\n",
                        gadget_is_superspeed(c->cdev->gadget) ? "super" :
                        gadget_is_dualspeed(c->cdev->gadget) ? "dual" : "full",
diff --git a/drivers/usb/gadget/function/f_eem.c 
b/drivers/usb/gadget/function/f_eem.c
index 4d8b236..b68aa12 100644
--- a/drivers/usb/gadget/function/f_eem.c
+++ b/drivers/usb/gadget/function/f_eem.c
@@ -318,6 +318,7 @@ static int eem_bind(struct usb_configuration *c, struct 
usb_function *f)
        if (status)
                goto fail;
 
+       usb_function_activate(f);
        DBG(cdev, "CDC Ethernet (EEM): %s speed IN/%s OUT/%s\n",
                        gadget_is_superspeed(c->cdev->gadget) ? "super" :
                        gadget_is_dualspeed(c->cdev->gadget) ? "dual" : "full",
diff --git a/drivers/usb/gadget/function/f_fs.c 
b/drivers/usb/gadget/function/f_fs.c
index dc30adf..6346476 100644
--- a/drivers/usb/gadget/function/f_fs.c
+++ b/drivers/usb/gadget/function/f_fs.c
@@ -2759,6 +2759,7 @@ static int _ffs_func_bind(struct usb_configuration *c,
 
        /* And we're done */
        ffs_event_add(ffs, FUNCTIONFS_BIND);
+       usb_function_activate(f);
        return 0;
 
 error:
diff --git a/drivers/usb/gadget/function/f_hid.c 
b/drivers/usb/gadget/function/f_hid.c
index a95290a..3c240f3 100644
--- a/drivers/usb/gadget/function/f_hid.c
+++ b/drivers/usb/gadget/function/f_hid.c
@@ -624,6 +624,7 @@ static int __init hidg_bind(struct usb_configuration *c, 
struct usb_function *f)
                goto fail;
 
        device_create(hidg_class, NULL, dev, NULL, "%s%d", "hidg", hidg->minor);
+       usb_function_activate(f);
 
        return 0;
 
diff --git a/drivers/usb/gadget/function/f_loopback.c 
b/drivers/usb/gadget/function/f_loopback.c
index 4557cd0..e359eb4 100644
--- a/drivers/usb/gadget/function/f_loopback.c
+++ b/drivers/usb/gadget/function/f_loopback.c
@@ -222,6 +222,7 @@ autoconf_fail:
        if (ret)
                return ret;
 
+       usb_function_activate(f);
        DBG(cdev, "%s speed %s: IN/%s, OUT/%s\n",
            (gadget_is_superspeed(c->cdev->gadget) ? "super" :
             (gadget_is_dualspeed(c->cdev->gadget) ? "dual" : "full")),
diff --git a/drivers/usb/gadget/function/f_mass_storage.c 
b/drivers/usb/gadget/function/f_mass_storage.c
index b963939..26a64a0 100644
--- a/drivers/usb/gadget/function/f_mass_storage.c
+++ b/drivers/usb/gadget/function/f_mass_storage.c
@@ -3162,6 +3162,7 @@ static int fsg_bind(struct usb_configuration *c, struct 
usb_function *f)
        if (ret)
                goto autoconf_fail;
 
+       usb_function_activate(f);
        return 0;
 
 autoconf_fail:
diff --git a/drivers/usb/gadget/function/f_midi.c 
b/drivers/usb/gadget/function/f_midi.c
index 807b31c..59e46be 100644
--- a/drivers/usb/gadget/function/f_midi.c
+++ b/drivers/usb/gadget/function/f_midi.c
@@ -885,6 +885,7 @@ f_midi_bind(struct usb_configuration *c, struct 
usb_function *f)
        }
 
        kfree(midi_function);
+       usb_function_activate(f);
 
        return 0;
 
diff --git a/drivers/usb/gadget/function/f_ncm.c 
b/drivers/usb/gadget/function/f_ncm.c
index bcdc882..1fe2985 100644
--- a/drivers/usb/gadget/function/f_ncm.c
+++ b/drivers/usb/gadget/function/f_ncm.c
@@ -1446,6 +1446,7 @@ static int ncm_bind(struct usb_configuration *c, struct 
usb_function *f)
        hrtimer_init(&ncm->task_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
        ncm->task_timer.function = ncm_tx_timeout;
 
+       usb_function_activate(f);
        DBG(cdev, "CDC Network: %s speed IN/%s OUT/%s NOTIFY/%s\n",
                        gadget_is_dualspeed(c->cdev->gadget) ? "dual" : "full",
                        ncm->port.in_ep->name, ncm->port.out_ep->name,
diff --git a/drivers/usb/gadget/function/f_phonet.c 
b/drivers/usb/gadget/function/f_phonet.c
index f2b7817..cf39447 100644
--- a/drivers/usb/gadget/function/f_phonet.c
+++ b/drivers/usb/gadget/function/f_phonet.c
@@ -562,6 +562,7 @@ static int pn_bind(struct usb_configuration *c, struct 
usb_function *f)
        if (!fp->in_req)
                goto err_req;
 
+       usb_function_activate(f);
        INFO(cdev, "USB CDC Phonet function\n");
        INFO(cdev, "using %s, OUT %s, IN %s\n", cdev->gadget->name,
                fp->out_ep->name, fp->in_ep->name);
diff --git a/drivers/usb/gadget/function/f_rndis.c 
b/drivers/usb/gadget/function/f_rndis.c
index ddb09dc..c8d246e 100644
--- a/drivers/usb/gadget/function/f_rndis.c
+++ b/drivers/usb/gadget/function/f_rndis.c
@@ -805,6 +805,7 @@ rndis_bind(struct usb_configuration *c, struct usb_function 
*f)
                                               rndis->manufacturer))
                goto fail;
 
+       usb_function_activate(f);
        /* NOTE:  all that is done without knowing or caring about
         * the network link ... which is unavailable to this code
         * until we're activated via set_alt().
diff --git a/drivers/usb/gadget/function/f_serial.c 
b/drivers/usb/gadget/function/f_serial.c
index 9ecbcbf..40f427e 100644
--- a/drivers/usb/gadget/function/f_serial.c
+++ b/drivers/usb/gadget/function/f_serial.c
@@ -239,6 +239,7 @@ static int gser_bind(struct usb_configuration *c, struct 
usb_function *f)
                        gser_ss_function);
        if (status)
                goto fail;
+       usb_function_activate(f);
        DBG(cdev, "generic ttyGS%d: %s speed IN/%s OUT/%s\n",
                        gser->port_num,
                        gadget_is_superspeed(c->cdev->gadget) ? "super" :
diff --git a/drivers/usb/gadget/function/f_sourcesink.c 
b/drivers/usb/gadget/function/f_sourcesink.c
index d3cd52d..3ab09d6d 100644
--- a/drivers/usb/gadget/function/f_sourcesink.c
+++ b/drivers/usb/gadget/function/f_sourcesink.c
@@ -465,6 +465,7 @@ no_iso:
        if (ret)
                return ret;
 
+       usb_function_activate(f);
        DBG(cdev, "%s speed %s: IN/%s, OUT/%s, ISO-IN/%s, ISO-OUT/%s\n",
            (gadget_is_superspeed(c->cdev->gadget) ? "super" :
             (gadget_is_dualspeed(c->cdev->gadget) ? "dual" : "full")),
diff --git a/drivers/usb/gadget/function/f_subset.c 
b/drivers/usb/gadget/function/f_subset.c
index 1ea8baf..8b45e49 100644
--- a/drivers/usb/gadget/function/f_subset.c
+++ b/drivers/usb/gadget/function/f_subset.c
@@ -368,6 +368,7 @@ geth_bind(struct usb_configuration *c, struct usb_function 
*f)
        if (status)
                goto fail;
 
+       usb_function_activate(f);
        /* NOTE:  all that is done without knowing or caring about
         * the network link ... which is unavailable to this code
         * until we're activated via set_alt().
diff --git a/drivers/usb/gadget/function/f_uac1.c 
b/drivers/usb/gadget/function/f_uac1.c
index 2b4c82d..8043d7b 100644
--- a/drivers/usb/gadget/function/f_uac1.c
+++ b/drivers/usb/gadget/function/f_uac1.c
@@ -663,6 +663,7 @@ f_audio_bind(struct usb_configuration *c, struct 
usb_function *f)
        status = usb_assign_descriptors(f, f_audio_desc, f_audio_desc, NULL);
        if (status)
                goto fail;
+       usb_function_activate(f);
        return 0;
 
 fail:
diff --git a/drivers/usb/gadget/function/f_uac2.c 
b/drivers/usb/gadget/function/f_uac2.c
index 3ed89ec..ccf68b0 100644
--- a/drivers/usb/gadget/function/f_uac2.c
+++ b/drivers/usb/gadget/function/f_uac2.c
@@ -1008,6 +1008,7 @@ afunc_bind(struct usb_configuration *cfg, struct 
usb_function *fn)
        ret = alsa_uac2_init(agdev);
        if (ret)
                goto err;
+       usb_function_activate(fn);
        return 0;
 err:
        kfree(agdev->uac2.p_prm.rbuf);
diff --git a/drivers/usb/gadget/legacy/printer.c 
b/drivers/usb/gadget/legacy/printer.c
index 6474081..4b709f2 100644
--- a/drivers/usb/gadget/legacy/printer.c
+++ b/drivers/usb/gadget/legacy/printer.c
@@ -1024,6 +1024,7 @@ autoconf_fail:
 
        dev->in_ep = in_ep;
        dev->out_ep = out_ep;
+       usb_function_activate(f);
        return 0;
 }
 
diff --git a/drivers/usb/gadget/legacy/tcm_usb_gadget.c 
b/drivers/usb/gadget/legacy/tcm_usb_gadget.c
index 6cdb7a5..bbdc3d8 100644
--- a/drivers/usb/gadget/legacy/tcm_usb_gadget.c
+++ b/drivers/usb/gadget/legacy/tcm_usb_gadget.c
@@ -2294,6 +2294,7 @@ static int usbg_bind(struct usb_configuration *c, struct 
usb_function *f)
        if (ret)
                goto ep_fail;
 
+       usb_function_activate(f);
        return 0;
 ep_fail:
        pr_err("Can't claim all required eps\n");
-- 
1.7.9.5

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

Reply via email to