OMAP3: TAM3517: update ehci interface
PATCH 1/1 OMAP3: TAM3517: update ehci interface
Changed the EHCI interface using the ulpi framework.
---
This patch is based and tested on top of Govindraj's patches for EHCI omap:
http://patchwork.ozlabs.org/patch/139377/
board/technexion/twister/twister.c | 32 ++++++++++++++++++++++++++++++++ include/configs/tam3517-common.h | 2 ++ 2 files changed, 34 insertions(+), 0 deletions(-)
board/technexion/twister/twister.c +32 -0
@@ -33,6 +33,10 @@#include <asm/arch/mmc_host_def.h> #include <i2c.h> #include <asm/gpio.h> +#ifdef CONFIG_USB_EHCI +#include <usb.h> +#include <asm/ehci-omap.h> +#endif #include "twister.h" DECLARE_GLOBAL_DATA_PTR ;
@@ -56,6 +60,34 @@ static const u32 gpmc_XR16L2751[] = { XR16L2751_GPMC_CONFIG6, }; +#ifdef CONFIG_USB_EHCI + +static struct omap_usbhs_board_data usbhs_bdata = { + .port_mode[0 ] =OMAP_EHCI_PORT_MODE_PHY , + .port_mode[1 ] =OMAP_EHCI_PORT_MODE_PHY , + .port_mode[2 ] =OMAP_EHCI_PORT_MODE_PHY , +}; + +int ehci_hcd_init (void ) +{ +int ret; + + ret =omap_ehci_hcd_init (&usbhs_bdata); +if (ret <0 ) +return ret; + +return 0 ; +} + +int ehci_hcd_stop (void ) +{ +int ret; + + ret =omap_ehci_hcd_stop (); +return ret; +} +#endif +int board_init (void ) {gpmc_init ();/* in SRAM or SDRAM, finish GPMC */
include/configs/tam3517-common.h +2 -0
@@ -100,6 +100,8 @@#define CONFIG_OMAP3_GPIO_5 #define CONFIG_USB_EHCI #define CONFIG_USB_EHCI_OMAP +#define CONFIG_USB_ULPI +#define CONFIG_USB_ULPI_VIEWPORT_OMAP #define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO 25#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3#define CONFIG_USB_STORAGE
Signature · 1 line
1.7.5.4
PATCH 1/1 OMAP3: TAM3517: update ehci interface
Hi Stefano,
Quoted 29 lines · Stefano Babic
Changed the EHCI interface using the ulpi framework.
Signed-off-by Stefano Babic <[email protected]>CC Tom Rini <[email protected]>---
This patch is based and tested on top of Govindraj's patches for EHCI omap:
http://patchwork.ozlabs.org/patch/139377/board/technexion/twister/twister.c | 32 ++++++++++++++++++++++++++++++++ include/configs/tam3517-common.h | 2 ++ 2 files changed, 34 insertions(+), 0 deletions(-)board/technexion/twister/twister.c +4
-0@@ -33,6 +33,10 @@#include <asm/arch/mmc_host_def.h> #include <i2c.h> #include <asm/gpio.h> +#ifdef CONFIG_USB_EHCI +#include <usb.h> +#include <asm/ehci-omap.h> +#endif #include "twister.h" DECLARE_GLOBAL_DATA_PTR ;
board/technexion/twister/twister.c static const u32 gpmc_XR16L2751[] = { · line 69
Quoted 10 lines
board/technexion/twister/twister.c +7
-0@@ -56,6 +60,34 @@ static const u32 gpmc_XR16L2751[] = { XR16L2751_GPMC_CONFIG6, }; +#ifdef CONFIG_USB_EHCI + +static struct omap_usbhs_board_data usbhs_bdata = { + .port_mode[0 ] =OMAP_EHCI_PORT_MODE_PHY , + .port_mode[1 ] =OMAP_EHCI_PORT_MODE_PHY , + .port_mode[2 ] =OMAP_EHCI_PORT_MODE_PHY , +};
OMAP EHCI port3 is TLL only, so the above does not look right...
board/technexion/twister/twister.c static const u32 gpmc_XR16L2751[] = { · line 80
Quoted 11 lines
board/technexion/twister/twister.c +11
-0+ +int ehci_hcd_init (void ) +{ +int ret; + + ret =omap_ehci_hcd_init (&usbhs_bdata); +if (ret <0 ) +return ret; + +return 0 ; +}
return omap_ehci_hcd_init(&usbhs_bdata);
?
board/technexion/twister/twister.c static const u32 gpmc_XR16L2751[] = { · line 87
Quoted 7 lines
board/technexion/twister/twister.c +7
-0+ +int ehci_hcd_stop (void ) +{ +int ret; + + ret =omap_ehci_hcd_stop (); +return ret;
return omap_ehci_hcd_stop();
?
Quoted 19 lines
board/technexion/twister/twister.c +3
-0+} +#endif +int board_init (void ) {gpmc_init ();/* in SRAM or SDRAM, finish GPMC */ include/configs/tam3517-common.h +2
-0@@ -100,6 +100,8 @@#define CONFIG_OMAP3_GPIO_5 #define CONFIG_USB_EHCI #define CONFIG_USB_EHCI_OMAP +#define CONFIG_USB_ULPI +#define CONFIG_USB_ULPI_VIEWPORT_OMAP #define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO 25#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3#define CONFIG_USB_STORAGE
Signature · 2 lines
Regards, Igor.
PATCH 1/1 OMAP3: TAM3517: update ehci interface
Quoted 2 lines · Igor Grinberg
Hi Stefano,
Hi Igor,
Quoted 9 lines
board/technexion/twister/twister.c static const u32 gpmc_XR16L2751[] = { · line 69
Quoted 7 lines
board/technexion/twister/twister.c +7
-0+#ifdef CONFIG_USB_EHCI + +static struct omap_usbhs_board_data usbhs_bdata = { + .port_mode[0 ] =OMAP_EHCI_PORT_MODE_PHY , + .port_mode[1 ] =OMAP_EHCI_PORT_MODE_PHY , + .port_mode[2 ] =OMAP_EHCI_PORT_MODE_PHY , +};OMAP EHCI port3 is TLL only, so the above does not look right...
This is a strange effect. I have tested setting OMAP_EHCI_PORT_MODE_PHY (of course the phy is on another port), and everything works. However, after setting port_mode[2] to OMAP_USBHS_PORT_MODE_NONE, it does not work anymore and no storage are detected. I have not an explanation, maybe some of you can give some hints. Really, the change should have no effect...
Quoted 2 lines
return
omap_ehci_hcd_init(&usbhs_bdata);
Right, I'll fix
Quoted 2 lines
return
omap_ehci_hcd_stop();
I fix this, too
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de =====================================================================
PATCH 1/1 OMAP3: TAM3517: update ehci interface
Quoted 6 lines · Stefano Babic
This is a strange effect. I have tested setting
OMAP_EHCI_PORT_MODE_PHY(of course the phy is on another port), and everything works. However, after setting port_mode[2] toOMAP_USBHS_PORT_MODE_NONE, it does not work anymore and no storage are detected. I have not an explanation, maybe some of you can give some hints. Really, the change should have no effect...
I get the cause in ehci-omap.c:
rev = readl(&uhh->rev);
if (rev == OMAP_USBHS_REV1) {
if (is_ehci_phy_mode(usbhs_pdata->port_mode[0]))
clrbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS);
else
setbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS);
if (is_ehci_phy_mode(usbhs_pdata->port_mode[1]))
clrbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P2_BYPASS);
else
setbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS);
if (is_ehci_phy_mode(usbhs_pdata->port_mode[2]))
clrbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P3_BYPASS);
else
setbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS);
^--but these should be cleared for port 0So if PORT2 is set to unused, as it should be and discovered by Igor, omap_ehci_hcd_init sets OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS against port 0.
What do you think about ?
Stefano
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de =====================================================================
PATCH 1/1 OMAP3: TAM3517: update ehci interface
Hi Stefano,
Quoted 22 lines · Stefano Babic
Quoted 6 lines · Stefano Babic
This is a strange effect. I have tested setting
OMAP_EHCI_PORT_MODE_PHY(of course the phy is on another port), and everything works. However, after setting port_mode[2] toOMAP_USBHS_PORT_MODE_NONE, it does not work anymore and no storage are detected. I have not an explanation, maybe some of you can give some hints. Really, the change should have no effect...I get the cause in
ehci-omap.c:rev =
readl(&uhh->rev);
? ?if (rev ==OMAP_USBHS_REV1) {
? ? ?if (is_ehci_phy_mode(usbhs_pdata->port_mode[0]))
? ? ? ? ? ? ? ?clrbits_le32(®, OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS); ? ? ?else
? ? ? ? ? ? ? ?setbits_le32(®,OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS);? ? ?if (
is_ehci_phy_mode(usbhs_pdata->port_mode[1]))
? ? ? ? ? ? ? ?clrbits_le32(®,OMAP_UHH_HOSTCONFIG_ULPI_P2_BYPASS); ? ? ?else
? ? ? ? ? ? ? ?setbits_le32(®,OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS);
Quoted 9 lines
? ? ?if (
is_ehci_phy_mode(usbhs_pdata->port_mode[2]))
? ? ? ? ? ? ? ?clrbits_le32(®,OMAP_UHH_HOSTCONFIG_ULPI_P3_BYPASS); ? ? ?else
? ? ? ? ? ? ? ?setbits_le32(®,OMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASS); ? ? ? ? ? ? ? ? ? ? ? ? ^--but these should be cleared for port 0So if PORT2 is set to unused, as it should be and discovered by Igor,
omap_ehci_hcd_initsetsOMAP_UHH_HOSTCONFIG_ULPI_P1_BYPASSagainst port 0.
Looks like this is copy paste error from my side,
(for port2/3 it should have been bypass for port2/3 rather its port1 set in bypass mode)
I will correct this part and repost the patch.
Thanks for catching this.
--
Thanks,
Govindraj.R
PATCH 1/1 OMAP3: TAM3517: update ehci interface
Quoted 7 lines · Govindraj
Quoted 1 line
Looks like this is copy paste error from my side,
(for port2/3 it should have been bypass for port2/3 rather its port1 set in bypass mode)I will correct this part and repost the patch.
Thanks - only for info, I have already tested with these changes and everything works.
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de =====================================================================
PATCH v2 1/1 OMAP3: TAM3517: update ehci interface
In reply to Stefano BabicChanged the EHCI interface using the ulpi framework.
---
This patch is based and tested on top of Govindraj's patches for EHCI omap:
http://patchwork.ozlabs.org/patch/139377/
Changes since V1:
- do not use temporary variable to return values (Igor Grinberg)
- port 2 is TTL, cannot be PHY (Igor Grinberg)
board/technexion/twister/twister.c | 22 ++++++++++++++++++++++ include/configs/tam3517-common.h | 2 ++ 2 files changed, 24 insertions(+), 0 deletions(-)
board/technexion/twister/twister.c +22 -0
@@ -33,6 +33,10 @@#include <asm/arch/mmc_host_def.h> #include <i2c.h> #include <asm/gpio.h> +#ifdef CONFIG_USB_EHCI +#include <usb.h> +#include <asm/ehci-omap.h> +#endif #include "twister.h" DECLARE_GLOBAL_DATA_PTR ;
@@ -56,6 +60,24 @@ static const u32 gpmc_XR16L2751[] = { XR16L2751_GPMC_CONFIG6, }; +#ifdef CONFIG_USB_EHCI +static struct omap_usbhs_board_data usbhs_bdata = { + .port_mode[0 ] =OMAP_EHCI_PORT_MODE_PHY , + .port_mode[1 ] =OMAP_EHCI_PORT_MODE_PHY , + .port_mode[2 ] =OMAP_USBHS_PORT_MODE_UNUSED , +}; + +int ehci_hcd_init (void ) +{ +return omap_ehci_hcd_init (&usbhs_bdata); +} + +int ehci_hcd_stop (void ) +{ +return omap_ehci_hcd_stop (); +} +#endif +int board_init (void ) {gpmc_init ();/* in SRAM or SDRAM, finish GPMC */
include/configs/tam3517-common.h +2 -0
@@ -100,6 +100,8 @@#define CONFIG_OMAP3_GPIO_5 #define CONFIG_USB_EHCI #define CONFIG_USB_EHCI_OMAP +#define CONFIG_USB_ULPI +#define CONFIG_USB_ULPI_VIEWPORT_OMAP #define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO 25#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3#define CONFIG_USB_STORAGE
Signature · 1 line
1.7.5.4
PATCH v2 1/1 OMAP3: TAM3517: update ehci interface
Quoted 4 lines · Stefano Babic
Changed the EHCI interface using the ulpi framework.
Signed-off-by Stefano Babic <[email protected]>CC Tom Rini <[email protected]>
Quoted 65 lines
---
This patch is based and tested on top of Govindraj's patches for EHCI omap:http://patchwork.ozlabs.org/patch/139377/Changes since V1:
- do not use temporary variable to return values (Igor Grinberg)
- port 2 is TTL, cannot be PHY (Igor Grinberg)board/technexion/twister/twister.c | 22 ++++++++++++++++++++++ include/configs/tam3517-common.h | 2 ++ 2 files changed, 24 insertions(+), 0 deletions(-)board/technexion/twister/twister.c +22
-0@@ -33,6 +33,10 @@#include <asm/arch/mmc_host_def.h> #include <i2c.h> #include <asm/gpio.h> +#ifdef CONFIG_USB_EHCI +#include <usb.h> +#include <asm/ehci-omap.h> +#endif #include "twister.h" DECLARE_GLOBAL_DATA_PTR ;@@ -56,6 +60,24 @@ static const u32 gpmc_XR16L2751[] = { XR16L2751_GPMC_CONFIG6, }; +#ifdef CONFIG_USB_EHCI +static struct omap_usbhs_board_data usbhs_bdata = { + .port_mode[0 ] =OMAP_EHCI_PORT_MODE_PHY , + .port_mode[1 ] =OMAP_EHCI_PORT_MODE_PHY , + .port_mode[2 ] =OMAP_USBHS_PORT_MODE_UNUSED , +}; + +int ehci_hcd_init (void ) +{ +return omap_ehci_hcd_init (&usbhs_bdata); +} + +int ehci_hcd_stop (void ) +{ +return omap_ehci_hcd_stop (); +} +#endif +int board_init (void ) {gpmc_init ();/* in SRAM or SDRAM, finish GPMC */ include/configs/tam3517-common.h +2
-0@@ -100,6 +100,8 @@#define CONFIG_OMAP3_GPIO_5 #define CONFIG_USB_EHCI #define CONFIG_USB_EHCI_OMAP +#define CONFIG_USB_ULPI +#define CONFIG_USB_ULPI_VIEWPORT_OMAP #define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO 25#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3#define CONFIG_USB_STORAGE
Signature · 2 lines
Regards, Igor.