On Wed, 30 Jan 2019 at 00:44, Sergey Kubushyn <k...@koi8.net> wrote: > OK, I've got it working. The problem was DM FEC driver does _NOT_ do pin > muxing and FEC pins in i.MX8MQ come up as GPIOs after rest so no wonder it > can't talk to the PHY or whatever else. > > I don't know yet if there is some setting that I've missed to force it to do > pin muxing but didn't find anything appropriate in reference fsl-imx8mq-evk > board configs or board source files. > > Once pin muxing is done in the board file FEC comes up as expected, finds > the PHY and all network stuff works as expected. > > Dedicated "regulator" and PHY reset works OK from DTB provided FEC driver is > patched for regulator (regulator_set_enable instead of regulator_autoset) > and PHY reset GPIO set "ACTIVE_LOW" in the board's DTS file (fec driver sets > it to "1" to reset then resets it to "0"). > > So it is either pin muxing is missing and one should do it in his board's > file or I've missed some setting that I can't find to get the DM FEC driver > to do it itself from DTS file.
Welp. There's no pinctrl driver. That would explain a lot... The attached patches fix the networking in U-Boot for me (I can at least ping; haven't tried anything else). If it works for you then I will submit the patches properly with your Tested-by. Weirdly, I still get the issue in Linux where it intermittently uses the wrong phy driver, but, with this change, the generic phy driver now seems to work fine. I guess maybe U-Boot is now leaving the phy in a different state that happens to work. Chris
From 5af35b93185541245b7d77fd8e73e616c4219086 Mon Sep 17 00:00:00 2001 From: Chris Spencer <christopher.spen...@sea.co.uk> Date: Wed, 30 Jan 2019 18:02:02 +0000 Subject: [PATCH 2/2] imx8mq_evk_defconfig: Enable pinctrl driver The Ethernet controller is not able to initialise correctly without the pinctrl driver. Fixes: 86ac7a9a5d0c ("imx: add i.MX8MQ EVK support") Signed-off-by: Chris Spencer <christopher.spen...@sea.co.uk> --- configs/imx8mq_evk_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/imx8mq_evk_defconfig b/configs/imx8mq_evk_defconfig index 53025e45bc..68656b0cd3 100644 --- a/configs/imx8mq_evk_defconfig +++ b/configs/imx8mq_evk_defconfig @@ -29,6 +29,7 @@ CONFIG_SYS_I2C_MXC=y CONFIG_DM_MMC=y CONFIG_DM_ETH=y CONFIG_PINCTRL=y +CONFIG_PINCTRL_IMX8M=y CONFIG_DM_REGULATOR=y CONFIG_DM_REGULATOR_FIXED=y CONFIG_DM_REGULATOR_GPIO=y -- 2.17.1
From d37b1c7f1049a9db95cdb8e90fc1d770267894ac Mon Sep 17 00:00:00 2001 From: Chris Spencer <christopher.spen...@sea.co.uk> Date: Wed, 30 Jan 2019 17:52:35 +0000 Subject: [PATCH 1/2] pinctrl: Add pinctrl driver for i.MX8M This driver is required by fsl-imx8mq.dtsi but was not previously added. Fixes: 52df705c9669 ("imx: imx8mq: add dtsi file") Signed-off-by: Chris Spencer <christopher.spen...@sea.co.uk> --- drivers/pinctrl/nxp/Kconfig | 14 ++++++++++++ drivers/pinctrl/nxp/Makefile | 1 + drivers/pinctrl/nxp/pinctrl-imx8m.c | 35 +++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 drivers/pinctrl/nxp/pinctrl-imx8m.c diff --git a/drivers/pinctrl/nxp/Kconfig b/drivers/pinctrl/nxp/Kconfig index f1d5a5c50d..61f93be42d 100644 --- a/drivers/pinctrl/nxp/Kconfig +++ b/drivers/pinctrl/nxp/Kconfig @@ -75,6 +75,20 @@ config PINCTRL_IMX8 only parses the 'fsl,pins' property and configures related registers. +config PINCTRL_IMX8M + bool "IMX8M pinctrl driver" + depends on ARCH_IMX8M && PINCTRL_FULL + select DEVRES + select PINCTRL_IMX + help + Say Y here to enable the imx8m pinctrl driver + + This provides a simple pinctrl driver for i.MX8M SoC familiy. + This feature depends on device tree configuration. This driver + is different from the linux one, this is a simple implementation, + only parses the 'fsl,pins' property and configure related + registers. + config PINCTRL_VYBRID bool "Vybrid (vf610) pinctrl driver" depends on ARCH_VF610 && PINCTRL_FULL diff --git a/drivers/pinctrl/nxp/Makefile b/drivers/pinctrl/nxp/Makefile index 891ee6e477..b340d9448a 100644 --- a/drivers/pinctrl/nxp/Makefile +++ b/drivers/pinctrl/nxp/Makefile @@ -5,4 +5,5 @@ obj-$(CONFIG_PINCTRL_IMX7) += pinctrl-imx7.o obj-$(CONFIG_PINCTRL_IMX7ULP) += pinctrl-imx7ulp.o obj-$(CONFIG_PINCTRL_IMX_SCU) += pinctrl-scu.o obj-$(CONFIG_PINCTRL_IMX8) += pinctrl-imx8.o +obj-$(CONFIG_PINCTRL_IMX8M) += pinctrl-imx8m.o obj-$(CONFIG_PINCTRL_VYBRID) += pinctrl-vf610.o diff --git a/drivers/pinctrl/nxp/pinctrl-imx8m.c b/drivers/pinctrl/nxp/pinctrl-imx8m.c new file mode 100644 index 0000000000..471e0c8170 --- /dev/null +++ b/drivers/pinctrl/nxp/pinctrl-imx8m.c @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright 2017 NXP + */ + +#include <dm/device.h> +#include <dm/pinctrl.h> + +#include "pinctrl-imx.h" + +static struct imx_pinctrl_soc_info imx8mq_pinctrl_soc_info; + +static int imx8mq_pinctrl_probe(struct udevice *dev) +{ + struct imx_pinctrl_soc_info *info = + (struct imx_pinctrl_soc_info *)dev_get_driver_data(dev); + + return imx_pinctrl_probe(dev, info); +} + +static const struct udevice_id imx8m_pinctrl_match[] = { + { .compatible = "fsl,imx8mq-iomuxc", .data = (ulong)&imx8mq_pinctrl_soc_info }, + { /* sentinel */ } +}; + +U_BOOT_DRIVER(imx8mq_pinctrl) = { + .name = "imx8mq-pinctrl", + .id = UCLASS_PINCTRL, + .of_match = of_match_ptr(imx8m_pinctrl_match), + .probe = imx8mq_pinctrl_probe, + .remove = imx_pinctrl_remove, + .priv_auto_alloc_size = sizeof(struct imx_pinctrl_priv), + .ops = &imx_pinctrl_ops, + .flags = DM_FLAG_PRE_RELOC, +}; -- 2.17.1
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot