This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM3358: Device tree overlay issue

Part Number: AM3358

Tool/software: Linux

Hi all,

I want to evaluate a wifi-module with the BeagleBoneBlack. In my devicetree-overlay I want to use the mmc3-interface as sdio and the uart4-interface as uart.

I insert the overlay in the /boot/uEnv.txt . After start up I see that the mmc3-pins and uart4-pins configuered as wanted. (verified by the tool 'show-pins'). The major issue is that the interface mmc3 is not activated/assigned to the pins. By this during startup the BB doesn't check if a module is connected to the mmc3 pins.

///////////////////////////////////////////////////////////////////////////////////////

/dts-v1/;

/ {
    part-number = "BLST-MMC3";
    version = "00A0";
    compatible = "ti,beaglebone", "ti,beaglebone-black";
    exclusive-use = "P8.33", "P8.35","P9.13", "P9.11", "uart4", "P8.18" , "P8.12" , "P8.10" , "P8.11" , "P8.16" , "P8.15" , "mmc3", "P8.07";

    fragment@0 {
        target = <0xffffffff>;

        __overlay__ {
            /* uart4 */
            P8_33_pinmux {
                status = "disabled";
            };

            P8_35_pinmux {
                status = "disabled";
            };
            P9_13_pinmux {
                status = "disabled";
            };
            P9_11_pinmux {
                status = "disabled";
            };
            
            
            
            /* mmc3 */
            P8_18_pinmux {
                status = "disabled";
            };

            P8_12_pinmux {
                status = "disabled";
            };

            P8_10_pinmux {
                status = "disabled";
            };

            P8_11_pinmux {
                status = "disabled";
            };

            P8_16_pinmux {
                status = "disabled";
            };

            P8_15_pinmux {
                status = "disabled";
            };
            
            /* Reset */
            P8_07_pinmux {
                status = "disabled";
            };


        };
    };



    fragment@1 {
        target = <0xffffffff>;

        __overlay__ {
            
            pinmux_mmc3_pins {
                pinctrl-single,pins = <
                0x88 0x33   /*mmc2_cmd */
                0x8c 0x33   /*mmc2_clk */  
                0x30 0x33   /*mmc2_dat0*/
                0x34 0x33   /*mmc2_dat1*/
                0x38 0x33   /*mmc2_dat2*/
                0x3c 0x33   /*mmc2_dat3*/
                >;
                linux,phandle = <0x2>;  
                phandle = <0x2>;        
            };

            pinmux_uart4_pins_default {
                pinctrl-single,pins = <0x70 0x2e 0x74 0xe 0xd0 0xe 0xd4 0x26>;
                linux,phandle = <0x1>;
                phandle = <0x1>;     
            };

            
            pinmux_reset_pd_pin {
                pinctrl-single,pins = <0x90 0x7f>;
                linux,phandle = <0x3>;
                phandle = <0x3>;
            };

        };
    };


    fragment@3 {
        target = <0xffffffff>;

        __overlay__ {
            compatible = "ti,omap4-hsmmc";
            dmas = <0xffffffff 0xc 0x0 0x1 0xffffffff 0xd 0x0 0x2>;
            dma-names = "tx", "rx";
            status = "okay";
            vmmc-supply = <0x2>;
            bus-width = <0x4>;
            non-removable;
            /* enable-sdio-wakeup;*/
            cap-power-off-card;
            broken-cd;
            ti,needs-special-reset;
            /* ti,needs-special-hs-handling;*/
            ti,hwmods = "mmc3";
            /* keep-power-in-suspend; */
            pinctrl-names = "default";              
            pinctrl-0 = <0x2>;                

            #address-cells = <0x1>;
            #size-cells = <0x0>;   
            
            
            sd8xxx-wlan@2 {
                compatible =  "marvell,sd8xxx";
                reg = <0x2>;
                interrupt-parent = <0xffffffff>;
                interrupts = <0x1d 0x1>;
            };
            
        };
    };

    fragment@4 {
        target = <0xffffffff>;

        __overlay__ {
            pinctrl-names = "default";
            pinctrl-0 = <0x1>;
            status = "okay";
        };
    };

    fragment@5 {
        target = <0xffffffff>;

        __overlay__ {
            pinctrl-names = "gpio_pu";
            pinctrl-0 = <0x3>;
            status = "okay";
        };
    };




    __symbols__ {
        mmc3_pins = "/fragment@1/__overlay__/pinmux_mmc3_pins";
        uart4_pins_default = "/fragment@1/__overlay__/pinmux_uart4_pins_default";
        wlcore = "/fragment@3/__overlay__/wlcore@2";

        reset_pin_default = "/fragment@1/__overlay__/pinmux_reset_pd_pin";

    };

    __fixups__ {

        ocp = "/fragment@0:target:0";
        am33xx_pinmux = "/fragment@1:target:0";
        mmc3 = "/fragment@3:target:0";
        edma_xbar = "/fragment@3/__overlay__:dmas:0", "/fragment@3/__overlay__:dmas:16";
        uart4 = "/fragment@4:target:0";
        P8_07_gpio_pu_pin = "/fragment@5:target:0";
    };

    __local_fixups__ {

        fragment@3 {

            __overlay__ {
                pinctrl-0 = <0x0>;
                };
        };
        
        fragment@4 {

            __overlay__ {
                pinctrl-0 = <0x0>;
            };
        };

        fragment@5 {

            __overlay__ {
                pinctrl-0 = <0x0>;
            };
        };

    };
};

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

I insert the content of overlay-file. I use the kernel 4.14.71-ti-r80

Maybe somebody can give my a hint , how to solve the problem?

Thank you and best regards,

Enno