From: Lukasz Majewski <l.majewski@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] Bisected broken Ethernet support on ODROID-X (Exynos4412 board)
Date: Wed, 21 Oct 2015 10:06:09 +0200 [thread overview]
Message-ID: <20151021100609.6efe5faf@amdc2363> (raw)
In-Reply-To: <20151021030940.0e80476c@i7>
Hi Siarhei,
> On Tue, 20 Oct 2015 09:15:07 -0600
> Simon Glass <sjg@chromium.org> wrote:
>
> > Hi,
> >
> > On 20 October 2015 at 08:13, Siarhei Siamashka
> > <siarhei.siamashka@gmail.com> wrote:
> > > Hello,
> > >
> > > Ethernet support does not work anymore when using the current
> > > U-Boot (version v2014.10) on the ODROID-X board. Bisecting shows
> > > that this happened starting from commit
> > > 874dde80169e0a0c00020e2e0bbcd380c61097e3 ("dm: usb: exynos: Use
> > > driver model for USB"):
> > > http://git.denx.de/?p=u-boot.git;a=commitdiff;h=874dde80169e0a0c00020e2e0bbcd380c61097e3
> > >
> > > Below are the logs from the serial console.
> > >
> > > === works properly ==
> > >
> > > U-Boot 2015.04-00271-g52e6935-dirty (Oct 20 2015 - 16:38:09)
> > >
> > > CPU: Exynos4412 at 1000MHz
> > > Model: Odroid based on Exynos4412
> > > DRAM: 1 GiB
> > > Board PMIC init
> > > MMC: SAMSUNG SDHCI: 0, EXYNOS DWMMC: 1
> > > Net: No ethernet found.
> > > Hit any key to stop autoboot: 0
> > > reading boot.scr
> > > 129 bytes read in 11 ms (10.7 KiB/s)
> > > ## Executing script at 40408000
> > > starting USB...
> > > USB0: USB EHCI 1.00
> > > scanning bus 0 for devices... 4 USB Device(s) found
> > > scanning usb for storage devices... 0 Storage Device(s)
> > > found scanning usb for ethernet devices... 1 Ethernet Device(s)
> > > found
> > >
> > > === fails ==
> > >
> > > U-Boot 2015.04-00273-g78ab40b-dirty (Oct 20 2015 - 16:41:11)
> > >
> > > CPU: Exynos4412 at 1000MHz
> > > Model: Odroid based on Exynos4412
> > > DRAM: 1 GiB
> > > Board PMIC init
> > > MMC: SAMSUNG SDHCI: 0, EXYNOS DWMMC: 1
> > > Net: No ethernet found.
> > > Hit any key to stop autoboot: 0
> > > reading boot.scr
> > > 129 bytes read in 12 ms (9.8 KiB/s)
> > > ## Executing script at 40408000
> > > starting USB...
> > > USB-1: USB EHCI 1.00
> > > scanning bus 0 for devices... 1 USB Device(s) found
> > > scanning usb for ethernet devices... 0 Ethernet Device(s)
> > > found
> > >
> > > ===
> > >
> > > As a test, reverting f56da290b8df14a058b43735494dbbb0f8521a89
> > > ("Drop the code that doesn't use driver model for USB.") and
> > > disabling CONFIG_DM_USB in odroid_defconfig makes it work again.
> >
> > Does this problem happen on the XU3?
>
Yes, It does.
I'm struggling to fix this issue for a few days now.
What is interesting though, you can run ethernet by calling:
"usb start" and afterwards "usb reset".
> I don't have XU3. My only board is ODROID-X (the same as ODROID-X2,
> but with slower CPU clock speed and less RAM).
>
> > Are you able to debug this?
>
> I'm not sure if I can really spend much time on it. Debugging this
> issue would require comparing the old exynos usb code and the new
> dm code to see where exactly they differ. For example, the new
> 'ehci_usb_probe()' function does not call 'board_usb_init()' while
> the old 'ehci_hcd_init()' function did:
> http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/usb/host/ehci-exynos.c;h=86cf6312febc30b7e142146c3b4763a6a871d5a6;hb=02e4d3fbc54b345883d9bead4f2a911d0f0f59b1#l329
> And just calling 'board_usb_init()' on ODROID-X is still not enough
I will say even more - it seems like the issue is not related to any
"basic" initialization (i.e. the lack of calling
ehci_usb_probe|reset_usb_phy) called just before calling "usb start".
> to get this problem resolved for the CONFIG_DM_USB=y configuration,
> so there must be something else.
+1
>
> I also don't quite like that the usb parts of the U-Boot dts files
> for exynos differ from the Linux dts files.
This is a really good questions. We have discussed it recently on ELCE
and there is no good solution for it.
We made a mistake to allow non Linux compliant bindings to slip into
u-boot. Now we must cope with (or fix) this mess.
>
> So far I'm satisfied that the old exynos usb code still works if
> its removal is reverted.
As I've stated above - please try "usb start" and "usb reset"
afterwards.
> And debugging U-Boot was not my primary
> intention when fetching this old ODROID-X board from a closet.
> I had plans to do some other interesting tests with it :-)
>
> If Przemyslaw Marczak (the ODROID boards maintainer) could confirm
> the problem on ODROID-X2 and take care of it, then this would be
> the best for me.
I'm working on this issue now.
>
> > You can use 'dm tree' to see what devices are present
> > before and after the 'usb start'.
>
> Thanks, this indeed prints some useful information. Here is the log:
>
> U-Boot 2015.10-00001-g0374f7f-dirty (Jan 01 1970 - 00:00:00 +0000)
>
> CPU: Exynos4412 @ 1 GHz
> Model: Odroid based on Exynos4412
> Board: Odroid based on Exynos4412
> Model: x
> DRAM: 1 GiB
> LDO20 at VDDQ_EMMC_1.8V: set 1800000 uV; enabling
> LDO22 at VDDQ_EMMC_2.8V: set 2800000 uV; enabling
> LDO21 at TFLASH_2.8V: set 2800000 uV; enabling
> MMC: SAMSUNG SDHCI: 0, EXYNOS DWMMC: 1
> Net: No ethernet found.
> Hit any key to stop autoboot: 0
> reading boot.scr
> 215 bytes read in 107 ms (2 KiB/s)
> ## Executing script at 40408000
> === dm tree before usb start ===
> Class Probed Name
> ----------------------------------------
> root [ + ] root_driver
> serial [ ] |-- serial at 13800000
> serial [ + ] |-- serial at 13810000
> serial [ ] |-- serial at 13820000
> serial [ ] |-- serial at 13830000
> serial [ ] |-- serial at 13840000
> i2c [ + ] |-- i2c at 13860000
> pmic [ + ] | `-- max77686_pmic at 09
> regulator [ ] | |-- LDO1
> regulator [ ] | |-- LDO2
> regulator [ ] | |-- LDO3
> regulator [ ] | |-- LDO4
> regulator [ ] | |-- LDO5
> regulator [ ] | |-- LDO6
> regulator [ ] | |-- LDO7
> regulator [ ] | |-- LDO8
> regulator [ ] | |-- LDO10
> regulator [ ] | |-- LDO11
> regulator [ ] | |-- LDO12
> regulator [ ] | |-- LDO13
> regulator [ ] | |-- LDO14
> regulator [ ] | |-- LDO15
> regulator [ ] | |-- LDO16
> regulator [ ] | |-- LDO17
> regulator [ + ] | |-- LDO20
> regulator [ + ] | |-- LDO21
> regulator [ + ] | |-- LDO22
> regulator [ ] | |-- LDO25
> regulator [ ] | |-- BUCK1
> regulator [ ] | |-- BUCK2
> regulator [ ] | |-- BUCK3
> regulator [ ] | |-- BUCK4
> regulator [ ] | |-- BUCK5
> regulator [ ] | |-- BUCK6
> regulator [ ] | |-- BUCK7
> regulator [ ] | `-- BUCK8
> i2c [ ] |-- i2c at 13870000
> i2c [ ] |-- i2c at 13880000
> i2c [ ] |-- i2c at 13890000
> i2c [ ] |-- i2c at 138a0000
> i2c [ ] |-- i2c at 138b0000
> i2c [ ] |-- i2c at 138c0000
> i2c [ ] |-- i2c at 138d0000
> gpio [ + ] |-- pinctrl at 11400000
> gpio [ + ] | |-- gpa0
> gpio [ + ] | |-- gpa1
> gpio [ + ] | |-- gpb
> gpio [ + ] | |-- gpc0
> gpio [ + ] | |-- gpc1
> gpio [ + ] | |-- gpd0
> gpio [ + ] | |-- gpd1
> gpio [ + ] | |-- gpf0
> gpio [ + ] | |-- gpf1
> gpio [ + ] | |-- gpf2
> gpio [ + ] | |-- gpf3
> gpio [ + ] | |-- gpj0
> gpio [ + ] | `-- gpj1
> gpio [ + ] |-- pinctrl at 11000000
> gpio [ + ] | |-- gpk0
> gpio [ + ] | |-- gpk1
> gpio [ + ] | |-- gpk2
> gpio [ + ] | |-- gpk3
> gpio [ + ] | |-- gpl0
> gpio [ + ] | |-- gpl1
> gpio [ + ] | |-- gpl2
> gpio [ + ] | |-- gpy0
> gpio [ + ] | |-- gpy1
> gpio [ + ] | |-- gpy2
> gpio [ + ] | |-- gpy3
> gpio [ + ] | |-- gpy4
> gpio [ + ] | |-- gpy5
> gpio [ + ] | |-- gpy6
> gpio [ + ] | |-- gpm0
> gpio [ + ] | |-- gpm1
> gpio [ + ] | |-- gpm2
> gpio [ + ] | |-- gpm3
> gpio [ + ] | |-- gpm4
> gpio [ + ] | |-- gpx0
> gpio [ + ] | |-- gpx1
> gpio [ + ] | |-- gpx2
> gpio [ + ] | `-- gpx3
> gpio [ ] |-- pinctrl at 03860000
> gpio [ ] | `-- gpz
> gpio [ ] |-- pinctrl at 106E0000
> gpio [ ] | |-- gpv0
> gpio [ ] | |-- gpv1
> gpio [ ] | |-- gpv2
> gpio [ ] | |-- gpv3
> gpio [ ] | `-- gpv4
> usb [ ] `-- ehci at 12580000
> starting USB...
> USB0: USB EHCI 1.00
> scanning bus 0 for devices... 1 USB Device(s) found
> === dm tree after usb start ===
> Class Probed Name
> ----------------------------------------
> root [ + ] root_driver
> serial [ ] |-- serial at 13800000
> serial [ + ] |-- serial at 13810000
> serial [ ] |-- serial at 13820000
> serial [ ] |-- serial at 13830000
> serial [ ] |-- serial at 13840000
> i2c [ + ] |-- i2c at 13860000
> pmic [ + ] | `-- max77686_pmic at 09
> regulator [ ] | |-- LDO1
> regulator [ ] | |-- LDO2
> regulator [ ] | |-- LDO3
> regulator [ ] | |-- LDO4
> regulator [ ] | |-- LDO5
> regulator [ ] | |-- LDO6
> regulator [ ] | |-- LDO7
> regulator [ ] | |-- LDO8
> regulator [ ] | |-- LDO10
> regulator [ ] | |-- LDO11
> regulator [ ] | |-- LDO12
> regulator [ ] | |-- LDO13
> regulator [ ] | |-- LDO14
> regulator [ ] | |-- LDO15
> regulator [ ] | |-- LDO16
> regulator [ ] | |-- LDO17
> regulator [ + ] | |-- LDO20
> regulator [ + ] | |-- LDO21
> regulator [ + ] | |-- LDO22
> regulator [ ] | |-- LDO25
> regulator [ ] | |-- BUCK1
> regulator [ ] | |-- BUCK2
> regulator [ ] | |-- BUCK3
> regulator [ ] | |-- BUCK4
> regulator [ ] | |-- BUCK5
> regulator [ ] | |-- BUCK6
> regulator [ ] | |-- BUCK7
> regulator [ ] | `-- BUCK8
> i2c [ ] |-- i2c at 13870000
> i2c [ ] |-- i2c at 13880000
> i2c [ ] |-- i2c at 13890000
> i2c [ ] |-- i2c at 138a0000
> i2c [ ] |-- i2c at 138b0000
> i2c [ ] |-- i2c at 138c0000
> i2c [ ] |-- i2c at 138d0000
> gpio [ + ] |-- pinctrl at 11400000
> gpio [ + ] | |-- gpa0
> gpio [ + ] | |-- gpa1
> gpio [ + ] | |-- gpb
> gpio [ + ] | |-- gpc0
> gpio [ + ] | |-- gpc1
> gpio [ + ] | |-- gpd0
> gpio [ + ] | |-- gpd1
> gpio [ + ] | |-- gpf0
> gpio [ + ] | |-- gpf1
> gpio [ + ] | |-- gpf2
> gpio [ + ] | |-- gpf3
> gpio [ + ] | |-- gpj0
> gpio [ + ] | `-- gpj1
> gpio [ + ] |-- pinctrl at 11000000
> gpio [ + ] | |-- gpk0
> gpio [ + ] | |-- gpk1
> gpio [ + ] | |-- gpk2
> gpio [ + ] | |-- gpk3
> gpio [ + ] | |-- gpl0
> gpio [ + ] | |-- gpl1
> gpio [ + ] | |-- gpl2
> gpio [ + ] | |-- gpy0
> gpio [ + ] | |-- gpy1
> gpio [ + ] | |-- gpy2
> gpio [ + ] | |-- gpy3
> gpio [ + ] | |-- gpy4
> gpio [ + ] | |-- gpy5
> gpio [ + ] | |-- gpy6
> gpio [ + ] | |-- gpm0
> gpio [ + ] | |-- gpm1
> gpio [ + ] | |-- gpm2
> gpio [ + ] | |-- gpm3
> gpio [ + ] | |-- gpm4
> gpio [ + ] | |-- gpx0
> gpio [ + ] | |-- gpx1
> gpio [ + ] | |-- gpx2
> gpio [ + ] | `-- gpx3
> gpio [ ] |-- pinctrl at 03860000
> gpio [ ] | `-- gpz
> gpio [ ] |-- pinctrl at 106E0000
> gpio [ ] | |-- gpv0
> gpio [ ] | |-- gpv1
> gpio [ ] | |-- gpv2
> gpio [ ] | |-- gpv3
> gpio [ ] | `-- gpv4
> usb [ + ] `-- ehci at 12580000
> usb_hub [ + ] `-- usb_hub
>
>
--
Best regards,
Lukasz Majewski
Samsung R&D Institute Poland (SRPOL) | Linux Platform Group
next prev parent reply other threads:[~2015-10-21 8:06 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-20 14:13 [U-Boot] Bisected broken Ethernet support on ODROID-X (Exynos4412 board) Siarhei Siamashka
2015-10-20 15:15 ` Simon Glass
2015-10-21 0:09 ` Siarhei Siamashka
2015-10-21 8:06 ` Lukasz Majewski [this message]
2015-10-22 10:57 ` Siarhei Siamashka
2015-10-22 11:20 ` Lukasz Majewski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151021100609.6efe5faf@amdc2363 \
--to=l.majewski@samsung.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.