]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00320792-3 usb: gadget: mark init as late_initcall
authorPeter Chen <peter.chen@freescale.com>
Mon, 23 Sep 2013 03:20:08 +0000 (11:20 +0800)
committerNitin Garg <nitin.garg@freescale.com>
Fri, 16 Jan 2015 03:20:03 +0000 (21:20 -0600)
Since we introduce -EPROBE_DEFER for udc driver, it will be
probed at late_initcall if it is defered. When the gadget
is built in, it will return "couldn't find an available UDC"
at such case. That's the problem we met at below link:

http://marc.info/?l=linux-usb&m=137706435611447&w=2

We have no driver's probe at gadget driver, so we can't return
-EPROBE_DEFER. And it is also not suitable to defer udc_bind_to_driver
if the udc is not found temporarily, since it is hard to decide the
return value for usb_gadget_probe_driver.

Due to above reasons, mark gadget's init as late_initcall may be a
moderate solution.

Signed-off-by: Peter Chen <peter.chen@freescale.com>
13 files changed:
drivers/usb/gadget/acm_ms.c
drivers/usb/gadget/audio.c
drivers/usb/gadget/cdc2.c
drivers/usb/gadget/ether.c
drivers/usb/gadget/gmidi.c
drivers/usb/gadget/hid.c
drivers/usb/gadget/multi.c
drivers/usb/gadget/ncm.c
drivers/usb/gadget/nokia.c
drivers/usb/gadget/printer.c
drivers/usb/gadget/serial.c
drivers/usb/gadget/webcam.c
drivers/usb/gadget/zero.c

index a252444cc0a7d8b85cc7da05d72e7c00e1c0f649..dd74b032753be8a5be87a7c87c7fd4b5656f3c09 100644 (file)
@@ -275,7 +275,7 @@ static int __init init(void)
 {
        return usb_composite_probe(&acm_ms_driver);
 }
-module_init(init);
+late_initcall(init);
 
 static void __exit cleanup(void)
 {
index 231b0efe8fdc12704f596e84c7fbab8f86e9aee7..04345a46692f5f0ae555fd6791d0034c76903484 100644 (file)
@@ -176,7 +176,7 @@ static int __init init(void)
 {
        return usb_composite_probe(&audio_driver);
 }
-module_init(init);
+late_initcall(init);
 
 static void __exit cleanup(void)
 {
index e126b6b248e63cd1b412bea2561e90bd15a104d3..0fd9470b79c068f2af30579409e2d17181d79cad 100644 (file)
@@ -239,7 +239,7 @@ static int __init init(void)
 {
        return usb_composite_probe(&cdc_driver);
 }
-module_init(init);
+late_initcall(init);
 
 static void __exit cleanup(void)
 {
index c1c113ef950c86d9c4170cebaa47a91426cf74fa..e0722e9a843c697ef4ed92ff0991d5cdf6ac9def 100644 (file)
@@ -483,7 +483,7 @@ static int __init init(void)
 {
        return usb_composite_probe(&eth_driver);
 }
-module_init(init);
+late_initcall(init);
 
 static void __exit cleanup(void)
 {
index e879e2c9f461bb73463608fe8d4c90a6333e8cd8..67bd00ade7224ac8f57b4a94d2ea62948e48eafb 100644 (file)
@@ -167,7 +167,7 @@ static int __init midi_init(void)
 {
        return usb_composite_probe(&midi_driver);
 }
-module_init(midi_init);
+late_initcall(midi_init);
 
 static void __exit midi_cleanup(void)
 {
index 778613eb37af8aaefd943c63c991462f722d435f..42756a09411b0418fce004da4724055781e2e3bb 100644 (file)
@@ -256,7 +256,7 @@ static int __init hidg_init(void)
 
        return status;
 }
-module_init(hidg_init);
+late_initcall(hidg_init);
 
 static void __exit hidg_cleanup(void)
 {
index 940f6cde8e8988089fc9dbd18854a79d3fb4d245..2ab5d71c336509a896a288726986362b6271dbc4 100644 (file)
@@ -512,7 +512,7 @@ static int __init multi_init(void)
 {
        return usb_composite_probe(&multi_driver);
 }
-module_init(multi_init);
+late_initcall(multi_init);
 
 static void __exit multi_exit(void)
 {
index 81956feca1bd844152ed26067cbc48e40d83bc1f..6be75d451b6786b0a7fd1c754126a96816e0592a 100644 (file)
@@ -212,7 +212,7 @@ static int __init init(void)
 {
        return usb_composite_probe(&ncm_driver);
 }
-module_init(init);
+late_initcall(init);
 
 static void __exit cleanup(void)
 {
index 3ab3861675190625b933c23356ed80bfa668f047..bfb8a4756ff8f6c47e053f7999825ba8cdf75f8a 100644 (file)
@@ -351,7 +351,7 @@ static int __init nokia_init(void)
 {
        return usb_composite_probe(&nokia_driver);
 }
-module_init(nokia_init);
+late_initcall(nokia_init);
 
 static void __exit nokia_cleanup(void)
 {
index 69b76efd11e9bea3f11d9d2effe293c04045f01c..fa34d67fc57ed6539979663f024591f921a5d147 100644 (file)
@@ -1281,7 +1281,7 @@ init(void)
 
        return status;
 }
-module_init(init);
+late_initcall(init);
 
 static void __exit
 cleanup(void)
index 1f5f978d35d5318be56d1e069750d42e18b6b3c5..0c7b826e46fce556679aaf3983a35c1950045f80 100644 (file)
@@ -267,7 +267,7 @@ static int __init init(void)
 
        return usb_composite_probe(&gserial_driver);
 }
-module_init(init);
+late_initcall(init);
 
 static void __exit cleanup(void)
 {
index 8cef1e658c2908c749735ab311d55456b334f279..79655b9e23af32d29738b4cb2bf0110dbc158df2 100644 (file)
@@ -402,7 +402,7 @@ webcam_cleanup(void)
        usb_composite_unregister(&webcam_driver);
 }
 
-module_init(webcam_init);
+late_initcall(webcam_init);
 module_exit(webcam_cleanup);
 
 MODULE_AUTHOR("Laurent Pinchart");
index 134f354ede62e1b9f35ff189b0feda75aad4ac92..7a3180f60b2035fca5e42569aceaf32f7b1b14f7 100644 (file)
@@ -418,7 +418,7 @@ static int __init init(void)
 {
        return usb_composite_probe(&zero_driver);
 }
-module_init(init);
+late_initcall(init);
 
 static void __exit cleanup(void)
 {