[3/6,V2] EXYNOS5 : USB: Set USB 2.0 HOST Link mode

Message ID 1336129923-2656-4-git-send-email-rajeshwari.s@samsung.com
State New
Headers show

Commit Message

Rajeshwari Shinde May 4, 2012, 11:12 a.m.
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>
---
This patchset is based on:
USB: EXYNOS: Add ehci support.patch

 arch/arm/cpu/armv7/exynos/system.c        |   22 ++++++++++++++++++++++
 arch/arm/include/asm/arch-exynos/system.h |    3 +++
 drivers/usb/host/ehci-exynos.c            |    3 +++
 3 files changed, 28 insertions(+), 0 deletions(-)

Comments

Minkyu Kang May 8, 2012, 2:07 a.m. | #1
Dear Rajeshwari Shinde,

On 4 May 2012 20:12, Rajeshwari Shinde <rajeshwari.s@samsung.com> wrote:
> 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>
> ---

need the change log here.
http://www.denx.de/wiki/view/U-Boot/Patches#Sending_updated_patch_versions

> This patchset is based on:
> USB: EXYNOS: Add ehci support.patch
>
>  arch/arm/cpu/armv7/exynos/system.c        |   22 ++++++++++++++++++++++
>  arch/arm/include/asm/arch-exynos/system.h |    3 +++
>  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 6c34730..7ff4e09 100644
> --- a/arch/arm/cpu/armv7/exynos/system.c
> +++ b/arch/arm/cpu/armv7/exynos/system.c
> @@ -46,3 +46,25 @@ void set_system_display_ctrl(void)
>        if (cpu_is_exynos4())
>                exynos4_set_system_display();
>  }
> +
> +static void exynos5_enable_usbhost_mode(unsigned int mode)

Please move this function to up the set_system_display_ctrl function.
APIs should be gathered to bottom of file.

> +{
> +       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 enable_usbhost_mode(unsigned int mode)

API's name should be set_* or get_*.
Please fix it.

> +{
> +       if (cpu_is_exynos5())
> +               exynos5_enable_usbhost_mode(mode);
> +}

Thanks.
Minkyu Kang.

Patch

diff --git a/arch/arm/cpu/armv7/exynos/system.c b/arch/arm/cpu/armv7/exynos/system.c
index 6c34730..7ff4e09 100644
--- a/arch/arm/cpu/armv7/exynos/system.c
+++ b/arch/arm/cpu/armv7/exynos/system.c
@@ -46,3 +46,25 @@  void set_system_display_ctrl(void)
 	if (cpu_is_exynos4())
 		exynos4_set_system_display();
 }
+
+static void exynos5_enable_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 enable_usbhost_mode(unsigned int mode)
+{
+	if (cpu_is_exynos5())
+		exynos5_enable_usbhost_mode(mode);
+}
diff --git a/arch/arm/include/asm/arch-exynos/system.h b/arch/arm/include/asm/arch-exynos/system.h
index c1d880f..949661d 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_system_display_ctrl(void);
+void enable_usbhost_mode(unsigned int mode);
 
 #endif	/* _EXYNOS4_SYSTEM_H */
diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c
index 3830c43..d918a2a 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)
 {
+	enable_usbhost_mode(USB20_PHY_CFG_HOST_LINK_EN);
+
 	clrbits_le32(&usb->usbphyctrl0,
 			HOST_CTRL0_FSEL_MASK |
 			HOST_CTRL0_COMMONON_N |