forked from Minki/linux
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:
parent
d45331b00d
commit
23565baece
@ -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---
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user