Discussion:
[U-Boot] Porting ehci-exynos.c to handle exynos4412 (odroid-u2)
Suriyan Ramasami
2013-07-07 09:15:17 UTC
Permalink
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
Lukasz Majewski
2013-07-08 06:56:27 UTC
Permalink
On Sun, 07 Jul 2013 02:15:17 -0700, Suriyan Ramasami wrote:

Hi Suriyan,
Post by Suriyan Ramasami
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=introduce+samsung's+new+board+trats2

Please refer to them. It shall be relatively easy to add odroid-u2
support based on TRATS2.
Post by Suriyan Ramasami
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
Suriyan Ramasami
2013-07-08 18:03:05 UTC
Permalink
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
Post by Lukasz Majewski
Hi Suriyan,
Post by Suriyan Ramasami
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
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/161578/match=introduce+samsung's+new+board+trats2
Please refer to them. It shall be relatively easy to add odroid-u2
support based on TRATS2.
Post by Suriyan Ramasami
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
Lukasz Majewski
2013-07-08 19:47:05 UTC
Permalink
On Mon, 8 Jul 2013 11:03:05 -0700
Post by Suriyan Ramasami
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?
Post by Suriyan Ramasami
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
Post by Suriyan Ramasami
Thanks
- Suriyan
On Sun, Jul 7, 2013 at 11:56 PM, Lukasz Majewski
Post by Lukasz Majewski
Hi Suriyan,
Post by Suriyan Ramasami
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
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/161578/match=introduce+samsung's+new+board+trats2
Please refer to them. It shall be relatively easy to add odroid-u2
support based on TRATS2.
Post by Suriyan Ramasami
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
Suriyan Ramasami
2013-07-11 16:39:43 UTC
Permalink
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
Post by Lukasz Majewski
On Mon, 8 Jul 2013 11:03:05 -0700
Post by Suriyan Ramasami
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?
Post by Suriyan Ramasami
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
Post by Suriyan Ramasami
Thanks
- Suriyan
On Sun, Jul 7, 2013 at 11:56 PM, Lukasz Majewski
Post by Lukasz Majewski
Hi Suriyan,
Post by Suriyan Ramasami
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
http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/161578/match=introduce+samsung's+new+board+trats2
Post by Suriyan Ramasami
Post by Lukasz Majewski
Please refer to them. It shall be relatively easy to add odroid-u2
support based on TRATS2.
Post by Suriyan Ramasami
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
Loading...