[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20180813214924.3567840-1-arnd@arndb.de>
Date: Mon, 13 Aug 2018 23:48:46 +0200
From: Arnd Bergmann <arnd@...db.de>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: Arnd Bergmann <arnd@...db.de>, Felipe Balbi <balbi@...nel.org>,
Geert Uytterhoeven <geert@...ux-m68k.org>,
Yoshihiro Shimoda <yoshihiro.shimoda.uh@...esas.com>,
Johan Hovold <johan@...nel.org>, linux-usb@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH] usb: hide usb_of_get_companion_dev for CONFIG_USB=n
The renesas UDC implementation now calls usb_of_get_companion_dev(),
which is only defined when CONFIG_USB is enabled:
drivers/usb/gadget/udc/renesas_usb3.o: In function `renesas_usb3_probe':
renesas_usb3.c:(.text+0xa34): undefined reference to `usb_of_get_companion_dev'
To avoid the build error, we need two changes:
- usb_of_get_companion_dev must be stubbed out when CONFIG_USB is
disabled, so it the udc driver can be built for a gadget-only
mode kernel
- With CONFIG_USB=m, we must not attempt to have USB_RENESAS_USB3
built-in, so we need a soft dependency on USB.
Fixes: 39facfa01c9f ("usb: gadget: udc: renesas_usb3: Add register of usb role switch")
Signed-off-by: Arnd Bergmann <arnd@...db.de>
---
drivers/usb/gadget/udc/Kconfig | 1 +
include/linux/usb/of.h | 6 +++++-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/udc/Kconfig b/drivers/usb/gadget/udc/Kconfig
index 0a16cbd4e528..663a8bd67a7b 100644
--- a/drivers/usb/gadget/udc/Kconfig
+++ b/drivers/usb/gadget/udc/Kconfig
@@ -193,6 +193,7 @@ config USB_RENESAS_USB3
tristate 'Renesas USB3.0 Peripheral controller'
depends on ARCH_RENESAS || COMPILE_TEST
depends on EXTCON
+ depends on USB || !USB
select USB_ROLE_SWITCH
help
Renesas USB3.0 Peripheral controller is a USB peripheral controller
diff --git a/include/linux/usb/of.h b/include/linux/usb/of.h
index dba55ccb9b53..733339218466 100644
--- a/include/linux/usb/of.h
+++ b/include/linux/usb/of.h
@@ -23,7 +23,6 @@ struct device_node *usb_of_get_device_node(struct usb_device *hub, int port1);
bool usb_of_has_combined_node(struct usb_device *udev);
struct device_node *usb_of_get_interface_node(struct usb_device *udev,
u8 config, u8 ifnum);
-struct device *usb_of_get_companion_dev(struct device *dev);
#else
static inline enum usb_dr_mode
of_usb_get_dr_mode_by_phy(struct device_node *np, int arg0)
@@ -53,6 +52,11 @@ usb_of_get_interface_node(struct usb_device *udev, u8 config, u8 ifnum)
{
return NULL;
}
+#endif
+
+#if IS_ENABLED(CONFIG_OF) && IS_ENABLED(CONFIG_USB)
+struct device *usb_of_get_companion_dev(struct device *dev);
+#else
static inline struct device *usb_of_get_companion_dev(struct device *dev)
{
return NULL;
--
2.18.0
Powered by blists - more mailing lists