usb: ohci-nxp: enable compile-testing

The driver hardcodes a hardware I/O address the way one should
generally not do, and this prevents both compile-testing, and
moving the platform to CONFIG_ARCH_MULTIPLATFORM.

Change the code to be independent of the machine headers
to allow those two. Removing the hardcoded address would
be hard and is not necessary, so leave that in place for now.

Link: https://lore.kernel.org/r/20190809144043.476786-2-arnd@arndb.de
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2019-08-09 16:40:27 +02:00
parent d45331b00d
commit 23565baece
2 changed files with 20 additions and 8 deletions

View File

@ -441,7 +441,8 @@ config USB_OHCI_HCD_S3C2410
config USB_OHCI_HCD_LPC32XX
tristate "Support for LPC on-chip OHCI USB controller"
depends on USB_OHCI_HCD && ARCH_LPC32XX
depends on USB_OHCI_HCD
depends on ARCH_LPC32XX || COMPILE_TEST
depends on USB_ISP1301
default y
---help---

View File

@ -29,10 +29,7 @@
#include "ohci.h"
#include <mach/hardware.h>
#define USB_CONFIG_BASE 0x31020000
#define USB_OTG_STAT_CONTROL IO_ADDRESS(USB_CONFIG_BASE + 0x110)
/* USB_OTG_STAT_CONTROL bit defines */
#define TRANSPARENT_I2C_EN (1 << 7)
@ -122,19 +119,33 @@ static inline void isp1301_vbus_off(void)
static void ohci_nxp_start_hc(void)
{
unsigned long tmp = __raw_readl(USB_OTG_STAT_CONTROL) | HOST_EN;
void __iomem *usb_otg_stat_control = ioremap(USB_CONFIG_BASE + 0x110, 4);
unsigned long tmp;
__raw_writel(tmp, USB_OTG_STAT_CONTROL);
if (WARN_ON(!usb_otg_stat_control))
return;
tmp = __raw_readl(usb_otg_stat_control) | HOST_EN;
__raw_writel(tmp, usb_otg_stat_control);
isp1301_vbus_on();
iounmap(usb_otg_stat_control);
}
static void ohci_nxp_stop_hc(void)
{
void __iomem *usb_otg_stat_control = ioremap(USB_CONFIG_BASE + 0x110, 4);
unsigned long tmp;
if (WARN_ON(!usb_otg_stat_control))
return;
isp1301_vbus_off();
tmp = __raw_readl(USB_OTG_STAT_CONTROL) & ~HOST_EN;
__raw_writel(tmp, USB_OTG_STAT_CONTROL);
tmp = __raw_readl(usb_otg_stat_control) & ~HOST_EN;
__raw_writel(tmp, usb_otg_stat_control);
iounmap(usb_otg_stat_control);
}
static int ohci_hcd_nxp_probe(struct platform_device *pdev)