obj-$(CONFIG_PARIDE)           += block/paride/
 obj-$(CONFIG_TC)               += tc/
 obj-$(CONFIG_UWB)              += uwb/
-obj-$(CONFIG_USB_OTG_UTILS)    += usb/
+obj-$(CONFIG_USB_PHY)          += usb/
 obj-$(CONFIG_USB)              += usb/
 obj-$(CONFIG_PCI)              += usb/
 obj-$(CONFIG_USB_GADGET)       += usb/
 
 #
 # Physical Layer USB driver configuration
 #
-comment "USB Physical Layer drivers"
-       depends on USB || USB_GADGET
+menuconfig USB_PHY
+       tristate "USB Physical Layer drivers"
+       select USB_OTG_UTILS
+       help
+         USB controllers (those which are host, device or DRD) need a
+         device to handle the physical layer signalling, commonly called
+         a PHY.
+
+         The following drivers add support for such PHY devices.
+
+if USB_PHY
 
 config USB_OTG_UTILS
        bool
          Select this to make sure the build includes objects from
          the OTG infrastructure directory.
 
-if USB || USB_GADGET
-
 #
 # USB Transceiver Drivers
 #
          Provides read/write operations to the ULPI phy register set for
          controllers with a viewport register (e.g. Chipidea/ARC controllers).
 
-endif # USB || OTG
+endif # USB_PHY
 
 
 ccflags-$(CONFIG_USB_DEBUG) := -DDEBUG
 
-obj-$(CONFIG_USB_OTG_UTILS)            += phy.o
+obj-$(CONFIG_USB_PHY)                  += phy.o
 
 # transceiver drivers, keep the list sorted
 
 
 }
 
 /* for usb host and peripheral controller drivers */
-#ifdef CONFIG_USB_OTG_UTILS
+#if IS_ENABLED(CONFIG_USB_PHY)
 extern struct usb_phy *usb_get_phy(enum usb_phy_type type);
 extern struct usb_phy *devm_usb_get_phy(struct device *dev,
        enum usb_phy_type type);