]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
ARM: dts: omap4-sdp: Make ethernet working even if booted with latest u-boot
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Thu, 13 Dec 2018 13:58:45 +0000 (15:58 +0200)
committerTony Lindgren <tony@atomide.com>
Thu, 24 Jan 2019 16:23:43 +0000 (08:23 -0800)
The ethernet works in kernel only if we use some binary u-boot from the
past which have support for KS8851.

The u-boot sources are not available for this mysterious u-boot image
people tends to hold on... Mainline u-bott does not have ethernet support
for sdp4430 and if we use that the ethernet is not working.

After some debugging I have managed to get the ethernet working with
mainline u-boot while not breaking the networking with the case when we
boot with the mysterious binary u-boot.

Basically we were missing bunch of pinmux settings and the 'magic'
gpio_138 handling in kernel.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/boot/dts/omap4-sdp.dts

index 9dc7ec7655cb87776d691d75ef465e978b90e7d5..c88817bdcc560d231c274fd88f536f8f70ba6bee 100644 (file)
@@ -26,6 +26,9 @@
        };
 
        vdd_eth: fixedregulator-vdd-eth {
+               pinctrl-names = "default";
+               pinctrl-0 = <&enet_enable_gpio>;
+
                compatible = "regulator-fixed";
                regulator-name = "VDD_ETH";
                regulator-min-microvolt = <3300000>;
                        OMAP4_IOPAD(0x152, PIN_INPUT_PULLUP | MUX_MODE0)        /* sdmmc5_dat3.sdmmc5_dat3 */
                >;
        };
+
+       /* gpio_48 for ENET_ENABLE */
+       enet_enable_gpio: pinmux_enet_enable_gpio {
+               pinctrl-single,pins = <
+                       OMAP4_IOPAD(0x070, PIN_OUTPUT_PULLDOWN | MUX_MODE3)     /* gpmc_a24.gpio_48 */
+               >;
+       };
+
+       ks8851_pins: pinmux_ks8851_pins {
+               pinctrl-single,pins = <
+                       /* ENET_INT */
+                       OMAP4_IOPAD(0x054, PIN_INPUT_PULLUP | MUX_MODE3)        /* gpmc_ad10.gpio_34 */
+                       /*
+                        * Misterious pin which makes the ethernet working
+                        * The legacy board file requested this pin on boot
+                        * (ETH_KS8851_QUART) and set it to high, similarly to
+                        * the ENET_ENABLE pin.
+                        * We could use gpio-hog to keep it high, but let's use
+                        * it as a reset GPIO for ks8851.
+                        */
+                       OMAP4_IOPAD(0x13a, PIN_OUTPUT_PULLUP | MUX_MODE3)       /* mcspi1_cs1.gpio_138 */
+               >;
+       };
 };
 
 &i2c1 {
        pinctrl-0 = <&mcspi1_pins>;
 
        eth@0 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&ks8851_pins>;
+
                compatible = "ks8851";
                spi-max-frequency = <24000000>;
                reg = <0>;
                interrupt-parent = <&gpio2>;
                interrupts = <2 IRQ_TYPE_LEVEL_LOW>; /* gpio line 34 */
                vdd-supply = <&vdd_eth>;
+               reset-gpios = <&gpio5 10 GPIO_ACTIVE_HIGH>;
        };
 };