public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage.
  2011-04-01 22:16 [U-Boot] [PATCH 1/3] OMAP3: Change some USB related MUX settings to values used by the kernel Alexander Holler
@ 2011-04-01 22:16 ` Alexander Holler
  0 siblings, 0 replies; 9+ messages in thread
From: Alexander Holler @ 2011-04-01 22:16 UTC (permalink / raw)
  To: u-boot

The reset sequence/configuration for ehci is highly board specific,
so this will be done in the source for the board, instead of
introducing several CONFIG_* which would be needed to make those
few lines in beagle.c usable across different OMAP boards.

Signed-off-by: Alexander Holler <holler@ahsoftware.de>
---
 arch/arm/include/asm/arch-omap3/ehci_omap3.h |   58 ++++++++++++++
 board/ti/beagle/beagle.c                     |  106 ++++++++++++++++++++++++++
 include/configs/omap3_beagle.h               |    6 ++
 3 files changed, 170 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/include/asm/arch-omap3/ehci_omap3.h

diff --git a/arch/arm/include/asm/arch-omap3/ehci_omap3.h b/arch/arm/include/asm/arch-omap3/ehci_omap3.h
new file mode 100644
index 0000000..cd01f50
--- /dev/null
+++ b/arch/arm/include/asm/arch-omap3/ehci_omap3.h
@@ -0,0 +1,58 @@
+/*
+ * (C) Copyright 2011
+ * Alexander Holler <holler@ahsoftware.de>
+ *
+ * Based on "drivers/usb/host/ehci-omap.c" from Linux 2.6.37
+ *
+ * See there for additional Copyrights.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+#ifndef _EHCI_OMAP3_H_
+#define _EHCI_OMAP3_H_
+
+/* USB/EHCI registers */
+#define OMAP3_USBTLL_BASE				0x48062000UL
+#define OMAP3_UHH_BASE					0x48064000UL
+#define OMAP3_EHCI_BASE					0x48064800UL
+
+/* TLL Register Set */
+#define	OMAP_USBTLL_SYSCONFIG				(0x10)
+#define	OMAP_USBTLL_SYSCONFIG_SOFTRESET			(1 << 1)
+#define	OMAP_USBTLL_SYSCONFIG_ENAWAKEUP			(1 << 2)
+#define	OMAP_USBTLL_SYSCONFIG_SIDLEMODE			(1 << 3)
+#define	OMAP_USBTLL_SYSCONFIG_CACTIVITY			(1 << 8)
+
+#define	OMAP_USBTLL_SYSSTATUS				(0x14)
+#define	OMAP_USBTLL_SYSSTATUS_RESETDONE			(1 << 0)
+
+/* UHH Register Set */
+#define	OMAP_UHH_SYSCONFIG				(0x10)
+#define	OMAP_UHH_SYSCONFIG_SOFTRESET			(1 << 1)
+#define	OMAP_UHH_SYSCONFIG_CACTIVITY			(1 << 8)
+#define	OMAP_UHH_SYSCONFIG_SIDLEMODE			(1 << 3)
+#define	OMAP_UHH_SYSCONFIG_ENAWAKEUP			(1 << 2)
+#define	OMAP_UHH_SYSCONFIG_MIDLEMODE			(1 << 12)
+
+#define	OMAP_UHH_HOSTCONFIG				(0x40)
+#define OMAP_UHH_HOSTCONFIG_INCR4_BURST_EN		(1 << 2)
+#define OMAP_UHH_HOSTCONFIG_INCR8_BURST_EN		(1 << 3)
+#define OMAP_UHH_HOSTCONFIG_INCR16_BURST_EN		(1 << 4)
+
+#endif /* _EHCI_OMAP3_H_ */
diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index c066d6e..03242c1 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -37,8 +37,19 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/gpio.h>
 #include <asm/mach-types.h>
+#ifdef CONFIG_USB_EHCI
+#include <usb.h>
+#include <asm/arch/clocks.h>
+#include <asm/arch/clocks_omap3.h>
+#include <asm/arch/ehci_omap3.h>
+/* from drivers/usb/host/ehci-core.h */
+extern struct ehci_hccr *hccr;
+extern volatile struct ehci_hcor *hcor;
+#endif
 #include "beagle.h"
 
+#define pr_debug(fmt, args...) debug(fmt, ##args)
+
 #define TWL4030_I2C_BUS			0
 #define EXPANSION_EEPROM_I2C_BUS	1
 #define EXPANSION_EEPROM_I2C_ADDRESS	0x50
@@ -273,3 +284,98 @@ int board_mmc_init(bd_t *bis)
 	return 0;
 }
 #endif
+
+#ifdef CONFIG_USB_EHCI
+
+#define GPIO_PHY_RESET 147
+
+/* Reset is needed otherwise the kernel-driver will throw an error. */
+int ehci_hcd_stop(void)
+{
+	pr_debug("Resetting OMAP3 EHCI\n");
+	omap_set_gpio_dataout(GPIO_PHY_RESET, 0);
+	writel(OMAP_UHH_SYSCONFIG_SOFTRESET, OMAP3_UHH_BASE + OMAP_UHH_SYSCONFIG);
+	return 0;
+}
+
+/* Call usb_stop() before starting the kernel */
+void show_boot_progress(int val)
+{
+	if(val == 15)
+		usb_stop();
+}
+
+/*
+ * Initialize the OMAP3 EHCI controller and PHY on the BeagleBoard.
+ * Based on "drivers/usb/host/ehci-omap.c" from Linux 2.6.37.
+ * See there for additional Copyrights.
+ */
+int ehci_hcd_init(void)
+{
+	pr_debug("Initializing OMAP3 ECHI\n");
+
+	/* Put the PHY in RESET */
+	omap_request_gpio(GPIO_PHY_RESET);
+	omap_set_gpio_direction(GPIO_PHY_RESET, 0);
+	omap_set_gpio_dataout(GPIO_PHY_RESET, 0);
+
+	/* Hold the PHY in RESET for enough time till DIR is high */
+	/* Refer: ISSUE1 */
+	udelay(10);
+
+	struct prcm *prcm_base = (struct prcm *)PRCM_BASE;
+	/* Enable USBHOST_L3_ICLK (USBHOST_MICLK) */
+	sr32(&prcm_base->iclken_usbhost, 0, 1, 1);
+	/*
+	 * Enable USBHOST_48M_FCLK (USBHOST_FCLK1)
+	 * and USBHOST_120M_FCLK (USBHOST_FCLK2)
+	 */
+	sr32(&prcm_base->fclken_usbhost, 0, 2, 3);
+	/* Enable USBTTL_ICLK */
+	sr32(&prcm_base->iclken3_core, 2, 1, 1);
+	/* Enable USBTTL_FCLK */
+	sr32(&prcm_base->fclken3_core, 2, 1, 1);
+	pr_debug("USB clocks enabled\n");
+
+	/* perform TLL soft reset, and wait until reset is complete */
+	writel(OMAP_USBTLL_SYSCONFIG_SOFTRESET,
+		OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSCONFIG);
+	/* Wait for TLL reset to complete */
+	while (!(readl(OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSSTATUS)
+			& OMAP_USBTLL_SYSSTATUS_RESETDONE));
+	pr_debug("TLL reset done\n");
+
+	writel(OMAP_USBTLL_SYSCONFIG_ENAWAKEUP |
+		OMAP_USBTLL_SYSCONFIG_SIDLEMODE |
+		OMAP_USBTLL_SYSCONFIG_CACTIVITY,
+		OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSCONFIG);
+
+	/* Put UHH in NoIdle/NoStandby mode */
+	writel(OMAP_UHH_SYSCONFIG_ENAWAKEUP
+		| OMAP_UHH_SYSCONFIG_SIDLEMODE
+		| OMAP_UHH_SYSCONFIG_CACTIVITY
+		| OMAP_UHH_SYSCONFIG_MIDLEMODE,
+		OMAP3_UHH_BASE + OMAP_UHH_SYSCONFIG);
+
+	/* setup burst configurations */
+	writel(OMAP_UHH_HOSTCONFIG_INCR4_BURST_EN
+		| OMAP_UHH_HOSTCONFIG_INCR8_BURST_EN
+		| OMAP_UHH_HOSTCONFIG_INCR16_BURST_EN,
+		OMAP3_UHH_BASE + OMAP_UHH_HOSTCONFIG);
+
+	/*
+	 * Refer ISSUE1:
+	 * Hold the PHY in RESET for enough time till
+	 * PHY is settled and ready
+	 */
+	udelay(10);
+	omap_set_gpio_dataout(GPIO_PHY_RESET, 1);
+
+	hccr = (struct ehci_hccr *)(OMAP3_EHCI_BASE);
+	hcor = (struct ehci_hcor *)(OMAP3_EHCI_BASE + 0x10);
+
+	pr_debug("OMAP3 EHCI init done\n");
+	return 0;
+}
+
+#endif /* CONFIG_USB_EHCI */
diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h
index 5cfa4cb..ba34e8a 100644
--- a/include/configs/omap3_beagle.h
+++ b/include/configs/omap3_beagle.h
@@ -121,6 +121,11 @@
 #define CONFIG_USB_TTY			1
 #define CONFIG_SYS_CONSOLE_IS_IN_ENV	1
 
+/* USB EHCI */
+#define CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
+
 /* commands to include */
 #include <config_cmd_default.h>
 
@@ -137,6 +142,7 @@
 
 #define CONFIG_CMD_I2C		/* I2C serial bus support	*/
 #define CONFIG_CMD_MMC		/* MMC support			*/
+#define CONFIG_USB_STORAGE	/* USB storage support		*/
 #define CONFIG_CMD_NAND		/* NAND support			*/
 
 #undef CONFIG_CMD_FLASH		/* flinfo, erase, protect	*/
-- 
1.7.3.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage.
  2011-04-01 22:37 [U-Boot] [PATCH 1/3] OMAP3: Change some USB related MUX settings to values used by the kernel Alexander Holler
@ 2011-04-01 22:37 ` Alexander Holler
  2011-04-19 13:33   ` Paulraj, Sandeep
  0 siblings, 1 reply; 9+ messages in thread
From: Alexander Holler @ 2011-04-01 22:37 UTC (permalink / raw)
  To: u-boot

The reset sequence/configuration for ehci is highly board specific,
so this will be done in the source for the board, instead of
introducing several CONFIG_* which would be needed to make those
few lines in beagle.c usable across different OMAP boards.

Signed-off-by: Alexander Holler <holler@ahsoftware.de>
---
 arch/arm/include/asm/arch-omap3/ehci_omap3.h |   58 ++++++++++++++
 board/ti/beagle/beagle.c                     |  106 ++++++++++++++++++++++++++
 include/configs/omap3_beagle.h               |    6 ++
 3 files changed, 170 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/include/asm/arch-omap3/ehci_omap3.h

diff --git a/arch/arm/include/asm/arch-omap3/ehci_omap3.h b/arch/arm/include/asm/arch-omap3/ehci_omap3.h
new file mode 100644
index 0000000..cd01f50
--- /dev/null
+++ b/arch/arm/include/asm/arch-omap3/ehci_omap3.h
@@ -0,0 +1,58 @@
+/*
+ * (C) Copyright 2011
+ * Alexander Holler <holler@ahsoftware.de>
+ *
+ * Based on "drivers/usb/host/ehci-omap.c" from Linux 2.6.37
+ *
+ * See there for additional Copyrights.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+#ifndef _EHCI_OMAP3_H_
+#define _EHCI_OMAP3_H_
+
+/* USB/EHCI registers */
+#define OMAP3_USBTLL_BASE				0x48062000UL
+#define OMAP3_UHH_BASE					0x48064000UL
+#define OMAP3_EHCI_BASE					0x48064800UL
+
+/* TLL Register Set */
+#define	OMAP_USBTLL_SYSCONFIG				(0x10)
+#define	OMAP_USBTLL_SYSCONFIG_SOFTRESET			(1 << 1)
+#define	OMAP_USBTLL_SYSCONFIG_ENAWAKEUP			(1 << 2)
+#define	OMAP_USBTLL_SYSCONFIG_SIDLEMODE			(1 << 3)
+#define	OMAP_USBTLL_SYSCONFIG_CACTIVITY			(1 << 8)
+
+#define	OMAP_USBTLL_SYSSTATUS				(0x14)
+#define	OMAP_USBTLL_SYSSTATUS_RESETDONE			(1 << 0)
+
+/* UHH Register Set */
+#define	OMAP_UHH_SYSCONFIG				(0x10)
+#define	OMAP_UHH_SYSCONFIG_SOFTRESET			(1 << 1)
+#define	OMAP_UHH_SYSCONFIG_CACTIVITY			(1 << 8)
+#define	OMAP_UHH_SYSCONFIG_SIDLEMODE			(1 << 3)
+#define	OMAP_UHH_SYSCONFIG_ENAWAKEUP			(1 << 2)
+#define	OMAP_UHH_SYSCONFIG_MIDLEMODE			(1 << 12)
+
+#define	OMAP_UHH_HOSTCONFIG				(0x40)
+#define OMAP_UHH_HOSTCONFIG_INCR4_BURST_EN		(1 << 2)
+#define OMAP_UHH_HOSTCONFIG_INCR8_BURST_EN		(1 << 3)
+#define OMAP_UHH_HOSTCONFIG_INCR16_BURST_EN		(1 << 4)
+
+#endif /* _EHCI_OMAP3_H_ */
diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c
index c066d6e..03242c1 100644
--- a/board/ti/beagle/beagle.c
+++ b/board/ti/beagle/beagle.c
@@ -37,8 +37,19 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/gpio.h>
 #include <asm/mach-types.h>
+#ifdef CONFIG_USB_EHCI
+#include <usb.h>
+#include <asm/arch/clocks.h>
+#include <asm/arch/clocks_omap3.h>
+#include <asm/arch/ehci_omap3.h>
+/* from drivers/usb/host/ehci-core.h */
+extern struct ehci_hccr *hccr;
+extern volatile struct ehci_hcor *hcor;
+#endif
 #include "beagle.h"
 
+#define pr_debug(fmt, args...) debug(fmt, ##args)
+
 #define TWL4030_I2C_BUS			0
 #define EXPANSION_EEPROM_I2C_BUS	1
 #define EXPANSION_EEPROM_I2C_ADDRESS	0x50
@@ -273,3 +284,98 @@ int board_mmc_init(bd_t *bis)
 	return 0;
 }
 #endif
+
+#ifdef CONFIG_USB_EHCI
+
+#define GPIO_PHY_RESET 147
+
+/* Reset is needed otherwise the kernel-driver will throw an error. */
+int ehci_hcd_stop(void)
+{
+	pr_debug("Resetting OMAP3 EHCI\n");
+	omap_set_gpio_dataout(GPIO_PHY_RESET, 0);
+	writel(OMAP_UHH_SYSCONFIG_SOFTRESET, OMAP3_UHH_BASE + OMAP_UHH_SYSCONFIG);
+	return 0;
+}
+
+/* Call usb_stop() before starting the kernel */
+void show_boot_progress(int val)
+{
+	if(val == 15)
+		usb_stop();
+}
+
+/*
+ * Initialize the OMAP3 EHCI controller and PHY on the BeagleBoard.
+ * Based on "drivers/usb/host/ehci-omap.c" from Linux 2.6.37.
+ * See there for additional Copyrights.
+ */
+int ehci_hcd_init(void)
+{
+	pr_debug("Initializing OMAP3 ECHI\n");
+
+	/* Put the PHY in RESET */
+	omap_request_gpio(GPIO_PHY_RESET);
+	omap_set_gpio_direction(GPIO_PHY_RESET, 0);
+	omap_set_gpio_dataout(GPIO_PHY_RESET, 0);
+
+	/* Hold the PHY in RESET for enough time till DIR is high */
+	/* Refer: ISSUE1 */
+	udelay(10);
+
+	struct prcm *prcm_base = (struct prcm *)PRCM_BASE;
+	/* Enable USBHOST_L3_ICLK (USBHOST_MICLK) */
+	sr32(&prcm_base->iclken_usbhost, 0, 1, 1);
+	/*
+	 * Enable USBHOST_48M_FCLK (USBHOST_FCLK1)
+	 * and USBHOST_120M_FCLK (USBHOST_FCLK2)
+	 */
+	sr32(&prcm_base->fclken_usbhost, 0, 2, 3);
+	/* Enable USBTTL_ICLK */
+	sr32(&prcm_base->iclken3_core, 2, 1, 1);
+	/* Enable USBTTL_FCLK */
+	sr32(&prcm_base->fclken3_core, 2, 1, 1);
+	pr_debug("USB clocks enabled\n");
+
+	/* perform TLL soft reset, and wait until reset is complete */
+	writel(OMAP_USBTLL_SYSCONFIG_SOFTRESET,
+		OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSCONFIG);
+	/* Wait for TLL reset to complete */
+	while (!(readl(OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSSTATUS)
+			& OMAP_USBTLL_SYSSTATUS_RESETDONE));
+	pr_debug("TLL reset done\n");
+
+	writel(OMAP_USBTLL_SYSCONFIG_ENAWAKEUP |
+		OMAP_USBTLL_SYSCONFIG_SIDLEMODE |
+		OMAP_USBTLL_SYSCONFIG_CACTIVITY,
+		OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSCONFIG);
+
+	/* Put UHH in NoIdle/NoStandby mode */
+	writel(OMAP_UHH_SYSCONFIG_ENAWAKEUP
+		| OMAP_UHH_SYSCONFIG_SIDLEMODE
+		| OMAP_UHH_SYSCONFIG_CACTIVITY
+		| OMAP_UHH_SYSCONFIG_MIDLEMODE,
+		OMAP3_UHH_BASE + OMAP_UHH_SYSCONFIG);
+
+	/* setup burst configurations */
+	writel(OMAP_UHH_HOSTCONFIG_INCR4_BURST_EN
+		| OMAP_UHH_HOSTCONFIG_INCR8_BURST_EN
+		| OMAP_UHH_HOSTCONFIG_INCR16_BURST_EN,
+		OMAP3_UHH_BASE + OMAP_UHH_HOSTCONFIG);
+
+	/*
+	 * Refer ISSUE1:
+	 * Hold the PHY in RESET for enough time till
+	 * PHY is settled and ready
+	 */
+	udelay(10);
+	omap_set_gpio_dataout(GPIO_PHY_RESET, 1);
+
+	hccr = (struct ehci_hccr *)(OMAP3_EHCI_BASE);
+	hcor = (struct ehci_hcor *)(OMAP3_EHCI_BASE + 0x10);
+
+	pr_debug("OMAP3 EHCI init done\n");
+	return 0;
+}
+
+#endif /* CONFIG_USB_EHCI */
diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h
index 5cfa4cb..ba34e8a 100644
--- a/include/configs/omap3_beagle.h
+++ b/include/configs/omap3_beagle.h
@@ -121,6 +121,11 @@
 #define CONFIG_USB_TTY			1
 #define CONFIG_SYS_CONSOLE_IS_IN_ENV	1
 
+/* USB EHCI */
+#define CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
+
 /* commands to include */
 #include <config_cmd_default.h>
 
@@ -137,6 +142,7 @@
 
 #define CONFIG_CMD_I2C		/* I2C serial bus support	*/
 #define CONFIG_CMD_MMC		/* MMC support			*/
+#define CONFIG_USB_STORAGE	/* USB storage support		*/
 #define CONFIG_CMD_NAND		/* NAND support			*/
 
 #undef CONFIG_CMD_FLASH		/* flinfo, erase, protect	*/
-- 
1.7.3.4

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage.
  2011-04-01 22:37 ` [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage Alexander Holler
@ 2011-04-19 13:33   ` Paulraj, Sandeep
  0 siblings, 0 replies; 9+ messages in thread
From: Paulraj, Sandeep @ 2011-04-19 13:33 UTC (permalink / raw)
  To: u-boot



> 
> The reset sequence/configuration for ehci is highly board specific,
> so this will be done in the source for the board, instead of
> introducing several CONFIG_* which would be needed to make those
> few lines in beagle.c usable across different OMAP boards.
> 
> Signed-off-by: Alexander Holler <holler@ahsoftware.de>
> ---

Thanks

Pushed to u-boot-ti.

In one patch I changed the patch subject line as it was too long.

--Sandeep

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot]  [PATCH 3/3] omap3_beagle: enable EHCI and USB storage.
@ 2011-05-26 11:30 Christian Spielberger
  2011-05-26 15:41 ` Alexander Holler
  0 siblings, 1 reply; 9+ messages in thread
From: Christian Spielberger @ 2011-05-26 11:30 UTC (permalink / raw)
  To: u-boot

Hi Alexander Holler,

is EHCI on omap3 already working?

On my beagleboard xM

usb start

hangs at this position in method ehci_hcd_init:

+	/* perform TLL soft reset, and wait until reset is complete */
+	writel(OMAP_USBTLL_SYSCONFIG_SOFTRESET,
+		OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSCONFIG);


regards,
chris.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage.
  2011-05-26 11:30 [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage Christian Spielberger
@ 2011-05-26 15:41 ` Alexander Holler
  2011-05-27  7:34   ` Alexander Holler
  0 siblings, 1 reply; 9+ messages in thread
From: Alexander Holler @ 2011-05-26 15:41 UTC (permalink / raw)
  To: u-boot

Am 26.05.2011 13:30, schrieb Christian Spielberger:
> Hi Alexander Holler,
>
> is EHCI on omap3 already working?
>
> On my beagleboard xM
>
> usb start
>
> hangs at this position in method ehci_hcd_init:
>
> + /* perform TLL soft reset, and wait until reset is complete */
> + writel(OMAP_USBTLL_SYSCONFIG_SOFTRESET,
> + OMAP3_USBTLL_BASE + OMAP_USBTLL_SYSCONFIG);

It works on a normal BeagleBoard (720 MHz). On the XM it seems you have 
either move the initialization of the usb-clocks a bit upwards (e.g. 
before the reset of the phy) or you have to add a check if the clock 
runs after it was initialized (before that writel). The XM seems to be 
too fast and the peripheral-clock isn't ready when that writel wants to 
write to the peripheral-register, therefor it hangs there on a XM.

But even than USB doesn't seem to work on a BeagleBoard XM (at least 
some people told me so). I don't have a XM, so I can't help more there. 
It might be a problem with (a needed reset of) the HUB which is included 
on the XM, I don't know.

And a side note: don't try a kernel compiled with gcc 4.6 on the 
BeagleBoard. EHCI on the OMAP3 doesn't come up here when the kernel is 
compiled with gcc 4.6. That seems to be specific to OMAP, I don't have 
those problems on other ARM hw (I use successfull e.g. EHCI on some 
armv5 devices with kernels which are compiled with gcc 4.6).When I 
compile the same kernel using gcc 4.5.2 I have no problems with EHCI on 
the BeagleBoard. Haven't investigated that further.

Regards,

Alexander

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage.
  2011-05-26 15:41 ` Alexander Holler
@ 2011-05-27  7:34   ` Alexander Holler
  2011-05-27  9:40     ` Christian Spielberger
  0 siblings, 1 reply; 9+ messages in thread
From: Alexander Holler @ 2011-05-27  7:34 UTC (permalink / raw)
  To: u-boot

Am 26.05.2011 17:41, schrieb Alexander Holler:
> Am 26.05.2011 13:30, schrieb Christian Spielberger:
...
> But even than USB doesn't seem to work on a BeagleBoard XM (at least
> some people told me so). I don't have a XM, so I can't help more there.
> It might be a problem with (a needed reset of) the HUB which is included
> on the XM, I don't know.

I forgot to mention that the PHY reset on the XM works inverse than for 
the BeagleBoard w/o XM. Haven't known this, when I've written that patch.

Regards,

Alexander

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage.
  2011-05-27  7:34   ` Alexander Holler
@ 2011-05-27  9:40     ` Christian Spielberger
  2011-05-27 11:24       ` Alexander Holler
  0 siblings, 1 reply; 9+ messages in thread
From: Christian Spielberger @ 2011-05-27  9:40 UTC (permalink / raw)
  To: u-boot

On 05/27/2011 09:34 AM, Alexander Holler wrote:
> Am 26.05.2011 17:41, schrieb Alexander Holler:
>> Am 26.05.2011 13:30, schrieb Christian Spielberger:
> ...
>> But even than USB doesn't seem to work on a BeagleBoard XM (at least
>> some people told me so). I don't have a XM, so I can't help more there.
>> It might be a problem with (a needed reset of) the HUB which is included
>> on the XM, I don't know.
>
> I forgot to mention that the PHY reset on the XM works inverse than for
> the BeagleBoard w/o XM. Haven't known this, when I've written that patch.
>
> Regards,
>
> Alexander
>
>

We checked what you mentioned but found that the PHY reset is identical 
between XM and C4. The reset signal is ok. That is what we saw on an 
oscilloscope.

We also found that the USB2HS_CLK initialization does not work, also 
with the oscilloscope. I am going to check the CLK initialization 
sequence in beagle.c/ehci_hcd_init.

regards,
chris.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage.
  2011-05-27  9:40     ` Christian Spielberger
@ 2011-05-27 11:24       ` Alexander Holler
  2011-05-28  8:55         ` Christian Spielberger
  0 siblings, 1 reply; 9+ messages in thread
From: Alexander Holler @ 2011-05-27 11:24 UTC (permalink / raw)
  To: u-boot

Am 27.05.2011 11:40, schrieb Christian Spielberger:
> On 05/27/2011 09:34 AM, Alexander Holler wrote:
>> Am 26.05.2011 17:41, schrieb Alexander Holler:
>>> Am 26.05.2011 13:30, schrieb Christian Spielberger:
>> ...
>>> But even than USB doesn't seem to work on a BeagleBoard XM (at least
>>> some people told me so). I don't have a XM, so I can't help more there.
>>> It might be a problem with (a needed reset of) the HUB which is included
>>> on the XM, I don't know.
>>
>> I forgot to mention that the PHY reset on the XM works inverse than for
>> the BeagleBoard w/o XM. Haven't known this, when I've written that patch.
>>
>> Regards,
>>
>> Alexander
>>
>>
>
> We checked what you mentioned but found that the PHY reset is identical
> between XM and C4. The reset signal is ok. That is what we saw on an
> oscilloscope.
>
> We also found that the USB2HS_CLK initialization does not work, also
> with the oscilloscope. I am going to check the CLK initialization
> sequence in beagle.c/ehci_hcd_init.

It seems the PHY reset was only inverted for XM-A and XM-B and got again 
the same as in the C4 with XM-C.

I've looked up in my mailbox and found a quick and dirty hack from Koen 
Kooi with which he comes at least through the initialization on the XM:

http://dominion.thruhere.net/koen/angstrom/beagleboard/uboot/hacks.diff

But I think he stopped working on that topic, waiting for feedback from 
other people.

You might ask on the mailing list for the BeagleBoard about the status.

Regards,

Alexander

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage.
  2011-05-27 11:24       ` Alexander Holler
@ 2011-05-28  8:55         ` Christian Spielberger
  0 siblings, 0 replies; 9+ messages in thread
From: Christian Spielberger @ 2011-05-28  8:55 UTC (permalink / raw)
  To: u-boot

On 05/27/2011 01:24 PM, Alexander Holler wrote:
> Am 27.05.2011 11:40, schrieb Christian Spielberger:
>> On 05/27/2011 09:34 AM, Alexander Holler wrote:
>>> Am 26.05.2011 17:41, schrieb Alexander Holler:
>>>> Am 26.05.2011 13:30, schrieb Christian Spielberger:
>>> ...
>>>> But even than USB doesn't seem to work on a BeagleBoard XM (at least
>>>> some people told me so). I don't have a XM, so I can't help more there.
>>>> It might be a problem with (a needed reset of) the HUB which is included
>>>> on the XM, I don't know.
>>>
>>> I forgot to mention that the PHY reset on the XM works inverse than for
>>> the BeagleBoard w/o XM. Haven't known this, when I've written that patch.
>>>
>>> Regards,
>>>
>>> Alexander
>>>
>>>
>>
>> We checked what you mentioned but found that the PHY reset is identical
>> between XM and C4. The reset signal is ok. That is what we saw on an
>> oscilloscope.
>>
>> We also found that the USB2HS_CLK initialization does not work, also
>> with the oscilloscope. I am going to check the CLK initialization
>> sequence in beagle.c/ehci_hcd_init.
> 
> It seems the PHY reset was only inverted for XM-A and XM-B and got again 
> the same as in the C4 with XM-C.
> 
> I've looked up in my mailbox and found a quick and dirty hack from Koen 
> Kooi with which he comes at least through the initialization on the XM:
> 
> http://dominion.thruhere.net/koen/angstrom/beagleboard/uboot/hacks.diff
> 
> But I think he stopped working on that topic, waiting for feedback from 
> other people.
> 
> You might ask on the mailing list for the BeagleBoard about the status.
> 
> Regards,
> 
> Alexander

Hi Alexander, hi Koen,

@Alexander:
Thanks for your input! I could not find any difference in the schematics
between C4, xM-A2, xM-A3 (which should be the same as xM-B, see
http://beagleboard.org/hardware/design!). Anyway, I'll check the lines:

MUX_VAL(CP(UART2_RX),           (IDIS | PTU | EN  | M4)) /*GPIO_147*/

in the defines of MUX_BEAGLE_C and MUX_BEAGLE_XM
(board/ti/beagle/beagle.h) on Monday. I'am not sure if PTU is correct if
a pull down resistor is used.


@Koen: We tried your hack

http://dominion.thruhere.net/koen/angstrom/beagleboard/uboot/hacks.diff

for a proper initialization of the omap3 ehci with both versions of PHY
reset levels. Thus we removed the soft reset and the following
initialization of the USBTLL. The result: U-boot hangs at the first
writel after invoking "usb start".
We assume the reason for that is a faulty initialization of the usb clk
for the DM3730 at lines 377-388 in board/ti/beagle/beagle.cpp. We also
inserted an udelay after the CLK initialization with no result.

Did you have any luck with your efforts on the xM? What was the reason
for removing the USBTLL soft reset and initialization?

regards,
chris.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2011-05-28  8:55 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-26 11:30 [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage Christian Spielberger
2011-05-26 15:41 ` Alexander Holler
2011-05-27  7:34   ` Alexander Holler
2011-05-27  9:40     ` Christian Spielberger
2011-05-27 11:24       ` Alexander Holler
2011-05-28  8:55         ` Christian Spielberger
  -- strict thread matches above, loose matches on Subject: below --
2011-04-01 22:37 [U-Boot] [PATCH 1/3] OMAP3: Change some USB related MUX settings to values used by the kernel Alexander Holler
2011-04-01 22:37 ` [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage Alexander Holler
2011-04-19 13:33   ` Paulraj, Sandeep
2011-04-01 22:16 [U-Boot] [PATCH 1/3] OMAP3: Change some USB related MUX settings to values used by the kernel Alexander Holler
2011-04-01 22:16 ` [U-Boot] [PATCH 3/3] omap3_beagle: enable EHCI and USB storage Alexander Holler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox