|
@@ -2875,12 +2875,20 @@ static void em28xx_card_setup(struct em28xx *dev)
|
|
|
}
|
|
|
|
|
|
|
|
|
-#if defined(CONFIG_MODULES) && defined(MODULE)
|
|
|
static void request_module_async(struct work_struct *work)
|
|
|
{
|
|
|
struct em28xx *dev = container_of(work,
|
|
|
struct em28xx, request_module_wk);
|
|
|
|
|
|
+ /*
|
|
|
+ * The em28xx extensions can be modules or builtin. If the
|
|
|
+ * modules are already loaded or are built in, those extensions
|
|
|
+ * can be initialised right now. Otherwise, the module init
|
|
|
+ * code will do it.
|
|
|
+ */
|
|
|
+ em28xx_init_extension(dev);
|
|
|
+
|
|
|
+#if defined(CONFIG_MODULES) && defined(MODULE)
|
|
|
if (dev->has_audio_class)
|
|
|
request_module("snd-usb-audio");
|
|
|
else if (dev->has_alsa_audio)
|
|
@@ -2890,6 +2898,7 @@ static void request_module_async(struct work_struct *work)
|
|
|
request_module("em28xx-dvb");
|
|
|
if (dev->board.ir_codes && !disable_ir)
|
|
|
request_module("em28xx-rc");
|
|
|
+#endif /* CONFIG_MODULES */
|
|
|
}
|
|
|
|
|
|
static void request_modules(struct em28xx *dev)
|
|
@@ -2902,10 +2911,6 @@ static void flush_request_modules(struct em28xx *dev)
|
|
|
{
|
|
|
flush_work_sync(&dev->request_module_wk);
|
|
|
}
|
|
|
-#else
|
|
|
-#define request_modules(dev)
|
|
|
-#define flush_request_modules(dev)
|
|
|
-#endif /* CONFIG_MODULES */
|
|
|
|
|
|
/*
|
|
|
* em28xx_release_resources()
|
|
@@ -3324,13 +3329,6 @@ static int em28xx_usb_probe(struct usb_interface *interface,
|
|
|
*/
|
|
|
mutex_unlock(&dev->lock);
|
|
|
|
|
|
- /*
|
|
|
- * These extensions can be modules. If the modules are already
|
|
|
- * loaded then we can initialise the device now, otherwise we
|
|
|
- * will initialise it when the modules load instead.
|
|
|
- */
|
|
|
- em28xx_init_extension(dev);
|
|
|
-
|
|
|
return 0;
|
|
|
|
|
|
unlock_and_free:
|