USB: Allow usbmon as a module even if usbcore is builtin
authorPete Zaitcev <zaitcev@redhat.com>
Fri, 14 Nov 2008 04:31:21 +0000 (21:31 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 7 Jan 2009 17:59:54 +0000 (09:59 -0800)
usbmon can only be built as a module if usbcore is a module too. Trivial
changes to the relevant Kconfig and Makefile (and a few trivial changes
elsewhere) allow usbmon to be built as a module even if usbcore is
builtin.

This is verified to work in all 9 permutations (3 correctly prohibited
by Kconfig, 6 build a suitable result).

Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/core/hcd.c
drivers/usb/core/hcd.h
drivers/usb/mon/Kconfig
drivers/usb/mon/Makefile
include/linux/usb.h

index e1b42626d04d6c7cdd200d86cd8b0d28a6af47ec..7403ed871abda702fae1da139839b5a92b82ac17 100644 (file)
@@ -2028,7 +2028,7 @@ EXPORT_SYMBOL_GPL(usb_hcd_platform_shutdown);
 
 /*-------------------------------------------------------------------------*/
 
-#if defined(CONFIG_USB_MON)
+#if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE)
 
 struct usb_mon_operations *mon_ops;
 
@@ -2064,4 +2064,4 @@ void usb_mon_deregister (void)
 }
 EXPORT_SYMBOL_GPL (usb_mon_deregister);
 
-#endif /* CONFIG_USB_MON */
+#endif /* CONFIG_USB_MON || CONFIG_USB_MON_MODULE */
index d202342b36b6a23a5ec7f069df6c2584a6c328db..0aaa9cea6b38c492eb255edea7057a1d6e30559c 100644 (file)
@@ -421,7 +421,7 @@ static inline void usbfs_cleanup(void) { }
 
 /*-------------------------------------------------------------------------*/
 
-#if defined(CONFIG_USB_MON)
+#if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE)
 
 struct usb_mon_operations {
        void (*urb_submit)(struct usb_bus *bus, struct urb *urb);
@@ -463,7 +463,7 @@ static inline void usbmon_urb_submit_error(struct usb_bus *bus, struct urb *urb,
 static inline void usbmon_urb_complete(struct usb_bus *bus, struct urb *urb,
                int status) {}
 
-#endif /* CONFIG_USB_MON */
+#endif /* CONFIG_USB_MON || CONFIG_USB_MON_MODULE */
 
 /*-------------------------------------------------------------------------*/
 
index deb9ddffa402ed5e84b9309243650a1bfaf56350..f28f350cd96aebb3a08e6ac31b0e8f063ae613d4 100644 (file)
@@ -3,14 +3,13 @@
 #
 
 config USB_MON
-       bool "USB Monitor"
-       depends on USB!=n
-       default y
+       tristate "USB Monitor"
+       depends on USB
+       default y if USB=y
+       default m if USB=m
        help
-         If you say Y here, a component which captures the USB traffic
+         If you select this option, a component which captures the USB traffic
          between peripheral-specific drivers and HC drivers will be built.
          For more information, see <file:Documentation/usb/usbmon.txt>.
 
-         This is somewhat experimental at this time, but it should be safe.
-
-         If unsure, say Y.
+         If unsure, say Y (if allowed), otherwise M.
index 0f76ed5e16174a49e8369ade4acf0abd3d4573c3..c6516b56673182cd6a3425f4ee495d83c6320eb1 100644 (file)
@@ -4,5 +4,4 @@
 
 usbmon-objs    := mon_main.o mon_stat.o mon_text.o mon_bin.o mon_dma.o
 
-# This does not use CONFIG_USB_MON because we want this to use a tristate.
-obj-$(CONFIG_USB)      += usbmon.o
+obj-$(CONFIG_USB_MON)  += usbmon.o
index c8e55aa979deb23832a12f3d09594c5972ac970f..8bc81bffc1954e6b7a7d2e20bd18f7e1632e350a 100644 (file)
@@ -336,7 +336,7 @@ struct usb_bus {
 #endif
        struct device *dev;             /* device for this bus */
 
-#if defined(CONFIG_USB_MON)
+#if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE)
        struct mon_bus *mon_bus;        /* non-null when associated */
        int monitored;                  /* non-zero when monitored */
 #endif