From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Wed, 21 Oct 2015 10:06:09 +0200 Subject: [U-Boot] Bisected broken Ethernet support on ODROID-X (Exynos4412 board) In-Reply-To: <20151021030940.0e80476c@i7> References: <20151020171315.1f615423@i7> <20151021030940.0e80476c@i7> Message-ID: <20151021100609.6efe5faf@amdc2363> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Siarhei, > On Tue, 20 Oct 2015 09:15:07 -0600 > Simon Glass wrote: > > > Hi, > > > > On 20 October 2015 at 08:13, Siarhei Siamashka > > 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