#ifndef __MACH_USB_H_ #define __MACH_USB_H_ /* configuration bits for i.MX25 and i.MX35 */ #define MX35_H1_SIC_SHIFT 21 #define MX35_H1_SIC_MASK (0x3 << MX35_H1_SIC_SHIFT) #define MX35_H1_PM_BIT (1 << 16) #define MX35_H1_IPPUE_UP_BIT (1 << 7) #define MX35_H1_IPPUE_DOWN_BIT (1 << 6) #define MX35_H1_TLL_BIT (1 << 5) #define MX35_H1_USBTE_BIT (1 << 4) #define MXC_EHCI_INTERFACE_SINGLE_UNI (2 << 0) #define USBCMD 0x140 #define USB_CMD_RESET 0x00000002 /* * imx_reset_otg_controller - reset the USB OTG controller * @base: The base address of the controller * * When booting from USB the ROM just leaves the controller enabled. This can * have bad side effects when for example we change PLL frequencies. In this * case it is seen that the hub the board is connected to gets confused and USB * is no longer working properly on the remote host. This function resets the * OTG controller. It should be called before the clocks the controller hangs on * is fiddled with. */ static inline void imx_reset_otg_controller(void __iomem *base) { u32 r; r = readl(base + USBCMD); r |= USB_CMD_RESET; writel(r, base + USBCMD); } #endif /* __MACH_USB_H_*/