[PATCH 1/2] ARM: dts: imx6: Add support for Toradex Apalis SoM
Petr Štetiar
ynezz at true.cz
Sat Nov 28 11:38:24 PST 2015
Stefan Agner <stefan at agner.ch> [2015-11-27 12:02:46]:
> Hi Petr,
Hi,
> > &fec {
> > pinctrl-names = "default";
> > pinctrl-0 = <&pinctrl_enet &pinctrl_enet_ctrl>;
> > phy-mode = "rgmii";
> >
> > phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_HIGH>;
> > interrupts-extended = <&gpio1 30 IRQ_TYPE_LEVEL_LOW>,
> > <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>;
> > status = "okay";
> > };
>
> According to the schema, &gpio1 30 is low active as well as the reset
> GPIO &gpio1 25. Both pulled high externally...
>
> So phy reset GPIO should be ACTIVE_LOW, otherwise things look correct to
> me.
>
> I guess in that case U-Boot took care of it. However, this is not a
> clean solution...
Yes, I think, that it's being setup by U-Boot and there is something not
properly(*) defined in the DTS or in kernel. I'll probably start over with a
vanilla U-Boot to get relatively clean table.
* If I boot Toradex's 3.10.17+gitr602505a35 first and then reboot into
4.4.0-rc2, the kernel hangs somewhere in the platform init. It's probably
the PAD_CTRL_NO problem. I'll get into this once I fix the fec.
> Not sure what happens exactly, maybe the phy-reset does not honor the
> GPIO_ACTIVE_LOW flag?
Reset works probably fine, I haven't verified that with a scope, but if I boot
over NFS, it takes longer then without reset-gpio defined.
The issue is with IRQ GPIO, which I can't get to work. Here are two cases I've
observed so far:
1. PHY init failure due to MDIO read timeout
interrupts-extended = <&gpio1 30 IRQ_TYPE_LEVEL_LOW>, <&intc 0 119 IRQ_TYPE_LEVEL_HIGH>;
[ 2.685556] of_irq_parse_raw: /soc/aips-bus at 02000000/gpio at 0209c000:0000001e,00000008
[ 2.701521] of_irq_parse_raw: /interrupt-controller at 00a01000:00000000,00000077,00000004
[ 2.732258] fec 2188000.ethernet (unnamed net_device) (uninitialized): MDIO read timeout
[ 2.740859] fec: probe of 2188000.ethernet failed with error -5
2. PHY init is OK, but MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 is not being used as IRQ:
interrupts-extended = <&gpio1 30 IRQ_TYPE_LEVEL_LOW>, <&intc 0 118 IRQ_TYPE_LEVEL_HIGH>;
[ 2.685479] of_irq_parse_raw: /soc/aips-bus at 02000000/gpio at 0209c000:0000001e,00000008
[ 2.701440] of_irq_parse_raw: /interrupt-controller at 00a01000:00000000,00000076,00000004
[ 2.714595] libphy: fec_enet_mii_bus: probed
[ 2.719674] fec 2188000.ethernet eth0: registered PHC device 0
root at OpenWrt:/# cat /proc/interrupts | grep ethernet
65: 0 0 0 0 gpio-mxc 30 Level 2188000.ethernet
288: 7513 0 0 0 GIC 150 Level 2188000.ethernet
I've to look into it deeper next week. Thanks!
-- ynezz
More information about the linux-arm-kernel
mailing list