[U-Boot] Porting ehci-exynos.c to handle exynos4412 (odroid-u2)

Hi wonderful folks!
I own an odroid-u2 and the u-boot that comes with it does not have usb support. Its configuration is smdk4412 and I do not find that in the u-boot sources. I see it in the arndale and harkernel branches.
I do see that usb support was added to the arndale platform - which is exynos5 based. Is it easy to port it for exynos4412?
I did try it porting on my own accord and am listing it below...
I seem to be hitting issues in drivers/usb/host/ehci-exynos.c -> function setup_usb_phy(struct exynos_usb_phy *usb). Would passing the correct address of usb for the exynos4412 do the trick? If so what should it be? In this same file ehci_hcd_init() uses gpio->x3 and gpio->d1. In exynos4 looks like x3 is from gpio_part2. Also, do the d1 and x3 translate to the same gpiod1 and gpiox3 in the exynos4412?
Furthermore, ehci-exynos.c uses functions from arch/arm/cpu/armv7/exynos/system.c which for the most part are exynos5 oriented and do nothing for exynos4.
Can someone guide me as to what I could do, or some pointers to helpful docs? I do have the Exynos 4412 user manual.
Thanks - Suriyan

On Sun, 07 Jul 2013 02:15:17 -0700, Suriyan Ramasami wrote:
Hi Suriyan,
Hi wonderful folks!
I own an odroid-u2 and the u-boot that comes with it does not
have usb support. Its configuration is smdk4412 and I do not find that in the u-boot sources. I see it in the arndale and harkernel branches.
I do see that usb support was added to the arndale platform - which is exynos5 based. Is it easy to port it for exynos4412?
Patches for Exynos4412 based board (TRATS2) were already sent on the mailing list:
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/161578/match=introduc...
Please refer to them. It shall be relatively easy to add odroid-u2 support based on TRATS2.
I did try it porting on my own accord and am listing it below...
I seem to be hitting issues in drivers/usb/host/ehci-exynos.c -> function setup_usb_phy(struct exynos_usb_phy *usb). Would passing the correct address of usb for the exynos4412 do the trick? If so what should it be? In this same file ehci_hcd_init() uses gpio->x3 and gpio->d1. In exynos4 looks like x3 is from gpio_part2. Also, do the d1 and x3 translate to the same gpiod1 and gpiox3 in the exynos4412?
Furthermore, ehci-exynos.c uses functions from arch/arm/cpu/armv7/exynos/system.c which for the most part are exynos5 oriented and do nothing for exynos4.
Can someone guide me as to what I could do, or some pointers to helpful docs? I do have the Exynos 4412 user manual.
Thanks
- Suriyan

Hello Lukasz, Thanks for your response. I guess I was not very clear with my question.
u-boot code already exists for the odroid-u2 (that is what it uses). Unfortunately, it does not have USB support. I am looking at just adding the EHCI and USB (uses a 3503A) part of the code.
I checked the TRATS2 patch and it too does not have any code that touches the USB part of things.
Thanks - Suriyan
On Sun, Jul 7, 2013 at 11:56 PM, Lukasz Majewski l.majewski@samsung.comwrote:
On Sun, 07 Jul 2013 02:15:17 -0700, Suriyan Ramasami wrote:
Hi Suriyan,
Hi wonderful folks!
I own an odroid-u2 and the u-boot that comes with it does not
have usb support. Its configuration is smdk4412 and I do not find that in the u-boot sources. I see it in the arndale and harkernel branches.
I do see that usb support was added to the arndale platform - which is exynos5 based. Is it easy to port it for exynos4412?
Patches for Exynos4412 based board (TRATS2) were already sent on the mailing list:
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/161578/match=introduc...
Please refer to them. It shall be relatively easy to add odroid-u2 support based on TRATS2.
I did try it porting on my own accord and am listing it below...
I seem to be hitting issues in drivers/usb/host/ehci-exynos.c -> function setup_usb_phy(struct exynos_usb_phy *usb). Would passing the correct address of usb for the exynos4412 do the trick? If so what should it be? In this same file ehci_hcd_init() uses gpio->x3 and gpio->d1. In exynos4 looks like x3 is from gpio_part2. Also, do the d1 and x3 translate to the same gpiod1 and gpiox3 in the exynos4412?
Furthermore, ehci-exynos.c uses functions from arch/arm/cpu/armv7/exynos/system.c which for the most part are exynos5 oriented and do nothing for exynos4.
Can someone guide me as to what I could do, or some pointers to helpful docs? I do have the Exynos 4412 user manual.
Thanks
- Suriyan
-- Best regards,
Lukasz Majewski
Samsung R&D Institute Poland (SRPOL) | Linux Platform Group

On Mon, 8 Jul 2013 11:03:05 -0700 Suriyan Ramasami suriyan.r@gmail.com wrote:
Hello Lukasz, Thanks for your response. I guess I was not very clear with my question.
u-boot code already exists for the odroid-u2 (that is what it uses).
So I assume that the u-boot code was the part of the BSP? The problem then seems to be with enabling and building the usb code?
Another question is, how close your odroid's u-boot is to the mainline? Which version of u-boot do you have?
Unfortunately, it does not have USB support. I am looking at just adding the EHCI and USB (uses a 3503A) part of the code.
I checked the TRATS2 patch and it too does not have any code that touches the USB part of things.
This is true. We aren't using EHCI (USB Host). Instead we are supporting USB Device + Composite layer + Gadgets (like DFU + UMS). Support for those devices is "almost" in mainline :-).
Regards, Lukasz Majewski
Thanks
- Suriyan
On Sun, Jul 7, 2013 at 11:56 PM, Lukasz Majewski l.majewski@samsung.comwrote:
On Sun, 07 Jul 2013 02:15:17 -0700, Suriyan Ramasami wrote:
Hi Suriyan,
Hi wonderful folks!
I own an odroid-u2 and the u-boot that comes with it does not
have usb support. Its configuration is smdk4412 and I do not find that in the u-boot sources. I see it in the arndale and harkernel branches.
I do see that usb support was added to the arndale platform - which is exynos5 based. Is it easy to port it for exynos4412?
Patches for Exynos4412 based board (TRATS2) were already sent on the mailing list:
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/161578/match=introduc...
Please refer to them. It shall be relatively easy to add odroid-u2 support based on TRATS2.
I did try it porting on my own accord and am listing it below...
I seem to be hitting issues in drivers/usb/host/ehci-exynos.c -> function setup_usb_phy(struct exynos_usb_phy *usb). Would passing the correct address of usb for the exynos4412 do the trick? If so what should it be? In this same file ehci_hcd_init() uses gpio->x3 and gpio->d1. In exynos4 looks like x3 is from gpio_part2. Also, do the d1 and x3 translate to the same gpiod1 and gpiox3 in the exynos4412?
Furthermore, ehci-exynos.c uses functions from arch/arm/cpu/armv7/exynos/system.c which for the most part are exynos5 oriented and do nothing for exynos4.
Can someone guide me as to what I could do, or some pointers to helpful docs? I do have the Exynos 4412 user manual.
Thanks
- Suriyan
-- Best regards,
Lukasz Majewski
Samsung R&D Institute Poland (SRPOL) | Linux Platform Group

Yes, the u-boot is based off of 2010.12: The source with the odroid-u2 (Exynos4412) mods are in https://github.com/hardkernel/u-boot
You are right, the problem is in enabling USB. I do not seem ot find documentation as to the IO addresses and what values to poke/peek in them to initialize and power on the USB PHY.
There is however a linux source tree which has support for this device, which works the USB quite well. I am trying to steal and grab the initialization steps from the linux kernel and pull it into u-boot.
The files that I seem to need to modify are mainly in drivers/host/usb/ehci-exynos.c with some usb phy power code in system.c/power.c in arch/arm/cpu/armv7/exynos/ in u-boot. The linux src tree that I am trying to decipher is in arch/arm/mach-exynos/setup-usb-phy.c
Thanks - Suriyan
On Mon, Jul 8, 2013 at 12:47 PM, Lukasz Majewski l.majewski@majess.plwrote:
On Mon, 8 Jul 2013 11:03:05 -0700 Suriyan Ramasami suriyan.r@gmail.com wrote:
Hello Lukasz, Thanks for your response. I guess I was not very clear with my question.
u-boot code already exists for the odroid-u2 (that is what it uses).
So I assume that the u-boot code was the part of the BSP? The problem then seems to be with enabling and building the usb code?
Another question is, how close your odroid's u-boot is to the mainline? Which version of u-boot do you have?
Unfortunately, it does not have USB support. I am looking at just adding the EHCI and USB (uses a 3503A) part of the code.
I checked the TRATS2 patch and it too does not have any code that touches the USB part of things.
This is true. We aren't using EHCI (USB Host). Instead we are supporting USB Device + Composite layer + Gadgets (like DFU + UMS). Support for those devices is "almost" in mainline :-).
Regards, Lukasz Majewski
Thanks
- Suriyan
On Sun, Jul 7, 2013 at 11:56 PM, Lukasz Majewski l.majewski@samsung.comwrote:
On Sun, 07 Jul 2013 02:15:17 -0700, Suriyan Ramasami wrote:
Hi Suriyan,
Hi wonderful folks!
I own an odroid-u2 and the u-boot that comes with it does not
have usb support. Its configuration is smdk4412 and I do not find that in the u-boot sources. I see it in the arndale and harkernel branches.
I do see that usb support was added to the arndale platform - which is exynos5 based. Is it easy to port it for exynos4412?
Patches for Exynos4412 based board (TRATS2) were already sent on the mailing list:
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/161578/match=introduc...
Please refer to them. It shall be relatively easy to add odroid-u2 support based on TRATS2.
I did try it porting on my own accord and am listing it below...
I seem to be hitting issues in drivers/usb/host/ehci-exynos.c -> function setup_usb_phy(struct exynos_usb_phy *usb). Would passing the correct address of usb for the exynos4412 do the trick? If so what should it be? In this same file ehci_hcd_init() uses gpio->x3 and gpio->d1. In exynos4 looks like x3 is from gpio_part2. Also, do the d1 and x3 translate to the same gpiod1 and gpiox3 in the exynos4412?
Furthermore, ehci-exynos.c uses functions from arch/arm/cpu/armv7/exynos/system.c which for the most part are exynos5 oriented and do nothing for exynos4.
Can someone guide me as to what I could do, or some pointers to helpful docs? I do have the Exynos 4412 user manual.
Thanks
- Suriyan
-- Best regards,
Lukasz Majewski
Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
participants (3)
-
Lukasz Majewski
-
Lukasz Majewski
-
Suriyan Ramasami