diff options
| author | Rajeshwari Shinde <rajeshwari.s@samsung.com> | 2012-05-14 05:52:02 +0000 | 
|---|---|---|
| committer | Marek Vasut <marex@denx.de> | 2012-07-09 18:27:55 +0200 | 
| commit | 71045da8122c15ffa6cd31079f33b68f2a66b3e5 (patch) | |
| tree | 0668c6962fc9e1710fbf4901c0295eb3c792ca64 | |
| parent | f9c4e04be712633d453bdf5c871966dea99243f6 (diff) | |
| download | olio-uboot-2014.01-71045da8122c15ffa6cd31079f33b68f2a66b3e5.tar.xz olio-uboot-2014.01-71045da8122c15ffa6cd31079f33b68f2a66b3e5.zip | |
USB: EXYNOS: Set USB 2.0 HOST Link mode
This patch adds a function to set usb host mode to USB 2.0 HOST Link
for EXYNOS5
Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
| -rw-r--r-- | arch/arm/cpu/armv7/exynos/system.c | 22 | ||||
| -rw-r--r-- | arch/arm/include/asm/arch-exynos/system.h | 3 | ||||
| -rw-r--r-- | drivers/usb/host/ehci-exynos.c | 3 | 
3 files changed, 28 insertions, 0 deletions
| diff --git a/arch/arm/cpu/armv7/exynos/system.c b/arch/arm/cpu/armv7/exynos/system.c index 6c34730b9..cc6ee031c 100644 --- a/arch/arm/cpu/armv7/exynos/system.c +++ b/arch/arm/cpu/armv7/exynos/system.c @@ -25,6 +25,28 @@  #include <asm/io.h>  #include <asm/arch/system.h> +static void exynos5_set_usbhost_mode(unsigned int mode) +{ +	struct exynos5_sysreg *sysreg = +		(struct exynos5_sysreg *)samsung_get_base_sysreg(); +	unsigned int phy_cfg; + +	/* Setting USB20PHY_CONFIG register to USB 2.0 HOST link */ +	if (mode == USB20_PHY_CFG_HOST_LINK_EN) { +		setbits_le32(&sysreg->usb20phy_cfg, +				USB20_PHY_CFG_HOST_LINK_EN); +	} else { +		clrbits_le32(&sysreg->usb20phy_cfg, +				USB20_PHY_CFG_HOST_LINK_EN); +	} +} + +void set_usbhost_mode(unsigned int mode) +{ +	if (cpu_is_exynos5()) +		exynos5_set_usbhost_mode(mode); +} +  static void exynos4_set_system_display(void)  {  	struct exynos4_sysreg *sysreg = diff --git a/arch/arm/include/asm/arch-exynos/system.h b/arch/arm/include/asm/arch-exynos/system.h index c1d880f4c..42e1d21e5 100644 --- a/arch/arm/include/asm/arch-exynos/system.h +++ b/arch/arm/include/asm/arch-exynos/system.h @@ -49,6 +49,9 @@ struct exynos5_sysreg {  };  #endif +#define USB20_PHY_CFG_HOST_LINK_EN	(1 << 0) + +void set_usbhost_mode(unsigned int mode);  void set_system_display_ctrl(void);  #endif	/* _EXYNOS4_SYSTEM_H */ diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c index 3830c43b8..90d66d3aa 100644 --- a/drivers/usb/host/ehci-exynos.c +++ b/drivers/usb/host/ehci-exynos.c @@ -24,12 +24,15 @@  #include <usb.h>  #include <asm/arch/cpu.h>  #include <asm/arch/ehci.h> +#include <asm/arch/system.h>  #include "ehci.h"  #include "ehci-core.h"  /* Setup the EHCI host controller. */  static void setup_usb_phy(struct exynos_usb_phy *usb)  { +	set_usbhost_mode(USB20_PHY_CFG_HOST_LINK_EN); +  	clrbits_le32(&usb->usbphyctrl0,  			HOST_CTRL0_FSEL_MASK |  			HOST_CTRL0_COMMONON_N | |