* [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