/*-------------------------------------------------------------------------*/
 
-#if defined(CONFIG_USB_MON)
+#if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE)
 
 struct usb_mon_operations *mon_ops;
 
 }
 EXPORT_SYMBOL_GPL (usb_mon_deregister);
 
-#endif /* CONFIG_USB_MON */
+#endif /* CONFIG_USB_MON || CONFIG_USB_MON_MODULE */
 
 
 /*-------------------------------------------------------------------------*/
 
-#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);
 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 */
 
 /*-------------------------------------------------------------------------*/
 
 
 #
 
 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.
 
 
 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
 
 #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